RubyKaigi2008に参加してきた#1

当日はあいにくの雨模様にもかかわらず,現場の熱気はすごかったですね.Rubyに対する愛を感じました.キーワードは,「スーツ漫才」「博士と助手の奇妙な世界」「だまっとけ」ですかね.

さて,感想を交えたログなどを.

##開会前

  • 電源確保できなかったので,省電力モードで活動開始.
  • 5時間はもつ予定.

##開会

  • テーマは多様性
    • 様々な実装などで確かに多様.
  • 0th day
    • ビジネスよりのセッション
  • 2つの会場
    • メインセッションとサブセッション
    • 確かに良かったんだけど,セッションの開始時間の調整とかした方がよかったんじゃないかな?と思った.

##現在の,そしてこれからのRubyVM開発

  • Ruby の実装
    • JRuby, Rubinius, IronRuby, MagLev, CRuby(Matz)
  • 08/06/20 1.9.0-2 Release
    • 1.9.0-N -> snapshot version
    • Bug-fix
    • M17N
  • 1.9.1 は 2008/12/20 に Release 予定
  • Ruby の下の部分,実装の話
  • Parallel Thread Execution
    • 並列スレッド実行
    • 現在のRubyは制限がある
    • ただしそうすると他に影響が出る
  • Multiple Virtual Machine
    • 一つのインタプリタで複数のVM
  • Compilation
    • Ruby 2 C
  • HPC on Ruby
    • そこそこ性能が出て簡単に書ける
    • 並列計算 on Ruby
  • Atomic Ruby
    • 軽量版Ruby?
    • 肥大化した Ruby を,自分にあった機能のみを取り込んだ軽量版を作る
  • Memory Revisit
    • GC 変更
    • Malloc/Free の戦略変更
    • いまの Ruby はメモリ使用量を把握していない
  • Neo Garbage Collector
    • ささださんの周りでははやってるらしい
  • 笹田研ができたので,学生急募中
    • これが一番重要らしい

##JRuby

  • Introduction and Demonstration
  • 今後は 1.9.0 互換を目指す
  • JRuby 1.1.2
    • 1.1 系のメンテナンスリリース
    • しかしパフォーマンスは結構上がっている
  • JRuby はどこで使われているか
    • NetBeans などのパーサー
    • NetBeans が一番いいらしい
  • Ruby は Java よりも Swing を面白くするらしい
  • Demonstration of JRuby with Swing
    • かなり簡単に Window(GUI) 出せるな
  • Graphics Processing
    • Java の 画像処理ツール?を JRuby で使えるようにする
    • ruby-processing
    • こちらも簡単に書けるようだ
  • Web application
    • Rails はいいのだが,遅い
    • Mongrel は JRuby で動く
  • Passenger は deploy を簡単にした
  • Rails on GlassFish
    • Demonstration
    • warbler
    • WAR file を作る
    • これで全ファイル一式入っているので,deploy が簡単
    • 確かに簡単だ.
  • GrassFish V3 Gem
    • GlashFish を最初から適用?
  • JRuby on Rails で多数のサービスが展開中

##Rubunius

  • Ruby を実行する新しいVM
  • Ruby のコードを Kernel / User にわける
    • OS の Kernel/Userに分ける?
  • コードもデータ
    • to_sexp -> S式に変換
    • lisp のようなものかな
    • byte-code に decode してる?
  • Binding.of_caller
    • 今日の夜にでも調べよう

##プログラミング梁山泊 :: Keynote Speech

  • 梁山泊
    • 水滸伝の舞台 108人の勇士
    • 勇士が集まる場所
  • 梁山泊はあるか?
    • lisp
    • list processor
    • 中心技術は S式
    • GC/Exception は古くからある
    • meta-programming/macro ( program as data )
    • ‘70 から実現されていた
    • コンパイラ・インタプリタがある
    • FORTRAN と同等の高速性がある
    • list梁山泊
    • 技術者が集まることで,新たな技術が生まれ,世界が変わる
  • 梁山泊ではないもの
    • FORTRAN / COBOL / Ada
    • 仕事の道具であり,技術よりも結果に関心
    • 数値計算が高速にできることが重要なのだが,FORTRAN 自体の高速化には興味はない
  • UNIX 梁山泊
    • small OS
    • text/stream-based
    • ベストでなくても便利である必要がある
    • not best but convensional
  • Smalltalk 梁山泊
    • OOP / class browser / class libraries
    • 基本的に lisp を踏襲している
    • 実装についての議論や技術革新が活発
  • Java 梁山泊
    • 温故知新
    • VM/GC/Exception を一般に知らしめる契機になった
    • エンタープライズ技術
    • ビジネスに役立つコンピュータサイエンス
    • GC や高速化が進んでいった
  • プログラミング梁山泊
    • 技術者が集まることで,新たな技術が生まれ,世界が変わる
    • 技術力より求心力が重要
    • それゆえコミュニティも重要
  • 次の梁山泊は?
  • Ruby 梁山泊
    • 過去を継承
    • lisp -> meta-programming
    • smalltalk -> OOP
    • POSIX API -> text/stream-based
    • 感性を重視
    • 人に注目,楽しさに注目
    • 確かに Ruby は楽しいですね.
    • 生産性を重視
    • マシンが高速化しているが,人件費は高騰している
    • マシンを酷使すればいいんじゃないだろうか
    • 俊敏性を重視
    • 変化に対応できる機動力が必要
    • Ruby on Rails
    • 生産性・俊敏性・動的に対応できる
    • Ruby for Rails になっている
    • 逆に Ruby 入門として,Rails がある
    • All-in-one
    • Post Rails
    • Merb / Ramaze / others…
    • 複数の実装
    • Ruby 1.8 -> CRuby
    • Ruby 1.9 -> YARV
    • JRuby–> Ruby on Java
    • Rubinius -> Ruby on Smalltalk
    • Ruby.NET
    • IronRuby -> Ruby on DLL
    • Maglev -> Ruby on Smalltalk
    • Magnetic Levitation :: 磁気浮上
    • Opensource にはならないかもしれない
    • 多様性は善
    • 互換性はどうか
    • RubySpec というテストスイートを充実させつつある
    • Ruby 標準規格
    • 互換性と政府調達からの要請
    • Ruby アソシエーション活動により,標準規格書などを
    • 今後は
    • 基本性能を向上
    • 競争と協調により向上し続けている
    • 機能強化
    • M17N / Enemuration / etc…
    • Name Space / Open Class
    • アプリケーション
    • Web 生産性 / スケーラビリティ
    • スケーラビリティ
    • 大量データ・分散並列・大量マシン
    • 楽天では
    • Huge Data/Access
    • ROMA
      • 分散 Hash
      • 数台に分散して保存する
      • ホットスケール
      • 環状に並んでいて,追加されるとどこかに INSERT される
      • フェイルオーバ
      • 消えても環状が元に戻る
      • 永続化
      • 消えない
    • fairy
      • スケーラビリティがある
      • Ruby フレンドリー
    • 未来へのアイデア
    • よりよいプロファイラ
    • イメージベースIDE
    • Actor Model Programming
    • Erlang
  • まとめ
    • 梁山泊ができてきて,新しい技術が生まれつつある
  • 質疑応答
    • MagLev を意識しすぎている?
    • Smalltalk 陣営から出てきた
    • Ruby 1.8 の 60 倍速いと言われた
    • 省電力実装への考えは?
    • Matz さんは No idea
    • MVM が流行ってるね
    • CRuby にはいらないんじゃね?
    • Google Summer of Code には?
    • RubyCentral にて
    • RubyAssociation では検討を始めたばかり
    • ROMA/Fairy の実装は?
    • Pure Ruby でのちのち C 化かな?
    • Ruby を拡張する予定はいまのところない
    • Matz 日記が更新されないのは?
    • 言い訳タイム
    • 上の人間に Java じゃなくて Ruby がいいのか?
    • 作者の性格がいいから?(ぉぃ)
    • 生産性にはプログラマの気分に依存する
      • Ruby をキメると気分がいい -> 生産性が上がる

##Ruby M17N

  • CSI 方式を採用
    • 一般的にはUCS Nomalization 方式
    • 内部表現は 1 つ
    • byte-code
    • 内部に特別なエンコーディングはない
    • 主に3つ
    • ASCII Compatible
    • EUC-JP / UTF-8 / Shift_JIS / etc….
    • ASCII-8BIT
    • ASCII Incompatible
    • Dummy
    • 名前は知ってるが中身を知らない
    • $KCODE は廃止
    • String の変化
    • 1.8 -> Byte String
    • 1.9 -> Byte String with encoding
    • 文字リテラル
    • ?a -> 97 (Fixnum) : 1.8
    • ?a -> “a” (US-ASCII) : 1.9
    • String#[] -> 1.9 から文字が返るようになった
    • String#length
    • length : “あいう” -> 3
    • bytesize : “あいう” => 6
    • String#each_byte/char/line
    • バイト列が一致していても,Encoding がことなれば違う文字
    • バイト列処理と文字列処理をちゃんと使い分ける
    • Magic Comment
    • script encoding の決定など
    • 入出力に Encoding が多岐にわたって導入されている
  • 独自の変換モジュール
    • 内部実装の話
  • まとめ
    • Encoding を意識して,それに独立したコードを書くよう心がけよう
    • Magic Comment を書こう
  • 質疑応答
    • cygwin などは?
    • 使えない場合は報告してください
    • どう Encoding を意識すれば?
    • バイト列と文字列のマッチ
    • K オプションをつけて,動いてたらそれを Magic Comment をつける
    • RDoc に Magic Comment が出る
    • RDoc を直せばいいんじゃない? By Martin さん
    • RegExp で違う Encoding のときは?
    • 両方を合わせるべき
    • 自動変換については?
    • 自動ではなくて,ユーザが自らやるべきではないか
    • ライブラリで文字列リテラルを使う場合には?
    • UTF-8 に書いて,受け取った Encoding で返すように書くとか
    • 濁点問題は?
    • (結論出た?)
    • パフォーマンスについては?
    • そこそこあるので,まあまあでしょう.
    • 極端に遅いわけではない.
    • 仕様は決まった?
    • コアな部分はほとんど決まった.
    • 外部側はまだ積み残しがある.
    • 今日の話の資料は?
    • まとめてどこかにアップするそうな

##PC のバッテリーの都合でログなし orz

##Lightning Talk ###Java 2 Ruby についてどうしても言いたいことがある

  • Ruby で書く != Ruby で考える
  • 歴史を繰り返さないように
  • Java が初級者向け?
  • Ruby が上級者向け?
  • 数よりも成果物を重視しようぜ
  • 大規模自慢は愚の骨頂
  • ちゃんと考えようぜ
  • dRuby and Security
  • dRuby を不特定多数へ向けて公開するのはやめよう

###RubyとODEでピタゴラ装置

  • インパクトあるプレゼンメソッド.今後増えるかも?

###初心者は Enumerator の夢を見るか

  • Enumerator を使おう
  • each_slice(n), each_cons(2) など使おうぜ

###Folk Programming with Ruby

  • Folk = 趣味で気軽に

###Ruby.pm

  • Perl から Ruby の CAPI を呼び出す
  • でもあんまり使えない

###toRuby で見つけた Rubyist 人生再出発

  • toRuby = Tochigi Ruby
  • 気持ち重要.

###Ruby 1.9 on Rails 2.1による新時代DBプログラミング

  • 古代 = PHP
  • 近代 = O/R Mapper
  • 現代 = ActiveRecord
  • AR だけではなんともならない
  • RDBMS 操作 != SQLを書く
  • named_scope
  • 集合演算というイメージを持つといいかも
  • ベン図

###テストベースコードリーディングのすすめ

  • テストカバレッジ測定ツールで,カバーされていない部分を探す
  • 是非 commit してください

###A Jail Web Development

  • ブラウザの問題でのXSSに気をつけないといけない
  • wafful, wafful

###工業デザイン

  • 想像と心の目で感じなければならない,弁士メソッド

##初日まとめ

  • JRuby や Rubinius など,互いにいい部分を生かそうというのが良い感じなのが,Ruby のいいところではないでしょうか.
  • やっぱり LT は勢いとパワーがあって熱いね.こういうプレゼンやってみたい.
 
comments powered by Disqus