会社からのサポートもあり、3日間参加することができた。 思えば Ruby 書き始めて半年ぐらいで初めての勉強会になった。
観た講演とひとこと感想。
Keynote
最後の10分ぐらいしか聞けず。Ruby 3.0 で3倍早くなる!!というのは聞けた。なんか Ruby 3x3
的なワードが一人歩きして今年の RubyKaigi 的に流行ってたっぽい。
そういえば Java から Ruby 界に来て、 Rubyist は migration に対してかなり positive な印象がある。
Compiling Ruby scripts
この時間は仕事。。
Saving people from typos
たまたま did_you_mean
gem を最近知ったのでその内部実装について学べて良かった。主に以下の2点について話していた。
編集距離
編集距離のアルゴリズムを2つ用いていて、一方の Levenshtein distance はかなり有名なので知っていたが、 Jaro-Winker distance は初めて聞いた。両者は以下の役割を担っているとのこと。
Levenshtein distance
start_with
をstarts_with
と間違えるなど、spell や word は覚えているけど typo したケースの検出。Jaro-Winker distance
necessary
をneseccary
と間違えるなど、spell を覚えてないケースの検出。
色んなサービス・ツールの did you mean? 実装がどうなっているのか調べるのも面白そう。
monkey patch
エラー発生時のメッセージをいじる方法と、エラー発生箇所で参照可能なシンボルの取得方法について。参照できる
class
,variable
,methods
などが辞書になる。聞いてみると意外とあっさり実現されていて、Ruby の柔軟性をまた感じた。
Time flies like an arrow; Fruit flies like a banana: Parsers for Great Good
パーサの話をしていたけど、あまりにわからなくて仕事へ逃避。。
DIY (Do-it-Yourself) Testing
MongoDB のエンジニアによる Testing 技法の話。多様な言語で driver 書くのはかなり大変なので YAML でテストを書く、というような話だった…はず。
こういう injection を本当に効果的かつ綺麗にできる設計を一度はしてみたいと、Java で DI コンテナとかを触りながら思っていた。
最近だと、同じサービスをマルチプラットフォームで提供する際のバリデーションをどうやって統一しようという問題を考えていた。自分のアイデアではないけど、validation ルールだけをサーバで保持して各クライアントサイドはそのルールに従って validation を実行する、というのは良さそうな気がした。(実際は動的にコードを生成するクライアントサイドの負荷が高くて難しそう)
High Performance Template Engine: Guide to optimize your Ruby code
テンプレートエンジン高速化の話。
テンプレートエンジンの遅さがボトルネックで問題になった経験が無いのでふむふむという感じで聞いていた。
TRICK 2015: The second Transcendental Ruby Imbroglio Contest for RubyKaigi
初日で最も笑ったので自分も 人を"笑顔"にするプログラム を書きたいと思いました
1日目は平日ということもあり、仕事もそこそこやりながら RubyKaigi も楽しみたいな〜とか考えてたらどっちも中途半端になってしまったのでやめようと思った。