Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「どこから読む?」コードとカルチャーに最速で馴染むための実践ガイド

 「どこから読む?」コードとカルチャーに最速で馴染むための実践ガイド

2025/09/12 12:20 ~ 13:00にDroidkaigi 2025の公募セッションで発表した登壇資料です。

https://2025.droidkaigi.jp/timetable/943982/
株式会社ZOZO
計測プラットフォーム開発本部
計測アプリ部 Androidブロック
加藤りさ子 (richako)

#DroidKaigi

Avatar for ZOZO Developers

ZOZO Developers PRO

September 12, 2025
Tweet

More Decks by ZOZO Developers

Other Decks in Technology

Transcript

  1. © ZOZO, Inc. 株式会社ZOZO 計測プラットフォーム開発本部 計測アプリ部 Androidブロック 加藤りさ子 (richako) 2025年新卒入社。

    アメリカなどで展開する計測フィットネスアプリ 『ZOZOFIT』のAndroidアプリ開発を担当。 / : @risako070310 2
  2. © ZOZO, Inc. https://zozofit.com 3 • 自宅で手軽に高精度な3Dボディスキャンができる体型管理サービス • ZOZOSUITと専用スマートフォンアプリを活用し、自宅で手軽に高 精度な全身3Dスキャンが可能。

    • 現在はZOZOSUITなしのアプリのみ計測も可能 • 30万ダウンロードを突破、累計200万回以上のスキャン実績 • 計測データに基づき、体の変化を3Dモデルと数値で可視化。身体の 変化を可視化し、モチベーション維持 • 栄養素を記録・分析するAI食事記録機能など計測以外の機能でも総 合的な健康管理をサポート • アメリカなどで展開
  3. © ZOZO, Inc. 7 目次 1. 巨大・レガシーコードベースの読み解き方 2. プロジェクト固有の技術/アーキテクチャの理解 3.

    開発に必要な周辺知識のキャッチアップ 4. 「最低限これだけは必要」なドキュメントとは 5. ドキュメントを陳腐化させない運用方法 6. まとめ
  4. © ZOZO, Inc. 8 目次 1. 巨大・レガシーコードベースの読み解き方 2. プロジェクト固有の技術/アーキテクチャの理解 3.

    開発に必要な周辺知識のキャッチアップ 4. 「最低限これだけは必要」なドキュメントとは 5. ドキュメントを陳腐化させない運用方法 6. まとめ
  5. © ZOZO, Inc. 18 データフローからコードを読む 1.巨大・レガシーコードベースの読み解き方 STEP1: アプリのコアなデータクラスを見つける • チームメンバーにプロジェクトの重要なデータモデルについて聞いてみる

    • APIドキュメントを読む ◦ データの構造はわかるが、クライアントサイドでデータモデルとしてどのように扱っている かが全てわかる地図ではない
  6. © ZOZO, Inc. 19 データフローからコードを読む 1.巨大・レガシーコードベースの読み解き方 STEP2: Find Usagesで使われ方を追跡 •

    データがどこで生成され、どこで使われているかを把握する • アプリ上でのデータの流れが掴める
  7. © ZOZO, Inc. 24 UIからコードを読む 1.巨大・レガシーコードベースの読み解き方 STEP2: Find in Filesで実装箇所を検索

    • Composableの定義箇所を知り、そこからViewModelやActivity/Fragment 構造を追う
  8. © ZOZO, Inc. 29 番外編: AI活用 1.巨大・レガシーコードベースの読み解き方 • AIにプロジェクトの概要を要約してもらう ◦

    GitHub Copilot ChatやClaude Codeなど • プロジェクトを読むための最初の一歩として非常に有効!
  9. © ZOZO, Inc. 30 チームの課題 1.巨大・レガシーコードベースの読み解き方 • 新メンバーがプロジェクトの読み解きでつまずいてしまうことで、メンター などのOJTコストが増えてしまう •

    プロジェクトの設計思想やアーキテクチャ、歴史的経緯を理解しないまま実 装されたコードは技術負債となりがち ◦ 積み重なることでメンテナンス性の低いコードベースへと劣化してしまう ◦ レビューコストも爆増する
  10. © ZOZO, Inc. 33 POINT1: README.mdの充実 1.巨大・レガシーコードベースの読み解き方 [READMEのテンプレート例] • プロジェクト概要

    • 動作環境 / ビルド方法 • 開発に関するドキュメント ◦ アーキテクチャガイドライン ◦ コーディングガイドライン ◦ デバッグ環境特有のルール ◦ APIドキュメント
  11. © ZOZO, Inc. 36 目次 1. 巨大・レガシーコードベースの読み解き方 2. プロジェクト固有の技術/アーキテクチャの理解 3.

    開発に必要な周辺知識のキャッチアップ 4. 「最低限これだけは必要」なドキュメントとは 5. ドキュメントを陳腐化させない運用方法 6. まとめ
  12. © ZOZO, Inc. 42 プロジェクトの仕組みを解き明かす 2.プロジェクト固有の技術/アーキテクチャの理解 ②変更差分の小さなPull Requestを読む • 具体的に何を見るか

    ◦ モジュール構成 ◦ クラスや関数の命名規則 ◦ テストコードの書き方 ◦ レビュアーのコメントの視点
  13. © ZOZO, Inc. 43 チームの課題 • 暗黙知があり、チームメンバーの知見が属人化 • 技術選定の背景や設計の意図が言語化されていない ◦

    結果的にレビューでの手戻りやレビューコストの増加が発生する 2.プロジェクト固有の技術/アーキテクチャの理解
  14. © ZOZO, Inc. 48 ①意思決定の「なぜ」を記録する Architecture Decision Records (ADR) とは?

    「なぜこの技術を選んだのか」「なぜこの設計にしたのか」という、アーキテク チャに関する意思決定の経緯を記録するための軽量なドキュメント手法 2.プロジェクト固有の技術/アーキテクチャの理解
  15. © ZOZO, Inc. 49 ①意思決定の「なぜ」を記録する [ADRのテンプレート例] • タイトル:決定したこと • ステータス:現在の実装状況(導入済/決定済/検討中など)

    • 背景:決定に至った背景や以前の課題 • 決定事項:具体的な決定事項 • 結果:この決定後にもたらされる良い結果と悪い結果 2.プロジェクト固有の技術/アーキテクチャの理解
  16. © ZOZO, Inc. 50 ①意思決定の「なぜ」を記録する ADRがもたらす価値 • 議論の透明化 ◦ なぜこの選択肢を選んだかが明確になり、同じ議論の繰り返しを防ぐ

    • プロジェクトの将来の道筋 ◦ 現状の実装がなぜこうなっているかの答えになる • 新メンバーの理解促進 ◦ 技術選定の背景を知ることで、アーキテクチャの深い理解に繋がる 2.プロジェクト固有の技術/アーキテクチャの理解
  17. © ZOZO, Inc. 52 ②設計相談やペアプロなどで同期的に共有する 設計相談の場を作る • 複雑な機能を作る前やリファクタリングの方針を決める前にチームで議論を する場を設ける ◦

    手戻りを防ぐ:実装してからレビューで議論し方針が変わってしまうことを防ぐ ◦ 思考プロセスを学ぶ:新メンバーにとっては、チームのエンジニアがどのように課題を分析 し、設計に落とし込んでいくのかを理解することができる 2.プロジェクト固有の技術/アーキテクチャの理解
  18. © ZOZO, Inc. 53 ②設計相談やペアプロなどで同期的に共有する ドキュメント化できない知識を伝える「ペアプロ」 • メンターと新メンバーが一緒にコーディングすることで、ドキュメントには 書ききれない暗黙知を効率的に伝達できる ◦

    IDEのTipsやデバッグのコツ ◦ 「ここはこういう理由で、このクラスに書こう」といったリアルタイムの設計判断 ◦ コードレビューでは伝わらない細かなニュアンス 2.プロジェクト固有の技術/アーキテクチャの理解
  19. © ZOZO, Inc. 56 ③日々のレビューで思想を伝える レビューコメントのMore/Good 2.プロジェクト固有の技術/アーキテクチャの理解 More Good 「ここは〇〇クラスを使ってください。」

    レビューコメントに対して、理由や背景が分か らず、今後の応用も効かない 「ここは〇〇クラスを使うと、ビジネスロジック を再利用できます。関連するドキュメントはこち らです [リンク]。この設計思想については、改 めて同期的に話しましょう!」 「なぜ」を伝え、議論を促し、次のアクションに 繋げている
  20. © ZOZO, Inc. 58 コードレビューでの学び 2.プロジェクト固有の技術/アーキテクチャの理解 • 大規模な画面に新機能の実装を足した • 参考にするモジュールを間違えてしまったことで機能単位のファイル切り分

    けにしたが、本来は統一したモジュール配下に置くべきだった →コードレビューでプロジェクト全体の実装方針と現時点で改善の余地があると 思っている点を共有してもらった
  21. © ZOZO, Inc. 61 目次 1. 巨大・レガシーコードベースの読み解き方 2. プロジェクト固有の技術/アーキテクチャの理解 3.

    開発に必要な周辺知識のキャッチアップ 4. 「最低限これだけは必要」なドキュメントとは 5. ドキュメントを陳腐化させない運用方法 6. まとめ
  22. © ZOZO, Inc. 65 エラーログを恐れない 3. 開発に必要な周辺知識のキャッチアップ • エラーメッセージを読んでみる ◦

    解決へのヒントが必ず書いてある ◦ まずエラーログを読む->試行錯誤->分からなかったらチームに聞くの流れが癖付くとスピー ドが上がる ▪ 最初は特に試行錯誤の時間をなるべく短くして良い ▪ プロジェクト特有のルールの可能性があるため聞くことで無駄な時間を減らせる
  23. © ZOZO, Inc. 66 テストコードは似ているテストから紐解く 3. 開発に必要な周辺知識のキャッチアップ • ゴールはプロジェクトの「型」を学ぶこと ◦

    最初から完璧なテストを実装する必要はない ① 探す: 最高の「お手本」を探す まずは、修正した機能と似ている、シンプルで分かりやすいテストコードを1つ見つける。 ② 真似る (Imitate): 構造をそっくり真似てみる 見つけたテストコードの構造(@Beforeでの準備、@Testでの実行、assertでの検証)を真似て、自分のテストクラスを作ります。 ③ 動かす (Run): まずは動くものを作る 細かい部分を自分の実装に合わせて修正し、まずはテストが成功することを目指します。
  24. © ZOZO, Inc. 68 チームがやるべきこと 3. 開発に必要な周辺知識のキャッチアップ • つまずきやすいポイントを予め言語化しておく ◦

    環境構築やビルドエラーは新メンバーほぼ100%つまずくポイント ◦ 口頭やDMでのサポートはその場限りで知見が蓄積されない • Tips集などとしてオンボーディング資料に組み込む
  25. © ZOZO, Inc. 70 例:環境構築Tips集 3. 開発に必要な周辺知識のキャッチアップ • 推奨するAndroid Studioのバージョン

    • JDKのインストールと設定方法 • 環境変数 • 頻出エラーの対処法 オンボーディングに関するQ&Aやコミュニケーションの場所を チームで予め作成しておくのも効果的 (例) Slackのチャンネル #android-onboarding
  26. © ZOZO, Inc. 71 あって助かったドキュメント • 部署の特徴として複数プロダクトを持っている ◦ →プロダクトごとに環境構築が必要 •

    例に漏れずビルドエラーを複数引き起こした 3. 開発に必要な周辺知識のキャッチアップ
  27. © ZOZO, Inc. 72 あって助かったドキュメント • 部署の特徴として複数プロダクトを持っている ◦ →プロダクトごとに環境構築が必要 •

    例に漏れずビルドエラーを複数引き起こした 3. 開発に必要な周辺知識のキャッチアップ Tips集のおかげで、長い時間エラーに悩まされず 解決策をすぐに知ることができた
  28. © ZOZO, Inc. 74 目次 1. 巨大・レガシーコードベースの読み解き方 2. プロジェクト固有の技術/アーキテクチャの理解 3.

    開発に必要な周辺知識のキャッチアップ 4. 「最低限これだけは必要」なドキュメントとは 5. ドキュメントを陳腐化させない運用方法 6. まとめ
  29. © ZOZO, Inc. 81 チームの課題 コードは読めても、人は読めない • 技術的なキャッチアップが進んでも、チームに馴染めなければ新メンバーの パフォーマンスは上がらない •

    暗黙のルールや、誰が何に詳しいのかというチームメンバーに関する情報不 足がコミュニケーションの壁となってしまう 4.「最低限これだけは必要」なドキュメントとは
  30. © ZOZO, Inc. 83 技術 + 人 + 文化を網羅するドキュメントとは 4.「最低限これだけは必要」なドキュメントとは

    • オンボーディングタスクリスト ◦ これさえ辿って進めれば環境構築ができる全知全能リストに! • アーキテクチャガイドラインなどの開発に寄ったドキュメント • コミュニケーションガイド ◦ 使われているSlackのチャンネルなど、コミュニケーションの場所がわかるもの • チーム/自己紹介資料
  31. © ZOZO, Inc. 84 (例)コミュニケーションガイド 4.「最低限これだけは必要」なドキュメントとは • #android-dev: 開発に関する質問全般 •

    #android-info: Android関連のニュース共有 • #android-雑談: ちょっとした雑談や情報共有 • 定例MTGのアジェンダと議事録の場所
  32. © ZOZO, Inc. 85 (例)チーム/自己紹介資料 4.「最低限これだけは必要」なドキュメントとは 「誰が」「どこで」「何をしているか」を可視化する • 個人紹介: 顔写真、役割、得意なこと、趣味、16Personalitiesなど

    • チーム紹介: プロジェクトで関わる他チーム(サーバサイド、デザイナー、 QAなど)の紹介 ◦ 部署をまたいだ連携がスムーズになる
  33. © ZOZO, Inc. 87 目次 1. 巨大・レガシーコードベースの読み解き方 2. プロジェクト固有の技術/アーキテクチャの理解 3.

    開発に必要な周辺知識のキャッチアップ 4. 「最低限これだけは必要」なドキュメントとは 5. ドキュメントを陳腐化させない運用方法 6. まとめ
  34. © ZOZO, Inc. 93 新メンバー自身がメンテナーになる文化 • ドキュメントを一番必要として一番真剣に読むユーザー • 古い情報や分かりにくい記述に最も気づきやすい •

    更新作業を通じて、プロジェクトへの理解がさらに深まる →オンボーディングの最終タスクとしてオンボーディングドキュメントの更新を 組み込む 5. ドキュメントを陳腐化させない運用方法
  35. © ZOZO, Inc. 94 定期的なドキュメント更新の仕組み • 新メンバーが久しく入らないチームは特に放置されてしまう • ドキュメント作成文化はオンボーディングだけでなくチームの知識の属人化 を防ぐために重要

    →ドキュメント更新&レビューの時間を取ることで、今まで属人化していた知見 をアウトプットとして残す 5. ドキュメントを陳腐化させない運用方法
  36. © ZOZO, Inc. 96 目次 1. 巨大・レガシーコードベースの読み解き方 2. プロジェクト固有の技術/アーキテクチャの理解 3.

    開発に必要な周辺知識のキャッチアップ 4. 「最低限これだけは必要」なドキュメントとは 5. ドキュメントを陳腐化させない運用方法 6. まとめ
  37. © ZOZO, Inc. 97 セッションのまとめ 1. 巨大・レガシーコードベースの読み解き方 ◦ 闇雲に読まず、地図を頼りに型を持って読む 2.

    プロジェクト固有の技術/アーキテクチャの理解 ◦ 暗黙知をなくし、設計の「なぜ」を共有する 3. 開発に必要な周辺知識のキャッチアップ ◦ 「転ばぬ先の杖」となるドキュメントを用意、それを活用してキャッチアップ 4. 「最低限これだけは必要」なドキュメントとは ◦ 技術だけでなく、チームの人と文化を伝える・知る 5. ドキュメントを陳腐化させない運用方法 ◦ 個人の頑張りだけに頼らず、仕組みで更新し文化にする