RubyKaigi 2017 に参加してきました!

こんにちは。エンジニアチームの星野です。
2017/09/18 - 2017/09/20に広島で行われたRubyKaigi2017に行ってきました。

RubyKaigiはプログラム言語Rubyに関する、年に一度開催される国際カンファレンスです。

RubyKaigiには初参加だったのですが、とてもとても楽しかったです!

素晴らしい講演を聞かせてくださった登壇者の皆さん、RubyKaigiを盛り上げてくれたスタッフの方々、声を掛けてくれた参加者の皆さん、本当にありがとうございました!

私用があって二日目の9/19から参加したのですが、一日目も面白い講演がたくさんあり聞けなかったことが悔やまれます。
ちなみに私用では大阪に寄っていたのですが、大阪と広島のお好み焼きを連日楽しめてとても充実した週でした。

印象的だったセッション

Keynote | Yukihiro "Matz" Matsumoto

http://rubykaigi.org/2017/presentations/yukihiro_matz.html

Rubyという言語のデザインについて話が始まり、オブジェクトの継承の話からModuleの役割の変化、というか役割がどんどん増えていったという話をされていました。
Rubyを触り始めた初期、ClassとModuleの違いが良くわからなかった覚えがあるのですが、その時の自分に聞かせたい内容でした。

講演の中で、検討中の機能だけどと注釈付きでModuleをStructual type checkにつかうアイデアが紹介されました。`obj.confirm(Media)`のようにして、オブジェクトが指定のメソッドを持つかをチェックできるようにしてはどうかというアイデアのようです。これはGolangのInterfaceに近い機能なのかと感じました。

PayPalさんでのAfterPartyでMatzと話せる機会があり、上記アイデアについて「型チェックをするためのEarly returnがいろいろなところに欲しくなりそう。やはり引数の型宣言のようなものが欲しくなるのでは?」という質問をしてみました。

やはりRubyでは型宣言は書きたくないし、その日の発表(Automated Type Contracts Generation for Ruby)であったような静的な型チェックが十分進化すればよいはずだ、という解答をもらえました。該当セッションも聴講していたのですが、発表されたばかりの新鮮な話題で盛り上がれたとても貴重な体験でした。

An introduction and future of Ruby coverage library | Yusuke Endoh

http://rubykaigi.org/2017/presentations/mametter.html

Rubyのリポジトリのカバレッジ上げたよ、というお話でした。

講演の内容も印象的でしたが、それよりもEndohさんが「テストやってるひとどれくらいいますか?」「このなかでカバレッジ取ってるひとは?」とやった時、思っていたよりもカバレッジを取っているひとの数が少なかったのが印象に残りました(五分の一くらい?)。

どこの行がテストされているいないというのが視覚的になるのが、個人的に好きなので意外でした。Railsでは画面をユーザーが操作した反応というような、機能間の連携をテストしたいという要望が大きそうなので、単体テストのカバレッジをとるモチベーションがあまり強くないとかもありそうです。

セッションの最後に「カバレッジを上げていくテストを書くのではなく、デザインへのテストを書いていった結果、コードへのテストが網羅さていくというカバレッジの上昇が理想的」と、まとめられていました。

Pattern Matching in Ruby | Yuki Torii

http://rubykaigi.org/2017/presentations/yotii23.html

https://speakerdeck.com/yotii23/pattern-matching-in-ruby-2017-rubykaigi

Rubyを拡張し、パターンマッチングを実装したpmruby(pattern-match-ruby)を作ってみたという内容の講演でした。

if %p([:ok, x]) =~ [:ok, 200]
p "status is #{x}"
else
p "request was fail"
end

のように、%pという独自リテラルと=~(またはエイリアスの===)を使うことで、Elixirなどの言語にあるパターンマッチングができるという内容でした。Rubyに取り入れられたらわりと嬉しい。

Rubyの実装に手をいれることで機能を実現しており、具体的なコードは

https://github.com/yakitorii/pattern-match-ruby/compare/8081826be6a1091c311e...4a4caa271a304ad9eae9c3441ada22a755249070#diff-6d840db07406437770b610102b284273

などで見ることができます。質疑応答の時間に前の方に座っている方から「実際のコードが見たい」という話があがり、スクリーンにRubyとpmrubyのdiffが映し出されたりしていました。おおRubyのテックカンファレンスらしい展開、などと感動していました。

その他、PCの充電をするためにふらっと立ち寄った会議室で、Apache Arrow を利用してRuby用のデータ処理ツールを提供するプロジェクト、 Red Data Tools Project のワークショップが開かれており、途中からの参加だったのですがとても面白かったです。

Apache Arrowというデータ形式に対応した数値計算をRubyにも導入していくという意欲的なプロジェクトでいした。科学計算系のライブラリというと内部で独自の実装やデータ形式を持つことが多いのだそうですが、Apache Arrowという共通形式を使うことで他の実装や他の言語とも協調していけるということをおっしゃられていました。

いま公式のスケジュールを確認してみたら、ワークショップに関しても記述があったんですね…気が付かなかった。

http://rubykaigi.org/2017/schedule#workshop

参加して感じたこと

Rubyistというとふわゆるなイメージがあるのですが、講演や懇談会などではコンピューターサイエンスに根ざした話題などが上がっており、まさにエンジニアのカンファレンスという感じでした。

みなさん、とても噛み砕いてくれていたと思うのですが、コンピューターサイエンスの知識不足もあり、メモを取るのも大変でした…

とはいえとても刺激的で楽しかったです! 情報量がすごい。今回は会社の外部研修制度を使ってRubyKaigiに行ってきまして、感謝しかありません。
今回はViibarから一人だけの参加でしたが、次回開催のときはほかのメンバーも連れて行ってみたい。

振り返りとしては以下の準備があると良いかなと思いました。

  • エナジードリンク ... 情報量も多いので、体力を使う
  • 英語 ... 勉強する

次回開催は2018年5月末に宮城県の仙台で行われるようです。楽しみです。

株式会社Viibar's job postings
6 Likes
6 Likes

Weekly ranking

Show other rankings