Slide 1

Slide 1 text

2024/12/10 @ rails stats 2024 / ykpythemind rails “all” stats

Slide 2

Slide 2 text

ykpythemind (ゆきぽよ) STORES 株式会社 エンジニアリングマネージャ ・音楽制作 ・ホラー映像制作 ・苦手な食べ物が多いです

Slide 3

Slide 3 text

Kaigi on Rails 2024で発表しました 当日スライド: https://speakerdeck.com/ykpythemind/omniauthkaraxue-buoauth2-dot-0-kaigi-on-rails-2024

Slide 4

Slide 4 text

rails stats…

Slide 5

Slide 5 text

嬉しい…ですか???

Slide 6

Slide 6 text

rails statsに期待すること

Slide 7

Slide 7 text

rails statsに期待すること ● 現在のコードベースの大きさがなんとなく分かって嬉しい ● 現在のテスト量 (Code to Test Ratio) が分かる 7 個人開発立ち上げたてのstats

Slide 8

Slide 8 text

(背景) rails stats、嬉しいような、嬉しくないような STORES ネットショップ STORES 予約 STORES ブランドアプリ 10年選手のRailsアプリ、だいたいそこそこ育っている

Slide 9

Slide 9 text

(背景) rails stats、嬉しいような、嬉しくないような 10年選手のRailsアプリ、だいたいそこそこ育っている STORES 予約 rails ? ? ほーん

Slide 10

Slide 10 text

もっと価値を得たい

Slide 11

Slide 11 text

rails stats : もっと価値を得たい ● 今を知る ○ 「コード行数」以外の定量的な情報を一覧できると良い。コードの歩き方が分かる。 ● 過去を知る ○ コードベースが歩んできた過程を知ることで”エモく”なれると良い ● 未来を知る ○ 自分たちがこのコードベースをどうしていけばいいのかのインサイトが得られると良い 11 rails “all” stats

Slide 12

Slide 12 text

rails stats: 今を知る

Slide 13

Slide 13 text

rails stats : 今を知る 13 ykpythemind/rails_all_stats ➜ $ ruby rails_all_stats.rb /path/to/rails_app

Slide 14

Slide 14 text

rails stats : 今を知る ● テーブル数 ○ アプリケーションの複雑さはデータの複雑さ 14

Slide 15

Slide 15 text

rails stats : 今を知る ● テーブル数 ○ アプリケーションの複雑さはデータの複雑さ 15

Slide 16

Slide 16 text

rails stats : 今を知る ● 主要クラス ○ コアな事業ドメインは何か 16

Slide 17

Slide 17 text

rails stats : 今を知る ● 主要クラス ○ コアな事業ドメインは何か 17 ・予約! ・Resourceは予約ページのこと 🫣 ・アプリのバーコードを読み取ったりポイント付与したり… ・Push通知の雛形が ShopMessage

Slide 18

Slide 18 text

rails stats : 今を知る ● 主要エンドポイント ○ ユーザーが使うコンテキストが分かる 18 ※ railsプロジェクトの tmpディレクトリにスクリプトを転送 し、rails runner で実行させる ※ 雰囲気で集計する

Slide 19

Slide 19 text

rails stats : 今を知る ● 主要エンドポイント ○ ユーザーが使うコンテキストが分かる 19 ・設定画面が多い ・/adminは社内のオペレーション、振込業務など ・購入者が使う /api, /stores/:store_name ・設定画面が多い (予約ページの設定画面) ・購入者が使う /api/v2, /api/reservation_flow

Slide 20

Slide 20 text

rails stats : 今を知る ● 設定より規約 ○ Railsデフォルトから外れた独自の設定は何か 20 Rails アップグレードガイド https://railsguides.jp/upgrading_ruby_on_rails.html

Slide 21

Slide 21 text

rails stats : 今を知る ● 設定より規約 ○ Railsデフォルトから外れた独自の設定は何か 21

Slide 22

Slide 22 text

rails stats : 今を知る ● 設定より規約 ○ Railsデフォルトから外れた独自の設定は何か 22 ちゃんとやるのは 色々大変そう 古いrailsアプリで対応されてないがちのbelongs_to_required_by_defaultはオンにしよう!

Slide 23

Slide 23 text

rails stats : 今を知る ● テーブル数 ○ アプリケーションの複雑さはデータの複雑さ ● 主要クラス ○ コアな事業ドメインは何か ● 主要エンドポイント ○ ユーザーが使うコンテキストが分かる ● 設定より規約 ○ Railsデフォルトから外れた独自の設定は何か 23 https://github.com/ykpythemind/rails_all_stats ➜

Slide 24

Slide 24 text

rails stats: 過去を知る

Slide 25

Slide 25 text

コードベースの過去から学べること

Slide 26

Slide 26 text

コードベースの過去から学べること ● ない🤯 ● 多くは、「過去にはそれが最適だったから」「知識と予算が無かったから」そ うなっているに過ぎない。 ● いつだって今が大事 ● 今のプロダクトとして価値を作れるよう模索するしかない ● では過去は無価値か・・・??? 26

Slide 27

Slide 27 text

エモ

Slide 28

Slide 28 text

コードの歴史を辿って”エモ”くなろう 28 ykpythemind/rails_all_stats ➜ $ ruby version_history.rb /path/to/rails_app => 日付 Railsバージョン コード行数 テストコード行数 「育ってきたな〜」 「このバージョンアップしんどかったな〜」 と振り返る

Slide 29

Slide 29 text

コードの歴史を辿って”エモ”くなろう 29 グラフにしちゃったりして

Slide 30

Slide 30 text

rails stats: 未来を知る

Slide 31

Slide 31 text

basecampのrails stats (2016) 31 https://x.com/dhh/status/761331241886978048

Slide 32

Slide 32 text

basecampのrails stats (2016) 32 これ以上のコード量は rails wayから外れていく 覚悟が必要 となると、だいたいみんな覚悟が必要ですよね?

Slide 33

Slide 33 text

Rails覚悟があった例

Slide 34

Slide 34 text

Shopifyのrails stats (2017) 34 http://web.archive.org/web/201701 26202449/https://twitter.com/tobi/ status/819246328211443713 7年前ですでに今のSTORESの規模

Slide 35

Slide 35 text

STORESの例 IPOを目指すRailsアプリがこれから何をするか??

Slide 36

Slide 36 text

STORESのRailsアプリ、これからどうしていくか 36 ● すでに10年選手のRailsが3つ ○ STORES ネットショップ/レジ, STORES 予約, STORES ブランドアプリ ● 1つの「STORES」へ ● 被っているドメイン … 注文履歴、顧客、分析機能、振込、審査 etc…

Slide 37

Slide 37 text

STORESのRailsアプリ、これからどうしていくか 37 未来と戦うためにrails newをする。赤ちゃんのRails。

Slide 38

Slide 38 text

未来と戦うためにrails newをする。赤ちゃんのRails 38 赤ちゃんのRails ● 👍 よくも悪くもコードベースのドメインが明確になる(例:顧客) ● 👍 テストが軽い ● 🙁 社内の認証・認可の定型的な処理を書くのだるい ● 🙁 デプロイ方法など運用を他アプリと統一したい

Slide 39

Slide 39 text

未来と戦うためにrails newをする。赤ちゃんのRails 39 赤ちゃんのRails ● 楽なメンテナンスのための投資 https://github.com/Shopify/bootboot を使って未リリース版のRailsでCIを動かす

Slide 40

Slide 40 text

未来と戦うためにrails newをする。赤ちゃんのRails 40 👶 育ってきていますか??

Slide 41

Slide 41 text

rails statsとともに歩んで行こう

Slide 42

Slide 42 text

まとめ ● 今を知る ○ 「コード行数」以外の定量的な情報を一覧できると良い。コードの歩き方が分かる。 ● 過去を知る ○ コードベースが歩んできた過程を知ることで”エモく”なれると良い ● 未来を知る ○ 自分たちがこのコードベースをどうしていけばいいのかのインサイトが得られると良い 42 rails “all” stats

Slide 43

Slide 43 text

STORES 株式会社 の紹介 43 ● お店の運営を支えるプロダクト群 (ECの会社 じゃないよ) ● アカウント統合・データ統合たくさん ● 2025年もより磨き込んだプロダクト開発を!

Slide 44

Slide 44 text

ありがとうございました!