日本Ruby会議2008 1st day
せっかく有料チケットを入手したのでという貧乏根性から、大ホールのメインセッション (こちらだけチケット必須) を中心に聴講。キャパシティ一杯まで入るのかと思っていましたが、意外に余裕がありました。
以下、講演の覚え書きです。
2008/6/21(土)10:00-12:00 メインセッション
現在の、そしてこれからのRubyVM開発 (ささだこういちさん)
Ruby 1.9系の開発状況・開発予定
- Ruby 1.9系の最新スナップショット1.9.0-2が6/20にリリースされた。
- 今後、毎月25日にスナップショットリリース1.9.0-xを出して、9/25の1.9.0-5でfeature freeze、12/20に安定版の1.9.1をリリースする予定 (あくまでも予定であって、そうなるとは限らないとのこと)。
- リリース管理にツールとしてRedmine (拡張版) を使用し、Yuguiさんがリリースマネージャを務める。
東大でのRuby関係の活動
- スレッドの並列実行: 現在はGlobal VM Lock (GVL) によって並列性が制限される。GVLをなくすと既存のライブラリコードを書き換える必要が生じるため、適用するかどうかは未定。
- マルチVM: 単一のプロセスの中で複数のRuby VMを動かす。例えば現状のmod_rubyでは1つのアプリケーションしか動かせないという制約があり、その制約をなくすなどの効果がある。SunのJRubyプロジェクトとの共同研究。
- Rubyによる科学技術計算: 浮動小数点演算の最適化により、メインストリームのRuby 1.9に対して約2倍の性能が得られている。
- Atomic Ruby: 組み込み向けなどに、自分専用にカスタマイズ可能なRuby処理系。
- Memory Revisit: Garbage Collectionアルゴリズム、メモリ割り当て/解除の戦略の再検討。
- 東大笹田研の立ち上げ: 2008/4から、学生2名でスタート。現在学生絶賛募集中とのこと。
JRuby: Ready for Action (Charles Nutterさん)
2008/6/21(土)13:30-15:30 メインセッション
基調講演「プログラミング梁山泊」(まつもとゆきひろさん)
講演タイトルはうろおぼえ。
「梁山泊」とは、ある技術の周りにすぐれた開発者が終結し、新しい技術を生み出すような環境を意味する。
過去のプログラミング梁山泊として、Lisp、UNIX、Smalltalk, Javaが挙げられる。これらは必ずしも技術的にベストだったわけではなく、技術者のコミュニティを形成する求心力がより重要である。
次のプログラミング梁山泊として、「Ruby梁山泊」ができつつあるのでは? というのが本講演の趣旨。
Rubyの特徴
- 過去を継承: メタプログラミング、オブジェクト指向、テキスト処理/POSIX API
- 感性を重視: プログラマにとっての「楽しさ」に注目 ←→ 機能、性能に注目/Rubyには機能面・性能面での新しさはない
- 生産性を重視: マシンの性能は向上する一方、人件費は高騰 → 生産性がより重要に
- Ruby on Rails: 生産性、俊敏性、ダイナミズム/all-in-one
- Post Rails: Merb, Ramaze など。まだ決定的なものはない
- 複数Ruby実装: JRuby, Rubynius, Ruby.NET, IronRuby, MagLev, etc.
- 互換性: テストスイート (RubySpec)、Ruby標準規格/政府調達のためにはオープンな言語仕様が必要
- 基本性能: Ruby実装間での競争・協調による性能向上
- 機能強化: 遅延評価、ネームスペース (クラス再定義の有効範囲を制限)
- スケーラビリティ: 楽天 ROMA/fairyなど
楽天技術研究所の人 (お名前失念) によるROMA/fairy紹介
2008/6/21(土)16:00-17:20 メインセッション
Ruby《を》教えてるんじゃない、Ruby《で》教えてるんだってば (増原英彦さん)
東大の教養課程でのRubyを用いたプログラミング教育の紹介。
- Rubyを使って、コンピュータサイエンスにおける概念 (計算量、動的計画法、etc.) を身に着けることを目的としている。
- Rubyそのものを学習することは目的ではない。
- 年あたり約400人の学生が履修する。
- UCLAの調査では、コンピュータサイエンス専攻の学生が最盛期の1/3に減少
- プログラミングに積極的に興味のある学生だけを対象にするのではなく、道具としてのプログラミング教育の必要性
- 道具としてのプログラミングでは、Javaはお約束が多すぎる
- public static void main(String[] args)
- なぜRubyか?
- インタラクティブ、インストール容易、日本語のドキュメントが豊富、文法が容易
- 他のいくつかの言語の中から、最終的にはエイヤと決定
- 講義で扱う文法
- オブジェクト指向は扱わない (最後の方だけ扱う)
- 制御構造はwhileとifに限定
- ありがちな落とし穴
- end忘れ ← インデントのないコードから発生しやすい
- 全角のクォート/空白によるsyntax error
成功するRuby教育のプラクティス (吉田裕美さん)
会社内でのRuby教育に関する講演。
- 社内でRuby開発者を増やす方法
- 自分で社内で教える、外部の教育サービス利用、コミュニティへの参加
- 「自分で社内で教える」方法をお勧め
- 社内で教えるメリット
- 業務に密着した内容を教えられる、万全のアフターフォロー、勉強を行う文化ができる
- 吉田さんの経験上、勉強する文化のできた会社は強くなる
- あなたが教えるメリット
- 教えることが最大の勉強になる
- 将来、講師になるという選択肢が生まれる
- Rubyの伝道師になれる
- 実習 (必須)
- コミュニティで教育
- 多くのコミュニティでは、熟練者によるマニアックな内容になりがち
- ニューカマーの存在を考慮すると、初級者向きの教育は重要
- コミュニティで教えることで、教育の練習になる
2008/6/21(土)17:30-18:30 ライトニングトークス
デモのインパクト的には「RubyとODEでピタゴラ装置」、いい話的には「toRubyでみつけた〜」、熱さ的には斉藤さんのアフォーダンスの話が印象的でした。
「JavaからRubyへ」について、どうしても言いたいことがある (桑田 誠さん)
dRubyとセキュリティ (西山和広さん)
dRubyを不特定多数に向けて公開するのは危険、という趣旨。
Ruby組み込みのセキュリティ機構 ($SAFEなど) やdRubyのセキュリティ機構 (INSECURE_METHOD) では抜け道があるとのこと。
RubyとODEでピタゴラ装置 (佐々木竹充さん)
ODE (Open Dynamic Engine) という3D物理シミュレーションエンジン (C/C++ベース) をRubyから制御するというもの。プレゼンとデモが一体化しており、デモの中の物体としてプレゼン資料が書かれていた。コントロールはWiiリモコンを使って行う。
初級者は Enumerator の夢を見るか? (今井伸広さん)
初級者によるRubyコードでは、eachの多用によって、不必要に複雑なコードになる傾向がある。enumerator (each_slice, each_consなど) の活用により、スマートな記述が可能になる。
Rubyで楽しむFolk Programming (Webアプリじゃないよ蝙) (mootohさん)
"Fold Programming" とは、フォークソングのように気楽に楽しむプログラミングのこと。Webアプリはみんながやっているので、今さらやっても面白くない。おすすめは、既存のアプリケーションのプラグインを書くこと。1から作るよりも簡単で、かつ使ってもらえる可能性が高い (コバンザメ方式)。
具体例として、Safari + はてなブックマーク、QuickSilver + Twitter、Quartz Compozer + Gainer、Vim + Refe。
Ruby.pm - CライブラリとしてのRuby (藤 吾郎さん)
「Rubyソースコード完全解説」を読んで、RubyとはC言語でオブジェクト指向プログラミングを行うためのフレームワークと理解。そこで、PerlからRubyライブラリを呼び出すためのライブラリを作成した。
現在はCYGWIN上でしか動かない。
toRubyでみつけた Rubyist人生再出発 (池澤一廣さん)
池澤さんは2000年からRubyを触り始めたものの、壁にぶち当たる。たまたま関さんが同郷人と知って、Rubyについて教えてくれるようにメールで依頼。返答は、「前向きに検討します。」
これが発端となって、toRuby (栃木Ruby勉強会) が始まったとのこと。
Ruby 1.9 on Rails 2.1による新時代DBプログラミング (松田明さん)
Webプログラミングの過去の歴史
現代では、ActiveRecordの登場により解決…のはずが、複雑なケースはやはり大変。
そもそもDBアクセスを「SQL文の生成」と考えることに問題がある。集合演算と考えることで、Rubyのオブジェクト指向の世界とうまくマッチした形でDBアクセスできる。Railsの野良プラグインnamed_scopeにより、集合演算ベースのDBアクセスが可能になる。
テストベースコードリーディングのすすめ (遠藤侑介さん)
遠藤さんはこの1月からRubyコミッタになり、下積みとしてRubyコード解読作業を開始したものの、10分で飽きた。飽きずにコードを読むための手段として、test-based code readingを考案・実践した。これは、テストカバレッジ測定ツールのもとで make test-all を実行し、実行されない部分を探し、その部分についてテストを書き出すというものである。これにより、強制的にコードを読むことになる。
この方法の前提条件は、テストコードが充実していないこと。Rubyの場合、YARVなどのコア部分はテストがきっちり書かれていて、テストベース〜でコードを読むのに適していない。