アプリを作る前に
最近、マンション居住者専用の駐車場予約アプリ作成に取り組んでいるのだが、
自作アプリとなると、オンラインコースにある各チャプターの理解を深めるための”Project”とは少し違って、いろいろ考えなければならないことが多い。今回はコードを書くこと以外の部分で大事だなと思ったことを書き留めておく。
これまでもOdinのProjectでは、インスピレーションが湧いてくるとついついオリジナリティーを出してしまったりして、求められていない機能までつけてしまいなかなか完成しないということがよくあったが、自作アプリは課題(どういう機能を持たせるか)も自分で考えるので想像し出すとキリがなくなってしまいそう。
できる部分から始めてしまいがち
とりあえずアプリを作ろうと思い立ったその瞬間に、いきなりコードを書き始めたり、divの高さや背景色を選んでみたりしてしまいがちの私。でも「何が必要かまず考える」ことから始めるべきだとのこと。何が必要か・・・と言われても、どういう答えを求められているのかよく分からなかった。
※設定: とあるマンションでは、居住者が来客を迎えたり、リフォーム会社を呼んだりしたときに敷地内の駐車スペースを有料で提供しているが、その予約は現在管理人がいる時間帯に限られ、週末など管理人不在時には予約自体ができないのでオンライン予約ができるアプリを作る。
【マンション居住者専用の駐車場予約アプリ】
・形態:Webアプリ
・アプリ利用者:管理人と居住者
・機能:ログインして、日付入力して、空きがあれば予約に進んで、最後予約ナンバーが発番される。管理人は全ての予約状況を見られる。
というものを想像しているのだが何が必要だろうか。
ワイヤーフレーム
ワイヤーフレームとは、Webページのレイアウトに、どこをクリックすると、どこのページに飛ぶなどの情報を加えた設計図のこと。
「何が必要か」は言葉にしにくかったが、ワイヤーフレームを書くのは面白そう。
手書きでも何を使って書いてもいいようだったので、AppleのFreefrom(日本語ではフリーボード)を利用して見よう見まねで作ってみる。(ワイヤーフレーム作成用のちゃんとしたツールも存在するが、Freefromは手書きの延長線で描けそうだったので。)
こんな感じの画面で、ボタンがあって、ここを押すと・・・というのを矢印で結んでいく。
各画面の機能とか、どういうデータを呼び出すとか、結果によって別のページに飛ぶとか、いろいろな想定を考えていく。

しかしワイヤーフレームを書いていくにつれ、アイデアが膨らむと同時に不安が膨らんできた。
アイデアが膨らむ
・入力項目にこれも追加しよう!
・こんな機能もあった方がいいな♪
・ここからもJumpできるようにした方がいいかな💡
不安が膨らむ
・セキュリティー大丈夫かな
・こんな機能をつけられるのか?今の私にはまだ無理じゃない?
・シンプルなアプリのつもりだったのにワイヤーフレーム作ってみると思ったより複雑でページも多くて、完成までの道のりが見えない
初めてなんだからもっと簡単なテーマを選ぶべきだったかと後悔しかけたとき、
“MVP”を意識するようにと言われた。
MVPとは?
”Minimum Viable Product(ミニマム・バイアブル・プロダクト)”の略で、とりあえず必要最低限の機能があるもの(ここではアプリ)のこと。つまり、見た目や使い勝手は後からどうにかするとして、まずは最低限の機能の部分を作って、アプリとして動く状態まで持っていくことに意識を向ける。
今回の駐車場予約アプリであれば、空き状況が検索できて、予約ができることが必要最低条件である。その部分の機能ができれば、MVPは完成する。なるほど、まずはそこを目指すのか。
改めてMVPを作るために「”最低限”何が必要か」を考えてみる。
・input
予約したい日付 from/to
・データベース
予約内容(日付From、To、予約ナンバー、駐車区画、利用者)
こんな感じ・・・?
いや、「何が必要か」って質問は、どういう答えを求められているのか相変わらずよく分からず、
ワイヤーフレーム書く前の答えと特段進歩なし。
その他に気にしておくポイント
初めてのアプリ作成では、機能についてまずは必要最低限を意識して、徐々に使い勝手や見た目に手を加えていくことがポイント。でもその他に、Odinでの課題などとは大きく異なる部分がある。それは「お金」と「スピード」。
・お金
無料のオンラインコースで提供されている課題は基本的に全て無料で進めることができた。しかし自分でアプリを作ってみようと思ったとき、ドメインを買ったり、データベース利用したり、お金がかかる場合がある。今回は実践に近い練習で作っているだけなので、ドメインも買ってないし、データベースも無料枠内で利用して開発している。しかし、もしもリリースするという場合には、やはりランニングコストのことも考えなければならない。
例えば今回、データベースはFirebaseを使っているが、回数を超えると有料になるタイプと、容量を超えると有料になるタイプがあって、どういうデータの持ち方や渡し方をするかを先に考えないと、どのデータベースを使うかすら定まらないとのこと。
それは、、かなり経験値がものを言いそうなので、アドバイスをいただいてとりあえずやってみることに。最悪、書き直せばいい!と腹をくくる。
・スピード
アプリはサクサク動くべき。メモリの負荷とかも、プロは考えるみたいだけど、これも経験が無いと何に気をつけるべきかも分からないし、今はMVPを意識するので、一旦気にしないでおく。
コードを書き始める前に考えなきゃいけないことが山ほどあると分かったところで本日は終了!
