RubyKaigi2008 1日目

Dscf7187

RubyKaigi20081日目。家を朝7時に出て、22時に帰宅。仕事に行くより熱心だったかも。明日も行くぜ。全体的にPerlカンファレンス(YAPC)よりもっとナードで虚弱体質でめがねで髭率が高い。それがRubyistのイメージになった。しかし大体、そんな虚弱な風貌なやつらが集まるところにMatzの言うところの「梁山泊」が発生するのだと、そういう風に思った。

Dscf7191

会場で発売前の「初めてのRuby」が先行販売されていたので早速買う。あと、高橋3部作と言われる1冊「たのしいRuby」の第二版を買った。第一版を買っていたのだが、同僚いわくRubyの仕様変更にあわせてかなり改訂されているらしいのでもう一度買ったほうがいいとのこと。

Dscf7192
「初めての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を使わせる
Dscf7189
クライアントにRubyやウィンドウシステムがない場合で動かす

Matz基調講演
 プログラミング梁山泊
 勇士が集まる場所を考えてみる
 Lispがかつてその場を作っていた
  Meta-Programming
  マクロ:プログラム=データ
 仕事の道具・技術より結果に関心があると梁山泊にはならない
 有効な割り切り=梁山泊な技術
 ベストな、すべてを集めたようなテクノロジーである必要ではない
 便利こそ肝要
 dynamiclanguage
 ビジネスに役立つ(=普通の人も使う)言語でコンピュータサイエンスが=Java
 技術者の集まりから新しい技術が生まれる
 技術力より、求心力があることが重要。コミニティ。
 使うのがおもしろい、作るのがおもしろい=求心力の源泉=技術の源泉

 Rubyは次の梁山泊
  過去を継承し、感性を重視した。
   メタプログラミングオブジェクト指向・テキスト処理
   人・楽しさに注目
  何かが違うからRubyを選んでいる事実
  コンピュータが高速化(=安価)し、人件費が高騰
  俊敏であること
   ソフトウェアに対する敷居が低くなった
   要求が多様かつ、変化が頻繁に起こる
  ROR
   生産性(無駄なことが排除)・俊敏性(変化に対応できる)・動的(メタプログラミングで人間が楽に)
   RailsのためのRubyではない。Ruby入門のためのRails。AllinOne。
  PostRails/複数実装
   Rubynius・JRubyRuby.NET・IronRuby・MagLev
  政府調達の影響で標準が強制させられそう

 今後のRuby
  基本性能の向上
  遅かったJavaが10年でどうなったか
  生産性とスケーラビリティ
   大量データ・マシン・パラレル
  楽天では大量のデータとアクセスがある
   それに耐えられるようなシステムのプラットフォーム
    ROMA:大量分散シェアメモリ
     分散スケール・ホットスケール・冗長
      環状
      複数で保持
      →画が秀逸
    Fairy:分散フレームワーク
     スケーラブル・リーズナブルパフォーマンス
      分散ノードを抽象化して集約コントロールできるプラットフォーム
  楽天のニーズ
   単純なMapReduceは不要
   マトリクス計算がやりたいニーズに合わない
   新しい計算モデルを考案・インプリ中
  あーらんがもてはやされて悔しいらしい
  MagLevをすごく意識している

  Ruby
   生産性・集中力を高める成分が含まれている・Rubyをキめてると生産性が上がる

Ruby《を》教えてるんじゃない、Ruby《で》教えてるんだってば(増原英彦)

 Rubyを使って概念を教える
 コンピュータサイエンスを専攻する生徒が数年前の1/3になったりしている
  プログラミングの楽しさを教えていかないと潜在プログラマである一般人にリーチしない
 言語選定
  条件:対話型・ライトな環境・デフォ
  →Ruby
 irbで勉強させる
 思わぬ間違いをする学生たち
 Minimal Syntax

成功するRuby教育のプラクティス(吉田裕美)

 自分の手足を増やすためのスタディラクティス
  自分が教える→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は上級者の考え方をアクセラレートする言語
 成果を多く出す人を重視