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

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

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

Ingy döt Netさん「Acmeism, Pegex and CoffeeScript on CPAN」

紫の帽子にタトゥーという,いつも通りの素敵なスタイルで登場したIngyさん。特定のプログラミング言語にこだわらず,様々な言語でプログラミングを実現する"Acmeism"について話しました。途中でポッキーを配り出したり,Ingyさんのサービス精神も垣間見えるセッションでした。

Ingyさんは自身の考えるAcmeismについて,子供が砂場で遊ぶような感覚でアイディアを他のハッカーに分け与えることができるものであると表現しました。その中で,Perl 6 Rulesを基にしたpegexを紹介し,実際にJSONをpegexで定義する例を示しました。

他にもCoffescriptやPython,Perl,C'Dent,UniScriptなど,様々な言語が現れたこのセッションは,今回のテーマである"Take A Step Forward"に相応しい,垣根のない内容でした。

画像

Toshinori Sato さん「Perlでデータクリーニング」⁠

NHN Japanの@overlastさんによる,データマイニングを行う際に必須となる「データクリーニング」の手法についての発表です。

データが持つ2つの問題として「データ自体の問題」「データマージ時の問題」を挙げたoverlastさん。Excelのワークシートによく見受けられるような「セパレータが値に入っている」⁠表記揺れで別エントリとして認識されている」という問題,スキーマを用いても解決できない問題…スペルミスや重複・冗長,データ同士の矛盾,また日付など同種のデータのフォーマット違い,単位の規格化や変動するレートによる変換時の問題などを例に,構造化されていないデータの問題点を指摘しました。

これらの生データをクリーニングするときに大事なことは「ノイズデータを捨てない」ことなのだと言います。データを捨てると全体の情報量が減ってしまい,特に捨てたデータが固有のものだった場合に致命的な状況となるため,人と機械の両方で作業を行うことが大事なのだそうです。⁠小さすぎる静的データは自明であるし,小さすぎる動的データは無意味」とoverlastさん。ノイズ削減と再現率の向上のため,データの全体量を増やすことが大事であると語りました。

「やる気が長続きする」データクリーニングの手法は「見つかった欠点は極力直す」⁠見つかっていない欠点は無視すること」⁠⁠汚いエントリ」を見つけたらまず理想の回答を思案し,問題を集めて現象系の傾向をつかんでテストを書くことが大事なのだそうです。

正規表現によるフィルタリングや全半角統一など文字列の正規化,またText::MeCabやJUMAN,Text::KyTeaなど,ミドルウェアの駆使によっても訂正や再処理の一貫性が向上するとのこと。機械学習の効率を上げるために回帰テストを書くことも重要であるとし,⁠人間の判断基準は必ず言語化すること」⁠誰かの頭の中の基準は捨て,個人の主観のみに頼る判断を徹底排除すること」が大切であると締めくくりました。

画像

画像

Tokuhiro Matsunoさん「Nana/Tora - Perl5 から見える未来。Perl5 と共にあゆむ Perl6 ではないプログラミング言語、それは。」

tokuhiromことMatsunoさんのセッションは,現在のPerlの問題点を踏まえ,それに対してどのような解決策があるかを考えるという内容でした。まずPerl5を長年使った経験からPerl5のよくない点を何点か挙げていました。例えば,コンテキストによって実行結果が変わったり,リファレンスの概念が面倒だったり,XSが難しかったり。

そのようなPerl5に対して,かれこれ10年以上開発が続けられているPerl6は,解決策となるのでしょうか。MatsunoさんはPerl6の問題点として下位互換性が低いため,新たな学習コストが必要となることを指摘しました。また,実行速度もまだまだ遅いそうです。

それでは,なぜPerl5は今でも使われているのでしょう。取り上げられたのは「DSL for CPAN」という側面です。つまり,CPANが使いたいがために,Perlが使われているのではないかと。それを踏まえた上で,できのよいnode.jsのnpmに着目し,⁠DSL for npm」という方向性について模索しました。この結果,自ら開発したbetter Perl5を目指す言語Toraのnode.js実装であるkumaであったり,node.js上でPerlやRubyが動くnode-perl,node-mrubyなどをデモを交えて紹介しました。

本セッションは言語の壁を越えたセッションが多いYAPCの特徴をよく反映したものであり,Twitter上でもYAPCなのにPerl以外の話がされているのかと,話題になっていました。

画像

画像

Lenz Gschwendtnerさん「rapid prototyping with Mojolicious::Lite」

Lenzさんの「rapid prototyping with Mojolicious::Lite」というタイトルのセッションです。

まず最初に,⁠小さなことから初めて,そこからコツコツと育てていく」というテーマを掲げて,⁠少ないコードであれば変更が容易になりますし,コードベースが小さければ小さいほど作業効率が上がります。また,プロジェクト中のファイルの数が少なければ,見通しが良くなり,既存のフレームワークを使うと高速な開発が可能になります」と,プロトタイピングを行うことのメリットについて話しました。次に,"Mojolicious::Lite"や"CouchDB","Twitter Bootstrap"を取り上げ,これらのフレームワーク・データベースがラピッド・プロトタイピングにとても向いていることを示しました。

そしてLenz さんが開発に携わっているPlanet Express Shipいうwebアプリケーションスターターを紹介しました。Planet Express Shipは"Mojolicious::Lite","CouchDB","Twitter Bootstrap"を利用したラピッド・プロトタイピングを支援するツールであるとし,buildを実行することで,それらが依存関係を満たしてインストールされ,さらにログイン処理やアカウント関連の処理,gmailやGoogle Appsのサポートが最初から実装されていると説明しました。それにより,ラピッド・プロトタイピングを容易に実現できると指摘しました。

Twiter Bootstrapについては,Bootstrapのテーマを入手できるWebサイトの紹介から始まり,通知システムやログインシステムなどのレイアウトのテンプレートとして実装されている機能の説明や,実際の利用例の紹介など,盛りだくさんな内容でした。

なお,Planet Express Shipを活用して作成されたWebページのサンプルは,Lenzさんのtwitter (@norbu09) に掲載されるようです。

画像

画像

Masaru Hoshinoさん「大きくなったシステムの疎結合化への取り組み」

株式会社ミクシィに勤務されているMasaru Hoshinoさんの「大きくなったシステムの疎結合化への取り組み」というセッションです。

mixiのサービスは2004年からスタートしており,表の処理も裏の処理もPerlで動いているそうです(ただ,一時期オープンソース化した煽りでその該当する部分のライブラリは変更したとのことです)⁠2004年からサービスが提供されているため,ライブラリやモジュール群が複雑に絡まりあっており,レガシーなコードも多くなっている,というのがmixiの現状だと言います。そして「長く続いている上,開発者がたくさんいるサービスにとって,そのような状況に陥るのは避けられない」とした上で,システムの疎結合化への取り組みに関して発表しました。

取り組みの1つとしてとして,Service Procedureを取り上げました。Service Procedureはモジュール間を仲介するための擬似的なリモートプロシージャコールで,直接`use`することによって生じる依存関係をアダプタを介して利用することで,内部実装の変更を吸収することができるとのことです。

次にmixiのシステムで利用されているAPIを挙げた後,その中のCoreInternalAPIというmixi内部ネットワークのサービス向けAPI にスポットを当てて解説しました。まず,mixiの日記やコミュニティといったサービスはすべて1つのリポジトリで管理されていることを説明し,⁠既存資産を利用することができる」⁠開発ノウハウを共有することができる」というメリットを挙げた後に「リポジトリが肥大化する」⁠ソースコード変更による影響範囲が拡大してしまう」⁠新しいトライへの障壁となってしまう」というデメリットを示して,そのデメリットに対する解決方法として必要な情報のみをAPIとして提供するとのがCoreInternalAPIだと紹介しました。

ライブラリ管理にはInspectPackageという名前空間ごとのスコアを参照するツールを利用しているとのことです。このInspectPackageで表示されるスコアは名前空間の依存度・結合度であり,これを低くするためにグラフ等で可視化するなどの工夫をしていると話していました。

また,ガイドラインとレビューと題してmixi社内でのコードレビューの仕組みについて紹介しました。mixi社内ではソースコードに対してコードレビューを行うことが義務化されており,一定のコードの安定度・統一性が保たれてきたようです。従来まではコードレビュー委員会が中央集権的にコードレビューを行なっていたところを,各チームに権限移譲したということでした。これは,疎結合化が進んだことによってコード変更による影響が局所化した影響だとしました。

最後に,⁠既存のものに引っ張られずに,悪さに歯止めをかけること」⁠新しいものを駄目にしない」⁠駄目なものは洗い出して直してゆく」⁠いつか良くなるだろう,は甘え」とまとめた後,⁠最終的にはエンジニアの手によって計画的に改善していくべき」と教訓を示してセッションを締めくくりました。

画像

画像

著者プロフィール

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

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/