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
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
ありがとうございました!