RubyKaigi2011 スペシャルレポート

日本Ruby会議2011 1日目レポート[更新終了]

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

Corey Donohoeさん「Shipping at the Speed of Life」

Githubに勤めるCoreyさんによる発表です。CoreyさんはShippingを「リリースすること」と表現し,リリースとはユーザに価値を提供することだと説明しました。

まず,githubでは価値を提供することについてどう考えてるかの説明がありました。github.comではたくさんのユーザがおり,彼らのコミュニケーションを支えるにはgithub.comを健康な状態に保つことが重要だと言います。そのためにはgithub.comで何か問題がすぐに反応できる必要があり,様々なことを計測する必要があると話しました。

たくさんのツール

githubではそのためのツールを自分たちでたくさん作ったそうで,たとえばシステムの状態を見える化するためのツールや,単純作業を自動化するツールなどがあるそうです。また,Ruby on Railsは便利だけども限界があると説明し,他の言語を使うことや,Ruby on Rails自体に機能を足すこともあるそうです。

その他にBrowserMobを使ってパフォーマンスチェックなども行なっているそうです。BrowserMobを使うことで世界中の人達が速度についてどう体感しているかわかると言います。その際にgithub.comは大分速くなったけれど,日本では距離や光回線の限界などの理由からまだちょっと遅いかもとも話していました。今はAkamaiの使用も検討しているそうです。BrowserMob以外にもPingdomも使っているとのことです。github.comはまだまだクラウドに達してないと話しており,まだまだやれることがあると言っていました。Webのパフォーマンスだけでなく,collectedを使ったMySQLの秒間書き込みや,Nagiosを使ったサーバのCPU,メモリなどの状態も監視しているそうです。

github社内でのコミュニケーションではCampfireを使っていると言及しました。Campfireには様々な監視サービスの情報がそこに記録されているそうです。CampfireのAPIを使ったHuBotというものも作り,単純な作業をそこで自動化しており,毎日の開発のサイクルとツールの連携が重要だと述べました。

社内だけでなくユーザとのコミュニケーションも重要であると話し,メールやTwitterなどを使ってコミニュケーションをするそうです。その際にcotweetというツールを使い,社員の誰かが返事した内容に対して再度まちがえて返信してしまわないようにしているとのことでした。

本番環境にはエラーがつきものであると話し,Haystackという社内ツールを作ったそうです。このツールはHopToadに似たツールでアプリケーションで発生した例外をロギングし,例外頻度をチェックしているとのこと。リアルタイムに更新されており,各サービスごとに情報を分けてみれるようにしていることが語られました。そのため,サービスごとに頻度の高いエラーやどんなユーザで発生しているのかわかるとのことです。それにより,例えば発生している例外の対象ユーザが少ない場合,ただ単にそのユーザのリポジトリが壊れているだけとの推測ができると述べていました。

githubでは継続インテグレーションも行なっており,各ブランチの状態を常にチェックしているそうです。ツールはJenkinsを用いており,Jenkinsを扱う中間ツールとしてJenkyというものを作ったとのことです。JenkyはWebhooksを提供し,それを使って先程のHuBotに通知を行なうことが説明されました。

githubではこのようなたくさんのツールを用いて,様々な問題の発見や解決に役立てているとのことでした。

画像

画像

頻繁にデプロイ

githubでは頻繁に機能をデプロイするそうで,1日に20回以上行うこともあるそうです。デプロイはプログラマだけでなくデザイナもできる仕組みにしているとのことでした。デプロイはmasterだけでなく,ある特定のブランチをデプロイできるようにしており,そうすることでそのブランチに問題があってもmasterにすぐに戻せるようになっていることが紹介されました。そのため,パフォーマンステストや実験的な機能のデプロイもできると述べていました。

heavenというライブラリを作り,このライブラリはオプションを指定することでデプロイ先のサーバやブランチを指定できるそうです。このライブラリがあることでHuBot経由でheavenのAPIにリクエストを送り,Bot経由でデプロイできるようになっていると話しました。

他にも,デプロイの機能としてスタッフしか使えないように機能をデプロイするとか,大きめのリリースをしたときにはブログを通してユーザの反応を受けるなどをしているそうです。github.comのユーザは技術力の高い人が多く,彼らの意見を聞くことが大切であることを指摘しました。

総括として常に様々なデータをあつめると便利だと述べ,重要なのはユーザに頻繁に価値を提供することで,そのためには2週間のスプリントでは遅く,もっともっと早くする必要があると話しました。

須永高浩さん「Ruby用のリアルタイムプロファイラ」

東京大学大学院の須永高浩さんがリアルタイムプロファイラの紹介とデモを行いました。

「プロファイラって使っていますか?」という質問から,このセッションは始まりました。

Rubyにはruby-profというプロファイラがあります。しかし,ruby-profはプログラム終了まで待たないと結果が分からなかったり,オーバーヘッドが大きいと問題点があると述べます。そこで,須永さんはリアルタイムに情報を得ることができ,オーバーヘッドが軽いリアルタイムプロファイラを開発されたそうです。

リアルタイムプロファイラを実行すると情報サーバを起動され,ブラウザで実行結果が表示されます。特徴として,実行されている状況がグラフィカルに表示され,実行しているモジュールの大きさが面積で表現され俯瞰することが可能であることを挙げました。また,プロファイル結果をグラフとして見ることができるとのこと。

具体的には,このプロファイラには,5つの特徴があることが示されました。

  • リアルタイムに結果を見れる
  • 別プロセスで起動される
  • Webブラウザで結果が見れる
  • 関数呼出しのコンテキストを含めてプロファイル結果を見れる
  • オーバーヘッドが低い

リアルタイムプロファイラを使用したプロファイルの事例紹介として,Arrowという須永さんが作成したWebサイトでプロファイルを実行した結果を紹介しました。ArrowはPythonで構築されたWebサービスですが,リアルタイムプロファイラが言語非依存のプロファイラのであり,簡単な修正で確認することができたそうです。また,Webサービスをプロファイルするために,以下の機能追加を行ったことが補足されました。

  • プロファイルしたい場所を指示する機能
  • 多数のプロセスから情報を集約する機能

プロファイリングは, Webサービスを動かしながら行なったそうです。そのような簡単な分析だけでも,多くの問題点に気付けたという結果を紹介しました。

最後に,リアルタイムプロファイラの今後として,いろんな言語への対応や,いろんな情報をプロファイルできるようにし,⁠汎用的なプロファイラ構成用フレームワークにしたい」と構想を語り,発表が締め括られました。

画像

画像

著者プロフィール

KaigiFreaks レポート班

KaigiFreaksとは,会場に来れなかった人にも,雰囲気や内容を楽しんでもらえるように動画収録や配信を行うことをミッションに,RubyKaigi2008で結成された特別編成チーム。

RubyKaigi2009からはgihyo.jpを中心にテキストと写真で現場の様子を伝えるレポート班が加わり,現在のKaigiFreaksは配信班とレポート班の2班編成。


三村益隆(みむらみつたか)

(株)永和システムマネジメントサービスプロバイディング事業部所属。Asakusa.rb & Rails勉強会@tokyo。このところRailsのお仕事をしています。言語好き。

blog:http://d.hatena.ne.jp/takkan_m
twitter:http://twitter.com/takkanm


すがわらまさのり

ハンドルネームはsugamasao。

Mitaka.rb や 若手IT勉強会に参加しています。仕事では自社プロダクトのデーモンの開発あたりでRubyを使ったりしています。伊坂幸太郎さんと荒木飛呂彦さんが好きです。

blog:http://d.hatena.ne.jp/seiunsky/
twitter:https://twitter.com/sugamasao


小松崎典之(こまつざきのりゆき)

ハンドルネームはO-Show。

RubyKaigi2010に参加したことで触発されRubyistを自称するようになる。ブログでRubyやGit関連記事の翻訳をあげています。もっとRubyとGitの情報の流通増えろ!と願ってやまない。

blog:http://keijinsonyaban.blogspot.com/
twitter:http://twitter.com/oshow


菅井祐太朗(すがいゆうたろう)

仕事でも Ruby を使えたらいいなぁと考えている新社会人LOCAL 所属。この春からAsakusa.rbにjoin。

twitter:http://twitter.com/hokkai7go


赤松祐希(あかまつゆうき)

2010年よりRuby on RailsでのWebアプリケーションの開発を中心にフリーランスのRubyプログラマとして活動中。最近はHaskellに興味を持ち出し、勉強しはじめている。

blog:http://ukstudio.jp/
twitter:http://twitter.com/ukstudio