RubyKaigi2009 スペシャルレポート

Ruby会議2009 3日目レポート[更新完了]

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

James Edward Gray IIさん「How Lazy Americans Monitor Servers」

James Edward Gray二世さんの発表は,サーバ監視に関するソフトウェアScoutです。

ScoutはRailsアプリケーションの監視ソフトウェアですが,サーバのの統計データの可視化など,さまざまなものを監視できます。たとえば,cronとntpを併用したときの定期的な負荷の検出などです。

Scoutのシステムは,Scoutアプリケーションサーバがいくつものサーバとやりとりする仕組みです。Scoutアプリケーションサーバには,プラグインとしてRubyコードを渡すことができます。いくつものコードが公開されているそうです。本物のScoutと接続していることを証明するSSL検証や,コードレビュープラグインなど,セキュリティにも気を配っているとのこと。

これまでの監視エージェントは,サーバ上で作業する場合や,プログラマには簡単に作業できるものでした。と言っても,UNIXコマンドの操作や,Railsのログの取得など,煩雑な操作が必要でした。特に,本番環境ではいろいろなデータが入り交じり,欲しいデータのみを得るのは困難でした。

Scoutが実現していることを,⁠安全にプラグインコードを実行すること⁠⁠,⁠常駐すること⁠⁠,⁠メモリリークしないこと⁠⁠,⁠Rubyで実装すること」の4つに分類し説明しました。⁠Rubyで実装すること」について,プラグインから内部の実装までがRubyなので,Rubyをつかってすぐに要件を実現できるとアピールしました。また,Rubyのおかげで日本語も勉強できたと述べていました。

画像

画像

Aaron Pattersonさん「Journey through a pointy forest: XML parsing in Ruby.」

XML,HTMLのパーサライブラリNokogiriの作者であるAaron Pattersonさんの発表は,彼のひょうきんなキャラクター全開の発表になりました。

まず最初に日本語で「アメリカの冗談と日本の冗談は違うから,笑う忍者を連れてきました」といい,一緒に登壇した忍者の衣装を来た女性を紹介し,⁠笑う」⁠拍手」と書かれたボードを上げて笑いを誘いました。

発表タイトルを変更し,子連れ狼を背景に「XMLを知ることは,苦しみを味わうこと」というタイトルで発表をスタートしました。NokogiriとREXML,libxml-ruby,Hpricotを比較し,採用するXMLパーサの違いや,壊れたHTMLの自動修正について説明しました。

XMLパーサでは,SAX,PushParser,PullParser,DOMでのパースを比較し,SAX,PushParser,PullParserは速度が速いがプログラマに易しい仕組みではない,DOMはSAXより遅いがデータ抽出が簡単であると述べました。 HTMLパーサでは,XMLパーサの4つに加え,narfという,恐らくRubyで最初だというHTMLパーサを紹介しました。

データの抽出について,XPathとCSSセレクタを説明しました。その中で,p[a]という記述はXPathかCSSセレクタか質問し(答えは両方⁠⁠,コードに名前空間が必要なのと同様,データも名前空間をもつ必要があると述べました。

最後に,正しくないHTMLを修正する実例を示しました。Nokogiriが,tdの閉じタグがないHTMLやbodyタグが二つあるHTMLを,ブラウザが解釈するようにパースできることをアピールしました。そして,NokogiriがRuby Coreに入ることを目指していると述べました。

会場からの質問で,Nokogiriという名前の由来について聞かれ,⁠私は海賊だから」と答えましたが本当は特に理由はないとのこと。 また,Nokogiriをなぜ作ったに触れ,もともとはJavaScriptをサーバサイドでテストしたかったためで,RubyからJavaScriptを操作するJohnsonがありましたが,いろいろとyak shavingする間に,DOMツリーを操作するためにNokogiriを作成したそうです。 次のyak shavingはDOMをエミュレートするTakaというライブラリと述べました。

画像

画像

原悠さん「Ruby製アプリケーションを配布するn個の方法」

最近は,Rubyの挙動を確認しながら仕様を書くお仕事をしているというNaCLの原さん。⁠よくわからないところは隣に詳しい人がいるので聞くことにしている」と言って,会場の笑いを誘いました。

「時はプログラミング黄金時代。なぜなら我々にはRubyがあるから」と,基調講演のまつもとさんの言葉を引用しながらも,⁠我々はRubyを充分に使い倒しているだろうか」と改めて疑問を投げかけました。今,Rubyの活躍するドメインと言えばまず「Webアプリケーション」が挙がるでしょう。他には,日常的に発生する処理を自動化するような「スクリプティング」としてのRubyがあります。

ところで「デスクトップアプリケーション」についてはいかがでしょうか。Ruby製のデスクトップアプリケーションと言われると,確かに思い付くものがありません。原さんは「リッチなWebアプリケーションがもてはやされているが,システムのアップデートが強制的に全ユーザに適用されてしまったりと,良いことばかりではない」とWebアプリケーション一辺倒になるデメリットを挙げ,いよいよ話は本題に入っていきます。

Rubyで作成したアプリケーションを配布するためのツール「RubyScript2Exe」⁠Exerb」⁠Ocra」⁠Crate」の4つを紹介し,それぞれの長所と短所を順に述べました。それから「zipというコマンドをご存知の方はいらっしゃいますか」と冗談を挟み,5つ目の方法として,

  • 各環境向けに配布されているバイナリのパッケージをダウンロードして解凍する
  • 自作アプリケーションのファイル「myapp.rb」と,起動用バッチ「start.bat」を含めてzipで圧縮する
  • 配布する

という大変スマートな方法を紹介し,会場は大盛り上がりとなりました。

RubyStation

さらに原さんは,ブラウザを利用すると,HTML/CSS/JavaScriptで比較的自由度の高いGUIを実現できると言及しました。なんだかんだ言っても,Ruby製Webアプリケーションは開発のノウハウもありますし,ツールの選択の幅も広いです。しかし,そうして作成した複数のWebアプリケーションをローカル環境で動作させると「どのアプリケーションがどのポートを使っているか分からなくなる」と指摘しました。

この問題を解決してくれるのが「RubyStation⁠⁠。ローカル環境で動作するWebアプリケーションを管理するWebアプリケーションです。実際にアプリケーションを動作させてのデモンストレーションがあり,魅力を語ってくれました。

発表の最後は「RubyStationの普及のためには,キラーアプリケーションが100個くらい必要です。この会場はキャパシティが100人分あるはずなので,1人1アプリずつお願いします。空席の分はボクがなんとかします」と,最後まで原さんのリズムで進行した愉快な発表でした!

ちなみに発表タイトルについては「ただし,n=1」と補足がありました :-P

柴田博志さん「tDiary の Ruby 1.9 対応の過程と今後のロードマップ」

北海道からやってきて発表の場に立ってくれたのは,tDiaryのAdminの1人である柴田さんです。tDiaryは,8年の歴史を持つ,最も広く愛用されているRubyアプリケーションのひとつであり,Rubyの普及に大きく貢献してきました。しかし,古くからあるということは,それに伴う問題もあります。そんなtDiaryのこれからの展望を話してくれました。

Ruby 1.9対応

tDiaryの目下の目標は「Ruby 1.9」への対応です。ただ1.9に対応するだけではなく,1.8系と1.9系のどちらでも動くようにする必要があります。

大きく問題になるのは,内部の文字コードの扱いの変更です。とりあえずの対応を施す「compatible.rb」を活用したり,ソースコードへのマジックコメントの挿入は「sed」⁠not Ruby!)で処理したりと,こつこつと作業を進められているそうです。

testable_tdiary

柴田さんは,tDiaryを「テストコードのない典型的なレガシープロジェクト」と表現し,⁠恐れなく変更を加えていくためにはテストが必要だ」として,今後の脱レガシー計画について言及しました。具体策は「cgi.rbをRack等に置き換えてテストしやすく変えていく」です。

まとめ

会期中に行われた「tDiary会議」の内容報告のあと,⁠tDiaryによって,Ruby 1.9を普及させる」⁠tDiaryも継続して変わっていく」と,テーマに沿った話で発表は締めくくられました。

柴田さんとRubyとの出会いは,高専4年生のときのごとけんさんの授業だったとのこと。札幌Ruby会議01では,tDiaryのユーザからAdminになるまでの経緯を話されていました。そして今,他のコミッタの皆さんの意見,ユーザの皆さんの要望,今日の発表会場から出てきた声も取り込んで,開発を続けられていくのでしょう。

浦嶌啓太さん「Haml and Sass: Solution for you who get tired of ugly markup」

永和システムマネジメント勤務,日本Hamlの会(略称は日本ハム)の会長も務められる浦嶌さんの発表は,もちろんHamlと,そしてSassの素晴らしさを伝えてくれるものでした。

浦嶌さんがこの発表を通じて言いたかったことは至ってシンプル。⁠HTMLとCSSを手で書く,刺身にタンポポを乗せるような仕事をする時代は終わった。みんなHamlとSassを使おう」と一貫していました。

Haml

Hamlとは,HTMLやXHTMLを生成するための言語です。ここではHaml言語そのものについての解説は行いませんが,⁠Haml原理」として掲げられているものを以下に紹介します。

  • マークアップは美しくあるべきだ
  • マークアップはDRYであるべきだ
  • マークアップはインデントが整えられるべきだ
  • HTML構造が明確に表されるべきだ

発表では,Hamlがいかに素晴らしいものかを,他のテンプレート言語で書かれた場合と比較しながら,面白おかしく説明してくれました。

Sass

Sass「CSSに,再び楽しさを」という信念のもとに作られた,CSS作成のためのメタ言語です。Sassには以下のような機能があって,スタイルシートの書きやすさ,メンテナンス性を向上させてくれます。

  • ネストを表現できる
    • インデントで親子関係を表現
  • 変数と演算
    • (カラーコード)の足し算や引き算もできる
  • Mixins
    • CSSのプロパティと値の集合を定義し,再利用できる

まとめ

発表スライドの後半には「想定質問と回答」まで用意されていて,浦嶌さんは普段,HamlとSassの良さを理解してもらえなかったり,開発の場に持ち込めなかったりして,苦労することもあるのだろうと感じました。質問「デザイナと一緒に仕事することになるんだけど、彼らに Haml/Sass を使わせることはできるでしょうか 」には,⁠やめておいた方がいいんじゃないの」と回答されていました :-P

著者プロフィール

大和田純(おおわだじゅん)

ハンドルネームはjune29。RubyKaigi2009当日スタッフ(KaigiFreaks)。

ディスカバリーエンジン「デクワス」を開発・運用中のサイジニア株式会社勤務のWebクリエイタ。北海道出身。技術が人々の生活をどのように豊かにしていくかを考えるのが楽しくて,新しいものはどんどん日常に取り入れてみる。好きな言語はRuby。尊敬する漫画家は荒木飛呂彦先生,好きな擬音語は「メギャン」。

URLhttp://june29.jp/


白土慧(しらつちけい)

ハンドルネームはkei-s。RubyKaigi2009当日スタッフ(KaigiFreaks)。

ディスカバリーエンジン「デクワス」を開発・運用中のサイジニア株式会社勤務のWebエンジニア。札幌市出身。大学時代にWebと複雑ネットワークの楽しさを知る。人と情報のつながりを考えるのが好き。好きな言語はJavaScriptとRuby。好きな小説家は舞城王太郎。

URLhttp://d.hatena.ne.jp/kei-shttp://friendfeed.com/keis