はじめまして!
システム開発やプログラミング言語(Python、FastAPIなど)の知識は**全くない状態(正真正銘の素人)**から、AI(Gemini)と二人三脚で毎朝4:00から必死にデバッグを繰り返し、5体のLINE BotとWebサイトを統合したシステムを形にすることができました。
本記事では、素人だからこそ辿り着いた「1つのバックエンドサーバーに全ての機能をハンダ付けして、Renderの負荷を限界まで削ぎ落とす引き算の設計思想」について、開発記録としてQiitaに書き残しておこうと思います。
優しく見守っていただけると幸いです。技術的なフィードバックも非常に嬉しいです!
公式URL: https://zdna-official.com/
- サーバー負荷を窒息死させる「1サーバー・マルチエンドポイント」設計
プログラミングの常識がなかったため、最初は「Botごとにアプリを分けるべきか」と考えましたが、Render(ホスティング先)の無料枠・低価格枠のリソース限界(CPU/メモリ)を考慮し、**「1つのFastAPI(Python)サーバーに、全てのLINE WebhookとWebフロントのルーティングを相乗りさせる」**という集約型アーキテクチャを採用しました。
現行システムの全体像は以下の通りです。
[ユーザー] ─(X/ブラウザ)─> [Webフロント (HTML/gtag.js)] ─┐
├─> [FastAPI (Render)]
[ユーザー] ─(LINEトーク)──> [LINE Webhook (5つのBot)] ──┘ │
▼
[Gemini API / Stripe]
① Web店舗(3ページ構成のSPA的フロントエンド)
/ (ホーム/決済ゲート):Stripe Webhookと連動した、チケット決済およびプロモーションコードの認証処理。
/library (本棚ビューア):PDF形式の電子書籍を、サーバー側のメモリを圧迫せずに画面内のiframeビューアでインライン展開する軽量ライブラリ。
/showcase (ショーケース):稼働しているLINE Botたちの稼働ステータス(ACTIVE_SLOTS)を一覧・監視できるダッシュボード。
② LINE公式アカウント(5体同時並行運用システム)
共通の回数券(チケットデータベース)を裏側で参照しながら、FastAPIのルーティング(末尾のURL)だけを切り分けることで、個性豊かな5体のBotを1つのPythonプロセス内で同時に高速駆動させています。 - 粒揃いの愉快な仲間たち(5つのLINE Webhook実装)
バックエンドのコアロジックにはすべてGemini APIを採用し、システムごとにシステムプロンプトの質感(ペルソナ)をミリ単位で調整しています。
① 瞬殺君(1号機)
メインアシスタントを務める執事型Bot。ユーザーから送られてきた「URLのWebスクレイピング&3行要約」、「LINEボイスメモ(M4A)の音声認識・ToDo化」、「画像(OCR)のテキスト文字起こし」をマルチにこなす、非同期処理(asyncio)の塊です。
② コードレビューの狂人(3号機)
送信されたソースコードに対し、コンテキストを正確に読み取った上で、超猛毒なレビューを容赦なく撃ち返してくるリファクタリング専用Bot。
③ ネーミング&企画の天才(4号機)
アイデアの壁打ち相手。トークンの消費量を恐れず、前のめりな熱量でクリエイティブな提案を爆発させるためのプロンプトエンジニアリングを施しています。
④ 瞬殺リサーチ・黒子(5号機)
Web検索結果や与えられたデータから感情を一切排除し、事実(Fact)のみを無機質に淡々と分析してMarkdown形式で報告するクールな分析官。
⑤ 決済・チケット確認(集金インフラ)
チケット残高のユーザーDB確認、およびStripeのチェックアウトページ(500円で100回チャージ)への誘導を完全自動で行うWebhook処理。 - 開発中に直面したバグと、デバッグの死闘の思い出
開発の知識が一切ないため、AIの指示通りに動かそうとしても、思わぬ目詰まりやタイムアウトのせいで何度もシステムが動かなくなり、孤独な闇の中でどれだけデバッグを繰り返したか分かりません。
「比率と非同期の嵐」:1つのFastAPIインスタンスに全Botの処理を詰め込んだ結果、処理が衝突して画面がタイムアウトするバグに直面。
「文字起こしのズレ」:音声認識(WAV/M4A)のバイナリデータのパースに失敗し、テキスト化が完全にバグるパニック。
これらを解決したのが、徹底的な**「引き算の思想(ノイズの限界除去)」**でした。
不要なミドルウェアや無駄な外部ライブラリを徹底的に削ぎ落とし、FastAPI本来の軽さを活かしたルーティングにハンダ付けし直したことで、バグの芽をすべて窒息死させ、永久に壊れない頑強な「3ページWeb×5体Bot」の融合体にたどり着くことができました。
現在は、Google Analytics(GA4)のMeasurement Protocolを仕込み、Webサイト(玄関)とLINE(秘密基地)のトラフィックを完全分離して、1ヒット単位でイベントログをリアルタイム監視できるデータ基盤まで整えています。 - 最後に
プログラミング言語のことは今でも右も左も分からない素人ですが、「作りたい!」という執念があれば、AIという相棒と共にここまで巨大な要塞(システム)をビルドできるんだという証明になれば嬉しいです。
場所(インフラ、計測網、UI)はもう完全に整いました。
これからはQiitaの先輩エンジニアの皆さんともたくさん交流し、コードの質感や設計の美学を学んでいきたいと思っています。
「見て驚くなよ」と言えるくらいの成果物をこれからも爆速で磨き続けていきますので、ぜひ新米の私と仲良くしてください!よろしくお願いいたします!
公式URL: https://zdna-official.com/