こんにちは!YOUTRUSTでWebエンジニアをしている大竹(YOUTRUST)です。
とても暑い日々が続いているので、体調管理に気をつけていきたいと思います。
本日のテーマ
先日コミュニティ機能をリニューアルしました! prtimes.jp
本リニューアルは数ヶ月に渡るプロジェクトだったのですが、明確にリリース期日が決まっていたため、スコープを調整しつつも滞りなく開発を進める必要がありました。
今回は本リニューアルにあたり、どのように開発を進めたのかについてお話したいと思います。
リニューアル内容
本題に入る前にざっくりとコミュニティ機能がどういったものなのか説明します。
コミュニティ機能は社内外のつながり形成を目的とした機能です。 同業界・同職種のつながりを形成するためのものから、同好会のつながりを形成するためのものまで、幅広いコミュニティが存在しています。
今回のリニューアルは「コミュニティ内の会話の活性化」を目的としていたので、具体的に以下のような開発を行いました。
- 会話をスムーズに行えるようなUIへの刷新
- コミュニティの目的に応じて使い分けられる公開設定機能
- コミュニティ運営を行いやすくするためのコミュニティオーナー向け機能の拡充
詳細は前述のプレスリリースに記載があるので、そちらをご参照ください。
開発の進め方
ここから本題です。
前述の通り、今回のリニューアルは明確にリリース期日が決まっていたため、スコープを調整しつつも滞りなく開発を進める必要がありました。 ちなみに、チーム体制はエンジニアが5名(フルタイム2名、スポット3名)、デザイナー1名、PdM1名です。
開発は具体的に以下の手順で行いました。
- 簡易見積もり
- スコープ決め
- 仕様書レビュー
- 設計書の作成
- 実装
- QA
- リリース
以降に各手順についてそれぞれ詳細に説明したいと思います。
1. 簡易見積もり
PdMが作成した仕様書をもとに、ストーリーポイントを使用した簡易的な見積もりを行いました。バックエンドはAPI作成やバッチ処理作成等の見積もりを、フロントエンドはコンポーネント作成やページ作成等の見積もりを行いました。
弊社ではスクラム開発を導入しており、見積もりにはストーリーポイントを使用しています。弊社のスクラム開発については以下の記事で詳細に書かれているのでぜひご参照ください。 tech.youtrust.co.jp
リニューアルということで既存のAPIが存在していたのですが、既存のAPIはコードが古いものがあり、最新のアーキテクチャに則っていなかったため、既存のAPIに機能追加をしていくと今後の開発速度に影響を及ぼす可能性がありました。 そのため、APIは新しく作成する方針にして見積もりを行いました。 (スコープ決めの際の判断材料になるように、既存のAPIに変更を加える場合も同様に見積もりを行いました。)
弊社のアーキテクチャについては以下のスライドで説明がされているので、ぜひご参照ください。
また、一部今回のリニューアルで仕様追加ではなく仕様変更が入る箇所があり、データ構造の変更が必要だったので、一時的なデータ同期処理の作成やマイグレーションタスクの作成等も見積もり対象に含めました。
2. スコープ決め
スコープ決めはPO、PdM含めて議論をして行いました。
ベロシティを毎スプリント計測していたので、これまでのベロシティをもとにどれくらいのストーリーポイントを消化できるかを算出し、スコープ決めの判断材料にしました。
3. 仕様書レビュー
仕様書は簡易見積もりの段階ですでに作成済みではあるのですが、開発時の手戻りの発生を防ぐために、エッジケースの抜け漏れがないかなどを含め仕様書レビューを行いました。 実際に仕様書レビューにより、ユーザー同士がブロックしている場合などの考慮漏れに気づくことができました。
仕様書レビューは2 Approve制を取り入れ、複数の観点でレビューが行われるようにしました。
4. 設計書の作成
仕様書をもとに設計書を作成しました。
バックエンドであればテーブル設計やAPI設計、フロントエンドであればコンポーネント設計や画面設計等を行いました。 具体的にどういった設計書を作成しているかについては、今後のブログで別途お話したいと思います。
設計書も同様に2 Approve制を取り入れました。
5. 実装
設計書をもとに実装を行いました。
できるだけ並列度を高めつつもコンフリクトが発生しないように、設計書をもとにタスクを分割して実装に着手するようにしました。
6. QA
仕様書をもとにQAシートを作成して、機能が仕様に則っているかを確認するようにしました。 QAシートの作成や実施は、PdMとエンジニアで分担して行いました。
QAシートも仕様書や設計書と同様に2 Approve制を取り入れています。
7. リリース
QAまで完了したらリリースを行います。
まとめてリリースを行うと問題発生時のRevertも大きくなってしまうため、Feature Flagを使用してユーザーへの影響が出ない状態で細かくリリースを行うように心がけました。 ちなみに、ブランチ戦略はGitHub Flowを採用しており、適切な単位で機能開発がリリースされるようにしました。
まとめ
ベロシティを利用したスコープ調整と、手戻りの発生を防ぐための2 Approve制などを導入することで、無事滞りなく開発が行えて期日にリリースを行うことができました!
最後に
弊社YOUTRUSTではエンジニアを積極的に採用しています!
Webエンジニアだけでなく、アプリエンジニアやSREエンジニアなど、様々なポジションで求人を出しておりますので、ぜひご応募ください!