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

YAPC:: Asia 2014 2日目レポート[更新終了]

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

Naosuke Yokoeさん「Perl Mongersのためのstrace入門」

Naosuke Yokoeさんは,プロセス内で発行されているシステムコールをトレースするためのツール,straceに関して発表しました。

最初にWebアプリの仕事を,HTTPリクエストを受けてHTTPレスポンスを返すところまでとして,それをシステムコールレベルまで順に変換しつつ説明しました。そこから実際にWeb Serverを立ち上げてstraceのデモを行いました。

その後,straceを読むときの基本的な読み方,fdに注目することでファイルの生存期間やソケットの生存期間などの判明すること,さらにMySQL, memcacheなどのport番号をあらかじめ知っておくことで調査をport番号からfdを知って追うことができるといったことを実例を踏まえて紹介しました。また,調査を行う際は人の記憶やアプリのログ,アプリのコードではなく,starceやtcpdump, gdbといった嘘をつかないツールに頼ったほうが良いとのこと。そして,thundering herd問題についても取り上げ,こちらも実例を交えて調査の方法を紹介しました。

最後に,straceは万能ではありませんが,使えると便利で,Webアプリの気持ちがわかるようになるのでお勧めであると述べていました。

画像

画像

Kazuho Okuさん「JSON SQLインジェクション脆弱性と,そこから学ぶセキュアプログラミングの原則」

Kazuho Okuさんは,JSON SQL インジェクションによる脆弱性に関して発表しました。多くの言語にライブラリとして提供されているSQL Query Builderは,アプリケーションからDBにアクセスする際のクエリを生成するためのものです。SQL Query Builderは値がスカラか配列かハッシュかなどを見分けて,クエリを生成してくれます。

JSON SQL インジェクションは,JSON形式のデータをSQL Query Builderに渡す際に想定と異なる型が渡されることによって起こる可能性があります。スカラの値が入力されることを期待している箇所にハッシュ値などが入ることで,開発者の想定していないデータが取得されてしまうかもしれません。これはPerl固有の問題でなく,他の言語でも起こり得るそうです。

この問題に対応するために,クエリの生成に配列やハッシュを使うのではなく,関数を用いるSQL::QueryMakerを開発して対応したとのことです。またSQL::Makerにも,配列やハッシュが使われるとエラーを返すstrictモードを追加したそうです。

Okuさんはこの問題から得た教訓として,⁠入力値を検証すること」が大切だと述べていました。値だけでなく型もチェックし,その上で検証が不足しても情報が漏洩しないよう,SQL::QueryMakerやSQL::Makerのstrictモードのような実装を用いていくことが望ましいとのことでした。

画像

画像

ランチセッション

2日目のランチセッションは@yu_loveperlさんによる発表です。DNPデジタルコムにおける開発風景やソリューションの実績などを紹介しました。Perlがどのように使われているかを示したのですが,これらのPerlの構成が古いそうで,今どきのものに改善していきたいと述べていました。

画像

画像

地域.pmミートアップ 2014

イベントホールでは,全国各地からHokkaido.pm, Hachioji.pm, Fukuoka.pm, Kansai.pm, Kyoto.pm, Niigata.pm, Yomitan.pm, Mishima.pm, Hachioji.pm, Yokohama.pmの計10団体の代表者を招いて,パネルディスカッションが開催されました。各団体の現状の紹介や今後の野望など,活発に議論が交わされていました。

画像

Sawyer Xさん「Plack for Fun and Profit (But Mostly Profit)⁠

ゲストスピーカーの一人であるSawyer Xさんからは,Plack/PSGIの概要とビジネス視点の重要性について発表がありました。Sawyer XさんはDancer2というフレームワークの作者でもあります。

まずはPSGIについてです。環境変数を引数にとってArrayRefを返すサブルーチンという最も基本的な形から,Delayed PSGI response,Streaming PSGI responseのパターンが紹介されました。

つづいてPSGI toolkitとしてのPlackについてです。WebサーバとPSGIアプリケーションをつなぐHandler,PSGIアプリケーションを実行するRunner,PSGIアプリケーションをラップしてレスポンスを変更できるMiddleware,Middlewareを有効にするためのDSLとしてのBuilder,PSGIアプリケーションのTestingなどが紹介れました。

このようにPSGIは便利でクールだけど,それで十分ですか?という問いかけからビジネス面への考察へと展開していきます。

Sawyer Xさんが所属するBooking.comは宿泊施設の予約サイトで,53万の宿泊施設,3,500万件のレビュー,42カ国語サポートなど非常に大規模なサイトです。コードベースは百万のオーダーに達し8000以上のパッケージからなります。歴史も長く1996年から運用しておりMasonやmod_perl,Class::DBIなどといった今となってはレガシーなコードベースもたくさんあります。これらのコードは今も利益を生み出しており簡単に消し去ることはできないものです。2日かかる機能改修をリファクタリングすれば10分でおわるけどリファクタリングに2ヶ月かかるといった場合,後者を選択することはビジネスでは現実的ではありません。したがってこれらのコードともうまく付き合っていく必要があるのです。

この問題を解決するために複数のPSGIアプリケーションを組み合わせる事例を紹介されました。それぞれの環境ごとの違いを吸収するPSGIアプリケーションを用意し,それをさらにdispatcherの役目を果たすPSGIアプリケーションで統合しているそうです。

レガシーコードをモダンなコードにリファクタリングしたい思いに駆られるのはエンジニアとしてよくあることだと思いますが,Sawyer Xさんの発表を聞いて考えなおすきっかけになった人も多いのではないでしょうか。

画像

画像

kobakenさん「ほんとにあったスキーマの話 「ソーシャルゲーム」」

kobakenさんは,スキーマについて発表しました。

スキーマとは何かという定義から始まり,ゲームとしての特徴,Webサービスとしての特徴などをあ挙げ,ソーシャルゲームでのというコンテキストでスキーマ定義について話しました。

代表的なスキーマの例としてユーザ,カード,称号,バトルをあげ,それぞの定義とその変更,そして変更から得られたパフォーマンスやパラメータ変更への修正への強さなどを実際に使用されたスキーマを例に紹介しました。

最後には発表者から会場の方へ逆に質問をするという面白い趣向もみられるセッションでした。

画像

画像

著者プロフィール

臼井洋文(うすいひろふみ)

京都府京都市出身のプログラマ。仕事ではPerlでサーバサイドを書きつつ,Objective-CでiOSアプリの開発をしている。週末はボルダリングに勤しむ日々。

Twitter:@usuihiro
Web:http://d.hatena.ne.jp/usuihiro1978/


日下部雄也(くさかべゆうや)

仕事はニフティクラウドのネットワーク関連の機能の企画・開発・運用で,運用自動化のためのプログラムを書いていることが多い。言語は,Perl,Python,Ruby,C,Goなど。最近,Vyatta CoreからフォークされたVyOSという仮想ルーターのユーザー会を設立し,第1回目のミーティングを主催した。

Twitter:@higebu
Web:http://www.higebu.com


滝沢玲美(たきざわれみ)

千葉県在住。仕事はITとは全く無縁な事務職だが,プログラミングに以前から興味があり。今回,Perl入学式にてプログラミングを初めて学ぶ。

藤沢理聡(ふじさわまさあき)

神奈川県在住。仕事でソフトウェア開発をしつつ,余暇にも友人たちとソフトウェア開発をする日々。長くPerlを愛用している他,ここ数年はPerl 6にも挑戦している。

Twitter:@risou
Web:http://www.risouf.net/


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

北海道苫小牧市出身のプログラマー。好みの言語はPerlやPython, Haskell, Scala, OCamlなど。在学中は数学を専攻しており,今でも余暇を利用して数学を嗜む。現在はFreakOutに在籍し,自社システムの開発に力を入れている。 共訳書に「実用Git」(オライリー・ジャパン),共著書に「FFmpegで作る動画共有サイト」(毎日コミュニケーションズ)がある。

Twitter:@hiratara
Web:http://hiratara.github.io/


森藤大地(もりふじだいち)

ISP勤務。卒研でPerlのプログラムを組んで以来, Perlを利用している。 CROSSというエンジニアイベントを主催していたりする。 d3の翻訳やひとりアドカレなど,解析・可視化業務を行っている。

Twitter:@muddydixon
Web:http://muddydixon.hatenablog.com


山中裕之(やまなかひろゆき)

ドラゴンズファン。某会社のプログラマとして活動中。好きな言語はPerl, Ruby, C, C++, Haskelなど。武術が好きで休日はいそしんでいる。

Twitter:@hiroyukim
Web: http://hiroyukim.hatenablog.com