はじめまして、クラウド本部 クラウドSRE部の森田です。
4月18日〜20日に福岡で行われた「RubyKaigi 2019」の参加レポートを紹介したいと思います!
当社では以前Rubyエンジニア必見!IDCFクラウドのバックエンドシステムアーキテクチャ でご紹介したように、IDCFクラウドRDBやインフィニットLBのバックエンドシステムにRubyを使用しております。 今回、IDCFでは私を含めた4名のRubyエンジニアが、Rubyの最新の動向をキャッチすべくRubyKaigiに参加しました。
RubyKaigiについて
RubyKaigiは年に1回開催されているプログラミング言語Rubyの国際カンファレンスです。
- 来場者数 1,500人
- セッション数 66
- 開催場所 福岡国際会議場
プログラミング言語の国際カンファレンスですと海外での開催が多いかと思いますが、Rubyは生みの親であるまつもと ゆきひろ(Matz)さんが日本人と言うこともあり、国内でのイベントや活動が活発という特徴があります。
セッション
いくつかセッションをピックアップしてご紹介します。
Keynote(Matz)
最初はMatzさんのKeynoteから始まりました。内容は主にRuby3に向けたRubyの今後の話でした。
- テストが嫌い、なぜならDRYじゃないから
- プログラムが書きたいのであってテストをかきたいわけじゃないが、仕方がないので人類はテストを書いている
- Ruby3では型チェックの導入を考えている
- frozen_string_literalについてはRuby3でデフォルト化する話が以前から上がっていたが、Ruby2系との互角性問題がありRuby3への導入は見送ったとのこと
Performance Improvement of Ruby 2.7 JIT in Real World(Takashi Kokubun)
Ruby2.6でリリースされたJITコンパイラが2.7で改善したという話。JITコンパイラの仕組み自体についてはまだ私自身理解できていないですが、Ruby3に向けたJITコンパイラの改善は着々と進んでいるように感じました。
- Ruby2.6ではJITを有効にするとベンチマーク比で1.6倍の速度が出る
- ただしRailsなどを使用している実際の環境では、JITを有効時の方が逆に遅くなるというベンチマーク結果が出ている
- Ruby2.7ではいくつかの改善を導入し、Rails使用時でもJIT無効時と速度的に大差がなくなってきた
All bugfixes are incompatibilities(nagachika)
www.slideshare.net
Rubyの安定版メンテナーとして、その仕事と適正、失敗談を聞くことができました。 ちなみにRuby本体はSVN + Redmineの環境で開発されていたみたいですが、Kokubunさんによると今後はGitに移行しSVNは使わなくなるとのことでした。
- Rubyはstable versionごとに一人メンテナーがいて、trunkに入ったbugfixを担当しているversionにbackportするのが仕事
- どのbugfixをbackportするかの取捨選択が肝であり、メンテナーとして問われるところ
- backportしたことで逆にデグレが起こることもある(syntax error改修で別のsyntax error・・・とか)ので、むやみやたらに取り込むことはできない
- メンテナーは影響範囲の広さ、不具合の深刻度、発生条件の希少性などを参考に、安定版の維持を最優先に現実的な判断をすべき
Better CSV processing with Ruby 2.6(Kouhei Sutou/Kazuma Furuhashi)
Rubyに内包されているCSVライブラリについて、2.6にバージョンアップでの改善の取り組みについてのセッションでした。
IDCFクラウドのインフィニットLBは、バックエンドで使用しているRubyのバージョンを2.5系に引き上げたばかりでしたが、早く2.6系にバージョンアップしたいと思える内容でした!
こういった、内部ライブラリのコミッターの方々の話が聞けるのもRubyKaigiならではだと思いました。
- 2.5.xと比べてパースは約2倍、書き出しは約2.5倍まで高速化された
- CSVに書き込むときはCSV.generate_lineよりCSV.<<のほうが10倍速い!
技術書コーナー
技術書コーナーには、IDCFのインフィニットLBの開発に協力頂いている五十嵐さんの入門書が多数展示されておりました!
なお、こちらの「RubyとRailsの学習ガイド」はboothにて電子書籍版が500円で入手可能なようです。
エディタ投票
gifteeさんがエディタの投票企画を開催していました。
VimとEmacsではVimの圧勝です。(ちなみに私はRubyMine)
VSCodeの人気も高くなってきているようです。シールが整列して貼られているあたり、VSCode使いはきっと良い人達!(社内のVSCode使用者談)
Party
初日のセッション終了後、シャトルバスに乗って川端商店街に移動しました。 IDCF大阪メンバーと合流し、なんと商店街を貸し切ってのパーティーに参加しました!
https://rubykaigi.org/2019/docs/rubykaigi-official-party.pdf
ネットニュースにもなったのでご存知の方も多いと思います!(社内でも話題になっていました) 商店街の飲食店からご提供いただいた食べ物や九州の地酒たちに舌鼓を打ちつつ、参加者の方と交流するなど楽しい時間でした。
最後に
来年のRubykaigiの場所は長野県松本市になりました。
RubykaigiはRuby自体の内部実装やC言語の話も多く、Ruby初心者の方は敷居が高く感じるかもしれませんが、After Partyや協賛企業のブースなどRuby初心者でも楽しめるイベントが沢山あります。
Rubyに関わる方、少しでも興味がある方はぜひ来年参加してみてください!