蚘事䞀芧に戻る
技術ノヌト8分で読めたす

「システム蚭蚈の緎習堎所がない」ず嘆くのが嫌で、RustずAIで『最匷の壁打ち盞手』を自䜜した話

Qiitaに投皿したMarkdownを、このサむトにも同じ内容で茉せおいたす。Qiitaで読む

メモ

【2025/12/12 远蚘】 アップデヌトを行いたした 「DBを䜿わずにデヌタを共有する機胜」や「VPCグルヌプ化機胜」を実装した開発裏話続線を公開したした AWSの請求におびえながら、意地でステヌトレスを貫いた技術解説蚘事です。

👉 続線蚘事AWSの請求が怖いので、DBなしで「デヌタ共有」を実装した話ず、React Flowの200ドル有料壁 vs AIの幻芚

はじめにむンプットだけじゃ、蚭蚈できるようにならなくない

突然ですが、みなさん。「システム蚭蚈」の緎習、どうやっおたすか

「倧芏暡デヌタ指向アプリケヌション」や「システム蚭蚈の面接詊隓」  名著ず呌ばれる本はたくさんありたす。私も読みたした。読み終わった瞬間は、なんずなく「匷くなった気」がするんですよね。

でも、ふず思うんです。 「で、この知識、どこで䜿うの」

個人開発じゃそんな倧芏暡トラフィック来ないし、業務でいきなり「君、れロからアヌキテクチャ考えお」なんお蚀われる機䌚もそうそうない。 既存コヌドの改修As-Isはあっおも、癜玙からの蚭蚈To-Beをするチャンスっお、実はめちゃくちゃレアじゃないですか

「緎習堎所がないなら、䜜るしかない」

そんな勢いだけで、AIを盞手に芁件定矩から蚭蚈、評䟡たでをガッツリやり合えるプラットフォヌムを開発したした。RustもAWSも手探り状態からのスタヌトでしたが、なんずか圢になったので、その開発の裏偎を少し語らせおください。

䜜ったものArchitecture Sandbox

名前はそのたた、『Architecture Sandbox』。 䞀蚀でいうず、「めんどくさい顧客AIず戊いながら、システム構成図を描いお、AI䞊叞に採点しおもらうアプリ」です。

ただ図を描くだけのツヌルじゃありたせん。「亀枉」ず「評䟡」があるのが最倧のミ゜です。

䞻な機胜は以䞋の5぀です。

  1. シナリオ遞択画面
  2. カスタムシナリオ定矩画面
  3. チャット画面
  4. システム蚭蚈画面
  5. 評䟡結果画面

それぞれの機胜に぀いお玹介したす。

シナリオ遞択画面

シナリオ遞択画面.png

アプリの入り口です。プリセットされた「デフォルトシナリオ」か、自分で蚭定を䜜る「カスタムシナリオ」を遞択できたす。

  • 瀟内勀怠管理システム初玚: 瀟員50名芏暡。ITに詳しくない担圓者に察し、具䜓䟋を出しながらヒアリングする緎習ができたす。

  • 画像投皿SNS䞊玚: 次䞖代の䞖界芏暡SNS。スケヌラビリティや高可甚性が求められる耇雑な蚭蚈課題です。

カスタムシナリオ定矩画面

カスタムシナリオ定矩画面.png

オリゞナルのテヌマで蚭蚈緎習を行いたい堎合はこちらを䜿甚したす。 システムの抂芁だけでなく、「芏暡感アクセス数など」や「䌚話盞手顧客の人栌」を定矩できたす。

特に「䌚話盞手の人栌」は䜓隓を倧きく倉えたす。気難しい盞手であれば芁件を匕き出すのが難しくなり、芏暡感が倧きければ求められる非機胜芁件可甚性などのレベルが跳ね䞊がりたす。

チャット画面

チャット画面.png

ここが本アプリのこだわりの䞀぀、「亀枉」のフェヌズです。

いきなり蚭蚈に入るのではなく、AI顧客ずチャットをしお芁件を詰めおいきたす。 AIは隠された「裏芁件」を持っおおり、こちらから「予算感は」「想定ナヌザヌ数は」ず質問しない限り、重芁な情報を教えおくれたせん。実務同様、ヒアリング胜力が詊されたす。

埗られた情報は右偎の「芁件メモ」に蚘録し、蚭蚈時の指針ずしたす。

システム蚭蚈画面

蚭蚈画面.png

React Flowを甚いたドラッグドロップUIで蚭蚈を行いたす。 サむドバヌからコンポヌネントLB, Web Server, DB, Cacheなどを配眮し、接続しおいきたす。

珟圚は基本的な構成のみですが、今埌はMulti-AZやDBレプリケヌションなども衚珟できるように拡匵予定です。蚭蚈が完了したら、ボタン䞀぀でAIアヌキテクトによる評䟡が始たりたす。

評䟡結果画面

評䟡結果画面.png

䜜成した図ず芁件定矩の内容を元に、AIがスコアリングずフィヌドバックを行いたす。 「可甚性が䜎い」「コストがかかりすぎおいる」ずいった具䜓的な指摘に加え、レヌダヌチャヌトで総合評䟡を可芖化したす。これにより、客芳的な芖点で蚭蚈を芋盎すこずができたす。

技術遞定

「せっかく個人開発するんだから、孊習したい技術を党郚詰め蟌もう」ずいう欲匵りセットで構成したした。

  • Backend: Rust(Axum)
    • 孊習䞭のRustを䜿甚。型安党性ずパフォヌマンス、コンテナずの芪和性を重芖。Goでも良かったが孊習䞭のRustを䜿甚しおみたした
  • Frontend: React + React Flow
    • ノヌドベヌスのUI構築のたい採甚。
  • AI: Google Gemini API(Gemini 2.5 Flash)
    • 高速なレスポンスず安䟡なコストで、リアルタむムな察話ず評䟡を実珟したした。
  • Infrastructure: AWS App Runner + S3 + Cloud Front
    • コンテナ実行環境ずしおApp Runnerを採甚。フロント゚ンドはS3ずClound Frontずいう王道の構成で構築しおみたした。

こだわったずころ

1. いきなり「亀枉」から始たる

このアプリ、いきなり蚭蚈させおくれたせん。たずは「顧客AI」ぞのヒアリングからです。

䟋えば「瀟内勀怠システムを䜜りたい」ずいうシナリオ。 盞手はITに疎い人事担圓者ずいう蚭定のAIです。「いい感じにお願いしたす」みたいなフワッずしたこずしか蚀わなかったりしたす。

「瀟員芏暡は」

「予算感は」

「朝9時にアクセス集䞭したすか」

こちらから食い気味に質問しないず、重芁な**非機胜芁件隠しパラメヌタ**が出おきたせん。 この「芁件を匕き出す泥臭さ」こそ、珟実の蚭蚈プロセスっぜくお燃えたせんか

2. 「マクロ芖点」で蚭蚈する

芁件が固たったら、React Flow補のキャンバスで蚭蚈です。 ここでは「Redis」や「Kafka」ずいった具䜓的な補品名ではなく、あえお「Cache」や「Queue」ずいった「圹割コンポヌネント」で配眮したす。

「ツヌル自䜓の蚭定」に時間を溶かすのではなく、「どこに䜕を眮くべきか」ずいうアヌキテクチャの意思決定だけに集䞭したいからです。

3. AI䞊叞による「容赊ない評䟡」

蚭蚈が終わるず、裏でGemini 2.5 Flashが走り出し、あなたの蚭蚈図を採点したす。 これが結構厳しいんです。

「この芏暡でNoSQLはオヌバヌスペックでは」「SPOF単䞀障害点がありたすよ」   ぐうの音も出ない指摘が飛んできたす。でも、それがいい。誰かにレビュヌされるっお、独孊だず䞀番難しい䜓隓ですから。

開発でハマったずころ

正盎、アプリのロゞックを曞いおいる時間より、むンフラずDockerず戊っおいる時間のほうが長かった気がしたす。

1. AWSの請求が怖い「脱RDS」の決断

個人開発者にずっお、AWSのRDSリレヌショナルデヌタベヌスは高嶺の花です。 「月数千円か  勉匷代ずはいえ、痛いな  」

そこで決断したした。「よし、DBを捚およう」。

今回のアプリは「蚭蚈の緎習」ができればいい。デヌタの氞続化は䞀旊諊めお、完党ステヌトレス構成に振り切りたした。 デヌタはフロント゚ンドのメモリに持たせお、評䟡時はそのJSONをAIに投げるだけ。おかげでApp Runnerのコンテナ代だけで枈む超䜎コスト運甚が実珟したした。 お金が貯たったらDynamoDBあたりで氞続化したす  

2. Mac(ARM) vs AWS(AMD) の仁矩なき戊い

開発はM4 Mac miniARM64。でも本番のApp Runnerはx86_64AMD64。 ロヌカルではサクサク動くのに、デプロむした瞬間にコンテナが死ぬ。ログを芋おもよくわからない。

原因はOpenSSLでした。クロスコンパむルの眠にたんたずハマり、深倜に䞀人で頭を抱えたした。 結局、OpenSSLぞの䟝存を断ち切るために、Rust偎のHTTPクラむアントの蚭定で rustls を䜿うように倉曎しお解決。 「コンテナならどこでも動く」なんお幻想だず思い知りたした。いい勉匷になりたした。

おわりに

RustもReactもAWSも、䞀気にやったせいで脳のキャパシティは限界突砎したしたが、満足床はめちゃくちゃ高いです。

なにより、「自分が欲しかったもの」が動いおいる画面を芋るのは最高です。 曞籍で読んだ知識が、コヌドずむンフラを通しお血肉になった感芚がありたす。

ただ「認蚌機胜がない」「DBがない」「URLが固定化されおいない」などツッコミどころは満茉ですが、ずりあえずメむンの機胜である「AIず蚭蚈バトル」はできるようになりたした。

もしよかったら、GitHub芗いおみおください。そしお、あわよくばStarをいただけるず、私のモチベヌションずAWS代の足し気持ち的にになりたす

GitHub: リポゞトリ

App: Architecture Sandbox