転職用のポートフォリオとして、個人でWebアプリ「Hubpin」を作っています。
制作の経緯は「Hubpin 開発記録」に時系列でまとめています。
設計と判断は自分で行い、実装も原則自分で書いています。AIには手順書・レビュー・調査を任せています。
転職用のポートフォリオ2作目を企画していたときの話です。
コードを書く前の段階で、機能がどんどん増えていって止まらなくなりました。
まだ1行も書いていません。
そのときに出した判断軸が、いまも制作の途中で効いているので書いておきます。
実装の詳細を10件並べたところで混乱した
2作目の題材として最初に考えていたのは、Web制作の案件を管理するアプリでした。
要件定義に入ろうとして、税率の扱いやトークンの有効期限といった実装の詳細を
10件ほど並べたところで、頭の中がぐちゃぐちゃになりました。
手が止まりました。
振り返ると、このアプリが何をするものかを1文で言えていない状態で、
実装の詳細に降りていました。
階層を1つ戻して、混乱の原因を2つ挙げました。
- 「案件管理アプリ」という名前が、中身より広い
- 目的が2つ混ざっている(自分の業務を楽にする/就職のために技術を示す)
名前が広いと、入れる理由がいくらでも作れる
1つ目が思ったより大きい原因でした。名前です。
「案件管理」と聞くと、顧客管理・工程・タスク・工数・請求と連想が続きます。
どれも「案件管理なら入っていて当然」に見えるので、入れる理由が次々に作れてしまう。
実際に決めていた中身は「見積を作って、URLで送って、承認を記録する」だけだったのに、
名前のほうが先に膨らんでいました。
順番が逆です。
機能が増え続けているときのサインとして、アプリの名前が中身より広くなっていないか、
は今でも最初に疑うようにしています。
CRUDを4つ作っても、示せるのは「CRUDが書ける」の1つ
2つ目の目的、「就職のために技術を示す」のほうで、混乱を解く軸が出ました。
作ろうとしていた機能を、「その機能で何を示せるか」に置き換えて並べてみたんです。
| 作るもの | 示せること |
|---|---|
| 案件のCRUD | CRUDが書ける |
| + 見積のCRUD | (同じ)CRUDが書ける |
| + 工程のCRUD | (同じ)CRUDが書ける |
| + タスクのCRUD | (同じ)CRUDが書ける |
CRUDを4つ作っても、読み手が受け取るのは「CRUDが書ける」の1つだけでした。
工数は4倍。示せることは同じ。
読む側からすれば、レビューに使う時間が増えるのに新しい情報が出てこない状態です。
逆に、1本の流れに乗っている「示せること」を数えたら9種類ありました。
認証、テーブル間のリレーション、権限設計、認証なしのアクセス、
ステータス遷移、動的ルート、サーバー側の状態更新、配列の状態管理、印刷対応。
機能の数と、示せることの数は、別物でした。
それ以降、機能を思いついたときの問いは1つになりました。
その機能は、この表に新しい行を持ってくるか?
持ってこないなら、判断基準は「自分がそれで困っているか」だけです。
持ってくるなら、技術を示す目的としても検討する価値があります。
題材は変わったが、軸は残った
正直に書くと、この案件管理アプリは同じ日のうちに題材ごと取り下げました。
別の理由で、構造的に解けない問題が見つかったからです。
いま作っているのは「分散した発信を1つに集約するハブサイト」で、題材は別物です。
ただ、上の判断軸だけはそのまま持ち越しました。
新しい題材でも「機能を削ぎ落とすべきか、簡単に完成させて徐々に足すべきか」で
迷いました。
答えは削るのでも盛るのでもなく、段階に割るでした。
- v0.5 … 公開ページ+カードのCRUD+認証+↑↓ボタンの並び替え。ここで一度公開する
- v1.0 … 外部フィードの自動取得。ここで差別化が乗る
- v1.1 … ドラッグ&ドロップ・OGP画像・見た目の作り込み。あれば良い
削ると差別化が消えて他のポートフォリオと横並びになる。
かといって全部を1本の流れにすると、最後まで行かないと見せられるものがゼロになる。
どちらも困ります。
それで、「やらない」ではなく「今回はやらない」の箱を用意しました。
v1.1 に入れておけば捨てたことにならないので、後回しの判断がしやすくなります。
先に1文にする
いま振り返って、順番を1つだけ変えるなら、
「これは何をするアプリか」を1文にしてから実装の詳細に降りる、です。
先に1文。
1文にできていれば、名前が中身より広くなっているかもすぐ分かります。
機能を思いついたときも、その1文に収まるかで判断できます。
10件の実装詳細を並べて混乱したのは、その1文がなかったからでした。
それだけの話です。
