Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What are the problem?
@yoshiki-0428

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

はじめに

今回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など業務でなくてもツールとして活用できればと思いました!

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
3
Help us understand the problem. What are the problem?