YAPC::Asia Tokyo 2012 スペシャルレポート

YAPC::Asia Tokyo 2012, 1日目レポート[更新終了]

この記事を読むのに必要な時間:およそ 12.5 分

Atsushi Kobayashiさん「Distributed Job System. Clutch」

Atsushi Kobayashiさんのセッションは自身が開発されたジョブキューシステムの発表です。

複数のサーバーdeamoontoolの管理用にwebUIを作ろうとしたところ,ちょうどいいものが無いので開発したとのことです。クライアントが直接ワーカーと槍とるるするモデルで,シンプルなのが特徴。管理や操作が容易で,フレームワーク化もされているそうです。セッション後にも熱心に質問があり,関心の高さが伺えました。

画像

画像

Yuji Shimadaさん「続・Mobage を支える技術」

DeNAのYuji Shimadaさんのセッションは「続・Mobage を支える技術」というタイトルで,今年春に出版された「Mobage を支える技術」でカバーしきれなかった話題を中心に行われました。

自己紹介代わりに,Shimadaさんご自身が書かれたCPANモジュールの紹介をした後,自身が勤めている株式会社ディー・エヌ・エーや「Mobage を支える技術」の宣伝などを行いました。

Mobageで利用されているWorker(本トークではMessage Queueからqueurを取り出して処理するものに相当)は,そのWorkerが担当する機能ごとに存在しており,Parallel::Preforkを利用して複数のプロセスで動作してスループットを向上させているそうです。そこで問題となってくる,⁠kill TERMシグナルが送出されてきた時にどうするか」というWorkerでのシグナル処理の方法を,デモを交えながらステップバイステップで説明しました。

また,新しいAPI として"Remote Notification API"と"Leaderboard API"の2つのAPIの紹介をしました。

"Remote Notification API"はiPhoneやAndroidの端末にプッシュ通知を実行できるAPIであるとのことでした。一旦モバゲーのサーバがリクエストを受け付けてそれをWorkerが処理し,各スマートフォンに合った形でメッセージを送信するという一連のプロセスを,APNsやC2DM,GCMといった各スマートフォンに対応するプッシュ通知サービスの説明とともに解説しました。

"Leaderboard API"はその名の通り,ソーシャルゲーム等で利用されるランキングをリアルタイムで作成できるAPIとのことでした。データベースにはKey-Value 方式のRadis を採用しており,これはANSI Cで書かれていることで多くの環境で動作し,さらに色々なデータ型をサポートしているため使いやすいと話していました。このAPIの特徴として,アプリケーションごとに複数のランキングを生成できることや,ランキングの詳細の取得ができることを挙げていましたが,その一方で同一スコアのものを同じ順位に設定することができないという欠点も言及していました。

最後にDeNAのエンジニアの求人とともに「3割打てば年収1億円!」として野球選手の求人も行い会場を沸かせていました。

画像

画像

Kazuhiro Osawaさん「位置情報系処理のお話 a.k.a 続・自文書抽出日本的住所」

NHNのエンジニアであるKazuhiro Osawaさん位置情報技術全般に関わるセッションです。

まず「位置情報は妥協が大事でありやることに見合った精度が大事」と述べた後,NHNのサービスであるロケタッチのバックに使われている技術をperlモジュールを中心に説明しました。

測地系の違いを吸収するモジュールやフィーチャーフォンの携帯測地系の違いを吸収するモジュール,範囲検索に使用しているgeohashモジュールがあるそうです。geohashはz-orderingという手法を用いて空間をメッシュに分割した結果をハッシュとして表現する手法ですが,メッシュの境界付近の検索が弱いという弱点があり,それを補うために対象メッシュの周辺のメッシュも検索時にモジュールが自動的に含めてくれるそうです。

その後はOpenSrtreetMapのコンベンションに参加した経験や,北陸や熊本の地番の特殊性に触れた後で,ますます重要性をます位置情報について話しました。NHN内部のサービスでも位置情報がからむものが多く,改善用のデータを見やすくするために白地図APIを開発したそうです。

最後はロケタッチで新規に公開した住所表現正規化APIと鉄道情報APIの裏側について説明しました。鉄道情報APIを公開したのは日本は駅を中心にしているからだとのことです。

画像

画像

Tim Bunceさん「Profiling memory usage of Perl applications」

今回初来日のTim Bunceさんのセッションは,日本語で「ありがとう」と招待されたことへのお礼から始まりました。NYTProfやDBIの開発者でもあるBunceさんの今回の発表のテーマは,メモリのプロファイリングについてです。最初は基本的なsystemコマンドで、system("cat /proc/$$/stat")などでメモリの使用量をウォッチできることを紹介しました。

その後,仮想メモリやPerlのデータのメモリ構造のチュートリアルを経て,Bunceさんが作成中のメモリプロファイラについての話へ移りました。使用しているメモリを正確に測るDevel::Sizeを拡張してフックを用意し,その出力を外部スクリプトで分析するというもので,日曜日には公開されるとのことですが,先行してデモを行いました。

デモでは,メモリ使用量の詳細が文字で表示されるだけではなく,親子関係を表すグラフ表示や,NYTProfでもおなじみのtree mapでの表示も実装されて動いている様子を見ることができました。途中,Mooseを使うコードをプロファイリングしたところでtree mapを表示しきれず,長時間処理を待つことになってしまったので質疑応答に。のべ6人から質問があり,このメモリプロファイラへの期待の大きさが現れていました。

Hisashi HATAKEYAMAさん「スマートフォン向けサービスにおけるサーバサイド設計入門」

発表者は,コロプラの運用・インフラエンジニア,HATAKEYAMA Hisashiさん。今年春から新規サービスの立ちあげを行うことになった体験を振り返りながら,スマートフォン向けのサービスを立ち上げるプロセスを説明しました。構成は,サービスを作るための設計の話,サーバサイドの設計の話,アプリとの連携の話と言う流れです。

ネイティブアプリとして開発するかブラウザアプリとして開発するかの判断基準として,それぞれの形で開発した際のメリットとデメリットを紹介しました。たとえばネイティブアプリはカメラとセンサーが利用できてアプリマーケットからの導線がある,ブラウザアプリの場合はアプリアップデートの手間や影響が少なくシステム構成をシンプルに保ちやすいなど,具体的な特徴を示しました。

今回このトークの題材となったサービスはPerlで開発したそうなのですが,その理由は「使い勝手がいいから」⁠たいていのサーバにデフォルトの環境としてインストールされている便利さと数々のCPANモジュールが充実している点を挙げながら,最近はperlbrewなど,システムに依存しないPerl実行環境を作れることも魅力なのだそうです。

フレームワークはAmon 2を使用していると言います。まずスケルトンを作成し,API,管理画面,モデル,DB,例外と4つの並列した階層をつくってクラスを配置。モデルクラスには,APIに限らず管理画面やCLIからも呼び出せるよう,リクエストに依存しない処理をまとめて配置しているとのことでした。

レスポンスについても専用のオブジェクトを作って入れ子にし,属性名を加工するメソッドを生やすなどして工夫しちるそうです。発生した例外についてはアプリケーション共通で利用する例外クラスのインスタンスを投げる形とし,DispatcherやWorkerのレベルこれをキャッチすることで,各例外の内容に応じたエラーメッセージを作成しているとのことです。

本番と開発環境でドメインや改装が異なっていてもうまく吸収できるよう,Amon 2の持つ機能を利用して動的にconfigを切り替えられるようにし,異なるドメインの場合は個別にプロセスを立てるようにしているそうです。

最初に明確なポリシーを設けたうえで,それを実装に落としこんでいく様子が詳細に語られたトーク。20分という時間を感じさせないいほどの内容の濃さが印象的でした。

画像

画像

著者プロフィール

天谷窓大(あまやそうた)

SNS運営会社に勤務の傍ら,フリーのライターとして活動。大好きなラジオの世界をPerlでハックし尽くすのが夢。

twitter:@amayan


川上大喜(かわかみたいき)

北海道函館市出身。高専卒業後,大学に編入。現在,大学院生業務をこなしつつ某企業でパートタイムエンジニアとして活動中。ソフトウェアのテストやCIといった,ソフトウェアの品質担保に関する話題に強い興味を持っている。

Twitter:@moznion
Web:http://moznion.hatenadiary.com/


中村文子(なかむらあやこ)/Ya-ko

大学卒業後大手ISPのコールセンター業務・ネット企業の企画職・広告代理店プロデューサーなどを経て, 現在「cyclo-PR」の屋号でフリーランスのソーシャルメディアプランナーとして活動。Web業界や広告業界の境目をさまよいながらさまざまな企業のマーケティングやPR,執筆活動を行う。

Twitter:http://twitter.com/ya_k0

LinkedIn:http://jp.linkedin.com/in/ayak0


萩原崇之(はぎわらたかゆき)

自宅警備の傍らコードを書く毎日。最近は電子工作にも心が傾いている。夢は誰もが宇宙旅行に行く世界。

twitter:takayuki_h
blog:http://d.hatena.ne.jp/kagigotonet
google+:https://plus.google.com/115287053726902051396/


本間雅洋(ほんままさひろ)

北海道苫小牧市出身のプログラマー。好みの言語はPerlやPython,Haskell,Scala,Objective-Cなど。在学中は数学を専攻しており,今でも余暇を利用して数学を嗜む。現在はFreakOutに在籍し,自社システムの開発に力を入れている。

共訳書に「実用Git」(オライリー・ジャパン),共著書に「FFmpegで作る動画共有サイト」(毎日コミュニケーションズ)がある。

twitter:@hiratara
blog:http://d.hatena.ne.jp/hiratara/


東聡志(あずまさとし)

北海道函館市出身。都内大手IT企業でプログラマーとして勤務。Perl Beginnersという勉強会を主催。

休日には,PerlやForthなどでのコーディング以外にも,板につかないロシア語の学習やバイクでのプチツーリング,バドミントン,Arduinoを使った電子工作等など,だいぶカオスな時間の使い方をしている。

Twitter:@ytnobody
Web:http://ytnobody.net/