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

2日目レポート[随時更新]

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

「perl-casual特別企画 PMグループディスカッション」

perl-casual特別企画と冠したセッションの第2弾は、「PMグループディスカッション」と題して、日本全国6箇所の地方PMグループの代表者を招いてのディスカッションとなりました。

各pm紹介タイム

まずは各PMの代表者より自己紹介タイムとなりました。

  • Hokkaido.pm - onagataniさん
    • 北海道帯広市在住。Perl歴5年。Movable Typeで仕事している
    • 設立:2010/4
    • PMは本来市町村単位ぐらいで作るのが適切なのに、Hokkaido.pmって広すぎではといわれ、なかなか審査が通らなかった。でも全土でやると広すぎて人が集まらないので、牧さんになんとか説得してもらった
    • JPAへのお願い。講師派遣や初心者向け資料の提供
  • Yokohama.pm - clouderさん
    • 世田谷在住(設立時に横浜に住んでいた)
    • 日本で7つめのpm
    • 横浜を中心に活動しているPerl Mongersがゆっくり参加できるPMが欲しい。
    • Shibuya.pmよりも初心者がトークで参加しやすいPMが欲しい
    • すべて開催後に交流会がある。参加率が90%以上と高い
    • 勉強会以外(忘年会など)も開催したい
  • 名古屋でperlをゆるく語る会 - issmさん
    • 会場への質問。名古屋からこられている方3名程度
    • 名古屋では他の言語の勉強会はあるが、perlがない。
    • 名古屋と近辺の融資で食事しながらPerlについてかたる・・・という名目の飲み会
    • 毎回10名前後のあつまり
    • @yuruperl
    • Nagoya.pmとして申請中

画像
  • Kansai.pm - lapis25さん
    • 兵庫県在住。普段perlはやってない。
    • 設立:2000年3月
    • リーダーがいない。メンバ融資による運営
    • 年1〜2回のペースでミーティング。広域なのでほぼ土日開催
    • 勉強会だけではなく、新年会、忘年会、ぼたん鍋ツアーなど様々な企画を実施している
  • Fukuoka.pm - debilityさん
    • 2007/11設立
    • 頻繁に定例会のように開催している
    • 技術的なプレゼン、飲み会#1〜#4。ビール瓶で乾杯
    • 設立者の杉山さんありがとうございます
  • 岡山.pm/都会.pm - canadieさん
    • 2009/11から
    • しばらく一人だった。参加人数は8名
    • 問題点。人が集まらない。人が集まらないので問題点がでない。問題点すら出ないのが問題
    • 人を増やすいいアイデアを募集しています

画像

続いて質問テーマについてそれぞれディスカッションとなりました。

議題1) 地方だからできること、できないこと

まずは地方PMだからできること、出来ないことという内容でディスカッションされました。

Fukuoka.pmのdebilityさんは、福岡では勉強会が盛んで会場の取り合いになることが多く、PHP-in福岡と合同で開催したりといった工夫をされているそうです。一方Hokkaido.pmのonagataniさんは、札幌市開催の場合は会場がたくさんあって苦労しないが、帯広市で開催したときは会場がほとんど無くて苦労されたそうです。一方Yokohama.pmのclouderさんは東京から近いこともあってShibuya.pmからも人が集まるなど、そういった点ではあまり苦労がないとのことでした。

議題2) 私、実は今悩んでいます 〜地方PMからのホンネ〜

続いて各PMの悩みについてです。

Nagoya.pmのissmさんは、名古屋では他の言語は盛んだが、perlは扱っている企業が少ないのが悩みとおっしゃっていました。

Okayama.pmのcanadieさんは、岡山では車移動が常識のため飲み会が開催できない、Fukuoka.pmのビール瓶乾杯が羨ましいと仰っていました。ですがFukuoka.pmのdebilityさんによるとビール瓶乾杯は例外とのことです。

Kansai.pmのlapis25さんは、miyagawaさんが来られるときやhatena社で行った時などは人が集まるが、普段の開催ではなかなか新しい人が入って参加しづらくなっているのが悩みとのことです。

またNagoya.pmのissmさんは、Shibuya.pmのようなハッカーの集まりというイメージでハードルが高いと感じているとのことでしたが、会場で参加されていたTokyo.pm設立者の前田さんより、Tokyo.pmも活動当初の目的は月1回の飲み会が目的だったし、海外でも飲み会主体のところや勉強会主体のところなど地域によって様々。どんな形でもまずは人と人とのつながりを大事にして定期的に開催していれば良いと思うというアドバイスが送られていました。

議題3) ちょっと教えて!気になる他PMへ質問

三つめの議題は各PM代表者から募った質問をぶつけるコーナーとなりました。

  • Q.開催する会場の探し方。有料無料、選定基準、開催曜日

Hokkaido.pmのonagataniさんによると、札幌市では100名規模でも4000円で借りられるなど会場には苦労しないが、札幌市意外だと会場そのものがなくて大変であるとこのとでした。また開催日については北海道は広いため週末じゃないと集まるのが難しいとのことでした。Kansai.pmのlapis25さんは、会場の手配は企業などに借りることも多いそうです。費用がかかる場合は実費で精算しているが、関西は学生の参加者も多いので学割を用意するなどの工夫をされているそうです。Yokohama.pmのclouderさんは翌日休みなので飲みやすいということで金曜日開催が多いそうです。Okayama.pmのcanadieさんは参加メンバーの都合に合わせているそうで、たまたま平日が多くなっている人のことでした。Fukuoka.pmのdebilityさんは、メンバーの会社の会議室を借りることが多いそうで、土曜日の昼ぐらいから開催しているとのことです。ここで会場で参加されていたShibuya.pmの設立者であり、miyagawaさんにより、会場を先に決めてしまうと人数が固定されてしまうので、増えてくると苦労するかもしれないといった懸念が述べられていました。

  • Q.他コミュニティとの面白い試みなどはありますか?

Hokkaido.pmのonagataniさんによると、北海道にはITコミュニティ活動を支援する社団法人があり、いろいろ助かるそうです。Fukuoka.pmのdebilityさんは、福岡ではPHPグループとお互いのフレームワークの話をしたりしているそうです。Acmeの話などは他の言語でもおもしろい人のことでした。Kansai.pmのlapis25さんは、「またあなたのところの弾さんがPHPをdisっていると言われる」といったエピソードを紹介され、会場から笑いが起こっていました。

  • Q.メンバーの平均年齢と男女比

Hokkaido.pmのonagataniさんは女性参加者は見たことがないとのことでした。Nagoya.pm、Okayama.pm、Fukuoka.pm、Kansai.pmではいつも参加される女性の方がいるとのことです。Yokohama.pmでは98%が男性とのことでした。年齢層は全体的に30歳前後が多いようですが、Nagoya.pmは若い方が多く20代後半ぐらいではないかとのことでした。

  • Q.上級者・初級者がいる中でのトークのレベルなど、運営の仕方について工夫していますか?

Yokohama.pmのclouderさんは初心者がトークする場も提供したいと仰っていました。Hokkaido.pmのonagataniさんは今はあまり意識せずに運営しているが、メンバーも増えてきたのでこれから考えていきたいとのことでした。

議題4) 今後の豊富

最後に今後の豊富について各PM代表より一言ずつ述べられました。

  • Hokkaido.pm onagataniさん 「スタッフのかたが増えてこないと運営が回らないことがわかった。今後は初診者にやさしい勉強会を拓いていきたい」
  • Yokohama.pm clouderさん 「トーク以外のことも実施していきたい。最近開催数がへってきているので活発化したい」
  • Nagoya issmさん 「力まずにゆるく進めたいと思います」
  • Kansai lapis25さん 「いままでどおりゆっくり進めたい。初心者にむけては、Rubyとかのロールモデルが周りにあるので、これから検討していきたい」
  • Okayama canadieさん 「まずは参加者10人目指したい。フリーディスカッションや、初心者と上級者が教えあうという場をつくっていきたい」
  • Fukuoka debilityさん 「これからも周りとの交流をもっとやっていきたい」

画像

xaicronさん「let's database testing!!」

xaicronさんのトークは,データベース周りをテストするノウハウの紹介でした。今回は特にMySQLに関する話をされていました。

まず,データベース周りのテストの鉄則として「ローカルでテストできること」を挙げていました。よくない例として,例えばSQLiteを利用したり,汎用のMySQLサーバを利用する例が紹介されました。前者に関してはMySQL環境で動く保証はなく,また,後者に関してはテストをする度に状態が変わってしまい,テストにならないのが問題です。そこで紹介されたのがTest::mysqld。このモジュールを使うと,テストを実行する度に新しいインスタンスでテストすることができるそうです。

また,初期データの投入のためのモジュールとしてはText::Fixture::DBIを紹介。さらにDBIと親和性の高いモジュールとして,SQL::Abstract,DBIx::DBHResolver,DBIx::Connectorを紹介されました。

最後に,Test::mysqldの欠点として,各テストの立ち上げに時間がかかる問題を指摘。解決方法としてはMakefileを編集するのがよいとのことですが,これを簡単にするModule::Install::ExtendsMakeTestというモジュールを紹介していました。データベース周りのテストは開発していて非常に悩む部分でもあり,明日から業務に使えるトークだったと思います。

画像

画像

Dan Kogaiさん「use LLEval;」

言わずと知れたDanさんによる,LLEvalというサービスについてのトークでした。LLEvalとは色んな言語のスクリプトを実行するWEB APIであり,今は23個の言語をサポートしているそうです。

トークはiPadで行われましたが,ご存知の通りiPadにはPerlのインタプリタは搭載されていません。しかし,ブラウザからLLEvalを利用することで,iPadでもPerlのコードを実行することができます。デモでは,Perl5だけでなくPerl6,さらにはHaskell,JS,POST SCRIPT,Python,BF,iotaなどの言語のスクリプトを動作させていました。

他,LLEvalの注意点として,実行時間が1秒以内(Perl6のみ4秒以内)でなければならないこと,そして,危険なシステムコールは発行できないことなどが挙げられていました。最後の質疑応答で,「x86への対応は?」と要望が上がると,「すぐに対応できます」との返答で,これからも日々機能追加されていくだろうことが伺えました。

画像

画像

横山 彰子さん「perl-casual特別企画 Perlをするとこんないいことあったよスペシャル」

ファミコン、スーファミが大好きと語る横山 彰子さん。perl-casual特別企画の第3弾は「Perlをするとこんないいことあったよスペシャル」と題しての発表でした。今までのPerlコミュニティでの発表歴や、独立までの経緯、普段心がけていることやPerlコミュニティへの思いについて話されました。

横山さんはこれまで何度もPerlコミュニティで発表をされていて、ご自身でもSmiley Hackathon、webrick cafeというイベントを主催されているそうです。現在はフリーランスのエンジニアとして、AnyEventやCoroを使ってクローラを開発されていたりするとのことです。

独立してから心がけていることとして、自分を責めすぎないことや、悪い意見も含めて人の意見を聞くことなどを挙げられていましたが、特に印象にのこったのはアウトプットの重要性で、とにかくブログを書いてイベントで発表してアウトプットを続けましょうということを仰られていました。そういった思想がイベントの主催や各種コミュニティでの発表といった積極的な活動姿勢を裏付けていると感じました。

今後の目標として、CPANモジュールを書きたいと宣言されていました。最後にPerlによって尊敬でいる人たちと関われるようになりPerl最高と締めくくられていました。

画像

画像

Toru Yamaguchiさん「Inside Mobage Platform」

DeNAのYamaguchiさんは,Open Social Containerの実装についてお話しされました。実際にサービス運営に携わっているだけあり,非常に実践的な内容でした。

まず最初に,Open Social独特の用語である,「Container」「Gadget Server」「JS API」「Core」「Social」「View」などの用語の説明がありました。さらに,Apache Shindigについての説明へと続き,「認証をする部分は各社で実装をし直す必要があるが,Gadget ParsingとRenderingに関しては仕様が煩雑なのでShindigのものを使うとよい」と開発について指針を述べていました。

その後,システム構成や認証の方法を経て,話はメインとなるSocial APIの作成に関する内容へ。「APIはシンプルかつ高速な応答が期待される」と述べ,既存のWAFではなく単純な実装にすべきであり,Plackを利用していると話しました。さらにオブジェクトを集中管理して効率化するためのObject::Containerや,ShardingされたDBへのアクセスを制御するDBIx::DBHResolverについて言及をしました。一連のSQL::Abstract系のモジュールに関しては,「新しいSQL作成モジュールが必要かもしれない」と新モジュールの登場を予感させるような発言もありました。

最後に,MySQLのTRIGGER機能をスキーマの変更時に有効活用するテクニックや,TRIGGERとQ4Mを組み合わせる野心的な構成についてまで触れられ,DeNAの持つ大規模サービス運営のためのノウハウを数多く勉強ができる,有意義な40分でした。

画像

画像

Yusuke Wadaさん「perl-casual特別企画 NoSQLで作るTwitter解析サービス」

perl-casual特別企画の第4弾は、Perl Casual主催者のYusuke Wadaさんにより、「NoSQLで作るTwitter解析サービス」と題しての発表でした。タイトルにNoSQLとありますが、一度MongoDBを検討したそうですが現在は利用していないそうです。今回はWadaさんが作成されている「Twib」というtwitter連携サービスの実装面について紹介されていました。「twib」とはTwitterのホットエントリーサービスで、つぶやかれているURLを収集してランク付けするサービスです。

まずはシステムの基本構成についてです。クロール&表示型サービスは、RSSや検索の結果といった情報元となるリソースと、それらの情報を収集してくるクローラ、情報を格納するデータベース、集めた情報を表示するWEBアプリケーションといった要素で構成されます。「Twib」ではリソースにTwitter、クローラ部分はTwitterのsearch APIとStreaming APIの併用、DBはmysql、WEBアプリケーションはDBIx::Class + Catalystといった構成で作られているそうです。

続いてTwibの変遷について発表されました。最初にリリースしたのは2009年8月で当時は3万tweet/1day程度の規模でした。その後しばらく開発はストップしていたそうですが、携帯アプリ「Twittie」との連携の打診があり、また開発を再開したそうです。2010/7月にバージョンアップした時点で80万tweets/1dayの規模にまで成長したそうです。

運用環境は自宅サーバで、アプリケーションサーバ1台、DBサーバ2台、データの解析などを行うWokerサーバといった構成となっているそうです。他のサービスと共有しているためすべてのリソースを使いきれるわけではないとのことでした。

そして実践的な内容へと続きます。まずはTwitter解析サービスのポイントとして、更新が非常に速くデータ量も多いので、とにかく早くどこかへ格納して、解析する際は非同期で処理をするのが重要と述べられていました。また全ての情報を蓄積するとすぐに一杯になってしまうため、情報のプライオリティを決めて切り捨てることも必要とのことです。非同期で解析処理をするためにジョブキューサーバのGearmanを利用されているそうで、60個のworkerプロセスが起動しているそうです。バックエンド処理として信頼性は多少犠牲にしても許容される場合で、速度を重視したい時はGearmanがよいと述べられていました。またリンク先の情報を取得する手段として、HTML::LDRFullFeedとHTML::ExtractContentを併用して精度を上げている点や、画像の抽出にContent-TypeとContent-Lengthを見て一定サイズ以上であれば特徴的な画像と判断するといった実践的な工夫を紹介されていました。

最後にまとめとして、Twitter連携サービスはtweetを早く集めること、情報量が膨大になるのでプライオリティを決めて切り捨てること、ボトルネックはDBとジョブキューになるのでそこを高速化する工夫をすることを挙げられていました。

画像

画像

sugyanさん「perl-casual特別企画 とある自社サービスの運用事例」

perl-casual特別企画のとりを飾ったのは、面白法人カヤックで活躍されているsugyanさんのトークです。「とある自社サービスの運用事例」と題して、カヤックで実際に運営されているwonderfl.netとjsdo.itという二つのWebサービスについて、構成や実装の事例を紹介されました。

まずはサービス概要の説明からです。wonderfl.netはオンラインでActionScript3.0のコードが書けるサービスです。ユーザのFollow、コードのFavorite、Forkして他の人のコードを改造するといったSNS的な機能も備えています。またライブコーディング機能もあるそうです。jsdo.itはそれのJavaScript, HTML5, CSS3バージョンということでした。

続いてシステム構成の話へ。両方共Amazon EC2で動いていて、Web&Appサーバ1台、DBサーバ1台という構成だそうです。それに加えてwonderfl.netではAS3をコンパイルするサーバが2台、jsdo.itでは画面キャプチャを取るサーバが1台あるとのことでした。

アプリケーションはCatalyst, DBIx::ClassでObject::Containerベースで、ViewはTemplate-Toolkitを用いていて設定はYAMLベースとのことです。またdaemonプロセスとしてはセッション情報や閲覧頻度の高いコンテンツをキャッシュするためにmemcachedを、AS3のコンパイルやキャプチャ取得など重い処理をバックグラウンドで行うためにgearmanを用いているそうです。

Webサーバは当初lighttpd + fcgiで動いていたそうですが、再起動時などに苦労することが多かったので、Plack & Server::Starter導入を経て現在はnginx + Starletとなっているそうです。これによる設定変更してもダウンタイムなしで変更できるようになり、安定して運用出来るようになった人のことです。

認証の面では自前で作りこまずにOpenID、OAuthを利用しています。当初は別OpenIDだと別アカウントになっていたそうですが、UserテーブルとUserAuthテーブルを用意して1対多で紐付けすることにより、異なるOpenIDでログインしてもwonderfl.net、jsdo.it上では同じIDとして認識できるようになったそうです。

今後の展望として、Template-ToolkitからXslateへの移行や、wonderfl.netとjsdo.itのコードの共通化、検索システムの改良、jsdo.itへのライブコーディングの導入などを挙げられていました。

画像

画像

著者プロフィール

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

北海道苫小牧市出身のプログラマー。好きな言語はPerlやPython,Java,Objective-C,Haskellなど。在学中には数学を専攻しており,余暇の楽しみは圏論や論理学を学ぶこと。現在はオンライン不動産株式会社にて自社システムの開発に従事している。

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

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


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

WEBアプリケーションエンジニア。京都府京都市出身。仕事ではPerlでサーバサイドプログラムを書きつつ,Objective-CでiPhoneアプリケーションの開発を行っている。最近の興味は統計,機械学習など。

twitter:usuihiro
blog:http://d.hatena.ne.jp/usuihiro1978/

コメント

  • Re:

    ご指摘いただきまして,ありがとうございます。
    修正させていただきました。

    Commented : #2  gihyo.jp編集部 (2010/10/18, 14:04)

  • Re:

    s/Glass/Grass/かな?

    Commented : #1  shamoshamo (2010/10/17, 05:55)

コメントの記入