Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

2 自己紹介 技術部 データ基盤チーム/技術基盤チーム 2013年 入社 近藤宇智朗 Uchio Kondo (@udzura) 駆け出しデータ基盤エンジニア、シニアシレンジャー。 ● 徳川幕府を建てた家康の出身地でもある三河生まれ。 ● 好きなバンド: Pavement ● 好きなYouTubeチャンネル: やんちゃクラブ ● 好きなdefault gem: fiddle ● 福岡三大うどんは資さんうどん過激派です

Slide 3

Slide 3 text

どうしてもしないといけない宣伝 3

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

RBSを使ってみた 5

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

実装したもの 9 開発の非常に初期に型を考える、というのが大事。 After RBS 時代の開発サイクル 空のクラス・ メソッドを書 く TypeProfで sigの雛形 rbs/rb の 型を埋める steep check でチェック チェックが 通る 実装を入れる ロジックの テストも 書く 型を編集する

Slide 10

Slide 10 text

実装したもの 10 パーサまで。一応Visitorも実装して ASTをダンプできます。 動作の様子

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

RBSを使った感想 15

Slide 16

Slide 16 text

所感など 16 結論をまずは: 1) 型を決めると気持ちいい。 2) 型とデータ構造ドリブンに設計を考えることが容易になった。 型は思考の補助道具。 3) 言語実装もそうだけど、ミドルウェアやシステムプログラミングなど 複雑な実装をする際に型の助けがあるのは良さそう。 → Ruby をもっと色々なプログラムに使えるように。 RBSを一から始めるプロジェクトに導入してみて?

Slide 17

Slide 17 text

所感など 17 こちらも結論は: 1) メリット大きいので挑戦するといいと思う。 2) ただ、依存gemが多かったりすると大変そう。 untypedをなるべく使いたくないけど、最初は仕方なさそう。。 3) ツールやエコシステムがまだ未成熟なところが多く、 初めは静的解析に優しいコードに修正する場面も多いかも。 でもそれは読みやすい・保守しやすいコードに繋がるかも。 RBSを既存のプロジェクトに導入する?

Slide 18

Slide 18 text

時間があれば demo 18

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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