見出し画像

駆け出しエンジニア / IT起業したい方必見 個人開発3 : 進捗

前回 から、仕事の合間にちょこちょこ開発していたよ。適度な粒度で開発状況を note にまとめるつもりだったけど、仕事の癖でどんどん進めてしまった😅

本当は色々書きたいことはあるんだけど、将来的に教材としても使おうと思ってるから、基礎的な部分は先に終わらせることにした。拘っている点についても触れているから最後まで読んでね!

DB を除くインフラは CDK で構築済み。フロントから先に完成させた方がイメージが湧きやすいから、先に実装を始めた。今の状況はこんな感じ↓

ホーム画面

ホーム画面はシンプルにアイデアのリストを表示。

アイデア投稿画面

画面上部のアイデアを考えるボタンをクリックすると、テーマ(ランダムに変わる単語の組み合わせ。この画像では「音楽 × カフェ」 )が入力された状態でアイデア投稿画面に移動する。

あとは、同じテーマで考えるボタンをクリックすると、他の誰かが投稿したアイデアと同じテーマでアイデアを作成できる。プレースホルダーは拘っている。「アイデアを一言で表すと?」というようにユーザーの行動を促しているよ。UX!

バリデーション

必須な入力欄や文字列の長さのバリデーションは必ず入れよう。でもフロントのバリデーションは、あくまでもユーザー体験をあげるだけでセキュリティには何にも役立たないから注意しよう。セキュリティ用のバリデーションはバックエンドでしっかり開発しよう!

アイデア詳細画面

もちろん、他の人のアイデアの詳細も閲覧できる。
「欲しい!」ボタンは「いいねボタン」みたいなもの。欲しい!と書いてある方が、押したくなると思ったからね。こういうのをユーザー目線っていうのね。

こだわってること

大切にしていることは2つ。

  1. シンプルにすること

  2. モジュール化!モジュール化!モジュール化!

シンプルなほど理解もしやすい。理解がしやすければバグも修正もしやすいし、新しい機能も簡単に追加できる。個人開発だから、歯止めが効かずあれもこれも開発したくなるけど、後で余計な工数がかからないように、シンプルさを心がけてるよ。

しかも、いくら機能を開発しても実際にお客さんに使ってもらうまでは本当に必要なものかわからないんだ。「絶対に必要!」と言われて、さまざまな機能を仕事で開発してきたけど、かけた時間の割には、ほとんど使われなかった機能もたくさんある😅 だから最初は最低限の方がいいんだ。

モジュール化はとても大事。モジュール化は文脈によって意味が変わるかもしれないけど、ここでは、責務にわけて小さくコードを分割していくことを指すよ。Nuxt をフレームワークに使っているけど、コンポーネントが大きくなりすぎないように、Atomic デザインを参考に、小さな粒度で分けているよ。

責務ごとにコードを分割できると色々とメリットが大きんだ。例えば、A という機能を持つクラスが3つあったらどうなるだろう?もし、A 機能に B という機能を追加したいとき、3つのファイルそれぞれを修正しないといけない!これは大変だ。それに対して、A 機能を持つファイルが1つだけなら、1回の修正で終わる。工数は3分の1だ!どちらがベターかは一目瞭然だね!

ただし、責務って簡単そうで実はとても奥が深いんだ。人によってもアプリによっても意味が変わる場合があるしね。これについてはいつかまとめたいけど、私が一番しっくりくる方法は「テストを作りやすい単位で分ける」方法だ。テストするときに複雑なモックが必要になったり、やたらとテストケースやテスト名が長くなる時は黄色信号だ!もっと分割できないか考えてみよう。

終わりに

見栄えの良い画面や機能を作ることより先に、シンプルさとモジュール化を第一に考えた方が結果的に開発工数も削れるし、将来より良い機能を開発できるよ。



この記事が気に入ったらサポートをしてみませんか?