RubyKaigi2008 スペシャル★レポート

RubyKaigi2008 1st day Photoレポート[随時更新]

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

Ruby《を》教えてるんじゃない、Ruby《で》教えてるんだってば(増原英彦さん)

東大でプログラミングやコンピュータサイエンスを教えている増原さんによるセッションです。

アメリカの大学ではコンピュータサイエンスを選択する学生が2000年以降から減少傾向にあることをグラフで示し,これからはハッカーではない人に目を向けるべきと主張しました。

講義のプログラミング言語にRubyを選んだ理由として,以下を挙げました。

  • インストールが簡単
  • 日本語情報
  • 文法が簡単

ほかにもOcamlやScheme,JavaScriptなどの候補があったようですが,Lispの世界や関数プログラミングの世界で著名な人がRubyを選んだことにより,Rubyに決まりました。ただ,講義では,Rubyのクラスやブロック,イテレータなどのいわゆるRubyらしい機能は使っておらず,トップレベルでメソッドを定義し,forループを使うなどのシンプルな使い方をしているようです。

次に,⁠Rubyを採用してよかった点,悪い点」を挙げました。良い点には,次の項目をを挙げました。

  • 多倍長整数の変換ができる
  • リッチなライブラリがある
  • 簡単に扱える

また,計算量の比較を行うときに,Ruby自体の遅さがパフォーマンスの差を明確にしてくれる点で良かったと話し,会場の笑いを誘いました。

反対にRubyを使っててハマッた点として,⁠インデントしないことでend忘れが見つかりづらかった」⁠ローカルのライブラリをロードしたつもりがデフォルトライブラリだった」⁠二重引用符やインデントスペースが全角だった」など,初心者が陥りやすいポイントを挙げていきました。

画像
画像

成功するRuby教育のプラクティス(吉田裕美さん)

2000年に独立し,2005年から教育事業を開始した吉田裕美さんによるセッションです。

吉田さんは最初に,社内にRuby開発者を増やすには教育会社やコミュニティに頼る選択肢もあるが,⁠社内で教えること」が一番であると結論づけました。理由としては,社内の特徴を活かすことができ,勉強を行う文化が根付くというメリットにあるようです。また,教える人自身にも「講師役が実は一番勉強になる」などのメリットが存在します。

次に,実習に関するベストプラクティスについて紹介しました。実習をペアプログラミングで行うと考え込む時間が少なくなり実習時間が長くならないほか,一人で黙々と行うのに比べて盛り上がりやすいというメリットがあるそうです。また,TDD(テスト駆動開発)ベースの実習を勧めており,その際テストコードをあらかじめ用意して提供することがポイントとのことです。テストコードを用意することによってテスト単位で取り組めるようになるため,一つ一つの粒度が小さくなり,大きなソフト開発を体験させやすくなります。実際にTDDによる実習を受けた受講者から「ゲーム感覚で楽しい」という感想をもらったそうです。また,ほかの言語で書かれた良質の教材をうまく利用することをTipsとして挙げました。吉田さんは,書籍なぜ,あなたはJavaでオブジェクト指向開発ができないのか⁠技術評論社)のサンプルコードをRubyに置き換えて利用しているそうです。ちなみにサンプルコードは次のページからダウンロードできます。

最後にまとめとして,⁠教育も開発と同じようにチャレンジに溢れている」と,教育に対する熱い情熱を会場へ伝えていました。

画像
画像

RSpecによるRailsアプリケーションのBDD事例報告(Yugui(園田裕貴)さん)

書籍『初めてのRuby』⁠オライリー・ジャパン)の著者Yuguiさんが,過去に経験したRailsによる開発プロジェクトについて語りました。

Yuguiさんが入ったプロジェクトは,毎日バグが出続け,テストコードはおろかバージョン管理システムもない状態でした。すぐにSubversionとTracを導入しビルド,デプロイの自動化に取り組み,Seleniumによるテストをチーム内に浸透させました。ただ,それでもプロジェクトの状況は改善されなかったため,1ヵ月後に差し迫ったリリースに向けてCOMとASP.NETで構築されたシステムのリプレースを敢行することになりました。

リプレースでは,フレームワークにRailsを,テストと仕様記述にRspecを採用しました。これらを採用した理由として,YuguiさんがRubyやRailsのソースコードを読んでいて「何か問題があった場合はソースを調べて解決できる」という自信があったことにあります。

フェーズ1となる1ヵ月間でSeleniumの資産を活用しながらたった2人でシステムを作り上げました。そしてフェーズ2でメンバーを4人に増やし,カバレッジを上げることに専念した結果,Rspecのコードが全体の7割を占めるようになりました。そしてフェーズ3ではペアプログラミングやポストイットなど多くの方法を活用して,メンバー全員にRailsやRspec,BDD(振舞駆動開発)の概念を浸透させることに成功しました。

会場から「上司から『テストコードなんか書いてないで実装コードを書いて機能を追加しろ』と言われたと思うが,どうやって説得したのか」との質問がありましたが,Yuguiさんは(説得するのではなく)⁠基本的にお前は何もわからんのだから,黙ってろ!」と答えたそうで,会場は爆笑と拍手で埋め尽くされました。

画像
画像

Ruby技術者認定試験 模擬問題解説

CTCテクノロジー株式会社松田慎弥さんから,Ruby技術者認定試験の説明,模擬問題とその解説が行われました。模擬問題をいくつか解いたり,出題傾向などが分析されました(編集部⁠⁠。

画像

サブセッション:Rubyで快適に連投する11の方法(ujihisaさん)

ujihisaさんの発表は,第26回Ruby/Rails勉強会@関西にて行われた内容をRubyKaigiバージョンにしたものでした。ちなみにRuby/Rails勉強会@関西のときの資料はslideshareのサイトで公開されています。

ujihisaさんは,普段使っているWebサービスにすばやくPOSTするためのツールをWWW:Mechanizeを使って作っています。そしてVimスクリプトの「LustyExplorer」を使ってVimスクリプトファイルにRubyのコードを記述することができるようにしています。⁠:Mixi」とコマンドするとmixiに日記を投稿するvimスクリプトを実演しました。またその応用として「Rubiskell」というRubyコード内にHaskellコードを埋め込めるライブラリを使って,Vimスクリプト経由でHaskellコードを実行してmixi日記に投稿する,というデモを実演しました。

途中,⁠有須子」という恐怖系画像が突然現れるGreasemonkeyからインスパイアした,特定ポートで待ち受けているときに誰かからアクセスされると「有須子」画像がデスクトップに表示される「usukod」という冗談系ツールも披露しました。

画像
画像

著者プロフィール

角田直行(かくだなおゆき)

普段はお仕事でPHPやJavaを使ってWeb開発をしています。一部でセレブエンジニアとか言われてますが,全然セレブじゃありません。