every Tech Blog

株式会社エブリーのTech Blogです。

新たなチームメンバへの贈り物

こんにちは、トモニテ開発部の Android エンジニアです。
この記事は every Tech Blog Advent Calendar 2023 の 5 日目です。

最近、 Android エンジニアに新たなメンバが増えました。
こんなこともあろうかと作っておいた贈り物としてドキュメントがありますので、どんなものか紹介します。

どんなドキュメントなのか

GitHub にあるプロダクトのリポジトリの Wiki に、

  • アプリの構成
  • 開発の前に
  • 開発時の Q&A
  • File Templates

をまとめたものです。

アプリがどんな作りなのか?
開発するにあたり守るべきことはあるか?
xxx をやりたいときはどうすればよいか?
を知り、今後の開発作業での詰まりポイントを減らしていきたい、という思いから作成しました。

ドキュメントの内容 1: アプリの構成

自分自身、まずはアプリの歩き方を知りたくなるので、アプリの地図たる構成をまとめました。
アプリはマルチモジュールで作成していたため、どこにどんなモジュールがあるのかを列挙しています。

一部抜粋するとこんな感じです。

presentation: プレゼンテーション層
┣━ common: プレゼンテーション層で使う便利な処理置き場
┣━ feature: ユーザ向けの機能置き場
┃ ┣━ home: ホーム
┃ ┣━ article: 記事詳細

ここでは他にも、モジュール間の依存関係や各モジュールの役割も記載し、全体像を把握してもらえるようにしています。

ドキュメントの内容 2: 開発の前に

開発作業を進めるにあたり基本的な情報となるものをまとめています。
内容は、

  • ブランチの命名ルール
  • アプリ起動のルート(通常のアプリ起動、Push 通知による Notification 経由、Scheme 起動)ごとのエントリポイントの明記
  • ライブラリは Version catalog でまとめていること
  • 後述の File Templates を使うと楽になる実装があること

を記載しています。
これからの開発で意識してもらいたいルールや、覚えておいてもらえると役にたつものたちです。

ドキュメントの内容 3: 開発時の Q&A

現状の設計に対して「こうするとやりたいことが実現できます」といった情報をまとめています。
一例としては、

  • 新機能を作りたい
    • 各レイヤーで実装するガワを作成したり DI モジュールへの登録といった流れを記載
  • 他画面へ遷移したい
    • feature モジュール間で依存を持たないようにしているため、遷移を行うための router について記載

などがあります。
機能開発やメンテナンスを容易に行えるようにという目的での記載です。

ドキュメントの内容 4: File Templates

AndroidStudio の Settings にある File and Code Templetes で使っているテンプレートを記載しています。
全社的な AndroidStudio の Settings をエクスポートしたファイルは別途管理されているのですが、こちらはプロダクト固有なので Wiki 中に記載しました。

テンプレートの内容としては、プレゼンテーション層、ドメイン層、データ層で主に実装することになるインターフェースやクラスのガワを出力するというものです。
実装してほしい箇所を todo として出力しているので、そこを埋めるだけで他と同様の作りにできます。
これにより、実装箇所のガイドに沿って作業を進めるだけで自然と同じようなメンテナンスをするだけで OK となる作りを広げることができます。

運用してみてどうだったか

ドキュメントを読んだ新メンバに感想を聞いたところ、こちらの期待した通りの役立ち方をしていたようでした。
わかってる人が書いた資料なのでメモを取るよりも正確であり、かつそれを自身の確認するペースで読み込める点が良かったとのことです。

最後に

ドキュメントの内容を細かく記載していくとその時の情報としては正しく、あると嬉しいものなのですが、内容のメンテナンスを怠ると嘘つきの書になってしまいます。
定期的に更新タイミングを設けていき、新たなメンバが早めに真価を発揮できる環境を維持していきたいです。