Route54

技術や好きなものの話をします

YAPC::Asia 2013で発表してきました

はじめての投稿は、YAPC::Asia 2013で発表してきたことについて書くことにします。

YAPCに参加させていただくのは今年で2回目で、去年は「Perlと出会い、Perlを作る」というトークをさせていただきました。YAPC::Asia Tokyo 2012で発表してきました | mixi Engineers' Blog

 

今年は、去年作っていたgperlという処理系をベースに、処理系を構成する各処理(字句解析・構文解析・コード生成)をPerlのモジュールとして切り出して、それらを活用した応用例(Perlコードをブラウザ上やiOS上で動かす・静的解析で用いる)を示しました。

実際今みてみると、gperlから切り出した部分は字句解析部分のごく一部だけなのですが、Parserはこう作ると成功する・失敗するといったこととか、LLVMのコードを生成しようとか、そういうことを考える良いきっかけになってくれたことは確かで、そういう意味でも、処理系を作ってみてよかったなと思いました。プレゼンの最後にちょっと触れたのですが、切り出したモジュール郡の完成度が上がっていい感じになったら、gperlにbackportして、一気に処理系としての完成度を上げようと思っています。

で、ただ戻しても面白くないので、+αで静的型付けや型推論エンジンを実装してくっつけられればいいなぁと妄想していますが、いつになることやら....。

ただ、型推論エンジンはこれはこれでいろいろと用途がありそうなので、単体でモジュールとして切り出しても面白いんじゃないかなとは思っています。

 

ここまでがざっくりと発表内容の振り返りですが、一番反響があったのはPerlMotionに関する話ですかね。いろいろと記事を書いてくださったみなさまありがとうございます。実はYAPC直前まではちゃんと公開する気はなくて、ドキュメントも全然書いていないのですが、実際動かして試された方もいたりして、恐縮であります。

今後このブログ上で、PerlMotionに関する考え方や今のStatusなんかを公開していければいいかなぁと考えています。

 

他の方のトークで特に印象に残っているのは、kazeburoさんのやつと、myfinderさんのやつですかね。kazeburoさんのトークはとても勉強になって、ありがたやといった風合いで、myfinderさんの内容は、「あれ?これ自分がやったやつと同じだ」ってことでとても興味深く聞かせていただきました。

僕がフルテストを高速化したときには、Jenkinsを使っていたので、Jenkinsから分散コンピューティングを行うマスターに対してリクエストを送ったら、そいつから48台の子ノードに、全体テストの一部をそれぞれ送ってテストさせて、その結果をもらって最後にjunit_output.xmlを生成するっていうやつです。この話題に関しては、後ほど詳しくエントリを分けて書こうと思います。モジュールも書いてあるので。

ちなみに上記の話は ぼくとJenkinsおじさんの360日戦争 でさらっとですが触れています。

そういえば、質問でJenkinsの機能で分散ビルドできるのになんでそれ使わないのか的なのがあった気がしますが、Jenkinsが行う分散ビルドと、ここで言っている分散ビルドは少しコンテキストが違うと思ってまして、Jenkinsの機能では、フルテスト対象になってる全テストを分散して実行すること自体はできますが、その結果をひとつにして受け取るってのはできません(分けたテスト毎に結果が返ってくる)。こういう経緯もありつつ、テストを良い感じに同じ処理時間になるように各ノードに振り分けて、集めた結果をひとつにmergeして...といったことをやるモジュールを書いたという訳です。(他にはmiyagawaさんの書かれたforkproveを使えるようになっていたりという機能もあったりします)

 

話がそれてしまいましたが、そろそろまとめます。

 

今年のYAPC::Asiaへの関わり方は去年とは本当に別物でした。去年は右も左も分からない状態で参加して、日本にいらっしゃる著名なPerlハッカーの方たちもほとんど知らないというような状態でした。そんな状態からこの一年の間で、Perlコミュニティーにいらっしゃる著名な方たちと何度か話す機会を頂いて、徐々に名前を覚えてもらえるようになったことで、Perlコミュニティーにいることがとても楽しく、嬉しく思えるようになりました。

自分のトークが終わった後には、話したい!と言ってくださったReiniさんや、tokuhiromさんやgfxさん、miyagawaさん達とランチに行くことができてとても嬉しかったです。いろいろな話の中で、Compiler::*のネームスペースが広すぎで良くないというつっこみを受けてしまい、やっぱりそうだよなぁということでリネームを検討している次第であります。(Gompiler::* ????)

 

他にも、日吉のらすたは家系の中でもかなり美味い方だよなぁだったり、papixくん面白いなぁだったり、感想を言い出せばきりがないので、このへんにしようと思います。

 

最後に、とても楽しい機会をくださったlestrratさん、941さん、本当にありがとうございます!4年間お疲れさまです!