74.2K Views
August 02, 24
スライド概要
2024-08-01に「10年超えRails開発の振り返りと未来 - 持続可能な開発の具体策」で発表させて頂いた資料です。
https://pieceofcake.connpass.com/event/324722/
ソフトウェアエンジニアです。
システムを脳に収める技術 (公開版) 2024-08-01 10年超えRails開発の振り返りと未来 - 持続可能な開発の具体策 @usadamasa
自己紹介 ● X(Twitter): @usadamasa (GitHubも同じ) ● 株式会社マネーフォワード SMB開発本部所属 シニアソフトウェアエンジニア ● バックエンドを中心にアーキテクチャとか DevOpsとか ● Railsなんにもわからん 10年もののRailsアプリの持続可能性を求めて -なぜ初手でCoffeeScript廃止を選んだのか -
免責事項 - すべての発言は、発表者本人の意見であり、 弊社の意見を代表するものではありません - 本発表は、あまりRails関係ありません
あなたのシステム、どうなってますか?
どう、と言われても … パッと思い浮かぶイメージはありますか?
どう、と言われても … そのイメージは共有されていますか?
どう、と言われても … 新しく入ってきた人に説明できますか?
どう、と言われても … できないと、つらいよね
背景・前提の共有
コンテキストの共有 ● 株式会社マネーフォワード ○ お金の見える化サービス『マネーフォワード ME』 https://moneyforward.com/ ○ バックオフィス SaaS『マネーフォワード クラウド』 https://biz.moneyforward.com/ ○ 他にもいくつか ○ 設立は2012年5月 ● ● ● 『マネーフォワード クラウド会計 』(以後クラウド会計 )を開発する部署に所属 クラウド会計の本体である Railsアプリと、複数のマイクロサービス で構成 クラウド会計以外にも多数のプロダクトを展開し、内部で連携し合っている
コンテキストの共有 ● 2022年の始めに入社 ● 主にマイクロサービス群の開発運用を担当 ● 2023年半ば、クラウド会計を含めた 全体の開発生産性の向上を目的とする部が設立
アプリの規模感
● 総Class数: 2241 ● Controllers: 786 ● Models: 1042 ● その他たくさん
でかい
(モデル数が)“800 は割としんどい数字なのだろう。” https://onk.hatenablog.jp/entry/2024/05/31/231136
割としんどい
どこから手を つければいいのか わからん
考古学 ここまで2分
過去のまとめ資料を拾う ● ゼロから調査するのは現実的ではないと判断 ● 有識者にヒアリングしつつ、過去のまとめ資料や検討資料を漁り始める ● しかし…
細かな図や資料はある
…細かすぎる!
当時から見た将来の構想を語るような資料はある
…現状がわからない!
『マネーフォワード クラウド』シリーズの図はある
…プロダクト寄り過ぎる!
…ちょうどいい図がない!
脳に収まらない資料 ● システムが人間の認知を超えると、 とりあえず分かる範囲でまとめがち ● 分かる範囲で分かっていることを書いてしまうので、 極端に詳細過ぎる資料になってしまう ● 後から読む人にとっては、読解が難しくなる 読解できない資料は、引き継がれない ● => 知識が持続しない (※個人の見解です)
抽象と具体
いい感じに抽象的な図を書く - 読解に時間をかけなくてよい程度に抽象的な図を書く - 対象読者: - 時間のない上司 - 昨日入社したメンバー - 新たに課題発見をしたいと考えている人 - 「このシステムはこういうものである」を端的に示す
もう少し踏み込んだ図を書く - 多くの場合、Rails単体でプロダクトは成り立っていない - プロダクトを構成するサービスを図にする
コンテキスト(文章)と共に、図をまとめる
共有する
(ようやく)もう少し踏み込んだ図を書く - シンプルなMVCではないことも多い - (decoratorとかpresenterとか…) - フロントエンドの地層歴史もある - そういうのは書かないと伝わらない
(ようやく)もう少し踏み込んだ図を書く
わかったようなわからないような…
The C4 Model
C4 Models The C4 model was created as a way to help software development teams describe and communicate software architecture, both during up-front design sessions and when retrospectively documenting an existing codebase. It's a way to create maps of your code, at various levels of detail, in the same way you would use something like Google Maps to zoom in and out of an area you are interested in. C4モデルは、ソフトウェア開発チームがソフトウェア・アーキテクチャを記述・伝達す るための方法として作成された。これは、Google Mapsのようなものを使って興味のあ るエリアを拡大・縮小するのと同じよう に、様々な詳細レベルでコードのマップを作成 する方法だ。(DeepL訳) https://c4model.com/
Level 1: A System Context diagram
Level 2: A Container diagram
Level 3: A Component diagram
まとめ
まとめ - 適切な抽象度の図を(複数)書こう - 足りない抽象レイヤの図を補おう - 図と図と関連付けて伝えよう - システムのイメージを組織で共有しよう
システムを脳に収める収めてもらう技術