RubyKaigi2011 スペシャルレポート

日本Ruby会議2011 3日目レポート[更新終了]

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

7月16日(土)から18日(月)までの3日間にわたり,練馬文化センターにて日本Ruby会議2011(略称:RubyKaigi2011)が開催されています。本ページでは,3日目の模様を随時レポートしていきます。

今年のRubyKaigiにも,世界中から人が集まりました。

画像

画像

開場前,スタッフの集合写真が撮られていました。

画像

高橋征義さん,okkezさん,Sunao Tanabeさん「一般社団法人日本Rubyの会と関連プロジェクト報告(るびま,るりま)」

まずは高橋さんの方から日本Rubyの会について話がありました。

一般社団法人 日本Rubyの会

日本Rubyの会は現在一般社団法人にする予定となっており,日本Rubyの会が発足した8月に法人化すると述べました。

現在の任意団体と一般社団法人の違いの一つに,高橋さんは「契約」を挙げました。たとえばRubyKaigiの会場の契約は現在は個人,つまり高橋さんが契約していますが,法人化すれば法人として契約することが可能となるそうです。

他にも法人として資産が持てることをあげ,今まで個人が肩代わりしていたことを日本Rubyの会が法人として行なえるようになると述べました。

なお,一般社団法人にも様々なものがありますが,非営利性が徹底された法人とするとし,公益法人にはならないと言及しました。

また,法人化することで会員の構成も変わるとのことです。具体的には正会員,一般会員,名誉会員の3つに分類されるようになるとし,現在の理事が正会員となるそうです。正会員はいわゆる社員と同じ意味とのことです。現在の会員は一般会員に属し,名誉会員にはまつもとさんがなることを予定としているそうです。

法人化後の活動は現状とほぼ変わらないとのことでした。今年で最後となるRubyKaigiはRubyKaigiという名前も含めて一旦白紙から検討しなおすそうです。

法人化を行なうことにした背景には「継続性」があるそうです。社団法人となることで,属人性を排除することができるため,継続性のある団体として活動できるようになると述べました。

最後に「ご期待ください,というよりは皆さんと一緒に新しい形を作っていきたい」と話し,今後も日本Rubyの会は続いていくとまとめました。

Rubyリファレンスマニュアル刷新計画 2011 夏

続いて,okkezさんによるRubyリファレンスマニュアル,通称るりまの活動について話がありました。

最初の目標として,Ruby1.8.7もしくは1.9.1のリリースとともに完全なリファレンスを提供することがあったと話し,1.9.3のリリースが予定されている現在,活動としては遅れていると説明しました。

2006年に第1段階,2007年に第2段階が終了し,今では第3段階をずっと継続中だそうです。第3段階が長引いている理由としては,当初マニュアルの内容については質は気にしないがすべてのメソッドエントリを記述するとしつつも,協力してくれる方が質にも大分気をくばってくれているのでなかなか苦労していると話しました。

現状の残タスクについて触れたあと,今後の予定として今年の8月に第3段階を終わらし,メンテナンスフェーズに移行するとのことです。また,るりまに参加しやすいようにgemの提供やRDocとの連携などを考えているとのことでした。

最後に,Ruby1.9の言語仕様に詳しい人や,Windowsに関するドキュメントが書ける人が足りていないこと,BitClustに機能を追加したいことを挙げ,会場のRubyistたちに協力をお願いしました。

Rubyist Magazine

最後に田辺さんからRubyist magazine,通称るびまの活動について話がありました。アジェンダとして以下のことを挙げました。

  • 2011年の今を報告
  • 今後のるびまについて
  • るびまの編集の募集
  • るびまの記事の募集

まず,今年のるびまの活動として31号から34号,RubyKaigiのKaigiFreaksレポート班によるRubyKaigi2011直前特集号の発行したという報告がありました。そして今までもるびまでは記事の公募をしていましたが,改めてruby-listで公募を行なったとのことです。いくつかテーマを絞ったことでFiberなどの記事はすでに公開され,近いうちにSinatraなどの記事も出せる予定だそうです。Bundlerについて記事をかける人がいないそうで,Bundlerの記事を書いてくれる人を募集中とのことでした。

これからのるびまについて,あくまで編集部ではなく田辺さん個人の見解としながらも,ruby-devの翻訳プロジェクトの広報をしていきたいと述べていました。ruby-devは日本語での議論が中心なので海外の方は読むことができません。現状,翻訳する人も読む人も足りておらずあまり活発的とは言えないので,関わる人を増やしていきたいとのことでした。

るびまは組織で動くというより個々の人達が動くことからはじまるらしく,会場の人達に「いっしょにやりましょう」と呼び掛けました。

画像

画像

画像

あんどうやすしさん「parse.yの歩き方」

あんどうやすしさんは昨年のRubyKaigi2010のLTでの発表の続きということで,parse.yを触ってRubyの文法を変更する方法についての発表しました。

前回のあらすじは,Rubyはクリスマス合わせで新バージョンを(毎回ではないが)リリースする慣習があり,Ruby誕生からもう18年も経つのだからこの「クリスマスプレゼント」を貰う側からあげる側になろう,そのために文法を改造したオレオレRubyを作ってみんなでクリスマスにリリースしよう,というものでした。このLTの時は技術的な詳細に触れていなかったため,How toに踏み込むのが今回の目的であると述べました。

parse.yとは

プログラミング言語は言語である以上文法が存在し,Rubyの場合その文法を定義しているのがparse.yというファイルです。これをyaccというパーサジェネレータに読みこませると,定義した文法を処理するためのプログラムが生成されます。例としてRubyのif文を定義している箇所を見せ,トップダウン的に文法を定義していくことを概観しました。詳細は『Rubyを256倍使うための本 無道編』を読むとよい,とのことです。

また,Go言語の文法定義ファイルであるgo.yとRubyのparse.yを比べると行数が約2,000行vs約10,000行とRubyがかなり大きく,スキャナ(条件分岐の判定をするもの)の状態数もGoの1つに比べRubyは11+αとかなり複雑であると述べ,1.9系のVM作者であるささださんの「parse.yは魔窟」という言葉も紹介しました。Rubyに詳しい人すらもこう言っているのが,parse.yというものなんだそうです。

では,「我々一般のユーザがRubyを改造しプレゼントするのは難しいのか?」「たくさんの勉強を経てからでなければならないのか?」という問いについて,「長い旅行に必要なのは,大きなカバンではなく,口ずさめる一つの歌さ」というスナフキンの名言を引用。やっていけば結構なんとかなるよ,とその過程でわかったコツを実例と共に紹介しました。

Fuzzy Ruby

最初の例としてあんどうさんが作ったのが,Fuzzy Rubyです。これはif文のthenの代わりにprobably,maybe,perhapsのような曖昧さのある言葉を書くと,trueになる確率がそれぞれ80%,50%,20%になるというジョークRubyです。やっていることはジョークでも発想自体はまじめで,Rubyはオブジェクト指向言語というよりも文章指向言語であり,DSL風にすらすら読めるコードがみんな書きたいのではと思ったそうです。しかし文章の要素として名詞・動詞・形容詞はあるが副詞が見当たらず,それを追加すればおもしろいだろうと試してみた,ということでした。

初期の構想ではobj.do_something anywayのように処理の最後に副詞をつければ動作が変わる(この場合,例外を無視する)ものを目指していたがこれは難易度が高かったそうです。そこで目を付けたのがthenで,これも副詞だから,そこに別の副詞を置き換えるよう真似て書くことでうまくいったとのことでした。コツとしては,やりたいことと似ている文法を探すことが大事だと述べました。

また,実作業をする際にはとにかくgrepをして,参考元の文法が関わっている所を探すのがポイントということでした。Fuzzy Rubyではparse.y以外にもdefs/keywords(予約語を定義するファイル),id.h等を触ったことを説明しました(id.hについては自動生成機構がある,とRubyコミッタが質疑応答で言及していました)。

そして,追加した文法に対応するアクションを書くところでは,もちろんC言語を書くがC言語を知らないなりでも結構いけたと述べ,分からないときは一旦Rubyで考えてみるといいと補足しました。例えばmaybeなら,Rubyだったらand rand < 0.5になると捉えて構成を考える。さらに,NEW_FCALL(rb_intern("..."), 0)のような関数を使えばRubyの既存のメソッドを使えるからこれを使ってみるのがいい,とのことでした。

XML Ruby

次に出した例がXML Rubyで,<?xml>?</xml>で囲むとそこがXMLオブジェクトになるというリテラルを追加したRubyです。実はこれはScalaにある機能で,他の言語はネタの宝庫なので自分で考えるより他から持ってくるのもアリ,としていました。

作るものが決まったら,Fuzzy Rubyの時に習い,Rubyから似た文法を探します。何行にも渡る文字列を囲うものと言えばヒアドキュメントが近いので,これを真似たそうです。ただし,そのままでは単なる文字列オブジェクトができてしまうためXMLに変換しなければなりませんが,それにはXMLを操作するライブラリを明示的に読み込む必要があるとのこと。そこで,prelude.rbにその処理を書いたそうです。prelude.rbはその中にRubyを書くとそのコードがまるで最初から言語に組み込まれていたかのようのようになるため,割と万能であると説明しました。

Objective Ruby

次に出てきたのがObjective Rubyで,%o{}に囲まれた内側はSmalltalkの文法になるRubyです。これも元ネタがあり,Objective-CがC言語とオブジェクト指向的なコードを混在させて書けることに着想を受けたそうです。ポイントとして,%o{}の内と外で同じ変数をやり取りするためにbindingを渡すという工夫をしていることを説明しました。また,RubyにはSmalltalkParserクラスがないため先程のXMLの場合と異なり,raccを使って自分でパーサを作ってしまった上でprelude.rbに組み込んだそうです。

ennnnd

最後の例は発端として,Rubyでブロックを多用するとそれを閉じるのに後ろにendが沢山並んでしまうのをどうにかしたいという動機を述べました。解決案の一つとしてPython方式でインデントを数えるというのがありますが,これは過去にMatzにrejectされているとし,であればさらに先人のLispの知恵である(cdr(cdr(cdr)))を(cdddr)と書く機能を真似たらいいと提案しました。すなわち,endが続いたらその数だけennnndのように書く方法で,その奇抜な発想に会場からは大きな笑いが巻き起こっていました。実装は意外と難しく,CRubyではなくRubiniusを使ってなんとか実現したそうです(発表後,あんどうさんが実際にRuby本体へ機能提案したところ,なんだか議論が盛り上がってるようです)。

最後に,「今年からクリスマスはユーザーが勝手にRubyを作って公開する日にするのはどうでしょうか?」という提案を再度して,発表を終えました。皆さんもあんどうさんのように楽しいハックをして,サンタクロースになってみてはいかがでしょうか。

画像

画像

著者プロフィール

KaigiFreaks レポート班

KaigiFreaksとは,会場に来れなかった人にも,雰囲気や内容を楽しんでもらえるように動画収録や配信を行うことをミッションに,RubyKaigi2008で結成された特別編成チーム。

RubyKaigi2009からはgihyo.jpを中心にテキストと写真で現場の様子を伝えるレポート班が加わり,現在のKaigiFreaksは配信班とレポート班の2班編成。


三村益隆(みむらみつたか)

(株)永和システムマネジメントサービスプロバイディング事業部所属。Asakusa.rb & Rails勉強会@tokyo。このところRailsのお仕事をしています。言語好き。

blog:http://d.hatena.ne.jp/takkan_m
twitter:http://twitter.com/takkanm


すがわらまさのり

ハンドルネームはsugamasao。

Mitaka.rb や 若手IT勉強会に参加しています。仕事では自社プロダクトのデーモンの開発あたりでRubyを使ったりしています。伊坂幸太郎さんと荒木飛呂彦さんが好きです。

blog:http://d.hatena.ne.jp/seiunsky/
twitter:https://twitter.com/sugamasao


小松崎典之(こまつざきのりゆき)

ハンドルネームはO-Show。

RubyKaigi2010に参加したことで触発されRubyistを自称するようになる。ブログでRubyやGit関連記事の翻訳をあげています。もっとRubyとGitの情報の流通増えろ!と願ってやまない。

blog:http://keijinsonyaban.blogspot.com/
twitter:http://twitter.com/oshow


菅井祐太朗(すがいゆうたろう)

仕事でも Ruby を使えたらいいなぁと考えている新社会人LOCAL 所属。この春からAsakusa.rbにjoin。

twitter:http://twitter.com/hokkai7go


赤松祐希(あかまつゆうき)

2010年よりRuby on RailsでのWebアプリケーションの開発を中心にフリーランスのRubyプログラマとして活動中。最近はHaskellに興味を持ち出し、勉強しはじめている。

blog:http://ukstudio.jp/
twitter:http://twitter.com/ukstudio

コメント

コメントの記入