12/11(金)から始まった RubyKaigi 2015 に 3 日間参加してきました。
1 日目は自宅を出た時は小雨で、東銀座駅に着いたら暴風雨、
会場に着いたら快晴と、汐留とはなんとハードな場所かと疲労困憊
汗ダラダラで始まりました。
以下、自分用のメモです。
Keynote by @yukihiro_matz
※ TODO: 資料やビデオが公開されたらここに貼る
- Did-you-mean 機能
- 間違えたら提示してくれる機能
- Enumerable#grep_v
- Hash#dig は便利そう
- frozen-string-literal: true とコメントを書くと、文字列が freeze される
- &. Lonely operator
- && の圧縮だそう。なるほど今理解した。
- https://github.com/matz/streem の話
foo = nil
foo && foo.size
=> nil
foo = "aaa"
foo && foo.size
=> 3
# 上記を &. で書き換えると
foo = nil
foo&.size
=> nil
foo = "aaa"
foo&.size
=> 3
Compiling Ruby scripts by @ko1
※ TODO: 資料やビデオが公開されたらここに貼る
Saving people from typos by @yuki24
※ TODO: 資料やビデオが公開されたらここに貼る
- did_you_mean gem の作者
- 最近 Ruby commiter になった
- Distance という概念
- necessary
私も necessary をミスなく打つことは諦めていて、Emacs の ispell-word にお任せしている。 #rubykaigi
— マスタカ (@masutaka) December 11, 2015
Time flies like an arrow; Fruit flies like a banana: Parsers for Great Good by @SoManyHs
Fast Metaprogramming with Truffle by @nirvdrum
※ TODO: 資料やビデオが公開されたらここに貼る
- メタプロは遅いけど、JRuby+Truffle でメソッド呼び出しの時のキャッシュをうまく取れば大丈夫ってことかな?
- JRuby 使う予定ないから、こんな感想しか出てこない…
Introducing the Crystal Programming Language by @leinweber
※ TODO: 資料やビデオが公開されたらここに貼る
ここから 2 日目 8×————–
The history of testing framework in Ruby by @ktou
- Ruby 本体に使われているテストフレームワークの歴史と、実際の使用例
- 何かを比較するときは、横より縦に並べたほうが比較しやすい。なるほど
Turbo Rails with Rust by @wycats and @chancancode
※ TODO: 資料やビデオが公開されたらここに貼る
- 英語速すぎて分からず
- C 拡張を Rust 拡張に変えたら、速く簡潔なコードになった話だったのかな
- libcruby を使うことで、.trb に inline Rust も出来るみたい
Data Analytics Service Company and Its Ruby Usage by @tagomoris
Treasure Data を構成するワーカーのお話。OSS になっている。
複雑な条件のテストをするために Ruby のメタプロが非常に役立っており、
当面は他の言語に乗り換えることはなさそうとのこと。
done is better then perfect. #rubykaigi
— Zeno Davatz (@zdavatz) December 12, 2015
EN The future of Ruby is in motion! by @lrz
※ TODO: 資料やビデオが公開されたらここに貼る
デモ良かった。
#rubykaigi #rubykaigiA pic.twitter.com/Vb8uxc3u5Q
— アオヤマ ミント (@MintoAoyama) December 12, 2015
Ruby meets Go by @_mmasaki
- Ruby の拡張ライブラリを GO で書くテクニックを紹介
- cgo を使えば GO から C の関数を呼べる
- cgo は GO に標準で含まれているみたい。"$ go tool cgo …" で使えた
- C と GO の相互変換
- コメントに C のコードを書く
- ffi gem や標準の fiddle を使って、Ruby から GO の関数を呼び出す
- cgo には C の世界と GO の世界があるので注意
- コピーが 2 回発生しないように、怪しいコードを書かないといけない
- GOSTRING_PTR を作ると便利
- Ruby の GC のタイミングで、GO 側も GC するテクニック
- GO 拡張を含んだ Gem を作るテクニック
Building CLI Apps for Everyone by @hone02 and @_zzak
- mruby-cli を作って、CLI ツールを高速化した話
- https://github.com/hone/mruby-cli
- クロスコンパイルするので、各 OS ごとにバイナリが出来る。GO っぽい
- C や GO、Rust よりも、mruby で拡張ライブラリを作れば複数言語を覚えずに済む?
- docker-compose 使ってクロスコンパイルしている。テストも
making robot with mruby by @yurie
- Raspberry Pi 上で mruby を動かして、倒立振子のロボットを付くた話
- ラズパイの面白い使い方。やってみるのも面白そう
Lightning Talks
https://www.deppbot.com の人がトップバッター!
- そういえば前日に http://tachikoma.io/ の @sanemat さんと話した
- 「マスタカさんとは compare_linker について話したかったんですよ!」と言われてビビったw
Rails の国際化
- Rails3 から h が必要なくなったので、t とか l も必要なくしてみたという話
- 大学 4 年生だそうで将来有望だ
GO のテストを Ruby に移植した話。GO 好きには良いかも?
ここから 3 日目 8×————–
Ruby Committers vs the World by Ruby committers
RubyGems は CRuby と RubyGems で別々に commit を重ねているのか。
知らなかった。今まではマージが 1 年に 1 回で辛かったけど、頑張って
今は 1 ヶ月に 1 回マージしているそう。
It’s dangerous to GC alone. Take this! by @youngrw and @CraigLehmann
これが IBM が MRI の高速化に協力する一つの形なのかな?
OMR はさまざまな言語で動作するランタイムライブラリ。
OMR の malloc に置き換えれば、GC を並列実行して高速化するとのこと。
簡単に置き換えられるものなのかな?
docker pull して試せるらしい。
https://github.com/rubyomr-preview/rubyomr-preview
Refinements - the Worst Feature You Ever Loved by @nusco
※ TODO: 資料やビデオが公開されたらここに貼る
- Global is OK
- しかしセキュリティやパフォーマンスリスクがある
- 突然の lexical scope
- 全部は解決しないが、セキュリティやパフォーマンスの問題は解決できる
- http://togetter.com/li/912136
Discussion on Thread between version 1.8.6 and 2.2.3 by @emorima
※ TODO: 資料やビデオが公開されたらここに貼る
異常時には Thread#status が取れない事象が発生
これだと異常スレッドを再起動したくてもできないので、監視の仕組みを作った。具体的には子スレッドを作るときにobserve classを作っておき、子スレッドから定期的にobserve classの時刻を更新するようにした。 #rubykaigi #rubykaigiB
— 黒曜@Leaner Technologies (@kokuyouwind) December 13, 2015
全部プロセスにしてはダメなんだろうかと、素人的な疑問を持った。
Plugin-based software design with Ruby and RubyGems by @frsyuki
※ TODO: 資料やビデオが公開されたらここに貼る
Let’s make a functional language! by @yhara
- JavaScript のような OreScript を作った
- racc gem で比較的簡単に木構造にできる
- 木構造を使うのは言語処理系では比較的ポピュラー
- 型チェックするために型を書きたくない
- OreScript は型チェックをするために型推論をする
- 型推論で矛盾が出たら型チェックを通っていないということらしい
- https://github.com/yhara/rk2015orescript
Beyond Saas: Building for Enterprise by @joshk
※ TODO: 資料やビデオが公開されたらここに貼る
Keynote by @evanphx
※ TODO: 資料やビデオが公開されたらここに貼る
終わりに
最後は体力の限界に近づいてきたので、Hall B に退散しました。
座れる休憩スペースがあれば助かりましたが、なかなか難しいですよね。
RubyKaigi は 2011 年 [2011-07-21-1]
以来ですが、やはり 3 日間は参
加するだけでもハードです…。
運営の方、ありがとうございました!