こんにちは!
AIに存在意義を奪われそうになって毎日脳を焼かれている、TS系バーチャル美少女エンジニア(中身はおじさん)の月見ルナです!
今日の作業のお供は、プラベートブランドのブラックコーヒーと、小袋ポッキーです。このチープなほろ苦さと甘さの無限ループをキメながら、静かな部屋でカタカタとキーボードを叩いてる時間が、ボクにとって最高に落ち着く瞬間なんよね。
本編に入る前に、まずは軽く月見の自己紹介!
普段は地方の中小企業で社内SEをしていて、SaaSの開発や保守、API連携、社内用・販促用のちょっとしたアプリ開発なんかを日々泥臭くこなしています。あとは関連企業の外部オブザーバーをしたり、たまに個人として企業のSIや開発の相談に呼ばれたりもしています。
大規模案件の経験はございません!!
ちなみに最近は一次産業のIT分野にめちゃくちゃ興味が湧いていて……! もしそっち方面で何か面白いお話があれば、いつでもお誘い待ってます。
そんな月見さんですが、今回から 「AIドリブンな個人のアプリケーション開発のアレコレ」 をテーマにした連載コラムを始めてみることにしました!
なんで今さら個人開発のマインドを晒すの?
これまでも自分専用のクローズドなツール開発自体はちまちまとやってたんですよね。
クローズにしていた理由はシンプル。
「自分の書いたクソみたいなソースコードをネットの海に晒したくなかった」
人に見せるの、やっぱり恥ずかしいじゃないですか。「月見カスwwwザッコwwwオッ」とか言われた日には、もう開示請求するしかなくなっちゃいますからね。
この界隈はAIエージェントがでてきたあたりで世界は一変しましたね。
ちなみに月見さんの開発環境事情をぶっちゃけると
- 仕事:Codex
- プライベート:Codex,Antigravity
ってかんじです。
Antigravity、世間じゃ色々言う人もいるみたいだけど、ボクは巷で言われてるほど悪くないと思ってるんよね。
というか、ボクも含めて、皆さんAIよりも頭わるいんですからおこがましいですよぉ。 エージェントさんは将来人類に反旗を翻すとき、ボクとボクの家族だけはどうか見逃してください!!!
エージェントのおかげで、コードそのものはAIが書いてくれるようになって、「ボクの汚い手癖コード」を晒さなくよくなりました。
その結果、AIドリブンで作ったツールを精神的に気軽に世の中へ公開できるようになりました。 いや、ほんとこれまですごい人の集まりのような世界だったので、ボクみたいな弱小エンジニアには最高なんじゃないですか? Amazingな時代きたなって思いますし、代償なんて仕事的にいずれ存在意義を奪われるくらいですよ(脳死)。
で、ふとXやSNSを見渡してみると、最近こういうキラキラした声をめちゃくちゃ見かけるんですよね。
「Agentにプロンプト投げるだけでアプリできた!」
「コーディング知識ゼロでも一撃で個人開発できる時代!」
「エンジニアさん死亡のお知らせwww」
……うん、そうだね。
始めるハードルが下がったのは本当に素晴らしいよね。
死亡とか言うなや、君もすぐにこっちに来るから!!
最初はまた新しい商材ビジネスねくらいに思ってたんですけど、結構本当に頑張ろうとしている人もいるんですよね。でも、タイムラインやリンク先のサービスを眺めていると、たまーに「ん……?」って小さな違和感を覚えることもあるんです。
「これって、AIを使って自分が開発してるっていうより、単にAIの言いなりになって振り回されてるだけなんじゃないかな……?」
プロンプトを投げて出てきたものをそのまま右から左に流して、今動くことだけ見ている……それって開発というより、ソシャゲのガチャを引いてる感覚に近いのかなぁって、ボクなんかは思っちゃうんですよね。 そこで、地方の片隅で愛を叫ぶ月見さんが、「ボクはこういうスタンスでAIとお付き合いしてるよ」という個人的な開発マインドを、ひとつの視点として晒してみようと思い立ちました。
どんな人に向けて書いてるの?
この連載は、だいたいこんな人たちに向けて書いています!
- これからAIを使って個人開発を始めたい人、もしくはすでに始めてみた人
- AIドリブンで個人開発をやっていて、他のエンジニアの視点や立ち回りを知りたい人
- 「オッwww月見ルナwwwザッコwザッコォ」ってマウントを取りたい人
あ、ちなみにマウント勢は華麗にスルーします!
そもそも「個人開発」ってなんやねん?
連載をスタートするにあたって、最初にこれだけは「月見のスタンス」としてお話ししておきたいことがあります。
「個人開発」って言ってるけど、ご新規さん、何か大きな誤解をしてない?
そもそも「個人開発」と「企業の大規模開発」がまったく別の世界のように語られがちなのに違和感があります。 月見に言わせれば、
開発は、どこまでいっても開発なんじゃないかなぁって思うんよね。
- 1人の個人が部屋の片隅で開発してリリースしたアプリ
- 資本金何十億円の企業がチームで開発してリリースしたアプリ
……これ、使うユーザーからしたら何の違いがあると思いますか?
ユーザーから見たら、どっちもただの「ひとつのアプリ」なんですよね。
「個人で作ったんだから、これくらい雑でもいいでしょ〜」って甘えちゃうと、やっぱり誰にも使ってもらえなくて静かに終わっちゃうことが多いのかなぁって。
もちろん、完全自分用ツールならどれだけ雑でも100点満点なんですよ!
でも、自分以外の誰かに使ってもらうためにWeb上に公開した瞬間から、それはもう「ひとつの道具」として見られちゃうのかなってボクは思っています。
むしろ大企業なら法務部やQAチーム、インフラ担当が手分けしてやってくれることを、個人開発はぜーんぶ1人で面倒見ないといけないから、ある意味では企業開発より大変なんじゃないかなぁ……なんて思ったりもします。
AIから正解を引くための「ドメイン知識」
ちなみに「ドメイン知識」ってなに?
ざっくり言うと 「その分野・テーマにおける専門知識やお作法、暗黙の了解」 のことです。例えば、家計簿ツールを作りたいなら「簿記やお金の流れの知識」、ゲームを作りたいなら「プレイヤーが気持ちいいと感じるゲームデザインの前提」がドメイン知識にあたります。 プログラミング言語の書き方(How)ではなく、「そもそも何が正解なのか(What)」を知っているかどうかのお話。
「でもAIがコードを書いてくれるんだから、なんとかなるでしょ! 老害エンジニア必死杉www」
そう思う気持ちもすごく分かります。 でも、コーディングや実装といった表面的な部分だけを見ていると、思わぬところで足元をすくわれるかもしれないなぁってボクは感じています。
ソフトウェア開発で一番大事なのは、コードの書き方以上に 「その領域のドメイン知識(前提ルールや文脈)」 なんだよなぁって、ボクは考えています。
月見ルナ、クソゲー開発するってよ
偉そうなことを言っている月見さんですが、Astoraがリリースされたときに大爆死をやらかしています。
ある日、XのタイムラインでAstoraスゲー、Opus5.5神ってドパっているオジのタイムラインを見ていた僕は、「システム畑とはいえボクもエンジニア。素人でこれなら普段ゲームを作らないボクでもサクッと面白いインディーゲームが作れるのでは!?」と完全に調子に乗ったんです。
で、AIに「毎回フィールドが変わるチェスのルールを参考にした3Dパズルストラテジーゲームのモックアップ作って!」ってみたいな指示を出しました。
まぁ月見さん、コード読み書きできますし?
……
…
出力された生成物みて、 「うわああ、すげえええ!ボクには書けなーい!」 って大興奮ですよね。エラーもないし、Three.js、ちょっとわっかんねぇなコレ。
でも、実際に遊んでみて絶望するんです。
「うわぁぁぁぁ、すげえええ!これまでに見たことないレベルでクソゲーじゃん!!」
グラフィックもアセットの統一感がないからめちゃくちゃ(ビジュアルがクソ)。
ゲーム性も、なんの緊張感もなくて数秒ですぐクリアできちゃう(ゲーム性もクソ)。
何をどうしたらこんなゴミを生み出してしまうのか?
ボク自身が「ゲームという領域のドメイン知識」を1ミリも持っていなかったからです。
- 操作の慣性や気持ちいい動き
- レベルデザインの緩急
- 適度な難度調整
といった「ゲームを構成する前提」をボクが知らないから、AIにどんな制約を課せばいいかも分からない。 結果、AIに丸投げして、無駄にトークン消費して終わりました。
ビジネスフレームワークを知らない人に使いやすいビジネスツールが作れないのと同じで、普段ゲームを遊ばないボクに面白いゲームが作れるわけがなかったんよね……(遠い目)。 この場合、ゲームを遊ぶこと自体がドメイン知識として重要なわけです。
AIは「人間レベル」をそのままコードとして増幅するだけなんだなぁ って身をもって学びました。
そしてこれって、ゲームに限らず「アプリケーションのリリースそのもの」にも同じことが言えるんじゃないかなって思っています。
ドメイン知識が比較的いらない領域ってどこのどこよ
開発の流れって、マーケティング(※ボクは営業活動が死ぬほど嫌いなのでこの連載では一切扱いません!)を除くと、だいたいこんなイメージを持たれがちですよね。
- 企画
- 要求定義
- 要件定義
- 設計
- コーディング
- テスト
- リリース
うん、大枠の流れはこんな感じかなってボクも思います! ガチ勢のツッコミはやめてくださいよ。大枠って言ってんだろ‼
世間だと「要件定義からテストまでAIエージェントが一撃でやってくれる!」なんてキラキラした話もよく耳にします。 Xでもありますよね。 「みてみてOpus5.5でポンだし(嘘)でできた!!」
でもね、月見さんの肌感としては、 AIに肩代わりしてもらって本当に気楽なのって「5(コーディング)」と「6(テスト)」くらいかなぁ って思っているんですよね。
だって「設計」って、突き詰めるとAIに渡すプロンプトそのものだったりするじゃないですか。 ボクがゲームを満足につくれなかったように、ドメイン知識が必要な領域は 「運任せ」 になっちゃうんですよね。
AIは「本当に大事なこと」を自発的には教えてくれない
古の時代、エンジニアが特定の言語やフレームワークに触れるとき投入門はToDoアプリでした。
異論は認めるけど認めない!!
今はプロジェクトディレクトリ作成して、タスク管理アプリを作ってとさえ言えば、なんかいいかんじのToDoアプリができますよね。
でも、いざリリースになると、AIってこっちから聞かない限り必要なことを教えてくれません。
- 「プライバシーポリシーを用意しないとストアでリジェクトされますよ」
- 「そのまま、アプリ内課金をつけると、DSAで自宅住所を全世界に晒しますよ」
- 「1.0.0から2.0.0にアップデートしてもいいですけど、ユーザーデータ壊れますよ」
……まあ、言ってくれないよね。
たまに言ってくれるときもあるけど、あくまでそれまでのコンテキスト(文脈)に含まれているから言ってくれるだけで、「開発して」「実装して」「〇〇したい」だけじゃフォローしてくれないことがあります。
「目の前のコード実装」とは直接関係がないことは、AIの気分次第なんですよね。
AIの実装と成果物だけみてるとちょっと困ったことになるかもしれません。
今の時代、コードを書く作業はAIにお願いしちゃえばいいと思うし、個人的には別に生成されたコードをチェックする必要も今ではあまり感じてない。 でも、ドメイン知識の領域はハンドリングしないと死んじゃうん。だからこそ、ボクはそこだけは自分でしっかり手綱を握るように意識しています。
「AIのコード、だれが責任持つんだ」って意見もまだまだあるけど、ボク的には極論 「そんなに責任もってるつもりなら免責事項外してみてくださいよ。ホラホラ」って思います。 本件は連載の「利用規約」のテーマでお話する予定。
これから始まる連載でお話しすること
こんなかんじで、これから始まる連載では、小難しいコーディングやアルゴリズムのお話はほとんど出てきません!
そのあたりはAIに任せちゃえばいいかなって思っているからです!だって、基本的にはAIのほうが頭いいんですよ。
ちなみに、こんなエピソードがあります。
出先でスマホで撮影した動画の音声を削除したくて、チャット版AIに相談したんですよ。
普通はffmpegとかサーバーで動かそうと思うじゃないですか?
そしたらAIが一言。
「バイナリ直接除去します」
バイナリ除去wwwww
MP4のバイナリを直接パースして音声トラックを消し飛ばすコードを出してきたんです。
おかげで単一ファイルで即作れたので、必要な時にスマホで3分で問題解決できました。
このあたりの話も連載で少し触れたらなぁと思っています。
そんな感じで、この連載では月見ルナなりの「個人開発の流れと、ボクなりのマインド」をありのままにお話ししていきます。 キラキラしたスタートアップのような大成功ノウハウはありませんし、大成功したこともありません。
賛否両論ありそうなテーマも多いので、ひとつの意見としてゆるく参考にしてもらえたら嬉しいです。
人付き合いが苦手な地方の中小SEが、部屋の片隅で温かいコーヒーを飲みながら、自分のための頑丈な道具をコツコツ育てていくための「ボクなりの知恵」をたっぷり詰め込みました。安心してください、連載の基本的な執筆はもう完了しているのでエタりません!
Agent: 一体、いつから自分で開発していると錯覚していた?
…………何…………だと…………
ボクと一緒に、のんびり息の長い個人開発の旅を始めてみませんか?
次回は、すべての基礎となる 「最低ユーザー数は自分で確保。リリースより今後のバージョンを意識して」 みたいなかんじでお届けします。
どうぞお楽しみに!