はじめに
私は現在アプレンティスシップに参加中です。
その中で実際にチーム開発をする機会があったので、感じたことや学んだことをまとめていこうと思います。
開発の流れ
今回のテーマは「私たちに役立つものを作成せよ」でした。
開発の流れとしては以下の通りに実行しました。
1.アイデア決め
2. 要件定義
3.設計、タスク出し
5.実装
では、それぞれ順を追って感じたことや学んだことをまとめていこうと思います。
1.アイデア決め
最初はアイデア決めです。
アイデア決めの方針としては
1.各々が抱えている課題を集める
2.アイデアを絞る(メンバー全員が抱えている問題か、既存のサービスで解決できない問題か、など)
3.対象ユーザー・課題・プロダクトが一致しているかを確認
といった順でアイデアを決めていきました。
この結果、
課題:
私たちは毎日、学習進捗をdiscordに書き残しているが、サービスの構造上、自分が書いた内容を見直すことが難しく、日報を書いている意味があまりないのでは。
解決策:
日々書いている日報を簡単に振り返ることができる、日報管理アプリを作る。
このようにして、アイデアを決めることができました。
2.要件定義
次に要件定義です。
要件定義の目的としては、メンバーのプロダクトイメージを明確にすることを目標にしました。
共通認識を合わせないと、無駄な工数が増えたり、期日直前に修正が必要だったりと大変なことになるのでここはしっかり決めようと心掛けました。
肝心の機能の面は
一覧画面
・カレンダー形式
・週、月の合計時間を計算して一目で分かるように表示
・その月の目標を入力できる
・カレンダーの日付をクリックすると、詳細をモーダルウィンドウで表示
・自己評価に応じて、カレンダー枠内の色分け
・登録画面に遷移
登録画面
・日報に必要な項目のテンプレート(本日の学習時間、学習内容、明日の目標、自己評価、など)
・登録後一覧画面に遷移
これらを実装することを決定しました。
3.設計、タスク出し
次に設計タスク出しです。
設計に関しては
・業務フロー
・画面遷移図
・ワイヤーフレーム
・テーブル定義書
・技術アーキテクチャ
を行いました。
設計の際に注意した点
要件定義と同じく、あとから作り直しが発生しないように、全体像を整理しておくことを目標にしました。
なので、自分はワイヤーフレーム作成を担当したのですが、コンテンツ、機能、動作が目的からズレていないか常に意識して作成しました。
タスク出しに関しては
・必要なタスクを洗い出し
・担当者の割り振り
・作業時間の見積もり
を行いました。
タスク出しの際に注意した点
・担当は機能単位で分ける
・作業時間の見積もりは30分単位で見積もり、4時間以上かかる作業はタスクをさらに分解する
この二点を意識しました。
しかし、結果的にはタスクの見積もりが甘く、4時間を超える作業もあったので、ここは反省点ですね、、
4.実装
いよいよ最後の実装に入りました。
実装期間は1週間という短い期間になります。
自分は主にフロントエンドのHTML,CSS,JavaScriptを担当しました。
実装期間中よかった自分の動きとしては、
・HTMLが完成しないと進まない作業が多かったので、早急に作成する
・他人が見てもわかりやすいように、読みやすいコードを書く、コメント多用する
・レスポンスはできる限り早く返す
・自分の作業以外のことにも積極的に干渉する
逆に悪かった点
・見積もっていた作業時間を超えることがあった
・ワイヤーフレームに抜け目があり、機能の追加が必要となった
・バックエンドに関しては把握しきれていない箇所があった
と個人的に色々ありましたが、積極的に行動してくれるメンバーのお陰もあり、無事に一週間で完成させることができました。
全体を通じての課題と解決策
・決めた時間以上にかかった作業が多かったので、タスクばらしは細かく行う
・テキストベースのコミュニケーションが多く、効率が悪い場面も多かったので、開発期間はボイスチャットも用いる
・メンバー間の共通認識が曖昧な時があったので、チーム会の議事録を取っていつでも確認できるようにする
・Gitのブランチが何用かわからなくなっていたこともあったので、発信側もわかりやすいように工夫をする。ブランチのREADMEなど。
感想
まずは、より良いプロダクトになるように協力してくれたチームメンバー全員に感謝します。
メンバー全員が初めてのチーム開発ということもあって、正直、チームとして、個人としての課題が多くあると実感しました。
しかし、チーム開発を通して個人としても、チームとしても伸びしろを感じました。
まだ、もう一度チーム開発があるとのことなので、
次回は今回の反省点を生かしてよりよいプロダクトを作りたいと思います。