- Ruby / Rails関連
READ MORE
RubyKaigi 2019の発表資料がだいぶ揃ったようです。ありがとうございます!
誤りや追加情報などがありましたら@hachi8833までお知らせください。
やはり最適化が最も多いですね。
残念ながら現地で見られませんでしたが、ko1さんの発表は「Cで書かれているRubyの組み込みメソッドのうち、単にCのライブラリを呼んでいる程度のものはRubyで書けるならRubyで書こう」という趣旨でした。RubyのFFI(foreign function interface)を用いて、RubyコードからCのコードを呼び出す形で組み込みメソッドを書き、それに応じてVMにinvokecfuncwparam
などのインストラクションを追加したことで、Cネイティブのメソッドより高速にできたというものです。上述のご本人のブログが最もわかりやすいと思います。
当日見られなかったセッションのうち、@shyouheiさんの「The send-pop optimisation」のスライドを見直しました。頻繁に実行されるpop
の呼び出し回数を減らすという、VMの内部に切り込む最適化でした。
オーラスのJeremy Evanさんのキーノートは、そのまま業務に使ったらやばそうなRubyコード最適化を怒涛の勢いで紹介していました。morimorihogeさんの所感は「すべてを理解しなくてもいいけど、パフォーマンスチューニングに慣れていない人が『こういう書き方は遅い臭いがする』という感覚を養うのにいいと思う」でした。
気がつけばmruby関連のセッションは見られずでした😢。しかもDay 2夜にmrubyのワークショップ(先着50名様)↓が開催されていたことも今になって気づきました。
遅ればせながら、最近ゆっくりゆっくりmrubyの構成を追っています。mrubyのコンパイラがmrbgemsの形式になっていてなぜ?と思っているレベルです。mrubyのparser.yは7000行とRubyよりは小さいものの、コードがぎっしりでビビりました。
安定版ブランチメンテナーの@nagachikaさんが、バグフィックスをバックポートするかどうかをジャッジすることの難しさについて発表しました。原則は「バグフィックスはバックポートする」「パフォーマンス改善や新機能や仕様変更はバックポートしない」なのですが、きれいにトリアージできるとは限らずに悩んだり、ときにはバックポートすべきでないものをバックポートしてしまったりというさまざまな経験談に、ブランチメンテナーにのしかかるプレッシャーを実感しました。「個人的にはエッジを効かせたいけど、安定したRubyを届けたい」という言葉が思い出されます。
RubyKaigi 2019 Keynote レポート「nagachikaさん「安定したRubyを届けたい –All bugfixes are incompatibilities–」 〜RubyKaigi 2019 2日目 基調講演」公開 https://t.co/JkrjT3mD7r
— gihyo.jp (@gihyojp) May 15, 2019
少々無理やりですが、@joker1007さんのモナドパターン話と、@joker1007さんを含め多くの人が期待を寄せているパターンマッチングをここに置きました。モナドむずい…
パターンマッチングのスライドを見返すと、特にJSONのようなネストしたパターンをそのままin
で扱えるあたりがスゴいと思いました。今までなかったのが不思議な機能ですね。
参考: Ruby 2.7 — Pattern Matching — First Impressions – Brandon Weaver – Medium
参考: Ruby 2.7 — Pattern Matching — Destructuring on Point
「Cleaning up a huge ruby application」を見たmorimorihogeさんの所感は「Ruby 2.4から入ったコード実行されたどうかを調べるIseqLoggerを使ったり、2.6のcoverage機能を使って『コードはあるけど実際には実行されていないコード』を抽出・削除していく話。完全自動化まではいかないけれども、膨大なコードからアタリを付けて消していくのに十分な情報が得られているように見えた」でした。
「The future of the Bundled Bundler with RubyGems」では、Bundlerの現状と、将来のBundler 4で入るbreaking changesなどが紹介されていました。
「キーワードで振り返るRubyKaigi 2019」はこれにて一区切りいたします🙇。
キーワードで振り返るRubyKaigi 2019@博多(#3)サーバーレス、スレッド、データサイエンス、Apple IIほか