開発チームがプロダクトコードを書き始めるまでに準備すること
頭の中を整理するため、いわゆるZero Feature Releaseに必要なことをまとめてみました。開発チームがプロダクトコードを書き始めるまでに作っておくとよいものです。
- ソースコードリポジトリ(例:GitHub)
- エディタ設定(例:editorconfig)
- ビルドツール(例:Gradle Wrapper)
- ビルドスクリプト(例:build.gradle)
- フレームワーク(例:Spring Boot)
- テスティングフレームワーク(例:Spock)
- 静的解析ツール(例:Sonar)
- ドキュメンテーションツール(例:Asciidoctor)
- DBマイグレーションツール(例:Flyway)
- CIスクリプト(例:Jenkinsfile)
- CIとソースコードリポジトリの連携(例:Jenkins Webhook)
- CIとチャットの連携(例:Slack)
- 成果物の公開場所(例:GitHub Releases)
- ライブラリの公開場所(例:Bintray Maven Repository)
- ドキュメントの公開場所(例:GitHub Pages)
- 実行環境(例:Heroku)
- プロビジョニングスクリプト(例:Docker Compose)
なお、プロジェクト管理や本番環境の運用に必要なものは書いていません。
こうやって書き出してみると少ない気がしますが、一つずつ積み上げていく必要があるので意外と時間がかかります。プロジェクトの初期にこのような仕組みを整備する時間を確保するとよいでしょう。
ちなみに、このような仕組みがないままプロダクトコードを書き始めると、本当に動くか分からないコードが量産されたり、特定の環境でしか動かないコードが出現したり、ソースコードリポジトリに存在しないけど実行環境にはリリースされているファイルが出現されたりします。
そんな辛い状況は、個人の努力で何とかする(筋肉運用)のではなく、チーム作業の進め方を変えて改善していきましょう。チームの裁量でワークフローを改善していける組織構造がよいですね。