TuneCoreのAlex Kaneさんの事例紹介。
主にインディーズのメディアファイルの配信(iTunes, Amazon MP3 etcへの)ビジネスなのだそうです。
1日に100のアルバムをリリースしているそうです。
フロント(アーティスト側)は通常のアカウンティングサイト。ただし、大きなファイルのアップロードは、mongrelではなくてmerbを使っているとのこと。
配布エンジンはほとんどRuby。ただしエンコード変換は外部、XMLのValidateはJavaだそうです。
メッセージキューをYAML形式で実装しAmazonのサービスを利用。
Amazon EC2を使って配信サーバーを動的に管理している。700のサーバーを起動するのに5分。ストレージはAmazon S3。
前田修吾さんの話。「Rails症候群」
- protectedの多用(誤用)
- 既存クラスの再定義をしたがる
- Rubyが何だか知らない
- 文字列とシンボルの区別がつかない
- !の誤用
でも、Rubyのせいかも?
- protectedは不要?
- selector namespace/classbox
多様性を保証するためにも言語仕様を。
RubySpecはいいけど、政府調達には…ISO化も考えているとのこと。
iKnowの開発者Zev Blutさんによる事例報告。
2週間のリリースサイクル。短い。
失敗談:ActiveRecord count/size/lengthの違い
失敗談:OpenIDの認証が遅くなった
失敗談:ファイルシステムext3の限界でキャッシュができない
継続インテグレーションツールKwalaのおまけつき。
食べログの京和さんの事例。
Windows/ASPからRailsへの移行だったのだそうデス。
メモリ喰い対策。
データベースの負荷分散。MMCはダメ。ActsAsReadonlyableで。
クエリーはテーブルを件数、ID、属性の3段階に分けてチューニング。
routeは書いていないがそれほど特別な事はしていない。大規模でも大丈夫。
jpmobileのしだらさん。
携帯向けアプリを作る上での数々の機能を、携帯キャリア・機種によらずAPIで提供。すばらしい。絵文字変換機能まで。
山本陽平さんによるRESTの話。
山本さん的にもっとも重要視するのが、アドレス可能性と接続性だそうデス。
リソース設計重要。ステートレスにこだわりすぎる必要はない。だそうで。
CTCの高井さんと大場さんがスーツで登場。
CTCのRuby関係売上は4.3億程度だそうです。
エンタープライズとは何か?業務!
SI会社にRubyを遣わせるためには、「開発者が楽しい」「生産性が高い」ではだめで、「新規顧客・案件の獲得」が武器に。
教育体制、SLCP2007開発標準(ISO/IEC 12207)、保守・運用フェーズサポート。
見積りはFC法で実績収集。Javaより3割から5割効率的。
Java開発者には3日のトレーニング。コードレビューがうまく行く秘訣。
検証センターで実証済み。
役員をパトロンに。
artonさんによる、拡張ライブラリのためのRailsもどき。テンプレートからのScaffold生成。私は拡張ライブラリを書くことは多分ないと思うけど、便利そうです。
ごとけんさんの「さらに仕事に使うRuby」では、redMine活用に変わっていた点が注目。会社でも使ってみるか?
咳さんは「erbを偲んで」というタイトルは釣りで、GUIにおけるテンプレートとコードの役割についての持論を展開。ベンチマークの話は半分は拍手半分は爆笑。照れ屋の咳さんらしいですね。
途中から多目的ホールに移って、前田KさんのDSL話と、JUDEとRubyをつなぐ野村さんのLuRuJuの話を聞いた後、また大ホールに戻りました。
大ホールに戻ってよかったのがAppleのLaurent SansonettiさんのMac OS XでのRubyの話。RubyCocoaからMacRubyにいたる話は想像通りでしたが、ビックリしたのはMacRuby上でCocoaプログラミングを簡単にするHotCocoaなるライブラリを、*昨日*から開始したよと言う話。RubyCentralのRich Kilmerさんが協力して、一晩で320行のコードを実装。Cocoaを直接呼ぶよりはるかに簡単そうです。
さらにビックリなのが、Q&Aで明かになったこと。MacRubyでは、RubyのArrayやStringなどをObjective-Cのネイティブオブジェクトに置き換えているのですが、そのメソッド再実装などの力業をLaurentが一人でやっているということ。それもフルタイムではなく。
東大の増原さん。Ruby「で」プログラミングを教えているという話。
何でRubyか?
大学でのコンピュータサイエンス学科の人気低下。=>ハッカー以外の学生をどう惹きつけるか?
プログラミングを楽しく。(v.s. Java)
Yumi3は企業向けのソフトウェア教育。
「社内でRuby開発者を増やすには」自分たちで教えましょう。
実習はペアプログラミング!
TDD。だけどテストコードは講師が与える。
社内だけでなく、コミュニティでも教育をしましょう。
Yuguiさんは、RSpec によるBDD。
Subversionは共有フォルダ代わりになれさせた。
COM + ASP.NETの火消を諦めて、SeleniumとRSpecをツールにRailsで書き換え。
Yuguiさんたちのお手本がみんなに普及。
Ruby M17Nについて。
CSI方式<=> UCS Normalization方式
Stringはバイト列のまま、それぞれのStringのインスタンスがエンコーディングを持つ。
様々なRuby1.9のM17N機能の説明。
Martin J Dürstさんのコード変換機能の話。
変換のハブはUTF-8。バイト毎に2つのテーブルを参照。
Encodingを意識しましょう。Encodingに依存しないコードを書きましょう。Magic commentを書きましょう。だそうです。
まつもとさんの基調講演は「プログラミング梁山泊」。
LISPは梁山泊だった。
FORTRAN/COBOL/Adaは梁山泊ではない。(仕事の道具。技術より結果)
UNIXも梁山泊。
Smalltalkも梁山泊。
Java(の一部)も梁山泊。(LISPやSmalltalkの技術を吸収しながら進化し続けたJVM)
- 技術者が集まる
- 新しい技術が生まれる
- 世界が変わる
Ruby梁山泊!!!
多数の実装が生まれている。Smalltalkなどの技術も流れこみ始めている。
互換性はRubySpec。標準規格もつくる。(政府調達に必要!)
楽天との共同研究も紹介。(by 楽天)
ROMA(止まらない・成長する分散ハッシュ)
fairy(スケーラブルで妥当な速度の使いやすい分散処理)(MapReduceの真似ではない新しいもの)
Evan PhoenixのRubinius。
ルーズでファンなコミュニティを心がけているとか。
class Rubinius < Smalltalk
include Ruby::Syntax
include Ruby::Behavior
include GoogleSearch("crazy cs papers")
end
だそうです。
コンパイラをRubyで実装しているのが特徴ですが、コードもデータ(S式)に変換してコンパイルするのだそうです。
また、コンパイラにプラグインがかけるというのもおもしろい所。
コンパイラが出力したバイトコードをデコードして確認できる所が、実験的は便利そうです。
Cでかかれた拡張ライブラリをサポートするAPIを持っていますが、CRubyと違って別に管理されるオブジェクトだそうです。GCで移動加納というメリットはありますが、その代わり遅い。
マルチVMも実装済み。
JRubyはCharles Nutter。
デモ中心だそうで。
JRuby 1.1.3は30%高速化するとか。でもその話はさわりだけ。
JRubyでSwingプログラミングが簡単に。MonkeyBarsの紹介。
Java OpenGLを使った2D グラフィックライブラリの紹介。
音声に反応するグラフィックスのデモも、Javaのライブラリで簡単と。
最後にWebアプリの話。JRubyでもっと速くできると。
Deployはwarblerでwarにするのは簡単。GlassFishにデプロイするのもコマンド一発というデモ。Merbも同じようにデプロイ可能だそうです。
GlassFishのgemのデモも。
高橋会長の開会宣言は、今年のテーマの「多様性」。
The Day Zero(ビジネスデイ)もその一つだそうです。
午前中の司会はなんとまつもとさん。Rubyの『3大実装」の話です。
トップバッターはRuby1.9のささださんです。実装コアのはなし。
1.9.0-2リリース。毎月スナップショットを出すとのこと。1.9.1は12月20日を予定するということです。(クリスマスはゆっくりというまつもとさんの希望だそうで)
並列実行の取り組みやMVMについての研究を簡単に紹介。
RubyをCにコンパイル。学生さんの研究でもうすぐリリースされるとか。
並列分散プログラミングの研究とか。
Atomic Ruby(カスタマイズ可能なRubyの軽量処理系だそうで)の研究とか。
メモリ管理の見直しとか。GCとか。