自分の発信を1か所に集めるハブサイト「Hubpin」を、個人で作りました。
制作の経緯は「Hubpin 開発記録」に時系列でまとめています。
Claude Code を取り入れながら、設計から実装まで一人で進めています。
ポートフォリオとしては2作目にあたります。
計画を立てたところで、自分には重すぎるのではないかと不安になりました。
機能を削ぎ落として簡単にしたほうがいいのか、と相談したのを覚えています。
そう相談したのですが、結局は削りませんでした。
削れる機能を数えたら、削れるのは差別化している部分だけでした
まず何が削れるかを並べてみました。
ログインとデータの登録・編集・削除は、応募の下限として外せません。
調べた範囲では、未経験からの応募でポートフォリオの最低ラインがそのあたりでした。
では何が削れるかというと、外部のサービスから投稿を自動で集めてくる部分でした。
これはこのアプリの差別化にあたる部分です。
削ると、よくある登録・編集・削除のアプリになります。
難しさは下がりますが、同時に他の応募者と横並びになります。
難度を下げる手段として、機能を削るのは筋が悪いと判断しました。
本当の問題は、工程の順序でした
削る話をしているうちに、引っかかっているのは機能の量ではないと気づきました。
当時の計画は、設計から始めて環境を作り、データベース、認証、公開ページ、登録編集、並び替え、外部連携、定期実行、仕上げ、という一本道でした。
この並びだと、途中で力尽きたときに見せられるものがありません。
外部連携のあたりで止まったら、成果はゼロです。
自分には難しいと感じたものを投げ出す癖があります。
その自覚があるのに、投げ出した瞬間に何も残らない形で計画を書いていました。
そこで、各段階の終わりに必ずデプロイする形へ割り直しました。
どこで止まっても、動いているものが残ります。
一番難しいと思っていた実装を、後ろに送りました
割り直しで効いたのは、並び替えの扱いでした。
計画を立てた時点で、一番難しいと自己評価していたのが並び替えです。
ドラッグで順番を入れ替える実装で、専用のライブラリと、画面を先に更新する仕組みを組み合わせる想定でした。
これを最後の段階に送って、最初の段階では上下ボタンでの並び替えにしました。
並び替えという機能自体は残っているので、応募の下限は割りません。
それでいて、一番難しい部分が序盤から消えます。
副産物もありました。
まず動く形で出して、後から実装を差し替えたという判断そのものが、面接で話せる材料になります。
削るのと、後ろに置くのは違う
見た目の部分も同じように分けました。
作り込む部分と、前のサイトから移植するだけで済む部分を切り分けて、移植で済むほうを最初の段階に残しています。
こうして並べ直したら、機能はひとつも減っていないのに、最初の段階でやることがかなり軽くなりました。
最初の段階は、8月17日に終わりました。
見積66時間に対して実際は57.88時間で、期限より14日早く公開までたどり着いています。
重いと感じたときに最初に出てくる案は「削る」でした。
実際に効いたのは「どこで止まっても成果が残るか」を見ることのほうでした。
