Studyplus Engineering Blog

スタディプラスの開発者が発信するブログ

スタディプラスはRubyKaigi Takeout 2021にPlatinum Sponsorsとして協賛しました!

こんにちは。サーバーグループの山田です。 最近好きな漫画は「アオアシ」です。

スタディプラスはRubyKaigi Takeout 2021にPlatinumスポンサーとして協賛させていただきました!今年で3回目のスポンサーとなります。

プラチナスポンサーとして

スポンサーとしてカンファレンスの中で以下のような宣伝をさせていただきました。

  • Live Chat上の宣伝テキスト表示
  • トーク間のロゴ表示
  • トーク開始前の15秒間のCM放映

トーク間のロゴ表示

CMはこちらの動画のショートバージョンを流させていただきました。

www.youtube.com

またスポンサー特典として、15名の無料招待枠がありました。 社内のRubyエンジニアだけでは使いきれない量だったので、普段Rubyをあまり書かないエンジニアも興味のある人が参加できました。

感想

参加したメンバー数名の印象に残ったセッションの感想です。

山田

The newsletter of RBS updates

https://rubykaigi.org/2021-takeout/presentations/p_ck_.html

@p_ck_さんによるRBSの最新の動向についての発表です。 ちょうどRuby会議の少し前に社内勉強会でRubyの静的型付けについての話をしたところだったため、気になっていたところでした。

Ruby3.1に同梱されるRBS v2では以下のような新機能が追加されるとのことで楽しみです。

  • rbs collection
  • Bounded Type Parameters
  • Generic Type Alias

個人的には rbs collection に期待しています。現状はRailsアプリにRBSを使おうとすると以下のようなことが必要になります。

  • rbs/typeprofコマンドに大量のオプションが必要
  • Steepfileに使うライブラリの一覧を書く

依存するライブラリを把握し手で書いたり、複数の場所で管理する必要があるなど大変なことが多いです。 rbs collection はRBSのためのbundlerのようなものとのことで、これを使うことで依存関係の管理が楽になりそうです。

Rubyの静的型付け周りは発展途上で今後もどんどん変化が見込まれるため社内のプロジェクトで適用していくことは更新に対応していく覚悟は必要かと思いました。 一方で一度rbsファイルを作成し型を使える環境を作っておけば、それが資産になり知見も蓄積されるため社内のRailsプロジェクトで早めに対応しいきたいと思いました。

また、gem_rbs_collectionはコントリビュートしやすいリポジトリという話も印象に残りました。RBSを色々試す中でコントリビュートしていきたいです!

中村

TypeProf for IDE: Enrich Dev-Experience without Annotations

https://rubykaigi.org/2021-takeout/presentations/mametter.html ​ フルタイムMRIコミッターの@mameさんのお話でした。 ​ もともと社内勉強会でRubyの静的型付についての紹介を聞いていたので興味があり聴講しました。

TypeScriptなどを最初に例をだしてくれて導入からわかりやすく聞きやすかったです。 Rubyの型を推論するTypeProf for IDEの紹介を中心に、Rubyの型についての扱いをわかりやすく紹介してくれていました。 ​ 初めはTypeScriptを例に型推論についての説明から始まり、 Visual Studio Codeで実際にTypeProf for IDEが動いている様子を実演してくれました。 カーソルを合わせると型や関連ドキュメントを表示してくれたり、 異なる型をメソッドに渡すようなコードを書くとエラーを通知してくれたりと、かなり便利そうな印象でした。

また、TypeProfの説明だけでなくRBSやSteepといった他の静的型解析器の説明もしてくれました。 それぞれの得意とすること、苦手とすることなどを比較しつつ説明してくれて、今後利用する上での取捨選択の助けになりました。

TypeProfはとても便利な機能なのですが、まだまだの部分もあるそうで、型推論の速度が遅いためIDEに実装する際は1秒以内で終わらない解析はカットしたり、速度を早めるためにはRBSを結局書かなくてはいけなかったりとまだまだ課題はあるそうです。 ですが、もちろん改善は進めていってくれているとのことなので、Railsのプロジェクトに簡単に導入できたりするようになればかなり広まるのではないかと感じました!

真柴

※ 中村さんの感想に続き@mameさんの発表についてです。今年は静的型付けに注目しているメンバーが多かったです。

TypeProf for IDE: Enrich Dev-Experience without Annotations

TypeProf自体は3.0から同梱されていましたが、3.1からIDEへのサポートが導入されるとのことで、実際にVSCodeの拡張を導入しデモを行いながら発表されていました。

エラー表示、コード補完、定義ジャンプやメソッドの引数・戻り値の型表示などがいい感じに表示されており、適切に利用できれば開発体験が良くなりそうな印象を受けました。

一方で速度面には課題が残っており、とくにgemを使う場合は解析に時間がかかるので事前にRBSを書いて置く必要があるとのことでしたので、使用しているgemでRBSを整備する機運があったら貢献しようと思いました。

まだまだこれからの機能とのことですが、今後整備されていくのが楽しみです。

冨山

Building Native Extensions. This Could Take A While...

https://rubykaigi.org/2021-takeout/presentations/flavorjones.html

@flavorjonesさんによる、Nokogiriやmysql2といったC拡張の構築に関わるテクニックやツールチェーンに関する発表でした。 サンプルコードなどは以下のリポジトリにあるそうです。

C言語などで実装された拡張をRubyのインタプリタ上で実行するための方法としてFFIを使用する方法など色々ありますが、そのときに使用する共有ライブラリのこととか、ツールチェーンについて包括的に説明されていました。

C拡張を構築するときの3つの戦略についてそれぞれ具体的な例をあげながら、コード実行しながら説明されていてとてもわかり易かったです。

私も以前RustでRuby gemを作成してみたことがありますがあまりちゃんと理解しないままやっていたため、また触ってみようかなという気持ちになりました。

最後に

リアルイベントの開催が難しい状況の中、オンラインで素晴らしいカンファレンスを開催いただいたRubyKaigi運営チームや関係者の皆様に感謝です。

発表中のチャット欄で発表者の方が質問に答えたり補足説明をされるなどオンライン開催ならではの良さも感じました。

Studyplusとして今後もRubyコミュニティに何らかの形で貢献出来ればと考えております。