メインコンテンツへスキップ
見出し画像

AIで作ったアプリを人に使わせる怖さ――『#100日チャレンジ』から考える個人開発のリスクと覚悟

    ◾️アプリは、作ってからが怖い

    AIのおかげで、非エンジニアでもアプリを作れる時代になった。

    大塚あみ氏の『#100日チャレンジ 毎日連続100本アプリを作ったら人生が変わった』は、その象徴のような一冊である。

    大塚氏はChatGPTを使いながら、100日間連続で毎日1本アプリを作り続けた。完璧なものばかりではなかったが、ひたすらコーディングし、公開し、反応を受け取りながら前に進んでいく姿には、AI時代のものづくりの熱気がある。

    私もここ数か月、AIを使っていくつかのWebアプリを作ってきた。ホワイト企業ナビ、日本語クリアチェッカー、財務三表ビジュアライザー、デスク姿勢コーチ。会計、転職、健康に関わる困りごとを解決したいと思って作ったものだ。

    しかし、アプリは作ってからが怖いと実感した。

    テキストから成る記事なら、誤字があっても直せばいい。表現が少し強すぎたと思えば、該当箇所を書き換えれば済む。もちろん記事にも責任はあるが、修正は比較的早い。

    だが、アプリは違う。不具合が起きれば、ユーザーの入力内容や判断に影響する。原因を探し、コードを直し、動作確認し、再公開する必要がある。しかも個人開発なら一人でやらなければならない。

    ◾️「直したつもり」では済まされない

    公開したアプリの責任をAIは引き受けてくれない。そのことを痛感したのが、日本語クリアチェッカーの診断履歴に関する不具合だった。

    本アプリは、文章を入力すると、AIが読みやすさや表現のクセを診断する。

    ところがリリースしてしばらく経った頃、ふと思い立って自分でこのアプリを使ってみたら、全ユーザーの履歴が見える状態になっていた。

    リリース前、私は自分の履歴しか表示されないよう修正したつもりでいた。データベースのセキュリティ設定を有効化し、動作確認上も解消されたように見えた。

    不具合を見つけたのが、ゴールデンウィーク中に滞在していた旅先のホテルだった。たまたま手元にiPadがあったので、自宅のMacBookにリモート接続し、問題を調査。細かいアクセス制御が不完全だったことが分かった。

    ところが、5月11日、Supabase(データベース提供会社)からセキュリティ警告のメールが届き、問題が継続していたことが発覚。またもや修正。トータル10日間、ユーザーの方々にご迷惑をおかけしたことになった。

    後日、とある方から「影響を受けたユーザーに対して、何か能動的な対応を考えているのか」という趣旨のコメントをいただいた。

    胸が痛い指摘だった。ユーザーの方から見れば当然の問いである。

    本アプリではユーザー登録やメールアドレスの取得を行っていなかったため、誰が対象期間中に利用したかを特定できなかった。個別連絡はできない。だから記事で公告するしかない。

    理屈としてはそうなのだが、だからといって責任が軽くなるわけではない。ここで私は、個人開発アプリを公開する怖さを知った。

    ◾️Claudeは知っていた。でも止めてはくれなかった

    怖さは、セキュリティ不具合だけではない。AIを使ったアプリは、外部サービスの都合でも突然止まる。

    日本語クリアチェッカーでは、2026年6月にも別の不具合が起きた。テキストを診断しようとすると、「診断結果の解析に失敗しました。もう一度お試しください」というエラーが表示される状態になった。

    原因は、アプリ内で指定していたAIモデル名だった。AIアプリは、ユーザーの入力をAI会社のAPIに送り、その返答を受け取って画面に表示している。このとき、どのAIモデルを使うかを名前で指定する。ところが、そのモデル名が古い形式になっていたため、APIがリクエストを拒否していたのである。

    私はClaudeに、なぜこの問題を事前に防げなかったのかを尋ねた。するとこう答えた。

    「正直に言います。わかっていました。」

    モデルが定期的に更新され、古いモデル名が使えなくなるリスク自体は、Claudeも認識していた。実際、別のアプリではモデル名を一つの設定ファイルにまとめる対策も取っていた。しかし、日本語クリアチェッカーではその対応が漏れていた。

    このやり取りは象徴的だった。複数のアプリ全体を見渡し、「このアプリにも同じリスクがありますよ」と親切に助言してくれるわけではない。

    この種のリスクは、非エンジニア向けの教材には出てこない。APIの呼び出し方は教えてくれる。環境変数の設定も説明してくれる。しかし、「AIモデル名はある日使えなくなり、本番アプリが突然止まる」という運用上の怖さまでは書かれていない。

    AIでアプリが作れる時代になったことで、私たちは基礎を学び切る前に、本番運用の失敗へ到達できるようになってしまった。

    結局、モデル名を更新し、アプリを再デプロイした。さらに、次回は一か所を書き換えれば済むよう、モデル名を設定ファイルにまとめた。

    AIは強力な相棒である。しかし、公開したアプリを動かし続ける責任までは引き受けてくれない。

    ◾️名前ひとつでアプリは凶器になる

    他にもリスクはある。アプリの名前やコンセプトだ。

    私が作った「ホワイト企業ナビ」は、企業の口コミや決算資料をもとに、転職時の判断材料を整理するアプリである。実は当初、このアプリには「ブラック企業回避ナビ」という名前を付けようとしていた。

    しかし、考えてみればこれはかなり危うい。

    「ブラック企業回避ナビ」という名前だと、特定企業を危険判定するツールのように見えてしまう。

    アプリの出力は、あくまで公開情報やユーザーが入力した情報をもとにした参考情報であり、企業の違法性や安全性を断定するものではない。にもかかわらず、名前が強すぎると、ユーザーにも企業側にも誤解を与える可能性がある。

    そこで名前を「ホワイト企業ナビ」に変えた。企業を断罪するツールではなく、転職時の判断材料を整理し、働きやすい職場を探すための参考ツールとして位置づけ直したのである。

    さらに、利用規約も用意した。本サービスは特定企業の安全性、優良性、違法性を保証・断定するものではないこと。出力結果は参考情報にすぎないこと。最終判断はユーザー自身が行うこと。画像やPDFの扱い。OpenWorkとは無関係であること。そうした点を明記した。

    正直、最初は「個人開発アプリにここまで必要なのか」と思う気持ちもあった。しかし、ビジネス現場の判断に触れるアプリを公開するなら、必要不可欠だった。

    サービス名の危うさ、出力結果の扱い、ユーザーが誤解する可能性、データの保存範囲、外部サービスとの関係性。それらについて人間がリスクを察知し、問いかけない限り、AIは「確かに問題があります」と答えてくれない。

    ◾️作れる時代に、リスクも降ってきた

    『#100日チャレンジ』を読むと、不完全でもアプリを外に出し続けることの力を感じる。自分一人で遊ぶために作るのではなく、Xで公開し、周囲の反応を受け取りながら作り続けたからこそ、100本のアプリは単なる練習ではなく、人生を変える挑戦になった。

    一方で、私が最近ぶつかっているのは、その先にある現実である。

    アプリを外に出せば、誰かが使う。ときには不具合が起き、謝罪が発生する。リスクだらけだ。これは、AIでコードが書けるようになったからこそ、非エンジニアにも降ってきた責任なのだと思う。

    個人開発とは、ただアプリを作ることではない。規約を書き、リスクを減らすための予防線をはる。それでも思いもよらない不具合に出くわし、修正し、謝り、次に同じことが起きないように仕組みを整えることでもある。

    「AIでアプリを作れる」という明るい話だけではなく、その先で何が起きるのかも書いておきたかった。これから同じようにアプリを作ろうとする人が、私と同じ場所で転ばずに済むように。

    この記事が参加している募集

    あなたへのおすすめ