Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

【開発を止めるな】機能追加と並行して進めるアーキテクチャ改善/Keep Shipping: A...

【開発を止めるな】機能追加と並行して進めるアーキテクチャ改善/Keep Shipping: Architecture Improvements Without Pausing Dev

登壇者名:水谷 浩明
登壇したイベントタイトル:【6社共催】スケールするサービスにおけるアーキテクチャの工夫・苦労を語る会
登壇したイベントのURL:https://timeedev.connpass.com/event/376592/

More Decks by 株式会社ビットキー / Bitkey Inc.

Other Decks in Technology

Transcript

  1. 1 【 開 発 を 止 め る な 】

    機 能 追 加 と 並 行 し て 進 め る ア ー キ テ ク チ ャ 改 善 株式会社ビットキー 水谷浩明 2025/12/17
  2. 2 © Bitkey Inc. Mizutani Hiroaki 水谷 浩明 2012.04 2015.01

    2025.03 株式会社メイテツコムに入社。 鉄道系の SIer 企業で、主にネットワーク構築業務を 担当。 bravesoft 株式会社に入社。 モバイルエンジニア、情シス、サーバサイドエンジニア と経験を重ねる。 toC 自社事業の企画運営にも従事。 ビットキーへ参画 自社サービス homehub のモバイルアプリ開発を行う チームに配属。 2025.05〜 バージョンアップ開発を行いつつ、homehub アプリの 大規模なリファクタリング作業を主担当として推進。
  3. 3 3 © Bitkey Inc. 不動産管理会社 マンションオーナー 管理組合 デベロッパー 居住者

    暮らしサービス デリバリー会社 スマートロックなどを通じて 暮らしをアップデート するサービスです
  4. 5 5 © Bitkey Inc. Outline - プロジェクト開始時の状況 - 戦術1

    〜段階的リリース〜 - 戦術2 〜Notion × AI〜 - 現在地とまとめ
  5. 6 6 © Bitkey Inc. Outline - プロジェクト開始時の状況 - 戦術1

    〜段階的リリース〜 - 戦術2 〜Notion × AI〜 - 現在地とまとめ
  6. 7 © Bitkey Inc. homehub アプリのローンチから PoC を 繰り返すなどして5年経ち 技術的負債

    が 少しづつ蓄積 - テストコードの欠如 - コードの複雑化
  7. 9 © Bitkey Inc. リファクタリングを決断し、 クリーンアーキテクチャ へ - 関心事の分離 -

    テスタビリティの向上 Frameworks & Drivers Interface Adapters Application Business Rules Enterprise Business Rules
  8. 10 © Bitkey Inc. - プレゼンテーション層( Presentation ) - ユーザーインターフェースとそのロジックを提供

    - ユーザーとの対話を担当し、下位層とのデータのやり取りを行う - コンポジションルート層( CompositionRoot ) - アプリケーション全体の依存関係を管理 - 各レイヤーのコンポーネントを適切に接続する役割を担う - アプリケーション層( Application ) - アプリケーションが提供する特定機能(ユースケース)を実装 - 複数のビジネスロジックの連携や実行順序を制御 - ドメイン層( Domain ) - アプリケーションの中核となるビジネスルールを実装 - ドメインモデル(エンティティや値オブジェクト)、ビジネスルール、 およびデータ永続化のためのインターフェース(リポジトリ)を定 義 - インフラ層( Infrastructure ) - 外部システムとの通信やデータの永続化を担当 - ドメイン層で定義されたインターフェースの具体的な実装を提供 アーキテクチャ
  9. 13 13 © Bitkey Inc. Outline - プロジェクト開始時の状況 - 戦術1

    〜段階的リリース〜 - 戦術2 〜Notion × AI〜 - 現在地とまとめ どのように 進めるか
  10. 14 14 © Bitkey Inc. 段階的リリース 新アーキテクチャ レガシーコード - バージョンアップを止められない以上、一度にすべてをリファクタリング

    するのは現実的ではない - パッケージを分けて 段階的にコードを置き換えていく 方法を検討 - まずはミニマムスタートで影響度の少ないアプリ内のお知らせ機能から実 施し、感覚を掴んだ
  11. 18 18 © Bitkey Inc. コアドメイン展開時の問題 - homehub のコアドメインは 「デバイス管理」

    - 主要機能ほぼ全てに関わってくる ので、段階的リリースと言い つつも連鎖的に 大半のコードを修正 する必要がでてきてしまう - とはいえコアドメインのリファクタリングを避けて進むことはできない
  12. 22 22 © Bitkey Inc. Outline - プロジェクト開始時の状況 - 戦術1

    〜段階的リリース〜 - 戦術2 〜Notion × AI〜 - 現在地とまとめ どうやって 進めるか
  13. 24 24 © Bitkey Inc. 実施に向けて - コアドメインに集中すると言っても範囲は大きい - AI

    (Cursor) を使って実装を進めようとしたが、複雑なリファクタリング になってくると、どうしても 精度がブレる 実装を始める前に AI の作業方針を 固めておく ことはできないか…?
  14. 25 25 © Bitkey Inc. Notion × AI ワークフロー 設計・指示

    (人) Notion にタスク単位で「やりたいこ と」「実装時の指示」を 自然言語で記述。 要件定義 (AI) Cursor から Notion MCP を 使ってドキュメントを読み込み、疑 問点を人に質問する。 実装 (AI) AI が要件とコードベースを 理解し、実装。 理解するまで繰り返す
  15. 26 26 © Bitkey Inc. AI への指示 Notion のタスクテンプレート •

    [人]目的 ◦ 人が「タスクの意図」や 「やりたいこと」を書く • [人]指示 ◦ 人が「実装する際の方針」や 「注意事項」を書く • [AI]確認事項 ◦ AI が上記で記入された内容 とコードベースを照らし合わせて、 疑問点を書く • [AI]方針 ◦ AI にとって疑問がなくなったら、 実装方針を書く ※ 当時はまだ存在しませんでしたが、今であれば [AI] の部分は Cursor の Plan モードなどでも良さそうです このフロー用の Cursor ルールも作成。 アドベントカレンダーの記事 に全文載せています。
  16. 27 27 © Bitkey Inc. 結果 - 作業が 定型化 し、コードの

    品質が向上 - そのまま commit できるレベルになった - AI に実装を任せてる間に、 Notion に次のタスクの指示を書いて おけるので 実施効率も向上
  17. 28 28 © Bitkey Inc. Outline - プロジェクト開始時の状況 - 戦術1

    〜段階的リリース〜 - 戦術2 〜Notion × AI〜 - 現在地とまとめ