はじめに
こんにちは。にしやまと申します。
受託開発の企業に勤めている2年目のまだまだ未熟なエンジニアです。
初めての投稿なのでお手柔らかに。
プロジェクトを進める時に必要なこと
みたいなものを私的なメモとしてまとめてみたので、軽い気持ちでQiitaにも共有してみようかなと思います。
社内Wikiにもほとんど同じものを共有しました。
社内独自の文化など、コンプラ的にダメそうなのはないと思うけど、もしあったら消すかもです。
もっとこうしたらいいんじゃない?みたいなのがあればコメントいただけると嬉しいです!
前提条件
- 中小規模の受託案件を想定
- 1次受けか2次受けくらい
- 社内で実装を行うことが多い
- オフショアなどに振ることもある
- CICDとか自動テストとかは導入できていません
- コードレビュー、できたらいいな
- ストア申請とかはできないお客様だからやってあげる想定(その分のお金ももらう)
- Web管理側、Webユーザー側、iOSアプリ、Androidアプリで作る場合を想定
本題
案件進行で必要な作業、だいたいこんな感じかな?↓↓↓
要件定義
- 顧客の要望の書かれた資料と提出した見積もりを読み込む
- 上記資料をもとに顧客から詳細(要望の意図、改善したい点など)をヒアリング(議事録必須)
- 顧客の要望を機能要件としてまとめて内容に合意を取る
システム設計(以下を作成する)
- 機能一覧
- アーキテクチャ構成図
- DB設計書(テーブル構成)
- データフロー図
- 画面設計(基本設計)
- Web管理画面、Webフロント、アプリ(それぞれ必要なもののみ)
- 画面ごとにその画面で利用する機能とその仕様を記載
- パワポ、AdobeXD、figmaなど
- API設計
- Web管理画面、Webフロント、アプリ(それぞれ必要なもののみ)
- Swaggerなど
課題・進捗管理
- 受注後まず最初にリリースまでのスケジュールを作成し顧客に提出
- スケジュールに無理があればこの時点で上司・顧客に交渉する(とても大事)
- 定期的に顧客に進捗報告を行う
- 構築フェーズ
- 顧客と相談して確認版完成予定日を決める
- 機能一覧・API設計など上記設計をもとに構築に必要な項目を一覧に書き出す
- 各課題に担当者と納期から逆算した期限を設定する(バッファを持たせる)
- 動作確認フェーズ
- 社内で動作確認を行う
- 仕様書(画面設計・API設計)をもとに動作の確認を行う
- 不具合を課題管理ツールに起票
- 各担当者は修正を行う
- 修正完了したら課題管理ツールにて報告し再度確認依頼
- 社内で動作確認を行う
- フィードバックフェーズ
- 社内動作確認が完了したら顧客に確認依頼をする
- 顧客との課題管理ツールを選定し(社内のものとは分ける)、そこにフィードバックを上げてもらう
- フィードバック内容を確認し、不具合・追加要望・不可能など分ける
- 不具合の場合
- スケジュール内で修正する(担当者に修正依頼)
- 不具合が重くスケジュール内で終わらない場合まずは上司に現状報告して対応方法を検討
- 検討の結果どうにもならなそうであれば顧客に報告してリスケ作成と調整依頼
- 追加要望の場合
- 不明な部分があれば顧客に詳細の確認
- 見積もり作成
- 追加分のスケジュール作成と調整依頼
- 不可能の場合
- 不可能な原因を顧客に説明(他の仕様とぶつかる、技術的・法的に難しいなど)
その他リリースまでに必要な雑務
アプリ
- デザインを外注に依頼
- デザインのテーマカラーなどを事前に顧客に確認しておく
- Apple, GoogleのDeveloperアカウント作成依頼
- 会社のアカウントを招待してもらう
- Firebaseアカウントとプロジェクト作成依頼
- 以下の作業はDevelop, Staging, Productionそれぞれで必要
- 会社のアカウントを招待してもらう(顧客アカウントの場合)
- Push通知使う場合
- Firebase Admin SDKで使う秘密鍵の取得(Web実装者に渡す)
- APNs認証キーの登録
- App Distributionでテスト配信する場合
- 顧客にテスト配信するユーザーのメールアドレスを聞く(iOSの場合は後述のUDID登録も必要)
- 他のFirebaseサービスを利用する場合は適宜
- ストア申請文言必要事項一覧のエクセルに記入してもらう
- 補足: 弊社は社内に
ストア申請文言必要事項一覧のエクセル
が存在する
- 補足: 弊社は社内に
- ストア配信用のスクショ作成
- プライバシーポリシーなどのWebページを用意してもらう
- iOS証明書関連
- テストに使う端末をdevicesに登録
- 顧客の端末の場合UDIDを教えてもらう(PCに繋げてiTunesで確認できる)
- Adhoc配信用のprovisioning profileを作成
- 作成時に顧客端末のdeviceも登録する
- ストア配信用のprovisioning profileを作成
- テストに使う端末をdevicesに登録
- Android
- apk(もしくはApp Bundle)作成時のkey storeとkey aliasを管理しておく
- なくすと同じアプリとしてビルドできないよ
- apk(もしくはApp Bundle)作成時のkey storeとkey aliasを管理しておく
- ストア申請
Web
- デザインを外注に依頼(Webフロント)
- デザインのテーマカラーなどを事前に顧客に確認しておく
- サーバーの準備
- 利用するサーバーを決める
- サーバー契約
- アーキテクチャ構成に沿ってサーバー構築
- 社内確認用サーバー上の開発環境
- 本番サーバーの本番環境
- 本番サーバー上にVirtual Hosts切ってステージング環境
- ステージング環境のサーバーは顧客と相談して場所を決める(本番サーバー上か専用サーバーを用意するかなど)
- ドメイン取得
- SSL証明書取得(自動更新)
- サーバーへのデプロイ