Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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!