🏸

MVP開発やってみた

2022/12/31に公開

はじめに

こんにちは。バドミントン歴12年、プログラミング歴2年のsudoです。
最近、所属しているバドミントンサークルで使用するWebアプリを作成しました。
そこで、

  • 作成したWebアプリについて
  • 個人開発を進める上で大切なMVPという考え方

という2点について紹介していきたいと思います。

前提

  • 今回作ったものは内輪で使用するアプリなので、集客やマネタイズ等は考えていません。
  • あんまり技術の話はしません。
  • 以下のような方を想定して書いています。
    • なにか作りたいものがある方
    • Webアプリの仕組みがなんとなく分かって、次は自分で何か作りたいと思っている方

作ったもの

自分が所属しているバドミントンサークルで使用する、練習のコート振り分けシステムを作成しました。
その日の練習の情報(参加者、コート数)を入力して振り分けボタンを押すとランダムで各コートに割り振られます。

練習情報の入力画面


コート割り振り結果

PCやタブレットを体育館に置いてみんなに見てもらうことを想定しているので、割り振り結果の文字は大きめになっています。

個人開発を進める上で大切なこと

MVP(Minimum Viable Product)とは?

MVPとは、初期の顧客を満足させ、将来の製品開発に役立つ有効なフィードバックや実証を得られる機能を備えた製品のバージョンのことです。[1]
ちなみに、私がMVPという言葉を知ったのはTreasureというサマーインターンでの開発がきっかけでした。
Treasureについてはこちらの記事をご覧ください。
https://techblog.cartaholdings.co.jp/entry/treasure2022-planning

MVPを作成し、サービスの開発を行う手法をMVP開発と呼びます。
(これは正確な言葉なのか分からなかったのでこの記事の中の表現として認識してください。🙇 )

MVP開発のメリット

ユーザー視点で開発を進めることができる

サービスを作る際に実装したい機能はたくさん思いつきますが、それは本当に必要なのでしょうか?
最初から機能をモリモリで実装しても、後から「やっぱこの機能いらなかったな」となるケースもあると思います。
MVP開発の場合、必要最小限の機能を持ったプロダクトを実際に使用してもらうことでユーザーのフィードバックを得て、少しずつ改善していくことで効率的にプロダクトの価値を高めていくことができます。

モチベーションを保てる

最初から大きいものを作ろうとすると、それだけリリースまでの時間がかかってしまいモチベーションが保てなくなるというリスクがあります。
しかし、MVP開発の場合、開発の開始からリリースまでの時間が短いので、モチベーションを保つことができます。

実際の進め方

要件定義

今回の必要最低限の価値は簡単な名前入力でコート振り分けができるという点にありました。
他にもやりたいこととしては

  • 練習の情報や試合結果をデータベースに保存して分析できるようにする
  • 割り振りロジックの工夫
    • コート内のメンバーがなるべく被らないようにする
    • 大会前はペアを固定にする

等、色々あったのですが優先度は低いと判断して後回しにしました。

技術選定

これはMVP開発とは違った話になるのですが、技術選定も大切なポイントの一つです。
今回は学習目的ということもあり、張り切って使用経験のない技術をたくさん使おうとしていたのですが、使用経験のない技術を2つ以上同時に使い始めると開発が進まなくなり苦しい思いをしました。

当初の予定では以下の技術構成で作ろうと思っていました。

- フロントエンド
  - TypeScript, React
- バックエンド
  - Python, Django
- インフラ
  - AWS(ECS)

このうち、触ったことのあるのはTypeScript, Reactのみだったのですが、作成しようとしているアプリ自体が大きなものではないので「まぁいけるやろ」と思っていました。
しかし、1週間やってみて開発が予想より大幅に進捗が悪かったので使用する技術を変更することにしました。

変更後がこちら

- フロントエンド
  - TypeScript, React
- バックエンド
  - Go
- インフラ
  - Firebase, GCP(Cloud Function)

(Cloud Functions for FirebaseでGoもデプロイできることを後から知りました。)

ほぼ使用したことのある技術構成にして、開発がスムーズに進むようになりました。
Firebaseを初めて使用したのですが、学習コストは少なく簡単にデプロイすることができました。

開発

頑張ります。MVPの設計をしっかりできていた場合、リリースまでの開発はすぐ終わるはずです。

改善

一度リリースしたら終了ではなく、継続的に改善することでより価値を高めることができます。
1度サークルの練習で使用した時に、振り分け結果に対して「この人とこの人を入れ替えればいい感じになるな」という現象が多発しました。
そこで、割り振り結果画面から入れ替えができるような機能を追加することにしました。

この機能は割とウケが良かったように思います。

まとめ

個人開発をやってみて思ったことをまとめてみました。
みなさんもぜひMVPを意識して個人開発にチャレンジしてみてください。

脚注
  1. https://ja.wikipedia.org/wiki/実用最小限の製品 ↩︎

Discussion