RubyKaigi2008 1日目
RubyKaigi20081日目。家を朝7時に出て、22時に帰宅。仕事に行くより熱心だったかも。明日も行くぜ。全体的にPerlカンファレンス(YAPC)よりもっとナードで虚弱体質でめがねで髭率が高い。それがRubyistのイメージになった。しかし大体、そんな虚弱な風貌なやつらが集まるところにMatzの言うところの「梁山泊」が発生するのだと、そういう風に思った。
会場で発売前の「初めてのRuby」が先行販売されていたので早速買う。あと、高橋3部作と言われる1冊「たのしいRuby」の第二版を買った。第一版を買っていたのだが、同僚いわくRubyの仕様変更にあわせてかなり改訂されているらしいのでもう一度買ったほうがいいとのこと。
「初めてのRuby」はプログラム初心者ではなくて、他言語経験者がRubyの世界を知るための書というコンセプトらしい。読むのが楽しみ。作者のYuguiさんにサインしてもらった。今日のセッションはYuguiさんのが一番おもしろかった。
下記に、セッション毎の自分用メモ。自分の主観が混ぜてある。
JRuby: Ready for Action(Charles Nutter)
JRubyはSwingベースの開発をライトにする
warble
what kind lib?
->warRuby auto deploy lib.
->Include JRuby&etc.
JRuby
->Scalable RubyAPP on JavaContener.
GlassFish
galassfish_Rails
-> deploy Rails.
WebばかりがUIじゃない! 〜 新しくなったRuby/Tk(永井秀利)
Ruby/TkORCA
Ruby/Tk on RFB Canvas
Ruby/Tkアプリをネットワーク越しに
onブラウザでGUIを使わせることができる
Nintendo-DSをクライアントにしてGUIを使わせる
クライアントにRubyやウィンドウシステムがない場合で動かす
Matz基調講演
プログラミング梁山泊
勇士が集まる場所を考えてみる
Lispがかつてその場を作っていた
Meta-Programming
マクロ:プログラム=データ
仕事の道具・技術より結果に関心があると梁山泊にはならない
有効な割り切り=梁山泊な技術
ベストな、すべてを集めたようなテクノロジーである必要ではない
便利こそ肝要
dynamiclanguage
ビジネスに役立つ(=普通の人も使う)言語でコンピュータサイエンスが=Java
技術者の集まりから新しい技術が生まれる
技術力より、求心力があることが重要。コミニティ。
使うのがおもしろい、作るのがおもしろい=求心力の源泉=技術の源泉
Rubyは次の梁山泊
過去を継承し、感性を重視した。
メタプログラミング・オブジェクト指向・テキスト処理
人・楽しさに注目
何かが違うからRubyを選んでいる事実
コンピュータが高速化(=安価)し、人件費が高騰
俊敏であること
ソフトウェアに対する敷居が低くなった
要求が多様かつ、変化が頻繁に起こる
ROR
生産性(無駄なことが排除)・俊敏性(変化に対応できる)・動的(メタプログラミングで人間が楽に)
RailsのためのRubyではない。Ruby入門のためのRails。AllinOne。
PostRails/複数実装
Rubynius・JRuby・Ruby.NET・IronRuby・MagLev
政府調達の影響で標準が強制させられそう
今後のRuby
基本性能の向上
遅かったJavaが10年でどうなったか
生産性とスケーラビリティ
大量データ・マシン・パラレル
楽天では大量のデータとアクセスがある
それに耐えられるようなシステムのプラットフォーム
ROMA:大量分散シェアメモリ
分散スケール・ホットスケール・冗長
環状
複数で保持
→画が秀逸
Fairy:分散フレームワーク
スケーラブル・リーズナブルパフォーマンス
分散ノードを抽象化して集約コントロールできるプラットフォーム
楽天のニーズ
単純なMapReduceは不要
マトリクス計算がやりたいニーズに合わない
新しい計算モデルを考案・インプリ中
あーらんがもてはやされて悔しいらしい
MagLevをすごく意識している
Rubyは
生産性・集中力を高める成分が含まれている・Rubyをキめてると生産性が上がる
Ruby《を》教えてるんじゃない、Ruby《で》教えてるんだってば(増原英彦)
Rubyを使って概念を教える
コンピュータサイエンスを専攻する生徒が数年前の1/3になったりしている
プログラミングの楽しさを教えていかないと潜在プログラマである一般人にリーチしない
言語選定
条件:対話型・ライトな環境・デフォ
→Ruby
irbで勉強させる
思わぬ間違いをする学生たち
Minimal Syntax
自分の手足を増やすためのスタディプラクティス
自分が教える→Best
コミニティに参加
自分が教えると
会社の特徴を活かすには
アフターフォローが重要なのでそこを手厚くできる
教育文化を創ることが重要=会社の強さ
実は講師が勉強になる
効果的なプラクティス
ペアプロをすると考え込んで止まることがなくなる
テスト駆動がベースだが、テストコードはあなたが書く
ゲームをやらせるように、クリアを繰り返させる
やりとげた感じが重要
なのでテストコードを与える
CF:なぜあなたがJavaでオブジェクト指向開発ができないのか
コミニティ
コミニティは教育を求めている
教育の練習に活用せよ
RSpecによるRailsアプリケーションBDD事例(Yugui)
出血事業のターンアラウンドマネージャで投入された話
Subversion:結構すぐ導入できたよ
Track:紆余曲折あったがまぁできた
デプロイ:ツラス
SeleniumIDE:バグがでたら記録する
→後で効いた
結局全コードリプレース
フレームワーク
Seasar2
Seasar2(.NET)
RSpec
リプレース・テスト
Selenium資産がここで効いてくる
Spec/BDD徹底
PostitにSpecを連ねていく
結論
BDD/Railsなどに慣れている者が先導する
TDDを経験したことのないひとにまねをさせる
→チーム全体がその思想を継承する
成果物よりエンジン重要
Specを求めてBDDをすれば
nil以外の間違ったObjectが帰ってくるかもという
バグのほとんどのパターンに対処できる
何のセッションだか忘れた
JavaからRubyに
コードを翻訳するのではなく考え方
Rubyは上級者の考え方をアクセラレートする言語
成果を多く出す人を重視