2012年06月29日

Chrome for iPad の UserAgent

先ごろついに Google Chrome for iOS がでましたね。視覚ブラクラブログの人はiPadを持っていなかったらしいので、会社の開発支援金で購入支援してもらった iPad2 持ってる僕が試して実ました、残念ながらiPhone は持ってないので確認できてませんが、iOS 5 で入れたところ、UA は以下のようになってました。

Mozilla/5.0 (iPad; U; CPU OS 5_1 like Mac OS X; ja-jp) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B176 Safari/7534.48.3

Mobile Safari は

Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B176 Safari/7534.48.3

なので相当 strict に判定してなければ iOS 向けのサイトも問題なさそうですね。

Posted by Yappo at 14:19 | Comments (0) | TrackBack

2012年06月28日

さいきんの ShipIt

最近 ShipIt したものとか。

AnySan/ikachan

IRC に繋げる時に user を nickname と変えたいよっていう pull-req 貰ったので対応した。
おかげで ikachan の導入事例が一個増えた。

Geo::Coordinates::Converter

YAML::Base が廃止されてるのに inc/YAML.pm が use YAML::Base してて make 出来なかった馬具を、ずっと放置してたのをいい加減直した。

String::Diff

YAML::Base ずっと放置してたのを直したのと、 5.16.0 から quotemeta で 、 がエスケープされるようになってテストこけるの対応した。

あと RT に来てた String::Diff を使うと XSS するってのに対処出来るようなオプションを追加した。
存外使われてるっぽいので、真面目にメンテナンスしました。

ちなみに、会社で隔週水曜日の夕方からオフィスの和室使って Open & Hackathon ってのをやってるんだけど、その枠で直しましたとさ。

String::Diff の RT は残り debian 対策のみになったけど、まだ放置しとこう。

Posted by Yappo at 12:49 | Comments (0) | TrackBack

2012年06月12日

DeNA のノウハウが12個も馬鹿正直に書いてある「Mobageを支える技術 ~ソーシャルゲームの舞台裏~」を読んだ

先週末くらいに届いて週末うっかり読むの忘れて昨日の夜にだいたい読み終わりました。
実際の発売日は明日からなので、今すぐアマゾンで予約するか明日本屋に並ぶといいよ!

なんていうか書評書くのが凄い難しいん素よねこの本、高層ビルの上層階のレストラン街のような感じで、それぞれの著者がそれぞれの業務に関して得た知見を惜しげもなくこれでもかって書いてるので、本全体としてはまとまり感が凄いないっていうw

ガラゲーの話とかサービス終わってるDoCoMoのPDC端末の判定方法とか Flash とか FastCGI とか2012年に出る本らしからぬトピックスがあったりしますが、それが本当に今の DeNA/Mobage を支えている技術である事には間違いないので本当に馬鹿正直に、包み隠さず書籍化したな。というのが第一印象ですね。バカにしてる風ですが賞賛してます。

本書の特徴としては、全Mobage関係の技術者が関わる技術を網羅して解説しているという所が特徴です。
そういうコンセプトなので必然的に多数の著者によって書かれているので、DeNAがその技術分野で何を困っていて、何を考えどう解決したのかという知見がたっぷり入っています。

正直言っておすすめの対象読者選定むずいけど、インフラの面倒を見ている人やサーバサイドのコードを書いているけど下のレイヤも考えてる人、もしくは考えたい人が書くと一番コスパの良い読者かなと思います。
ぶっちゃけ、その層の人達は Part 1 は不要になるし逆に Part 1 が捗る人にとっては、残りの3/4くらいの部分が意味不明になるのかなとも思う。個人的には Part 1 の3章4章は参考になると思うので、さっき書いたのに当てはまる人が一番マッチするかな。と思います。

Part 1

業界背景の説明から入ってるのが、ガチの技術書じゃなくて会社を上げての出版なんだな感あるけど Part0 に入れとけば良いと思ったw

基本的なガラゲーサイトを作る上での最低限のハマりどころ紹介や、ガラゲーソシャゲといえば Flash !なので Perl で Ming を使う方法とかいきなり出てくるのがほんとモバゲーらしくて良かった。
中野人ならでわの知恵も入っていて、今からガラゲーのソシャゲ始める人は読んどいても良いかもしれないけど、そういう人が捗る部分がこの辺だけってのが難点。

がらげの章のあとは、スマホブラウザゲームについててこちらもUIの設計の話やサクサク感出す為の知恵がふんだんにある感じですね。SWFをJS/HTML5に変換するツールの性能比較なんかもよかった。

そして Part 1 さいごは、アプリのゲームにからめて ngCore desu!

Part 2

こっからは、インフラと松信夢想のターンですね。5章8章が離れてたのが意味わかんなかった。

35億PVのほうでは、 FastCGI での運用テクニックならびに OS のファイルキャッシュの制御方法を C のコード付きで詳細に解説 CoW もあるよ。や、 DB への接続はホスト名ベースで MyDNS を使ってるよ、 lvs 挟むともっさりだから生に近い薄さじゃないとトラフィック支えられないよな話を丁寧に書いてありました。

そして松信夢想なんだけど、パラパラしか読んでない。なぜならば俺はWebエンジニアのための データベース技術[実践]入門 (Software Design plus)を全部読んだからだ!でも、Moobage本の松信章には新ネタ/Mobageというコンテキストならでわのネタもちょいちょい入ってたから安心して良いです。

次が数千台のサーバを管理する章。500台とかカジュアルすぎる感じですね。
いわゆるヤビツのDeNA版の内製サーバ管理ツールの話やPXEブートの環境構築方法まで結構濃いです。
ツールにサーバの登録が終わると同時に監視が走るってのはだいぶよいんじゃないかな?真似しないのかな?

このツールも3階層だなーとか思った、GrowthForecastも3階層なんだけど3はマジックナンバーだというのと3くらいの階層で分けないと意味不明になるからって理由で3にしてたけど、どういう理由で3にしたんだろうなー

Part 3

ここは、アプリ開発者のターン。

ZIGOROu章は、シャーディング環境でのDBプログラミング方法や、お得意のニッチ機能のMySQL版解説と、MySQLとの付き合い方って書いてあるのに全然関係無いRESTfulの設計考え方REST厨すぎるとアプリの設計無理あるわーな話となってます。
松信章でもシャーディングの話あったけど気のせい。というか、こっちではDBA的アプローチではなく、アプリでどうするかって話ですね。

次はnekokak章でQUEUE workerあれこれ。実際QUEUEとか使ってみないとわからん感じなんですが、苦労と対応についてあるあるネタを網羅してます。個人的には worker でのシグナル処理入ってて欲しかった。

さいころんの章では、気合い入りまくりでチューニングの考え方の参考にすっごいなるんでちゃんと買って読むべき。個人的には MyDNS のおさらいがあったのと、いままで用途がというか何で作られたのか意味不明モジュールになってる Iterator::GroupedRange の誕生秘話がわかったのが良かった。

そしてまたnekokak章ですが、何を考えてどうやってログを監視して行くかの話と、デプロイをどうするかって話、デプロイはだいぶ前のほうで FastCGI でのデプロイの話が出てた気がするけど、やってる事が違う人だからそれはそれこれはこれで、こっちはモダンよりなプロダクトでのデプロイの話ってみとくといいかな。
あとは daemontools Web UI を作ってるらしいけど、おれもステージング環境用の似たツール作ってて Web UI で特定のブランチを選んでステージング環境つくったり git pull するのとかやってる。これは去年の YAPC で話す予定で資料だけ上がってる。

Part 4

個人的にはこの章はばっさり切ったほうが良かったとおもいました。
概要では

その舞台裏を「ソーシャルゲーム(フィーチャーフォン/スマートフォン)」「大規模Webインフラ」「プラットフォーム」「ビッグデータ分析」といったテーマに分け,DeNAの実践的ノウハウを解説しています。
とかいてあり、表紙には「開発、運用、効率化、分析」と四台柱にしてあってセクションも別れているのにですよ、ページ数は全体の1/10以下。いやページ数はどうでも良いんです濃厚なら、でもクラスタリングの必要性と何をする物なのかという解説を少しして後は Mahout の使い方で終わってしまうのは、あまりに味気ないんじゃないでしょうか。

とくに DeNA らしい知見も一切含まれていないので実質的にはドキュメントを見れば事足りるし、ここまで大きくフィーチャリングするのは間違いだとおもう。もし僕がビッグデータ分析目当てで通販で本書を買ってたらマジ切れするレベルなので、せめて3章の後半にくっ付ける感じの扱いで良かったと思う。

まとめ

みんな好き勝手に書いてある感があって「この話題別の章ででてたよ!」な所も多くて普通の書籍としては統一感ないですがwいつかのアップデートで構成まとめ直されるとより使いやすくなる気がしたりするような。
そのかわり執筆陣それぞれの主張したい事が全面に出てて役に立つ情報が満載で、読むと確実に将来捗る内容になってるので「まるごと Perl」てきに「まるごと Mobage」的な本を買うんだ感で買って読むと良いと思います!

最初は次世代版[24時間365日] サーバ/インフラを支える技術 ‾スケーラビリティ、ハイパフォーマンス、省力運用になり得る本かとも思ってたけど、見事に言及する技術分野を変えてあって、未だにオワコンにならない本だなと思いましたw

PS: 変だと思ってた所はメモしてあるので、中野人はこちらをごりようください。

Posted by Yappo at 19:55 | Comments (0) | TrackBack

2012年06月04日

Perl 5.16 の面白そうな新機能を厳選して5つ紹介

日本人が金環日食で騒いでる待っただかにリリースされた事で有名な Perl 5.16 ですが、ちょっとまえに僕が Hokkaido.PM Casual で新機能の見所プレゼンしてて、折角なのでブログにも書いとこうと思いまして転載仕様かなーと。

More CORE subs are callable through references

コア関数のコードリファレンスを取れるるようになります。たとえば文字列フィルタリングをユーザが差し替え可能なモジュールとか作る時に捗るって jsx が言ってました。

use strict;
use warnings;
use 5.016;

# ここの関数テーブルをユーザの好みに差し替える
# 基本はコア関数を使う
my %func_map = (
    index  => \&CORE::index,
    splice => \&CORE::splice,
    ...
);

Unicode Symbol Names

シンボル名を処理する時に utf8 フラグを無視して処理するバグが治りました、日本語関数とか作ってる人に影響があります。

use strict;
use warnings;
use 5.016;
use utf8;

sub 弾 { say('小飼') }
# utf8 フラグ付きだから問題無く呼べる
my $dankogai = \&{"弾"};
$dankogai->();
do {
    no utf8;

    # utf8 フラグ立ってないのでシンボル名解決出来ない
    # ただし 5.14以前だと utf8 フラグ無視してるので動く
    my $dankogai = \&{"弾"};
    $dankogai->();
};

Support for Embedded Nulls

今まで文字列変数に \0 が入ってると、様々な場面で文字列が \0 以前で終端に達していたが、その挙動が無くなった。 \0 は \0 として内部的に扱われるようになった。
何かって言うと、今まで LL なのに \0 を文字列終端子として処理するバグが Perl の一部の機能に入ってたって事。

use strict;
use warnings;
use 5.016;

sub foo { say('bar') }
main->foo;

my $baz = "foo\0hoge";
{
    no strict 'refs';
    *{$baz} = sub { say($baz) } ;}

    # 以下は 5.14 以前では foo が呼ばれ、 5.16 以降では foo\0hoge が呼ばれる
    main->$baz;

Autoloaded sort Subroutines

sort の第一引数に関数をそのまま渡せる仕様があるんだけど、そこの関数を AUTOLOAD で処理出来るようになった。何に使うかよーわからん。けど ORM で捗るのかな?

use strict;
use warnings;
use 5.016;
use Test::More;
our $AUTOLOAD;
sub AUTOLOAD {
    my($key) = $AUTOLOAD =~ /([^:]+)$/;
    return 0 if $a eq $b;
    return -1 if $a eq $key;
    return 1 if $b eq $key;
    return 0;
}

my @list = qw/ foo bar baz /;

# foo を一番最初に持ってくるソート
my @foo = sort foo @list;
is($foo[0], 'foo');

# bar を一番最初に持ってくるソート
my @bar = sort bar @list;
is($bar[0], 'bar');

# baz を一番最初に持ってくるソート
my @baz = sort baz @list;
is($baz[0], 'baz');
done_testing;

__SUB__

いわゆる arguments.callee。どっかのサンプルコードで無限ループするのが乗ってて恐いと思ってこのエントリ書こうと思ったんだった。

use strict;
use warnings;
use 5.015;
use Path::Class;

# 主に無名関数で使う。名前がついてるなら __SUB__ とか使う意味ない
my $walker = sub {
    my $dir = shift;
    for my $path ($dir->children) {
        if ($path->is_dir) {
            __SUB__->($path);
        } else {
            say $path;
        }
    }
};

sub runner {
    my($caller, @args) = @_;
    $caller->(@args);
}

runner $walker, dir('/');

まとめ

Perl 5.16 の新要素で僕がちょっと興味引いた物の紹介をしました。5.10から5.14の間のトピックスを知りたい人は、来週出る Web+DB PRESS の Perl 連載で cho45 先生が言及してるので読むとよいでしょう。

WEB+DB PRESS Vol.68
WEB+DB PRESS Vol.68
posted with amazlet at 12.06.04
名村 卓 三宅 陽一郎 小野 修司 中島 聡 森田 創 小飼 弾 田籠 聡 天野 祐介 cho45 大和田 純 白土 慧 勝間 亮 石田 忠司 牧本 慎平 A-Listers 近藤 宇智朗 はまちや2 mala じゅんいち☆かとう
技術評論社
売り上げランキング: 4256

第1部

かのんとすれ違い用の3DS発掘してたらまさかの10分遅れではいれづ。。。

第2部

「こんばんわー」
あんにん「わぁー」
「岐阜の公演いったよ、よかったよ!」
あんにん「ありがとうございますー」
「えっと、あっと」
あんにん「またきてくださいね」
「またくるよー」

時間配分間違えて何言いたいかわからなくなった。。。

「こんにちわー岐阜の公演いったよー」
みゆ「えーほんとですか?」
「うん、とってもよかったよー」
みゆ「わーうれしいありがとうございます」
「うんまたいくよー」
「またきてくださいねー」
ばいばいー

公演で見た時よりもおとなっぽくなっておった。

「岐阜公演行ったよー」
島田「来てくれたんですね」
「ブルーローズかっこよかったよ」
島田「ほんとですか?!嬉しいです」
「あとね、ドラムちゃんと叩けてて最後まで叩いてて感動した!」
島田「ありがとうございます!」
「またいくねー」
島田「またきてくださいー」

やっぱり、カッコいいって褒めたら喜んでくれてよかった

1部2部は岐阜の公演の直後急遽ぶっ込み入れたけど、こうして感想を直接伝えられる機会があるのは良いなと思う。

第3部

ゆうこす「こんにちわー」
「こんにちわー雑誌でしか見たことなかったんだけどね」
ゆうこす「なにかなーヤンアニ?ヤンガン?それともプレイボーイかなぁー」
「や、、ヤンジャ。。 案内「じかんでーす「本物やっぱり可愛いね
ゆうこす「ほんとにぃーー?ばいばーい」

完全にやられた。。。

ゆうこすはもうちょっとゆるふわな感じかと思ったけど、だいぶ釣り師だったぞw

あきちゃ「こんにちわー」
「こんにちわ、えっとねえぎぶみーふぁいぶの時は当たらなくてこれなかったんだけどねぇ、今回当たったからこれたよー」
あきちゃ「よかったぁーありがとー」
時間ですー
「。。。」
あきちゃ「。。。」
あきちゃ「またきてね!」
「うん、またくるよー」

すっかり何話すか考えてなくて自己紹介でおわったぱてぃーん。。。

第4部

あいり「こんにちわ」
「こんにちわー22位おめでとうー」
あいり「ありがとうごさいます」
「本番ではもっと上いけるように
あいり「なれるといいですね
「おうえんしてるよー」
あいり「ありがとうございます」
「またくるねー」
あいり「またきてください」

喉擦り切れるほど調子悪いのに礼儀正しくてええこや

4部はだいぶタイトすぎてて余裕無くて「パパウ!パウパウ!波紋カッター!」って言うの忘れてしまったのが悔やまれるけど、やっぱり実物かわいかった。

あきちゃ「きてくれてありがとー」
「えっ?!」
あきちゃ「きてくれてありがとうーだよ」
「13位おめでとうー」
あきちゃ「ありがとうー」
「来週表たくさんいれるねー」
あきちゃ「(指で三を作りながら)三日後だよ!三日!」
「あっー!」

隣のたかみながテカってなくて可愛くて気が抜けて雑になって怒らせた。。。
帰りに見えた麻里子様もフランス人形で可愛かったなー

また、なんか適当すぎて自分でもどん引きしたけど、怒ってるあきちゃよかった。

「(上のスクリーン見てるな、あこっち気づいた)」
「あっちゃんが引退ってきいてから野菜シスターずの(以下略)トマト」
あつちゃん「たかみなやってるよ」
「そうなんだ」

時間短かった!

あっちゃん素っ気なさすぎて目から潮吹きそうになったくらいだったw
つまんないのか、最後の握手会だからか、自分だけ選挙関係ないか良くわからないけど、ずっと上のスクリーンみててこっち気づかないあっちゃんが印象的だった。

あっちゃんの列に知り合い並んでたから、出てくるの待ってたら「出口に泣きそうになるのを堪えながらむかったら Yappo が立ってたので全部消えてなくなった」とか言われて、その消えた涙が全部こっちに来たのがこちらのブログになります。

夕方の部A

かのん「ありがとうこざいますー」
「44位おめでとうございますわ」
かのん「ありがとうございますー!」
「本番だともっと上の順位絶対行けるよ!」
かのん「はい、頑張ります!絶対選抜入ります!」
「うん、頑張って!おうえんしてるよー!」
かのん「またきてくださいねー」
「うん、くるよー」

やっぱりSKEの子の対応良いなー

かのんとすれ違うために3DS持ってきて遅刻したけど、結局すれ違えなくてしょんぼり。。。

やっぱりSKEの子はどのこも握手会の対応がすっごい良いすな、ちょっとまえにしゃわこの対応がやばいっていうから、何も言わないでしゃわこからなんか言ってくるの待ってたけど見つめられるだけで終わりそうになってあわてて宝塚の話したら凄い食いついて来たけど時間切れって反省があるから、ちゃんと話振らなきゃだめだけど!

第5部A

あきちゃ「んっ、あーあどうも!」
「三日後だよね、まつがえてたよ」
あきちゃ「??」
「今日帰ったら速攻票入れるから安心して!」
あきちゃ「よろしくね、心配になっちゃうよー本当は入れてくれてないんじゃないかって」
「大丈夫、頑張ってね!」

あきちゃにきおくりょくがある事が実証された(俺調べ通算二度め

ほんとは、あきちゃって寿司屋における最後のお茶ポジションだよね。って言いたかったけど記憶力が存外あった影響で計画狂ったけど、一日鍛えられたお陰で美味く切り返した。
ちなみに、うっかり寝ちゃって票はまだ入れてない。

まとめ

朝10時から19時30分までの9時間半の長丁場は流石に体中に答えるので、もうやらないでおこうと思った。
夕方の部が始まる直前に握手できると、裏道に私服の研究生集団がいてだいぶ捗った。

なんにせよ勉強不足がだいぶ仇となった感があるので、僕ももう少しは偉い人達を見習いたいとおもった。

あと、ゆうこすの隣のレーンの江藤彩也香がすっごい可愛いのに列が出来てなくて、暇そうに机直してたり席に座ってたり水飲んだりしてるんだけど、ヲタがきた瞬間にすっごい笑顔で立ち上がるので皆推したら良いと思います。

Posted by Yappo at 12:35 | Comments (0) | TrackBack