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

自分のためのツールを、人に使ってもらう"場所"に出した話|AIエージェント奮闘記 #4

    自分のパソコンで動くことと、誰かに使ってもらえることの間には、思ったより深い谷がありました。

    この回で分かること

    • 公開して初めて、この開発は「自分のため」から「使う人のため」に変わった

    • 最初に開いた本番は、真っ白だった。手元では一度も起きなかったこと

    • 4回かけて見えた、AIとの開発の「型」

    画像
    連載の縦糸の4段階。第4話は「届く」。Vercel で本番公開し、化粧品チェッカー編を結ぶ回

    前回まで3回かけて、化粧品の表記チェッカーを「動く」から「使える」、そして「信頼できる」へと育てるところまで来ました。第4話は、それを世に出した話——Vercel というサービスで本番公開し、自分以外の人にも触ってもらえる状態にする、化粧品チェッカー編の結びです。

    実を言うと、公開の設定そのものは、第1話で書いた最初の3日間の、その初日に済ませていました。その後に育てた分も、同じ場所に反映してあります。

    だからこの回は、手順の話ではありません。「出した」ことが、何を変えたかの話です。

    本番に出す——CDNとサーバーレスの二段構え

    公開そのものは、二段構えの仕組みになっています。

    画面を作っているファイル(HTMLやCSS、JavaScript)は、世界中に配信網を持つCDNというところから配られます。一方、AI——Claude API——とのやり取りは、その都度だけ動く小さなサーバー(サーバーレス関数)が、間に立って代行します。

    利用者のブラウザが直接AIを呼ぶのではなく、必ずこのサーバーを経由する作りです。

    これで、URLを知っていれば、誰でもブラウザからこのツールを開けるようになりました。いま本番に置いてあるファイルを確かめても、第3話で384件に増やした成分データベースも、テキストを貼り付けてチェックするモードも、ちゃんと入っています。

    もっとも、最初に開いた本番の画面は、真っ白でした。

    最初に開いた本番は、真っ白だった

    初めての公開コマンドが通り、払い出されたURLを開くと、画面には「Cannot GET /」という一行だけが出ていました。

    Vercel が、手元で動作確認するために置いていた小さなサーバー(Express)のほうを入口だと解釈してしまい、画面のファイルを配ってくれなかったのです。設定ファイルに「画面のファイルはCDNから、/api/check だけは関数へ」と振り分けを明示して、ようやく画面が出ました。

    画面が出ても、まだ動きません。AIを呼ぶための鍵を、本番の環境にまだ登録していなかったからです。

    管理画面で環境変数として登録し、再デプロイして、状態が「Ready」になるのを確かめました。画像の読み取りに時間がかかっても途中で打ち切られないよう、関数が1回に使える時間の上限も30秒に設定しました。

    画像
    最初に開いた本番で初めて起きた3つ。「Cannot GET /」の白画面は振り分けの明示で解消、鍵の未登録は環境変数の登録と再デプロイで解消、関数の上限時間は30秒に設定

    どれも、自分のパソコンの中では一度も起きなかったことです。

    手元で動いていたのは、手元の条件が揃っていたからにすぎません。開発環境では動いたものが、実際の環境に持ち出すと黙り込む——組込みで何度も味わってきたことを、久しぶりに思い出しました。

    とはいえ、この回で大事なのは、つまずきの細かさではありません。「自分のパソコンの中」にあったものが、「誰でも触れる場所」に出た——その事実のほうです。

    そして、出した瞬間に、相手が"自分"ではなくなりました。

    公開した瞬間、相手が「自分」でなくなる

    ローカル、つまり自分のパソコンの中だけで動かしているうちは、触るのは自分ひとりです。多少お行儀の悪い使い方をしても、困るのは自分だけ。

    でも、公開すると、見知らぬ誰かが触ります。前提が、まるごと入れ替わるのです。

    ここで、立ち上げのときから仕込んでおいた"守り"が、ようやく本当の意味を持ちました。

    ひとつは、AIを呼ぶための鍵(APIキー)を、サーバー側にだけ置き、利用者のブラウザには絶対に出さないこと。

    鍵が画面に漏れれば、他人に使い込まれて、料金だけ私に請求される——そんな事故を防ぐためです。万一漏れたときに備えて、鍵を失効させ、再発行して差し替え、古い鍵が使われた履歴を確かめる、という手順も、手順書に先に書いておきました。

    もうひとつは、短時間に何度も叩かれないようにするレート制限です。同じ接続元からは1分間に10回まで。超えると「送信回数の制限に達しました」と返し、あと何秒待てばよいかを伝えます。

    公開の設定を済ませた直後、改良の第1回で入れたものです。手元で動作確認するためのサーバーには、この制限を入れていません。

    守りが要るのは、見知らぬ誰かが触る側だけでした。

    そして、画面の下に常に出している免責の一文。「本ツールによる判定はAIによる参考情報です」と書き、最終的な判断は専門家や行政機関に確かめてほしい、と添えています。

    同じ文面は、書き出すレポートにも入れました。

    画像
    公開ページの下部に常に出している免責の一文。「本ツールによる判定はAIによる参考情報です」と書き、最終的な判断は専門家や行政機関に確かめてほしいと添えている

    これらは、自分ひとりで使っていたときには、正直、なくても困らないものでした。

    でも公開した今は違います。使う人を守り、同時に自分も守る仕掛けです。

    画像
    公開した瞬間に本当の意味を持った3つの守り。APIキーはサーバー側だけ、レート制限は1分間に10回まで、免責の一文は画面とレポートの両方に

    公開とは、便利さを差し出すのと引き換えに、この「使う人への責任」を引き受けることだったのだと、出してみて実感しました。 第1話で引いた「どこを握るか」の線が、いちばん効いてきたのは、この公開の場面だったのです。

    振り返ると、この4回は、バラバラの工夫ではありませんでした。

    4回かけて見えた、AIとの開発の「型」

    化粧品チェッカー編の4回を、並べ直してみます。

    1. 第1話では、どこまでをAIに任せ、どこからを自分が握るか、という線を引きました。

    2. 第2話では、AIの「判定不可」とコストに計器をつけて、育てる手綱を握りました。

    3. 第3話では、テストという安全網を広げて、量を信頼に変えました。

    4. そして今回、使う人への責任を引き受けて、世に出しました。

    並べてみて、はっきりしました。これらは別々のテクニックではなく、一本の"型"だったのです。

    どこを握り、どう育て、どう守り、どう届けるか。その流れ全体が、AIと開発するときの自分なりの型になっていました。

    AIは、確かに速い。コードを書くのも、直すのも、文書を作るのも、私より速い。

    けれど、この「型」を持つのは、人間の側の仕事でした。

    組込みの世界で、私は何度も「製品を世に出す」ことをやってきました。動くだけでは出せない、誰かの手に渡るものには別の重さがある——それは体に染みついています。

    その感覚が、相手がAIに変わっても、個人開発という小さな舞台でも、最後まで一周した。完走して初めて、型は型になる。

    そう感じた4話でした。

    もっとも、公開はゴールではありませんでした。

    それでも、まだ「完璧」ではない

    正直に書いておくと、公開はスタートラインでもあります。

    第2話で「コストに見合わない」と保留にした機能——複数のAIで信頼度を出す仕組みや、定期的に自動でチェックを回す監視——は、まだ手つかずのままです。

    画面の「参考情報です」という免責も、外していません。最終的な判断は人間がする、という線は、引いたまま残してあります。

    守りそのものにも、限界があります。先のレート制限は、厳密なものではありません。

    サーバーレスの関数は、呼ばれるたびに別の入れ物で立ち上がることがあり、回数の記録もその入れ物ごとに別々だからです。コードには、AI自身が「厳密な全体の制限ではないが、暴走的な連打の抑制には有効」という趣旨の注記を残していました。

    守りの限界を、守りと一緒に書き残しておく。 こういう一行があるかどうかで、後から読む人の安心はまるで違います。

    改良案の一覧にも、未チェックのまま残っている項目が二つあります。どれくらい使われているかを見るアクセス解析と、コードを更新したら自動で本番に反映させる仕組みです。

    第2話で計器の大切さを書いた身としては、耳の痛い宿題です。

    それでも、こうして穴を残したまま出したことは、弱さではなく誠実さだと思っています。完成したから出す、のではなく、使われながら育てていく前提で世に出した。

    動くものを抱え込んで磨き続けるより、線を引いたうえで、まず人の手に渡してしまう。これも、AIと組んで速く作れるようになったからこそ、選べた出し方でした。

    動く、使える、信頼できる、そして届く

    これまで積み上げてきた「動く・使える・信頼できる」に、今回ようやく「人に届く」が加わりました。

    公開という最後の一歩で、AIとの開発がひとまわりし、私は最初の"型"を手にしました。第1話で引いた一本の線が、4話かけて、ひとつの形になった感覚です。

    まとめ

    • 任せたこと:実装・テスト・文書、そして守りの限界をコードに注記することまで

    • 握ったこと:APIキーの置き場所、レート制限、免責の一文——使う人への責任

    • 次の課題:保留した機能、アクセス解析、自動デプロイ。使われながら育てていく

    化粧品チェッカーは、私にとって「AIに実装を任せて、公開まで完走した」プロジェクトでした。


    次回からは、もう一本の個人開発に移ります。今度は、対照的なアプローチの話です。コードを1行も書き始める前に、AIと一緒に"文書"から積み上げていった——請求書を自動で集めるツールの話を書きます。

    仕事の依頼(ココナラ):作業の自動化を頼む/Claude Code の使い方を教わる

    あなたへのおすすめ