RubyKaigi2008 スペシャル★レポート

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

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

ライトニング・トークス

本日のメイン・セッションが終わり,いったん休憩を挟んだ後に,ライトニング・トークスが行われました。

「JavaからRubyへ」について、どうしても言いたいことがある(桑田誠さん)

同名の書籍とは関係ないようです。JavaからRubyに言語を変える際,単にコードを変えるのでは意味がなく「考え方」を変えることが重要である,と主張しました。また,コードが変わるだけでは10年前に起きたCOBOL風のJavaコードが量産された歴史を繰り返すことになる,と警告しました。

この問題はプロジェクトについても当てはまり,パレートの法則が示すように80%の成果は20%の上級者によって作られているのに,80%側の初級者に技術水準を合わせるのはおかしい,「初心者偏重」を批判しました。また,⁠Rubyは大規模開発に向かない」という批判を取り上げ,そもそもコードや開発者数の規模が大きくなるのは物事を簡潔にする能力や努力が欠けており,冗長なコードが大規模の要因となっていることがある,と大規模自慢をする風潮を真っ向から批判しました。

画像
画像

dRubyとセキュリティ(西山和広さん)

dRubyを不特定多数に向けて公開するのは危険だ,というお話です。

drb/drb.rbのrdocにはセキュリティ事項が記載されていますが,この方法をそのまま適用しても防ぎきれません。また,INSECURE_METHODを利用してもinstance_evalを使えば呼べてしまい,__send__ではなくsendメソッドを使って呼ぶことも可能です。ほかにもMethodオブジェクトを取得してメソッドを呼び出すことができます。$SAFEのレベルを上げることでいくぶん制限できますが,DoS攻撃は防ぎきれないためOSのrlimit(resource limit)の設定を変える必要があります。

最後にdRubyを利用したプレゼンテーションソフト「Rabbit」を使ってリモートからメソッドを呼ぶデモを行いました。

画像
画像

RubyとODEでピタゴラ装置 (佐々木竹充さん)

オープンソースの3次元動力学シミュレータライブラリ「ODE(Open Dynamics Engine⁠⁠」とRubyを使ったデモが行われました。3D画面内にドミノやスロープなどの形状が置かれており,Wiiリモコンで操作して,空中に物体を作ってピタゴラスイッチを実現させていました。

画像

以下の動画は,そのデモの一部です。

ニコニコ動画:https://www.nicovideo.jp/watch/sm3727664

初級者は Enumerator の夢を見るか?(今井伸広さん)

「みねーよ」という身もふたもない結論から始まります。自身のハンドルネームをEnumeratorを使って文字列操作を行ったデモを行ったあと,eachばかりを使う初級者に対してeach_sliceやeach_consですっきり書けることをサンプルコードを通して説明しました。

画像
画像

Rubyで楽しむフォークプログラミング (Webアプリじゃないよ蝙)(高山征大(mootoh)さん)

フォークソングが醸し出す雰囲気のように,趣味で気軽にプログラミングを楽しもう,というお話です。現在はWebアプリケーションが流行っていますが,Webアプリ以外にも楽しく手軽にプログラミングができる,ということでプラグイン開発を勧めています。

例として自身が作ったRubyCocoaを使ったCocoaアプリのブラグインや,Rubyで記述できるVimスクリプトを紹介しました。

画像
画像

Ruby.pm - CライブラリとしてのRuby(藤吾郎さん)

CPANに公開されているPerlモジュール「Ruby.pm」の紹介です。Ruby.pmはRubyのC APIを呼び出してPerlからRubyの機能にアクセスできるモジュールです。

いろいろなサンプルを示しながらも「テストが完全に通らないので実質使えない」と自虐的なオチで締めました。

画像
画像

toRubyでみつけた Rubyist人生再出発(池澤一廣さん)

ちょっとしたドラマを感じた,心にしみるTalkでした。

2000年にRubyを初めて知り,テキスト処理として使っていました。⁠昔はワープロ喫茶というのがあった」という昔話を交え,awkやらPerlやら次々に知らない技術が出現して苦労した話を披露しました。そしてRubyを知り,ずっと使っていたもののいっこうにクラスを扱えなかったり,メーリングリストを読んでもついていけない状況が続きました。

そして2007年,dRubyの開発者である咳さんが同じ栃木であることを知り,勇気を出してコンタクトをとったところ勉強会を行うまでに至りました。

「まだまだついていけていないところがあるが,最後は自分が頑張るしかない」と結論づけ,栃木Rubyの会に感謝の意を述べ終了しました。

終わったあとのIRCには「感動的な話だった」⁠泣きそう」⁠全つくばが泣いた」と感動した旨のログが流れていました。

画像
画像

Ruby 1.9 on Rails 2.1による新時代DBプログラミング(松田明さん)

まずDBプログラミングの現在までの変遷から入りました。PHPで生SQLを書くプログラミングを「古代⁠⁠,O/Rマッパーを利用しXML地獄に悩まされることを「近代」と位置づけ,ActiveRecordを利用するのが「現代」のDBプログラミング手法と語りました。

しかしながら,実際の業務がActiveRecordの持つCoC(Convention over Configuration:設定より規約)にぴったり当てはまることは少なく,結局生SQLを書くはめになってしまいます。そこで,⁠そもそもDBとは集合演算である」という考えに基づき,Rails 2.1より利用できるnamed_scopeの紹介をしました。

画像
画像

テストベースコードリーディングのすすめ(遠藤侑介さん)

今年の1月よりRubyのコミッタになり,Rubyのコードを読んだときに身につけた方法の紹介です。

方法自体は簡単で,gcovというテストカバレッジツールで測定し,実行されていない行を探して,実行するようなテストコードを書くというものです。テストコードを書く際,周辺のコードを読まなければいけないため,結果的にコードリーディングが促進されます。また,テストコードが充実していきバグも見つかるのでやり込みゲームの感覚で楽しめる,というメリットもあります。逆に,すでにテストコードがある個所は読めず,重箱の隅をついたような部分しか読めないという問題点もあります。

この方法は「テストコードが充実していないこと」が前提条件となり,Rubyはそういう意味では最適だったそうです。この方法により,当初70%だったカバレッジを85%にまで上げることに成功しました。ち なみに、ほかのLLではPHPが51%と最も低く,この方法を試すにはうってつけのようです。

画像
画像

A Jail Web Development with Rails 2008 でわっふるわっふる(竹迫良範さん)

似たような名前の書籍とは関係なく,Webアプリを堅牢にするというテーマです。

CGI.escapeHTMLを使ってサニタイズ……ではなく,HTMLエスケープを行っていても,問題が起こるケースがあり,実際にブラウザの文字エンコーディングバグによるXSSのデモを披露しました。

そこで,Apacheの設定ファイルにエンコーディングを指定するとその範囲外の値をフィルタリングするというApache 2モジュール「mod_waffle」を開発し公開しています。

画像
画像

Industrial-Designed Language: Ruby(斎藤ただしさん)

トラブルでプレゼン資料が用意できず,スピーチのみで行いました。Rubyを「工業デザイン」として見る,というテーマです。

2007年のグッドデザイン賞にFirefoxが選ばれた背景には,ソフトウェアは人が使うものであるため工業製品ともみなせる、ということがあります。よってRubyも工業製品であるといえます。

また「何も説明せずともわかる」という概念を表す「アフォーダンス」という観点から見て,名前を見れば使い方を推測できるRubyはアフォーダンスを重視しており,工業デザインとして優れていると言えます。

このような使いやすさを重視し,優れている言語を使わないのは損をするので使おう,と何度も主張し,最後に「そしてMatzの屍を超えて新しい言語をRe-designしましょう!」と熱いスピーチを締めました。

画像
画像

著者プロフィール

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

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