一人でもプロダクトは出せる:OPCソフトウェア開発の実践
更新

一人でもプロダクトは出せる:OPCソフトウェア開発の実践

しばらく、自分のプロダクトを作っている。Arrange Life、スケジュールカレンダーだ。

最初のとても単純なカレンダー要件から、凡例、AI Agent、Skills を足し、Web、App、テスト、リリース、データ分析まで進むうち、はっきりしてきたことがある。

AI が本当に変えるのは、コードを書く速さだけではない。一人がソフトウェア生産の全ライフサイクルを通せる可能性だ。

以前、本番に耐えるプロダクトを出すには、多くの役割が要った。プロダクト、デザイン、フロント、バック、テスト、運用。

今、一人が Coding Agent、Skills、成熟したクラウドサービスを持てば、その仕事の大部分をカバーできる。

このやり方を、OPC(One Person Company)ソフトウェア開発 として理解している。

この記事は理論枠ではない。自分のプロダクトで穴に落ちたあと、沈殿した経験だ。


1. OPC の起点:先に Idea を探さない。自分の痛点を探す

Arrange Life を作った最初の理由は、とても単純だった。

市場のカレンダープロダクトに不満だった。

とても小さな機能でも、既存プロダクトが解けず、自分を困らせ続けるなら、自分で解く価値があるかもしれない。

たとえば欲しかったのは:

  • 月ビューと年ビューが、予定をもっと直感的に表すこと
  • カレンダーが凡例を持ち、日付が冷たい数字だけではないこと
  • 予定と生活を本当に理解する Agent
  • 将来は、カレンダー能力そのものを、他の Agent が呼べる Skills にすること

これらは伝統的なカレンダーが最優先で気にすることではないかもしれない。だが 自分の本物の需要 ではある。

OPC では、これが特に大事だ。

会社は KPI、予算、組織目標に押されてプロダクトを作る。一人で作るとき、最終的に稼げるかどうかさえ分からないことが多い。

長く続けさせるのは、たいてい:

この問題は本当に自分を困らせる。ユーザーがまだいなくても、良くし続けたい。

興味と本物の痛点は、OPC にとっていちばん安く、いちばん長持ちする燃料だ。


2. 最初の OPC で、新しい市場を気軽に発明しない

本物の痛点を持ったあと、もう1つビジネス判断が要ると思う。

この需要に、すでに誰かがお金を払っているか?

初めて OPC をする人には、市場で検証済みの領域 を勧める。

カレンダー、ToDo、ノート、生産性ツールには、成熟したプロダクトと安定した有料ユーザーがいる。

それはとても大事な事実を意味する。

需要そのものを、自分が証明する必要はない。

証明すべきは:

既存市場の中で、誰もよく解けていない一片を見つけ、より良くできるか?

ゼロから新しいカテゴリを作るのとは、リスクがまったく違う。

経験はこうだ。

成熟市場 + 検証済みの支払い意思 + 自分の実痛点 + 明確な差別化 は、しばしば良い OPC の起点になる。

本当に良い新しい需要を見つけたら、もちろん行けばいい。

ルールではない。プロダクトを作ったあとの経験だ。

最初は創造性をできるだけ守れ。存在しないかもしれない市場の検証に、早すぎる燃焼をしない。


3. OPC でもっとも足りない資源は Token ではない

プロダクトを決めたあと、最初に考えたのは技術の先進さではなかった。

システム全体を、できるだけ安く、単純に、保守少なくするにはどうするか。

OPC の最大の問題は技術不足ではない。時間と気力の不足だ。

成熟した基盤があるなら自作しない。コミュニティとクラウドの低コストサービスを、できるだけ使う。

自分の実践では、成熟したホスティング、デプロイ、CDN、ドメイン基盤を厚く使い、DevOps をできるだけ外に出している。

同じ原則は Coding Agent にも当てはまる。

条件が許すなら、本当に大事なソフトウェア仕事には、より強く安定したモデルを使う。

理由はリーダーボードではない。とても実務的な問題だ。

半日もがいて解けないと、失うのは数時間だけではない。続けたいという興味そのものかもしれない。

OPC は正のフィードバックに強く依存する。

要件が終わる → 嬉しい → 最適化したくなる → ユーザー反応が良い → 続く。

このループが、価値の低い Debug で途切れると、疲れやすい。

だから OPC のコスト最適化は、「全部いちばん安いものを選ぶ」ことではない。

本当に最適化すべきは:

単位時間で、使える結果を得るコスト。


4. Coding Agent を裸で走らせない:ソフトウェア開発を Skills にする

Idea、開発環境、Coding Agent を持ったあと、人を分けるものが現れ始める。

Skills。

毎回その場で AI に言わない。

この要件を実装して。

代わりに、ソフトウェア開発のやり方を Skills に蒸留し、要件が現れてから公開されるまでに何を通るべきかを Agent に知らせる。

今認めているライフサイクルは、だいたいこうだ。

Idea → Brainstorm → PRD → UED → 技術設計 → 開発 → テスト → 結合 → リリース → データ観察 → 次のイテレーション

だが、これらのステップを Skills にするだけでは足りない。

最終的に達成すべきは Loop Engineering だ。

つまり、要件からコードへの一方通行パイプラインを Agent に実行させるのではない。渡すのは:

開発 → テスト → 問題を見つける → 直す → 再テスト → 検証

という、自己収束する工学ループだ。

Skills が答えるのが:

「Agent はどうソフトウェア開発をすべきか?」

なら、Loop Engineering が答えるのは:

「Agent はどうやって正しくできたかを知り、間違えたあと自分を直すのか?」

これが、Coding Agent が「コード生成器」から「エンジニア」へ移る鍵の一歩だ。


5. Brainstorm:要件が来た瞬間にコードへ走らない

これはフロー全体でとても大事な一歩だ。

要件が来たら、最初にすべきはコーディングではない。Brainstorm だ。

少なくとも3つ。

第一に、競合を調べる。

他者はどう解いているか。成熟プロダクトはなぜこう設計しているか。

第二に、オープンソースの解を探す。

コミュニティに成熟実装があるなら、Agent に車輪の再発明をさせない。

時間を節約し、より大事なのは安定性が上がること。

第三に、AI に思考を広げさせる。

人間のアイデアは、しばしば一文だ。

良いモデルはその一文を広げられる。

どのシナリオが欠けているか。エッジケースは何か。別のインタラクションはあるか。成熟プロダクトは普通どう解くか。

だから Brainstorm が本質的にやることは1つ。

いちばん安い段階で、誤りと漏れをできるだけ露出する。

コードを書いたあとに方向が違うと分かるのが、いちばん高い。


6. PRD:User Stories は必須

Brainstorm のあと、PRD に入る。

モデルが PRD を書くこと自体は、もう難しくない。本当に大事なのは:

PRD を、AI が AI のために書いた長文にしない。

AI は特に、数千語・数十節の文書を生成したがる。

内容は正しくても、読んだあと「何をすべきか」が分からなくなる。

だから PRD に User Stories を残すことを、特に勧める。

たとえば:

月ビューをよく見る人として、日付詳細に毎回入らず、月ビューでその日の重要な予定を直接見たい。

こういう一文は、ときに数百語の要件説明より価値がある。

一目で分かるからだ。

誰の、何の問題を解いているか。

User Story は、長い AI 文書の認知負荷と戦う、私のやり方だ。


7. UED:最初は真剣に設計し、あとはシステムに働かせる

UED は面白い段階だ。

プロダクトが「見栄えがいいか」は、実は2人に効く。

ユーザーと、開発者自身。

毎回開いて自分の作ったものが醜いと感じると、続ける欲望は時間とともに落ちる。

だからプロダクトの初期、自分のデザインシステムを作るコストは払ってよい。

専門の AI デザインツールでも、成熟した UI/UX Skills と Design System でもいい。

だが本当に大事なのは特定のツールではない。できるだけ早く答えることだ。

自分のプロダクトは、実際どう見えるべきか?

主色、フォント、角丸、余白、コンポーネントのスタイル、プロダクトが伝えたい感じ。

たとえば Arrange Life はティール寄りの視覚システムを使い、カレンダーを開いたとき「未完了タスクの山」の圧ではなく、リラックスした自然さを出したかった。

このシステムが立ったら、App、PC、Web は揃えるべきだ。

より大事なのは:

Design System が安定したら、後続の要件は再設計しなくてよい。

Agent に、既存のデザインシステムの中で伸ばさせる。

OPC の長期保守コストは、それでかなり下がる。


8. プロトタイプのためのプロトタイプをしない:ASCII で足りることが多い

ここに、とても陥りやすい罠がある。

AI は今、HTML プロトタイプをとても簡単に出せる。だから PRD 段階で、とても完成度の高いインタラクティブページを作りたくなる。

だんだん感じている。

たいてい、要らない。

高忠実度プロトタイプは、色、アニメーション、余白、ボタン位置のような細部に、早すぎる時点で引きずる。

要件そのものが焦点を失う。

多くの要件では、単純な ASCII スケッチで足りる。

┌──────────────────────────┐
│        September         │
├────┬────┬────┬────┬─────┤
│  1 │  2 │  3 │  4 │  5  │
│    │Meeting│  │Trip│    │
├────┴────┴────┴────┴─────┤
│ Today                     │
│ 10:00 Product discussion  │
│ 15:00 Gym                  │
└──────────────────────────┘

本当に確認したいのは:

情報はどこか。ユーザーはどう操作するか。ページはどう遷移するか。

それが確認できたら、本物のページ開発へ飛び、本物の環境でインタラクションを直すほうが、しばしば速い。

これは大事な OPC 原則だ。

各段階では、「ちょうど足りる」表現精度を使う。

不要なトークン、時間、注意を先払いしない。


9. 技術設計:Agent に、毎回あなたの基準で考えさせる

開発の前に、技術設計を出す側にいる。

フロントとバックは一緒でも、分けてもよい。

複雑な要件では分けたい。Agent の焦点が保ちやすい。

より大事なのは:

自分の技術設計テンプレートを作ること。

最低限、はっきりさせる。

  • この変更は何か
  • どのモジュールに関わるか
  • データ構造はどう変わるか
  • インタフェースはどう調整するか
  • 例外はどう扱うか
  • 互換性はどう保証するか
  • リスクは何か
  • どうテストするか
  • どうリリースするか

これらはだんだん、自分の Skills になる。

また、技術文書はコードと同じリポジトリに残すべきだ。

何年後、本当に価値があるのはコードだけではない。

なぜこう設計したか。

コードは将来の Agent に「今何か」を伝える。文書は「なぜこうなったか」を伝える。次の Agent セッションへ知識が渡る基盤だ。


10. テストは後付けではない。Loop Engineering の核だ

これは、ますます重視している点だ。

Coding Agent が強くなるほど、コードを書くこと自体が、プロセス全体の相対的に安い部分になっていく。

本当に時間を食いはじめているのは:

検証。

コードは正しいか。

既存ロジックを壊したか。

フロントとバックは合うか。

ビジネスチェーン全体はまだ動くか。

だからテストを、「開発のあと一度チェックする」と理解してはいけない。

実際には Loop Engineering を可能にする基盤 だ。

いちばん単純なループ:

        ┌──────────────┐
        │  Requirement │
        └──────┬───────┘
               ↓
        ┌──────────────┐
        │ Implementation│
        └──────┬───────┘
               ↓
        ┌──────────────┐
        │     Test      │
        └──────┬───────┘
               ↓
           Pass ?
          ↙      ↘
        No        Yes
        ↓          ↓
      Fix       Verify
        │
        └──────────────→ Test

以前、このループでいちばん高かったのは「人間」だった。

テストが問題を見つけたあと、エンジニアはログを読み、箇所を特定し、コードを変え、再実行する。

今、これらのステップは Agent がやり始められる。

だから要件を Coding Agent に渡したあと、こうできる。

実装 → テスト → 失敗を見つける → 原因を分析する → コードを変える → 再テスト → 通るまで。

自動テストの価値は、もはや「品質保証」だけではない。

実際にはこうなる。

Agent のフィードバック信号。

テストが無いと、Agent はこう思うことしかできない。

「コードは書き終わった。」

テストがあれば、こう知れる。

「正しいことをした。」

この2つの状態は、とても違う。


11. ループが完走するほど、OPC のイテレーションは速くなる

だから成熟した OPC プロジェクトは、異なる層のテストをだんだん埋めるべきだ。

含むのは:

ユニットテスト、API テスト、UI 自動化、そして最後にエンドツーエンドテスト。

それらは異なる層で、Agent にフィードバックを渡す。

ユニットテストが伝えるのは:

この関数は正しく書けたか?

API テストが伝えるのは:

サービス間の契約は壊れたか?

UI 自動化が伝えるのは:

本物のユーザー操作はまだ完了できるか?

エンドツーエンドが最後に答えるのは:

ユーザーストーリー全体はまだ成り立つか?

これらの能力がだんだん立つと、面白い結果が出る。

プロジェクトが成熟するほど、新しい要件の開発は速くなることがある。

Agent が毎回「推測」に頼らなくなるからだ。

大胆に変え、既存のテストシステムに言わせる。

何が壊れたか。

それから自分で直す。

だから良いテストシステムは、OPC にとってコストではない。

むしろ逆だ。

後期 OPC の、いちばん大事な加速装置の1つ。


12. だが毎回フルテストスイートを走らせない

Loop Engineering には、とても現実的な問題がある。

コスト。

プロジェクトに数千のテストが溜まり、ボタン1つの変更で全部再実行させたら、ループはすぐに遅くなる。

だから Agent には、もう1つ能力が要る。

Impact Analysis。

この Change Set に基づいて判断する。

何を変えたか → どのモジュールが影響を受けるか → どのテストがそれらのモジュールに関係するか → 今回どれを走るべきか。

より妥当なフローは:

変更 → Impact Analysis → 関連テスト → 失敗分析 → 修正 → 再テスト → 検証

ではなく:

変更 → 全部走る

ではない、ということだ。

これが、Loop Engineering と伝統的 CI の大事な違いだとも見ている。

単純な自動化ではない。Agent に変更を理解させ、検証戦略を動的に決めさせること。

そうして初めて、ループは十分速くなる。

ループが十分速いときだけ、人間の創造性は長い待ちで削られない。


13. 結合:Computer Use を Agent に渡す

Browser Use と Computer Use が成熟するにつれ、以前は人を大きく食っていた結合フェーズも、Agent に渡し始められる。

理想の状態:

ローカル環境 → 自動テスト → ローカル結合 → preprod 環境 → 全鎖結合

ローカルはいちばん速いフィードバックをくれる。問題はそこで先に解く。

安定したら preprod へ出す。

もう1つ見るべきことがある。

現代のプロダクトに、アプリは1つだけということは少ない。

Web、App、API、Agent サービス、データベース、その他サービスが同時にあるかもしれない。

だからテストは、こう聞いてはいけない。

「今日変えたアプリは正常か?」

聞くべきは:

「この変更の影響を受ける鎖全体は正常か?」

これも Impact Analysis だ。

Agent はテストを実行するだけではない。システム間の依存をだんだん理解する。


14. リリース:「出荷して」と Agent に言わない

リリースも Skill になるべきだ。

Agent に:

出荷して。

と言われて、すぐ操作し始めてほしくない。

正しいやり方は:

先に Release Plan を生成する。

この Change Set がどのアプリに関わるか、依存は何か、リリース順は何か、どのサービスを一緒に上げなければならないか、リリース後に何を検証するかを分析する。

確認のあと、自動リリースを実行する。

つまり:

Plan → Review → Release → Verify

ではなく:

Release → Pray

ではない。

システムが複雑になるほど、これは特に大事だ。

本当に危ないのは、しばしばコードが間違っていることではない。

A は出した、B は忘れた。データベースは変わったがサービスは同期していない。クライアントが依存する新しい API がまだ生きていない。

OPC には、後ろを拾う人がいない。だから:

プロセスそのものが、安全網でなければならない。


15. 公開は終わりではない:本物のユーザーをループに入れる

公開のあと、ソロ開発者が見落としやすい部分がある。

データ。

Day 1 からとても複雑に作る必要はない。

だが本物のユーザーが付いたら、だんだん知るべきだ。

ユーザーは何人か。

DAU はだいたいどれくらいか。

どのページが使われているか。

どの機能は触られていないか。

ユーザーはどこで落ちるか。

Web、PC、App は、プロダクト分析システムをだんだん入れられる。

要件を決めるとき、もうこれだけではない。

「この機能は良いと思う。」

代わりに持ち始める。

自分の痛点 + ユーザーフィードバック + 行動データ。

ここで、先に話したループがもう1層広がる。

最初にあったのは 開発ループ:

Code → Test → Fix → Verify

外へ、ソフトウェア生産ループ:

Requirement → Development → Test → Release

最後に本物の プロダクトループ:

Pain → Idea → Brainstorm → PRD → Design → Development → Test → Release → Data → Feedback → New pain

この3層のループが、今 OPC を理解する大事なモデルだ。

flowchart TB
  subgraph outer["Product Loop: closer to real users"]
    A[Pain] --> B[Idea] --> C[Brainstorm] --> D[PRD] --> E[Design] --> F[Dev] --> G[Test] --> H[Release] --> I[Data] --> J[Feedback] --> A
  end
  subgraph mid["Software Production Loop: stable delivery"]
    K[Requirement] --> L[Dev] --> M[Test] --> N[Release]
  end
  subgraph inner["Dev Loop: correct code"]
    O[Code] --> P[Test] --> Q{Fail?}
    Q -->|Yes| R[Fix] --> P
    Q -->|No| S[Verify]
  end

内側のループが、コードの正しさを保証する。

中間のループが、安定した納品を保証する。

外側のループが、プロダクトを本物のユーザーへ動かし続ける。


16. まだ終わっていない一片:支払い

プロダクトは最終的に、1つの問いを避けられない。

どう稼ぐか。

サブスク、買い切り、付加サービス、AI トークンパック、それとも別のモデルか。

支払いシステムはどう設計するか。

プラットフォーム横断の支払いをどう揃えるか。

無料ユーザーと有料ユーザーの境界はどこか。

これらの問いは、まだ十分に掘っていない。

だからこの記事は、「完成度」のために正しそうな答えを出さない。

OPC を深くやるほど感じていることもある。

プロダクトを出すことは卒業ではない。入学かもしれない。

ソフトウェア生産の問題が AI で大きく減ったあと、残るのはユーザー、成長、商用化、信頼、コンプライアンス……

それらが、OPC の本当に難しい部分かもしれない。


結び:本当に大事なのは、自分のループを作ること

Arrange Life をこのあいだやって、ますますはっきりしたことがある。

AI がもたらす最大の変化は、コードをどれだけ速く書くかではない。

以前は多くの役割が揃わないとできなかったことを、一人が初めて串に通せる可能性を持ったことだ。

Idea を持てる。

AI と Brainstorm できる。

PRD と User Stories にできる。

UI を設計できる。

技術設計を出せる。

コードを書ける。

テストを書ける。

ブラウザを開いて自分で結合できる。

問題を見つけて自分で直せる。

テストを再実行できる。

preprod に出せる。

影響を分析できる。

Release Plan を出せる。

本番に出せる。

最後に本物のデータで、ユーザーが本当に好きかを観察できる。

AI はプロダクトそのものを単純にはしなかった。

ただ普通の人に、以前は会社だけが持てた「仮想ソフトウェアチーム」を、初めて持たせた。

だが今、ますます感じている。OPC だと本当に残すべきなのは:

「どの AI ツールを使ったか」ではない。

ツールは変わる。モデルも変わる。

本当に残すべきは3つ。

Skills、Context、Loop。

Skills が Agent に伝えるのは:

どうやるべきか。

Context が Agent に伝えるのは:

このプロダクトが、なぜこう作られたか。

Loop が Agent に伝えるのは:

正しくできたかをどう知るか。間違えたあと、どう自分を直すか。

この3つがだんだん溜まると、持っているのは Coding Agent だけではない。

自分の ソフトウェア生産システム を持っている。

そのシステムは、プロダクトを増やし、穴に落ち、Skills が厚くなるほど強くなる。

最初のプロダクトは遅いかもしれない。

2つ目は、かなり速くなる。

3つ目は、もうゼロから始まらないかもしれない。

本当に再利用されるのは、コードだけではなかったからだ。

過去のソフトウェア工学の経験が、AI が実行できる能力になり始めている。

AI 時代の OPC が、本当に楽しみな理由はそこだと思う。

よくある質問

OPCソフトウェア開発とは?

OPC(One Person Company)ソフトウェア開発とは、一人が Coding Agent、Skills、成熟したクラウドサービスを使い、プロダクト・デザイン・開発・テスト・リリース・運用という一連のソフトウェア生産の大半を担うやり方です。

OPCはどこから始めるべき?

最初に Idea を探さない。自分を長く困らせている本物の痛点を探す。初めての OPC なら、市場で検証済みの領域を選ぶ。成熟市場、支払う意思が確認されている、自分の実痛点、明確な差別化。

OPCでもっとも足りない資源は?

Token ではない。時間と気力。単位時間で使える結果を得るコストを最適化する。成熟した基盤は自作しない。本当に重要な仕事では、より安定したモデルを使う価値がある。安価な Debug にフィードバックループを壊されないため。

なぜソフトウェア開発を Skills にするのか?

毎回「これ実装して」と一から頼まない。Idea → Brainstorm → PRD → UED → 技術設計 → 開発 → テスト → 結合 → リリースを Skills に落とす。最終形は Loop Engineering。開発、テスト、問題発見、修正、再テスト。Agent が自分で収束できるようにする。

OPCで本当に残すべきものは?

どの AI ツールを使ったかではない。ツールもモデルも変わる。残すべきは Skills、Context、Loop。仕事の進め方、このプロダクトがこうなった理由、正しくできたかをどう知るか、間違えたらどう直すか。

评论

加载中…
评论通过 GitHub 安全存储,提交后稍等片刻显示。