Upgrade to Pro — share decks privately, control downloads, hide ads and more …

厳しさとゆるさの間で迷う人に捧げる個人開発記

mizzsugar
February 08, 2025

 厳しさとゆるさの間で迷う人に捧げる個人開発記

mizzsugar

February 08, 2025
Tweet

More Decks by mizzsugar

Other Decks in Programming

Transcript

  1. 目次 • きっかけ • ネタ探し • 開発 ◦ 優先順位を決める ◦

    何を作るか決める ◦ 開発計画を立てる ◦ どう作るか決める ◦ 実際に作る ◦ 公開する ◦ 次の開発へ • やってみての振り返り 6
  2. 開発の流れ 10 優 先 順 位を 決 める 何を 作る

    か 決 める どう 作る か 決 める 公 開 する 実 際 に 作る 次 の 開 発 へ 開 発 計 画を 立 てる 今回はあくまで個人開発をリリースするまでの工程です。 仕事の開発ではテストや保守運用という工程を含みます。仕事でよくある工程については こちらの記事を読んでください。 テストもしながら
  3. 優先順位を決める 11 優 先 順 位 を 決 め る

    何を 作る か 決 める どう 作る か 決 める 公 開 する 実 際 に 作る 次 の 開 発 へ 開 発 計 画を 立 てる
  4. 優先順位を決める 12 Done is better than perfect. 壮大な計画で挫折 したくない (小さくリリース)

    できるだけお金かけ たくない (1ヶ月1000円以内) React使って みたい 3か月くらいで公開 したい 平日は1日0-30 分しか使えない
  5. 優先順位を決める • やりたいことはたくさんあるが、制約も多い。 ◦ 時間やお金には限りがある。 • あれもこれもと一気にはできないので、何を優先するか判断する指針 を作ってお く。 ◦

    トラブルが起きた時にどう進めるか決めるのに迷う時間が少なくなる。 • 迷ったときのなんとなくの判断が少なくなり、メリハリができる 。 13
  6. 優先順位を決める 優先順位の考え方にQCDSというものがある。 14 略称 名前 要望、制約 Q Quality 品質。製品やサービスの出来栄えや性能など。 例:

    バグの少なさ、セキュリティ C Cost 開発にかかる費用。 例: インフラ費、人件費 D Delivery 開発にかかる時間、期限 例: リリース日、ある機能をいつまでにリリースできる状態にするか S Scope 開発する範囲 例: 開発する機能、やらないこと
  7. 優先順位を決める P.11で考えたことQCDSに当てはめていく。 お金とか品質とか… 15 略称 名前 要望、制約 Q Quality Done

    is better than perfect. C Cost できるだけお金かけたくない (1ヶ月1000円以内) D Delivery 3か月くらいで公開したい 平日は1日0-30分しか使えない S Scope 壮大な計画で挫折したくない (小さくリリース) ? その他 React.jsを使いたい
  8. 優先順位を決める P.11で考えたことQCDSに当てはめていく。 お金とか品質とか… 16 略称 名前 要望、制約 Q Quality Done

    is better than perfect. C Cost できるだけお金かけたくない (1ヶ月1000円以内) D Delivery 3か月くらいで公開したい 平日は1日0-30分しか使えない S Scope 壮大な計画で挫折したくない (小さくリリース) ? その他 React.jsを使いたい これの扱い?
  9. 優先順位を決める P.11で考えたことQCDSに当てはめていく。 お金とか品質とか… 17 略称 名前 要望、制約 Q Quality Done

    is better than perfect. C Cost できるだけお金かけたくない (1ヶ月1000円以内) D Delivery 3か月くらいで公開したい 平日は1日0-30分しか使えない S Scope 壮大な計画で挫折したくない (小さくリリース) I Interest React.jsを使いたい Interest。 技術的な興味を満た す個人開発だってい いじゃないか。個人 だもの。
  10. 優先順位を決める 優先度を考え、優先度が高い順に並べるとこうなった 18 略称 名前 要望、制約 D Delivery Done is

    better than perfect. C Cost できるだけお金かけたくない (1ヶ月1000円以内) I Interest React.jsを使いたい Q Quality Done is better than perfect. S Scope 壮大な計画で挫折したくない (小さくリリース)
  11. 何を作るか決める 19 優 先 順 位を 決 める 何 を

    作 る か 決 め る どう 作る か 決 める 公 開 する 実 際 に 作る 次 の 開 発 へ 開 発 計 画を 立 てる
  12. 何を作るか決める 具体を詰める。 • どのレシピサイトをサポートする? • XX倍のXXに入る数値の範囲は? 少数や分数は? • 利用されるのは日本だけ? • アクセス制限は必要? どう定義する?

    • などなど… 22 機能要件という。エンドユー ザーが直接触る部分のあ るべき姿を定義する。 非機能要件という。エンド ユーザーが直接触らない 部分でシステムがどう動作 すべきかを定義する。
  13. 計画を立てる 28 優 先 順 位を 決 める 何を 作る

    か 決 める どう 作る か 決 める 公 開 する 実 際 に 作る 次 の 開 発 へ 開 発 計 画 を 立 てる
  14. どう作るか決める 36 優 先 順 位を 決 める 何を 作る

    か 決 める どう 作 る か 決 め る 公 開 する 実 際 に 作る 次 の 開 発 へ 開 発 計 画を 立 てる
  15. どう作るか決める バックエンド: スクレイピングの部分だけコードを書いて、倍量計算はAIさせたらいいの では? • いい感じに計算してくれそう(品質高め?) • GPTなどAIサービスをファインチューニングする場合、月 3000円以上かかることが発覚。(費用オーバー 確定)

    • 自分のPCで機械学習モデルをファインチューニングする場合、 PCのスペックが足りない +不慣れ(納期 オーバーの可能性大) →費用(C)と納期( D)のほうが品質( Q)優先順位が高い ので、AIは使わないことにし た。 (ただし、1回作りきってから「やっぱAIのほうがいいな」となったらAIに乗り換えを検討す る) 40
  16. どう作るか決める インフラ: AWS • フロントエンドはCloudfrontとS3で管理 • バックエンドはECS on Fergate vs

    ECS on EC2 vs Lambda vs LambdaとAPI Gatewayの組み合わせ ◦ 費用とやりたいことで決めた。 ◦ 費用のざっくり計算は ざっくりAWSを利用。 ◦ 費用の面でEC2とECS on Fergateは候補から外した。 ◦ 「攻撃っぽいアクセスがあったら遮断できるようにする。」は Lambdaだけではできない。 ◦ API GatewayとLambdaに加え、AWS WAFが必要。 ◦ AWS WAFを使うと費用オーバーになるが、スクレイピング先のサイトに迷惑がかからないよう AWS WAFを利用することにした。 42
  17. 実際に作る 44 優 先 順 位を 決 める 何を 作る

    か 決 める どう 作る か 決 める 公 開 する 実 際 に 作 る 次 の 開 発 へ 開 発 計 画を 立 てる
  18. 実際に作る 50 優 先 順 位を 決 める 何を 作る

    か 決 める どう 作る か 決 める 公 開 する 実 際 に 作 る 次 の 開 発 へ 開 発 計 画を 立 てる 作りながら見えてくることも たくさんあるので、 随時計画を調整する
  19. 公開する 55 優 先 順 位を 決 める 何を 作る

    か 決 める どう 作る か 決 める 公 開 す る 実 際 に 作る 次 の 開 発 へ 開 発 計 画を 立 てる
  20. 次の開発へ 60 優 先 順 位を 決 める 何を 作る

    か 決 める どう 作る か 決 める 公 開 する 実 際 に 作る 次 の 開 発 へ 開 発 計 画を 立 てる