8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RubyKaigi 2021 参加レポート(というより所感)

Posted at

はじめに

今回RubyKaigiに初参加してきましたので参加レポート(というより所感)をアウトプットさせていただきます!

筆者について

Rubyスキル

  • 初めてComputer Software業界に入ったときに研修でRubyを少し使ったくらい
  • Ruby on Railsの研修を3ヶ月みっちりしたくらい
  • 業務ではまだ毛が生えた程度

経歴

2021年に転職をし入社するまでRuby on Railsをするとは思ってなかったのでそもそもRailsが初になります。主にJavaとかGoなどのコンパイル言語が主な経験になるのでRubyやPythonなどのインタプリタ言語自体の開発経験が初になります。

その上でのRubyKaigi参加となるのでお手柔らかに見ていただければと思います!

特に印象に残った発表

※YouTubeの動画リンクにつながっていますので良ければ御覧ください

TypeProf for IDE: Enrich Dev-Experience without Annotations

こちらはIDE (VSCode) での静的型付け(TypeProf)のお話になります。

僕はJavaやTypeScriptをよく使用していたのでわかりますが、型を書くのって結構ストレスなんです。新しいNode Module Libraryを入れるときも型が対応していないとTypeScriptでは使えないですし、どうしても使いたい場合は自分で書くという辛さがあります。(大抵のライブラリには型は書かれていますが)

なので最近の流行?トレンド的には別で定義ファイルを自分たちで書いておいてそのファイルをもとにTSの型を生成するというフローを入れるようなライブラリが増えてきています。(PrismaとかOpenAPIとか)

Rubyの静的型付けに対する考えとしては 型は手動で書かない をポリシーに開発されているようで、過去のそういった苦しみや課題をうまく取り入れて開発を進めているようです。

image.png

Rubyはインタプリタなので実行しないと型というかオブジェクトがわからないので、型を決めるためには実行(どこかで使用していること)が必要とのことです。

方針としては書かないけど、RBSで型を明示することができるとのことでVSCodeのGo to definitionをクリックすると型定義が作成されるらしい!(これはかなり便利そう)

全体的な話を見た上での感想としては、VSCodeのGo to definitionで型定義が簡易に作れるのに全ファイルを走査してすべての型ファイルをGenerateしないのはやはり型は必要なときに使うというポリシーで無駄な管理コストを省くためなのかなーと思いました。(でも結局ライブラリに依存するから全生成しちゃったほうが良いような。。。)

少し残念だったのはTypeProf for IDEでは規模の大きいRubyファイルを解析するとレスポンスが最悪10分かかることがあるよう(対応としては長い処理の場合は打ち切りにする)で、Railsとかで使おうとすると大丈夫なのかなーとかまだ実用的ではないのかもと思いました。

The newsletter of RBS updates

そもそも RBS とは

RBS はRuby版の型言語といったところですね。

  • Ruby 3.0 から同梱されている
  • Ruby 2.6 でも gem install rbsで使用できる

そもそも RBS Collectionとは

RBS v2からの新機能

  • Bounded type parameters
    • これはいわゆるクラスレベルでのジェネリクスの機能になるようです。
    • 入力値に推論してくれて特定の型を返す汎用的な機能の作成に役立ちそうです。
  • Generic Type Aliases
    • こちらも構造情報に型情報を流すことができるようになる

感想

rbs collectionが以前より簡単に導入できるようになったようでセットアップが簡単なのが便利そうです。今までは導入のためにハードルが高かったようです。

個人的にはRBS v2のジェネリクス機能が楽しみですね。早く型使いたい。。。

Ruby, Ractor, QUIC

そもそもRactorとは

Rubyにおける並列実行可能な仕組み、Goroutineが近い

Ractorの前に近年のRealTime通信技術について

現状

  • WebRTC
  • WebSocket

これから

  • WebTransport
    • HTTP/3から
    • use UDP
    • QUICを使用する

QUICとは

  • 現状のTCP/IPでのパケット損失を解決するための新しいプロトコル
  • 現在のChromeやFirefoxなどのブラウザで既に使用されている

感想

噂のQUICとRactorで実装したとのことです。そもそもQUICに対して聞いたことはあるけど、よく知らない状態だったのでこの機会に知れてよかったです。データの中身のHeaderとpayloadの仕様を知れたり、Rubyでのデータ処理方法の実装例を知れました。

結果としては残念ながらRubyの純粋なコードのほうが早く、Ractorを使うと85倍も遅くなるようです。同じマシンでの実験のため原因がメモリ差などではないのが少し残念ですが、これからのRactorの動向に期待したいですね。

Ractor 関連

終わりに

今回初めてのRubyKaigiの参加となりましたが、Rubyが性能向上、静的型付けの対応、並列実行の強化など生まれ変わろうとしていることがわかりました。
また、今回Rubyが初なのでRubyの言語としてのポジショニングというのがより深く理解できて参加してよかったと思っています。

新しい静的型付けのツールやRactorなど業務でなくてもツールとして活用できればと思いました!

末筆ではありますが閲覧頂きありがとうございました!

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?