Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Talk of RBS

2cf373725ded741824c50fd571eda6e1?s=47 KONDO Uchio
November 18, 2021

Talk of RBS

2cf373725ded741824c50fd571eda6e1?s=128

KONDO Uchio

November 18, 2021
Tweet

Transcript

  1. 1 RBS(仮) 近藤宇智朗 / GMO PEPABO inc. 2021.11.18 K-Ruby#27

  2. 2 自己紹介 技術部 データ基盤チーム/技術基盤チーム 2013年 入社 近藤宇智朗 Uchio Kondo (@udzura) 駆け出しデータ基盤エンジニア、シニアシレンジャー。

    • 徳川幕府を建てた家康の出身地でもある三河生まれ。 • 好きなバンド: Pavement • 好きなYouTubeチャンネル: やんちゃクラブ • 好きなdefault gem: fiddle • 福岡三大うどんは資さんうどん過激派です
  3. どうしてもしないといけない宣伝 3

  4. 実装したもの 4 コミュニティに興味のある方、 デザインで貢献したい方、 たのまぁ〜 若干ですが副賞もあります。 Fukuoka.rb ロゴコンペ応募開始! https://github.com/fukuokarb/new-logo-competition/

  5. RBSを使ってみた 5

  6. きっかけ 6 Railsはよくわかないけど、時代が型なのはそうだ!その通りだ! Rust大好き! 触れていなかったRBS、この機会に触れてみます。 時代は型だ 時代は型なんで、 @udzura さん、 ちょいちょいっとRailsでRBSをバーンとする方法

    LTしてくださいよ〜
  7. 実装したもの 7 動くところまで作ってもいいけど、時間がないので実質できたと言えるパーサまで。 プログラミング言語...... のパーサまで。 トークン 文法

  8. 実装したもの 8 ぶっちゃけ文法はLuaのほぼサブセットなので、 軽量なLua… ケイリョウ... Klua です。 https://github.com/udzura/klua 言語の名前

  9. 実装したもの 9 開発の非常に初期に型を考える、というのが大事。 After RBS 時代の開発サイクル 空のクラス・ メソッドを書 く TypeProfで

    sigの雛形 rbs/rb の 型を埋める steep check でチェック チェックが 通る 実装を入れる ロジックの テストも 書く 型を編集する
  10. 実装したもの 10 パーサまで。一応Visitorも実装して ASTをダンプできます。 動作の様子

  11. 実装したもの 11 RBSのシグネチャはこういう見た目。 実際のコードの感じ

  12. 実装したもの 12 RBSのシグネチャはこういう見た目。で実装との対応はこういう感じ 実際のコードの感じ(2)

  13. 実装したもの 13 非常にいい。。。。 エディタの支援や補完の様子

  14. 実装したもの 14 通ったら気持ちいい! steep check

  15. RBSを使った感想 15

  16. 所感など 16 結論をまずは: 1) 型を決めると気持ちいい。 2) 型とデータ構造ドリブンに設計を考えることが容易になった。 型は思考の補助道具。 3) 言語実装もそうだけど、ミドルウェアやシステムプログラミングなど

    複雑な実装をする際に型の助けがあるのは良さそう。 → Ruby をもっと色々なプログラムに使えるように。 RBSを一から始めるプロジェクトに導入してみて?
  17. 所感など 17 こちらも結論は: 1) メリット大きいので挑戦するといいと思う。 2) ただ、依存gemが多かったりすると大変そう。 untypedをなるべく使いたくないけど、最初は仕方なさそう。。 3) ツールやエコシステムがまだ未成熟なところが多く、

    初めは静的解析に優しいコードに修正する場面も多いかも。 でもそれは読みやすい・保守しやすいコードに繋がるかも。 RBSを既存のプロジェクトに導入する?
  18. 時間があれば demo 18

  19. これだけは 覚えて帰って欲しいこと 19

  20. 20 型を決めると 気持ちいい!!1

  21. 最後に 21 ブログを書いてます: https://udzura.hatenablog.jp/entry/2021/10/31/003342 実装の様子などは

  22. 22 Thank You! Thank You! We're hiring typed Rubyists!