Vol.2【卒業制作①】〜チーム開発の進め方〜準備編
どんな人向けか
初めてチーム開発を進める方向けの内容です。
入学から授業期間
私は未経験からプログラミングスクールに通い、入学から6ヶ月で卒業制作としてタイマー付き学習記録アプリをチーム開発をしました。
スクールのカリキュラム上、全6ヶ月中、卒業制作の期間は最後の1ヶ月となっていましたが、自分は絶対間に合わない!💦と思っていたので、入学してから1ヶ月あたりで得意の妄想力を働かせて(笑)
なんとなくふわっとしたイメージで、
こんなアプリ作れたらいいなー
この機能ってどうやって作るんだろうなー
あれもこれもつけたいなー
なんて欲張りなイメージを膨らませていました。
でも今となっては最初から『アレ作りたい!』と目的意識があったのは
授業の内容を他の機能と置き換えて自分で考えることになるので
学習する上でとても良い経験になったと思います。
卒業制作を始める前に
どんな小さなアプリでもいいので、カリキュラム以外のアプリを作る経験をしてみてください。
私は、「りあゼミ」という生徒間のゼミの企画でクイズアプリを制作しました。
遊び感覚でいいのです。
自分の欲しいアプリだとよりイメージしやすいかもですね。
そして作ったものはせっかくなのでSNSなどでぜひ発信してみてください!
チーム始動!
半分の3ヶ月が過ぎたころにスクールの先生から、
「同期の皆さん仲良さげなんでチーム開発してみたらどうですか?」
同期は女性3人でなんとなく気が合うなーと思っていたのですごく嬉しい提案でした!
テーマについて聞かれたときに思い切って、自分が作りたいと思っているアプリの話をしたところ
メンバーのみんなも、面白そう!と賛同してくれてみんなで制作することが決まりました。
記念すべきチーム結成は卒業2ヶ月半前の話です。
アプリ企画案の作成
以前、新規創業の事業者を支援する仕事をしていて、
事業者の方々と関わる機会が多かったのですが、
商品開発や事業に本気で向き合っている姿がとても輝いていたんです。
せっかくアプリを作るならユーザーに商品を提供する熱量でやりたい!
いつか自分も誰かの心に刺さる商品を提供したい!!
そんな思いもあり、マーケティングで使われるような考え方も取り入れつつ今回の卒業制作の企画案の作成には時間をかけました。
目的
概要
市場調査・競合分析
ターゲット
ペルソナ
基本機能
基本機能を実装するための使用技術(技術のメリットデメリット)
担当割振り
開発スケジュール(担当割り別に1週間ごと)
チーム開発のルール
上記の内容を企画案に盛り込み、開発に取り組む前に固めました。
目的、概要
目的や概要はそのままです笑
市場調査・競合分析
市場調査・競合分析は、似たようなアプリを調べて実際に使ってみました。
このアプリのここが使いやすかったな、とか
この機能はこうした方が使いやすそうだな、とか
感想をメモしておくと比較しやすいですね。
調査をしていく中で、自分が開発するアプリで差別化や強化すべきポイントも見えてくると思います。
(我流なので正しいやり方と違ったらすみません…)
ターゲット、ペルソナ
ターゲットとペルソナは「卒業制作を始める前に」のところであげた
こちらの記事に記載してありますので気になる方は見てみてください。
自分はペルソナを設定した方が、
「この人の悩みを解消するために、こんな機能をつけた方か使いやすくなるんじゃないか」
「シンプルかつストレスフリーな操作性のために余計な情報は削ろう」
とその人のために使いやすいものは?と考えることができました。
また、チーム内でターゲットの設定だけだと、想像する人物像が微妙にズレてしまい、連携が取りづらくなることもありますので、できるだけ具体イメージを共有するためにもペルソナは設定した方がスムーズになるのではないかと考えます。
基本機能
まずは実装したい機能を挙げていき、そこから
絶対に実装したい基本機能
(最低限これだけあればアプリとして成り立つレベルのもの)基本機能が実装できたら追加したい追加機能
の2つに分類し、さらに優先順位をつけてください。
私たちのチームは、最初に実装したい機能だけ挙げて
制作に取り組み始めたものの、
作業が進まず予定よりも遅れてしまっていたことと、
途中で卒業制作発表の日を1週間勘違いしていたことを知り、
慌てて緊急会議を開きました。笑
結果、基本機能の優先順位をつけることができたので、不備はあったものの、基本機能を実装したアプリを間に合わせることができました。
追加機能については、卒業後も制作に取り組むモチベーションになっています!笑
基本機能の使用技術(メリット、デメリット)
使用技術について、基本機能以外の追加機能を考えた時に、拡張性・メンテナンスのしやすさ、ということについても検討してみてください。
参考に、React.jsかNext.jsかどちらを使用するかを考えたときに、SEO対策で検索上位になりやすい、だとか、追加機能がたくさんある場合でも拡張しやすい、という理由からNext.jsを採用しました。
実装する内容によって使用技術は異なってくるので、こちらはうまくchatGPT等に聞きながら検討を進めてみてください。
メリット、デメリットについても理解して言語化できるように準備しておくとよいと思います。
担当割振り、開発スケジュール
この部分もchatGPT等をうまく活用してみてください。
- チーム人数
- どんな基本機能を実装するか
- 使用する技術とツールは何か
(機能を実装するための技術やツールは何が良いかを相談していくつか案を出してもらって検討することもおすすめです)
- 何週間で完成させるか
- 役割はどんな分け方か
(私たちは、チーム全員がフロントエンドとバックエンドの両方の領域に関われるようにしたい、と指示しました)
こんな感じで要望を挙げつつ、1週間ごとの各自の開発スケジュール案を作成してもらいました。
(まとめるとこんな感じですが、会話みたくやり取りは何度もしました!)
これがあったおかげで、メンバーも先の見通しが立って、遅れていても途中の軌道修正ができましたのでやっといてよかったと思うことNo.1です!
参考にしてみてください!
チーム開発のルール
開発に取り組む際に、ディレクトリ構成と作業ブランチの命名規則は現場で使用されていることが多いルールを調べて、それを真似しました。
作業ブランチの命名規則は
[開発者名]/[機能の種類]/[機能の簡単な説明]
機能の種類の例:
feature: 新機能の追加
fix: バグ修正
improve: 既存機能の改善
refactor: コードのリファクタリング
docs: ドキュメントの更新
日本語の使用について、日本語をブランチ名に使用できますが、
以下の理由から英語(ローマ字)の使用をお勧めされました。
コマンドラインでの操作が容易
国際的な開発環境との互換性
エンコーディングの問題を避けられる
追加のヒント:
ブランチ名は短く、明確にする
単語間はハイフン(-) で繋ぐ
全て小文字を使用する
この命名規則を使用することで、誰がどの機能を担当しているかが一目で分かり、ブランチの管理が容易になります。
また、チームメンバー全員が同じ規則を使用することで、コミュニケーションも円滑になります。
あとは、分からないことがあったり、進捗の報告など、
Slackを活用してコミュニケーションを取るようにしていました。
連絡・情報共有スレッドを作成してそこに返信していく形にすればコメントも集約できます!
まとめ
今回はチーム開発を始めるにあたって、自分たちが取り組んできた手法のご紹介をしました。
開発編とプレゼン編についても後日掲載しようかと思ってます。