概要
AIを使って、いくつかアプリを作ってみた。
公開したものだけでも5本ほどあり、出していないものも含めると20本以上は作ったと思う。
最初は、AIを使えばアプリをどんどん作れること自体に面白さがあった。
実際、以前よりもかなり低いコストで形にできるようになった。
ただ、いくつも作っているうちに、少し見え方が変わってきた。
アプリを作れることと、価値のあるサービスを作れることは違う。
アイデアは思ったより価値になりにくい
アプリを作っていると、意外とネタが切れてくる。
正確には、アイデアがまったく出なくなるというより、出てきたアイデアの多くが、思っていたほど価値を持たないことに気づき始める。
「こういうアプリがあったら便利かもしれない」と思って作ってみる。
実際に動くものはできる。
しかし、それが継続的に使われるとは限らない。
この差はかなり大きい。
アイデアの段階では、それなりに面白く見える。
実装して動くようになると、達成感もある。
ただ、使われないアプリは、サービスとしてはほとんど価値を持たない。
アプリ自体より、使われる文脈が重要
アプリを作る過程には価値がある。
実装する中で、設計、UI、データ管理、認証、デプロイ、エラー対応などを学べる。
作りながら理解が深まるし、自分の技術の棚卸しにもなる。
また、実際にユーザーが使う体験にも価値がある。
使いやすい、楽しい、便利、続けたくなる。
そういう体験を作れたなら、そのアプリには意味がある。
一方で、作られたアプリ単体には、それだけでは価値が残りにくい。
動くものがある。
でも誰も使わない。
自分でも使い続けない。
そうなると、そのアプリは「作った経験」としては価値があるが、「サービス」としての価値はほとんどない。
これは少し厳しいが、個人開発を続けるうえで見ておいた方がいい現実だと思う。
サービスとして普及させるには別の努力が必要
アプリを作ることと、サービスとして広げることは別の作業だと思う。
作るだけなら、AIによってかなり楽になった。
しかし、使われるサービスにするには、別の努力が必要になる。
たとえば、誰に使ってもらうのかを決める。
継続して使う理由を作る。
使い始めるまでの摩擦を下げる。
見つけてもらう導線を作る。
改善を続ける。
場合によっては、発信やマーケティングも必要になる。
自分の場合、今のところそこに対する興味はあまり強くない。
アプリを作ることや、仕組みを理解することには興味がある。
しかし、サービスを広げるための活動には、まだあまり気持ちが向いていない。
ここは、自分の関心の置き場所として認識しておきたい。
AI駆動開発で重要になるもの
AI駆動開発では、実装そのものの難易度は下がる。
もちろん、すべてが簡単になるわけではない。
それでも、以前なら時間がかかった画面作成、簡単なCRUD、状態管理、デプロイ設定などは、AIの支援でかなり進めやすくなった。
その結果、重要になるのは「正しい意思決定」だと思う。
何を作るのか。
どの機能を入れるのか。
どこまで作るのか。
どの技術を使うのか。
どの設計にするのか。
AIの出力を採用してよいのか。
どこを直すべきなのか。
こうした判断をするには、エンジニアリングの理解が必要になる。
また、扱う領域への理解も必要になる。
ドメインを理解していなければ、AIが出したコードや仕様が正しいのか判断できない。
表面上は動いていても、実際の用途に合っていない可能性がある。
AIがコードを書くようになるほど、人間側には「何が正しいかを判断する力」が求められる。
これは元々エンジニアリングに必要だったものだが、AIによってより見えやすくなっただけかもしれない。
大規模開発では人間の判断がまだ重要
小さなアプリであれば、AIの支援だけでもかなり形にできる。
しかし、大規模な開発や既存システムの改修になると、AIだけで完結させるのは難しい場面が多いと思う。
既存の仕様がある。
過去の経緯がある。
影響範囲が広い。
テスト観点が多い。
関係者との調整がある。
障害を出せない制約がある。
こうした環境では、単にコードを書けることだけでは足りない。
仕様を読む力、影響範囲を考える力、設計を判断する力、レビューする力、既存の文脈を理解する力が必要になる。
AIは強力な補助になるが、少なくとも現時点では、すべての判断を任せられるものではない。
まとめ
AIを使うことで、アプリを作るハードルはかなり下がった。
ただ、いくつも作ってみると、アプリを作れることと、価値のあるサービスを作れることは別だと感じる。
アイデアは出せる。
実装もできる。
動くものも作れる。
しかし、それが使われるとは限らない。
作る過程には価値がある。
学習にもなる。
ポートフォリオにもなる。
自分の理解を深める材料にもなる。
ただ、サービスとして価値を持つには、ユーザーに使われる必要がある。
AI駆動開発では、実装力だけでなく、何を作るべきか、どう設計するべきか、AIの出力をどう判断するべきかが重要になる。
結局、人間側に必要なのは、エンジニアリングとドメインへの理解だと思う。