本日から東京都千代田区の学術総合センター にて3日間にわたり、RubyKaigi2009が開催されます。本ページでは、1日目のレポートを随時掲載していきます!
※今回のレポートは、一橋記念講堂でのセッションを中心にお送りします(全セッションを回れておりません。ご了承ください) 。
イベント開始前
開場は12時30分からですが、スタッフの皆さんは8時30分に集合しました。
まずは、スタッフ専用のTシャツが配られました。イベント開催期間中、スタッフはこの専用のTシャツを着用します。
本日午前中は、スタッフ総出で、慌しく、会場の準備にあたりました。
準備中の中、会場の入り口から各会場へ、通しで簡単に撮影したものが以下の動画です(なお、撮影の後に、掲示物が貼られたもの等もあります) 。
ニコニコ動画:https://www.nicovideo.jp/watch/sm7657153 JavaScriptを有効にしてください。
オープニング
13時20分に、RubyKaigi2009のオープニングが行われました。実行委員長の高橋さんの開会の宣言から、本イベントが始まりました!
もちろん、高橋メソッドによるプレゼンテーションです。本年のイベントの進行が3トラックで行われることや、今年のスポンサーの紹介がありました。
ニコニコ動画:https://www.nicovideo.jp/watch/sm7657928 JavaScriptを有効にしてください。
オープニング後、運営委員長の角谷さんから、本イベントに関する諸注意やアナウンスがありました。ジュンク堂書店の閉店時間は、売り上げによって決まるそうなので、皆さんお越しください!
Scott Chaconさん「Using Git and GitHub to Develop One Million Times Faster」
バージョン管理システムGitとGithubについて、githubのScott Chaconさんが紹介しました。
Gitは、ほとんどのコマンドがネットワークのない環境で動作することや、ブランチの作成が素早いので、新しいアイデアや実験を気軽に試せます。
git rebaseコマンドを使えば、ブランチに作成元のツリーの更新を取り込み、最新の作成元に対してブランチを作成したかのような動作ができます。git squashコマンドで、複数コミットを一つにまとめることもできます。
実際に、Gitを使った開発をする際の、共有リポジトリ作成の例も紹介しました。
GithubはGitリポジトリをホストするサービスで、様々なオープンソースプロジェクトがここで開発を進めています。
だれが開発しているのかがすぐにわかり、プロジェクトの検索も便利に使えます。
これまでは、パッチを受け付ける方法やWebサイトの作成など面倒でしたが、Githubでは簡単に始めることができます。
Gitを使うことで開発効率が向上し、オープンソースの敷居を下げることができます。
そして、100万倍速い開発ができます。
「なにかあれば自由にメールしてよ。そしてウィスキーを飲みにいこう!」と、とても陽気なプレゼンでした。
会場からの「なぜGithubを作ったのか?」という質問には、「 Gitのホスティングは超面倒だから!」との答えでした:-)
WindowsのGitクライアントとしてはGit Extensions、TortoiseGitというソフトがあるとのことです。Eclipse用にEGit for Eclipseもあるそうです。
Githubステッカーのプレゼントに応募したという質問者の方に、直接ステッカーをプレゼントする場面では会場から拍手が起こりました。
大場寧子さん「Pragmatic Patterns of Ruby on Rails - 現場で役立つRuby on Railsパターン」
中学校時代からプログラムを書き始めたという大場さん。しかし、女子校に通っていたこともあり、なかなかプログラミング仲間を見つけられず、孤独を感じていたそうです。Rubyと出会ってから人生が変わったと語る大場さんは、Rubyの魅力のひとつとして「素敵なコミュニティの存在」を挙げ、今は株式会社万葉で仲間たちとRailsアプリケーション開発に楽しく取り組んでいるとのことです。
トピックは、割と大規模なRailsアプリケーション開発における「実装パターン」です。大規模なプロジェクトにおける問題点を「書き方がバラバラ」「 コードの品質が不揃い」とし、コードをメンテナンスしやすい状態に保つためにパターンを導入することをすすめています。
具体的なパターンとして「ARオブジェクトから始める検索」「 複雑なビジネスロジックはモデルに書く」などについて説明し、Railsアプリケーションでよく見かける処理を、実際のコード片を提示しながら良いコード・悪いコードに分けて整理していました。
また、今後さらに掘り下げていきたいテーマに「Railsとして自然な書き方の追究」を掲げ、「 複雑で大きなアプリケーションは、コードをよい状態に保つのが大変。実装パターンを意識して共有し、『 Railsとして』自然な書き方に従っていけば、チームでメンテナンスできる」と、力強くまとめていました。
高井直人さん「『エンタープライズRails』に学ぶ企業ユーザのためのRails活用の極意」
「この会場に、ネクタイをしている方はいますか」という質問から始まったのは、去年に引き続きスーツのコスプレで登場した高井さんの発表です。
会場で先行販売されている高井さん監訳の『エンタープライズRails』を紹介しつつ、Railsの話に入る前に、「 エンタープライズにとって大切なものは、人材よりもデータである」と冗談交じりに断言し、まずデータ指向アーキテクチャ(DOA)について話されました。それから、Railsの思想とDOAの類似点・相違点を並べ、「 DOA - Rails = エンタープライズRails」として、エンタープライズの現場で使えるテクニックを紹介しました。
Railsで、どれだけデータの整合性チェックをかけたとしても、フレームワークのバージョンアップやメンテナンスのためのSQL文による直接のデータ操作を行うと、不正なデータが生み出されてしまいます。そのため、「 Rails側だけではなく、RDBMSの機構も利用してバリデーションを行おう」ということが大きな主張でした。例えば「NULL制約」「 チェック制約」「 外部キー制約」をデータベース側に持たせることにより、データをより安全な状態に保つことができます。
他には、Railsの標準的な仕組みには組み込まれていない「複合主キー」を活用するメリットや、データベースにビュー(MVCのビューではなく、テーブルに対するビューです)を作ってそれに対応するモデルを用意する方法について述べ、Railsの考えに縛られることなく、データを中心に考えるアプローチを教えてくれました。
なんだか「エンタープライズ」だらけの文章になってしまいましたが、実際の発表ではこの文面以上に「エンタープライズなので」が連呼され、その度に会場に不思議な笑いが起こる楽しい発表でした!
後藤謙太郎さん「Rubyの数」
「Rubyの数」と題して、benchmark.rbを作られた後藤さんの発表です。
タイトルの通り、Rubyの「数」にまつわるセッションです。座長のささださんから、「 この会場にいるひとは分かっている!」との言葉をいただきました。
Ruby 1.9でのNumericの発展としては、高速化とRational,Compelxの組み込み化があります。
Rationalは有理数を表すクラスで、小数を誤差なく正確に表せます。 Complexは複素数を表すクラスです。
会場でRationalやComplexを使ったことがある人を挙手したところ、「 思ったより多い」と驚かれていました。「 数学科を出ている方が3人もいてビックリしている」とのこと。
ベンチマーク用の数学問題を1.8と1.9で比べると、2倍から5倍ほど高速化しています。
VMの高速化や、メソッド呼び出しのバイパスを行っているからだそうです。
Rational,Complexの組み込みによって、高速になり、メソッドの挙動が単純になるなどのメリットがあります。
これからの問題としては、Floatに最大値や無限大があるため、数学的に不合理になることを修正することや、有名なライブラリをもっと使いやすくすることにあると言及しました。
村田賢太さん「Rubyの標準乱数生成器とその改良案」
Rubyの標準乱数生成器について、村田さんの発表です。
プログラミングで使われる乱数は、長い周期、一様性、再現性があるものがよいと言われています。
しかし、マルチスレッドで乱数を使うと偏りが発生することがあり、使い方を間違えると途端に難しい問題に直面するそうです。
Rubyの標準乱数生成機は、複数の生成器への対応や、一様分布以外の分布関数を利用することができないという点があります。これに対応するため、Math/Randomというライブラリを作成し、問題の解決を目指しているそうです。
Randomクラスの標準添付を目指していましたが、昨日の15時頃にRandomクラスがRubyのtrunkにコミットされたそうで、ある意味タイム
リーな発表となりました。 しかし、まだExperimentalなので、少しずつ洗練させようと語りかけました。
コミッタの方々からの質問が多く、コミッタ同士で議論が白熱する場面も見受けられました。
倉井龍太郎さん「Rubyで楽しむBDD、ZDD」
「Rubyで楽しむBDD、ZDD」と題して、株式会社はてなの倉井さんの発表です。
算術論理演算という、True、Falseの真理値を使った論理演算を拡張した演算を処理するためのライブラリを紹介しています。(a and b) or not cといった計算をするものです。
この算術論理演算を行うBDD(二分決定グラフ)という理論を用いると、N-queen問題のような数学問題を解くのに有用だそうです。
BDDをRubyから扱うライブラリRDDを作成し、N-queen問題を例に、実際の利用の仕方を紹介しました。
「 queenの駒が並ばないこと」という命題を数学的に記述し計算させることで、解を得るプログラムを解説しました。こちらは、一般公開を目指しているそうです。
なぜRubyを選んだのかについては、もともと利用していたソフトウェアがループがなく条件分岐もできないものだったため、RubyのSymbo
lや強力な文字列処理が魅力であったため採用したそうです。
また、Swigという、C++のライブラリをRubyから呼び出すツールを使い、簡単に拡張モジュールを作成する方法を紹介しました。
Yehuda Katz氏「From Rails to Rack: Making Rails 3 a Better Ruby Citizen」
Railsアプリケーションのホスティングサービスを提供する「Engine Yard」に所属するYehudaさんは、Rails 3の展望を語ってくれました。
以下は、これは発表概要から持ってきた一文です。
Imagine a Rails application routing to a Sinatra application, or Merb-style exception pages that catch exceptions from Rails or Cloudkit.
Merbとの統合でRailsはどのように変わるのでしょうか。発表中、Rails以降に登場したRamazeやSinatraといった新しい軽量Webアプリケーションフレームワークについて何度も言及しているのが印象的でした。それらの特長を受け、「 じゃあRailsはどうするのか」という指針と、「 どのようにそれを実現するのか」という実装について言及しました。
「今のRails(2.3.2)は依存関係が複雑すぎて、ひとつモジュールを呼ぶと、おまけがたくさんついてくる。Rails 3では、モジュールがきれいに切り離されて、必要なものだけを良いとこ取りで使えるようになる」と強調しています。
このように、多様な実装がお互いに刺激を与え合い、進化が加速し、その世界全体を大きく作り変えようとしていく様は、去年から今年のテーマ「多様性は善」「 変わる/変える」を体現しているようで、今後もRailsの動向からは目が離せません。
橋本和典さん、木山さん「静的型付けを持ったRubyっぽい言語の設計と実装」
橋本さん、木山さんのお二人による発表です。今回、初お披露目の発表だということです。
木山さんはTRubyという言語を開発しました。
TRubyはTypable Rubyという意味で、静的型付けと型推論をもち、「 Rubyっぽい文法」を持った言語です。型を付けるRubyとしては、DRuby(Diamondback Ruby)やtrubyなどがあり、これらはRubyへの変更をしませんが、TRubyではRubyに似た別言語として作成されました。
実行時間の短縮や、型エラーの早期発見を目標としています。
橋本さんはTibyという言語について紹介しました。 TRubyで記述したプログラムを、Tiby言語へ変換し処理します。
Tibyの特徴は、変数メソッド定義には型を記述し、四則演算などはメソッド呼び出しとして記述するところです。
TibyからJasminという中間言語にコンパイルし、JasminからJavaバイトコードを生成し実行します。
Tibyから中間言語へ変換するコンパイラは、JRubyとRuby1.9と速度比較を示し、JRubyよりも50%程度、速度が向上していることに言及しました。
また、浮動小数点を扱う比較では、JRubyから60%、Ruby1.9から45%の速度向上があり、会場からは賞賛の声があがっていました。
笹田耕一さん「Ruby VMの高速化の展望」
東京大学の笹田さんの発表です。日本Rubyの会と書いていないのは、本職として開発を行っているからだそうです。「 それならネクタイじゃないの?」とヤジもありましたが:-)
2009年1月30日にRuby 1.9.1がリリースされましたが、これは笹田さんが開発したバーチャルマシンYARVが同梱された正式なリリースでした。
このバージョンでは、最適化が入って高速化していますが、安全性のために最適化をオフにしている部分もいくつかあります。
VMに関しては、JavaScriptのエンジンでTraceMonkeyやV8など、JIT compilerが流行です。TraceMonkeyの開発者と会い発奮し、YARVの開発を大量のコーヒーを飲みながら頑張っているそうです。
メモリ解析フレームワークを、研究室の学生にテーマのひとつとして与えたが、面白そうだからと自ら手を出し、開発を行っていると述べました。
このために、あるオブジェクトが具体的にどの程度メモリを消費しているかを調査するフレームワークを作成しました。requireするだけで簡単に利用できる、profiler.rb, profile.rbのように利用できるメモリプロファイラを開発しています。
また、インスタンス変数へのアクセスについて、Ruby1.9では、メモリ効率はよくなったが速度が遅くなりましたが、 この部分の改良も行っています。
科学研究費補助金に採用され、Rubyによる超並列・超高速な計算を行うプロジェクトが発足しました。
ハイパフォーマンス向けRubyを目指し、Ruby向けのコンパイラや、Ruby向けハイパフォーマンスコンピューティング環境の構築を行います。そのなかで、「 Rubyの動的特性の本質とは何か」「 Rubyっぽさとは何か」という部分を議論しなければいけないと述べました。
その他の研究として、Rubyの中にCを直接記述できるRicsinを紹介しました。また、科研費やGoogleとの共同研究として、組込Rubyプロジェクトも動いているとのこと。
VMに関して掘り下げた話が多く「10人に向けて話してます」と何度も強調していましたが、コミッタの方々からは様々な意見が飛び交っていました。
Lightning Talks
前説
Lightning Talks(以下、LT)の残り持ち時間を表示する「タイマー」について、LT用タイマー「TwYM」作者の五十嵐邦明さんより前説がありました。以前より実装されていたIRCのチャットメッセージ表示機能に加えて、今回新たに「発表に対して☆を投票する」機能が追加され、ますますLTを盛り上げてくれる存在となりました。
持ち時間終了を告げるドラを鳴らす「ドラ娘」には、すでに貫禄をまといつつあるナガタユウコさん。会場に鳴り響くドラの音も、LTにさらなる爽快感を与えてくれます。
江渡浩一郎さん「パターン、Wiki、XP、そしてRuby」
先陣を切ったのは、7月10日に発売された「パターン、Wiki、XP ―― 時を超えた創造の原則 」の話を引っさげてやってきた江渡浩一郎さんです。
自身でqwikWebを運営しながらWikiというシステムに強い関心を持ち、同時に、デザインパターンやXPについても探求を続けてきた結果、たどりついたひとつの考え方が「建築家アレグザンダーのパターンランゲージ」 。一見ばらばらに思える3つの対象の交わる点がどこにあったのか…続きはぜひ書籍で!
永井秀利さん「Ruby/Tkは本当にダメな子なのか?」
永井秀利さんは、Ruby標準添付のGUIライブラリ、Ruby/Tkの紹介を行いました。
標準添付のライブラリとしてはあまり認知されていないそうですが、モダンなGUIを作成できることをアピールし、批判が多い点については「知らない人間による的外れな批判だ!」と一蹴していました。
奥の深さを知ってほしいという、熱意のこもった発表でした。
あんどうやすしさん「たぶん一番かんたんなRails on GAE/J」
「Javaが大好き、って人はご注意を」と始まったあんどうやすしさんの発表。Google App Engine (以下、GAE)におけるJavaのサポートの素晴らしさを「JRubyが動くこと!」と言い切り、GAE上でRailsアプリケーションを動作させる魅力について話してくれました。
最後に、自作のデプロイツールの説明もありました。あんどうさんのブログ にも紹介エントリがありますので、どうぞチェックしてみてください。
荒井省三さん「IronRuby on Rails」
.Net Framework上で動作するRuby実装がIronRubyですが、荒井省三さんは、そのIronRuby上でRuby on Railsを動かすデモを行いました。
Rails上でSilverlightアプリを生成する、Silverlineというライブラリも利用していたようです。
RailsのバックエンドDBにMicrosoft SQL Serverを利用でき、Microsoft製品をフルに活用してRuby on Railsを動かせる!とアピールしていました。
gaoohさん「むいちゃいました(仮) 」
株式会社ドリコム勤務のgaoohさんは、社内で開発されたCGM構築フレームワーク「unshiu」のオープンソース版である「Peeled unshiu」を紹介しました。できあがったものは、社の業務で実運用に乗せられるため、「 成果の上がったものは標準に組み込む」フローが整備されていて素晴らしいです。
開発体制としては、テスト駆動開発や開発ルールの整備を徹底しており、2年前から開発が行われているにも関わらず、現在の最新版のRailsでも問題なく動作すると、信頼性の高さをアピールしていました。
山崎泰宏さん「Wakameで手早くRailsを大規模サイトにする」
山崎泰宏さんによる、Amazon EC2でRuby on Railsをスケールアウトする、Wakameの解説です。
EC2の登場で、サーバのスケール化は可能になりましたが、実際にサーバを動作させるとなると、セットアップ作業にコストがかかってしまいます。
Wakameは、突然のアクセス増に対応でき、アクセスが増えてからのサーバセットアップを自動化するソフトウェアです。
大規模サイトの運用経験がある人を「珍獣」と称し、「 Wakameを試して珍獣になろう!」と述べていました。
相澤歩さん「レガシーマイグレーションのためのRuby DSLによるJCLの実装」
相澤歩さんは「誰も知らないであろうJCLの話をします」と置いて、いかにしてレガシーシステムの価値を引き継ぎつつ、システムを新体制に移行するかについて話してくれました。
しばしばCOBOLで書かれているレガシーシステムの移行を考えたとき、問題なのはCOBOLそのものよりもむしろ人や環境であるとし、現在のメンバーにも受け入れられるようにRubyのコードでDSLを実現する例を見せてくれました。ときに激しいジョークが飛び出すトークに、会場が沸いていました。
Mohammad A. Aliさん「Arabesque, a brand new Ruby queue」
Railsでのデータ管理を、Arabesqueというライブラリを使うことで、
マルチCPUへの対応、GCを高速化し、パフォーマンスアップができるという紹介です。
内部でBerkeley DBを用いることで、マルチCPUやGC高速化を実現しています。
実際のシステム構築例などを示し、利点をアピールしました。
おおいしつかささん「MiyazakiResistanceを作ってみたよ」
おおいしつかささんによる、MiyazakiResistanceについての発表です。
MiyazakiResistanceとは、TokyoTyrantをActiveRecordのインターフェイスで操作できるようにしてくれるライブラリです。TokyoTyrantでは、データを絞り込むときの条件の記述が複雑ですが、MiyazakiResistanceではその点が上手く解消されます。
接続先データベースのマスタ・スレーブ構成だけではなく、デュアルマスタにも対応しており、極めてデータ更新頻度の高い「食べログのお店ごとのアクセス数」計上も、問題なく動作しているとのことでした。「 東京がダメなら宮崎からどげんかせんといかん」は名言でした!
こしばとしあきさん「ローカル環境向けKey-Valueストアの紹介」
こしばとしあきさんによる発表です。恐らく今回のLTで最も盛り上がりました。
流行のKey-Value Storeシステムの説明から始まりました。
しかし、ハッシュを持ちWebではないGUI機能をもったKVSとして紹介したものは、
実際にはExcelをRubyから操作し、Excelのセル上のデータを操作するライブラリでした。
「Rubyはプログラマに優しく、Excelはビジネスパーソンに優しいので、みんなに優しいシステムの実現である!」と述べていました。
松本一輝さん「WebスタートアップにやさしいRailsの育て方」
ランゲート株式会社のCTOを務める松本一輝さんは、Railsアプリケーションのスケールアウトについて、淡々と、しかし力強く話してくれました。
Railsは(もっと言えばActiveRecordは)裏側にRDBMSを前提としているため、クラウドなRDBMSがない現状では、「 DBをクラウド化すればスケールできる」という単純なものではありません。また、クラウドDBのそもそものレスポンスの遅さも問題になります。そこで、既存のDB接続をRESTなWeb APIに置き換えて、さらに大きなキャッシュプールを持たせることで、実運用に耐えうる構成になるとのことでした。
自己紹介を日本語と英語の二カ国語で行ったのは、さすがLang-8の中の人です!
ジュンク堂書店RubyKaigi店は、お客さまで大賑わい!
今年も、ジュンク堂書店RubyKaigi店がオープンしました。お客さまで大賑わいでした。
先行発売やおまけ付きの本も多数
先行発売やおまけ付きの本も多数、販売されています。著者さんによるサイン会 も開催されました。
『WEB+DB PRESS Vol.51』や『パターン、Wiki、XP』も!
特集1がRuby on Railsの『WEB+DB PRESS Vol.51 』や、WEB+DB PRESS plusシリーズの最新刊『パターン、Wiki、XP 』も販売されています。それぞれ大量に入荷しているので、ぜひ買ってください>< ご購入いただきまして、ありがとうございました!
店長の長田さん
RubyKaigi店店長の長田さん。店長オススメの『パターン、Wiki、XP 』とともに。うしろで『エンタープライズRails』を持っているのは、オライリー・ジャパンの某編集者。
ノベルティ
今年のノベルティは、センスのいい扇子!
イベントに対するフィードバック
「RubyKaigi御意見板」と名付けられた、本イベントやその運営に対する意見を受け付けるボードが用意されました。イベント参加者の声を、運営側に気軽に届ける仕組みです。
今年も行われる、RejectKaigi
RubyKaigi最終日終了後の日曜夜に行われる、RejectKaigi のプレゼンテーションの受付も行われていました。
KaigiFreaksによるネットワークトラブルに対する対応会議
本日のプログラム終了後に、KaigiFreaksのメンバーが集まり、本日発生したネットワークトラブル やその他の懸案事項に対して対策を立てるために、さまざまな角度から話し合いが行われました。
懇親会
また、全参加者の皆さん向けに、本日のプログラム終了後、会場近くで懇親会が開かれました。
今回の懇親会では、懇親会参加者に色紙とペンが用意され、いろいろな方にサインをもらいに挨拶しに行く風景が見られました。とても面白い試みだったと思います。