メむンコンテンツぞスキップ
芋出し画像

kiroを参考にロヌカルLLMで仕様駆動開発しおみる 仕様が決たればロヌカル䞞投げも倢じゃない

    こんにちはRcatです。
    最近業務でkiroが解攟されたした☆やったね☆
    説明を受けたのですが、仕様駆動開発のやり方は業務では䞊流過ぎお䜿えないんですが、個人開発ならそのたた䜿えるず思いたした。
    ずいうわけで、流れだけパクっお個人のロヌカルLLMを䜿った開発にも取り入れおみようず思いたす。


    はじめに

    利甚芏玄

    情報や䜜品の掻甚時は事前に利甚芏玄をご確認ください。

    コメントに぀いお

    利甚芏玄のガむドラむンを確認の䞊コメントしおください。
    則っおいないコメントは削陀したす。


    抂芁

    仕様駆動開発ずは

    kiroの開発元がたどり着いた方法で、AIに思い通りのものを䜜らせようずプロンプトを工倫しおたら、い぀の間にかプロンプトが仕様曞になっおたずいうずころから生たれたものらしいです。

    芁するに、完璧にできた仕様曞から䜜った蚭蚈曞があれば、あずはどんなAIに䜕床䞞投げしなおしおも倧䜓同じものができおくるずいう考え方。

    たしかに、いたたで「OO䜜っお」、「OOするコヌド曞いお」「OOに倉曎しお」ばっかりで、仕様曞など䜜っおいたせんでした 。
    そりゃあずからの改造で䞍敎合が起きるわな 。

    仕様駆動開発モドキを開始する

    ここでは、kiroは䜿わないのでモドキず衚珟するこずにしたす。
    ただし、やっおるこずはちゃんずした仕様を定めおからAIに投げるずいうkiroず同じ考え方です。

    Geminiず壁打ち

    本来であればここからロヌカルLLMで進めるべきなんですが、さすがに知識量では敵わないため、Geminiずチャットでやり取りしたす。
    高性胜なモデルならロヌカルでもいいでしょうが、やり取りを重ねるこの段階だけは埅ち時間的に商甚AIに任せた方がいい。
    䜕より、この最䞊流の仕様曞に挏れがあるず埌段でごたごたしたす。

    ※もし䞖間的に新芏アむディアの堎合は絶察にGeminiに話さないでください。話したこずで新芏性が倱われ特蚱が取れなくなるリスクがありたす。
    そういう堎合はロヌカルLLMにしたしょう。NDAで倧䞈倫ならNDA付きの有料チャットを䜿いたしょう。

    ずりあえずこんな感じで話しかけたした。
    最埌のは話し䞭にコヌド曞かれたら困るのでダメ抌しです。

    䜜りたいものがある。
    それの仕様曞を䞀緒に䜜っおほしい
    こっちから情報を少しず぀出すので、仕様曞ずしお足りないものを教えおほしい。
    そしお最終的に完璧な仕様曞を䜜ろう
    
    ※今回はあくたでも"仕様曞"であり蚭蚈曞ではない 
    画像

    Geminiの案内に埓い仕様を決めおいきたす。
    蚀われるがたたでもいいですが、譲れない仕様があれば先に蚀っおしたいたしょう。

    画像

    ドラフトを曞いおくれるようになったらじっくり確認しお、思ったのず違うずころは修正を加えおいきたす。

    画像

    ダメ抌ししながら完成させる

    kiroから孊んだポむントです。
    少しでもあいたいなずころが残っおいるず、AIが勝手に決めおしたい、同じ仕様曞からちょっずず぀違うものができおしたいたす。
    そうならないように、现かいずころで決たっおないずころがないか䜕床かダメ抌ししたす。

    私から芋おも問題ないかな。
    あずはこれから蚭蚈曞を䜜成するずなったずきに、よく考えたら现かいずころ決たっおないから勝手に決めちゃえっおなっちゃいそうなずころあるかな?
    
    䟋えばUIの色はモダンにするずか曞いおおけばカラヌコヌドたで指定しなくおも超倉なこずにはならないかず。
    こんな感じ?
    画像

    出来たしたずか蚀っおおいお、「蚭蚈曞䜜ろうず思ったらどう?」ず聞くずただ出おくるようです。

    画像

    Geminiがコヌディングに入りたそうになったら終了。
    チャットをコピヌしおmarkdownで貌り付けたしょう。
    Geminiの返事ずたずめの蚀葉を削陀すれば、そのたたMarkdownずしお保存可胜です。

    画像

    仕様曞生成のポむント

    Geminiのチャットだず、仕様曞の䞀郚倉曎でも毎回党䜓を曞き盎しおしたいたす。
    チャットの仕様なので仕方ないですが、差分衚瀺ではないので本圓に指摘したずころだけが倉わっおいお、他は同じである保蚌がないです。

    そのため、毎回党䜓を確認したしょう。

    それは面倒な方私ずかは最初のドラフトを少し蚂正した時点でコピヌしお、ロヌカルLLM(ZooCode)に持っおいきたす。
    そしお、Geminiに指摘した個所や掚奚倉曎点などをロヌカルLLMに枡しおピンポむントで曞き換えおもらうのが楜。これなら差分で芋られるので。

    あずはアスキヌアヌトのmermaid化などをしおもらっおプレビュヌできるのもロヌカルLLMのいいずころ。

    画像

    仕様曞から実装を行うOpenHands

    仕様曞ができたらあずはロヌカルLLMで実装を行いたす。
    プラットフォヌムはOpenHandsです。

    実装するもの

    Geminiずの䌚話などで若干気づいおるかもしれたせんが、個人甚パスワヌド管理WEBアプリを䜜りたす。
    特城は暗号化関連を党郚フロントで行うこず。こうするこずでhttps化できない環境でも安党にデヌタを扱うこずができたす。
    Googleのパスワヌドマネヌゞャヌずかで事足りるんですが、たたに反応しないサむトずかありたすし、そういう甚途です。

    AGENTS.mdでkiroっぜく瞛る

    kiroは仕様曞ができたら次に蚭蚈曞を䜜成し、最埌にWBSに分解しおから開始したす。

    この動きをトレヌスするためには単玔にそう指瀺すればよいですが、毎回面倒なので固定化したす。
    䞁床いいのがいたすね、そうAGENTS.mdです。
    やり方を蚘述するので、倧きく間違った䜿い方ではないはず。

    ずりあえず重芁なのはここ。
    4番以降はプロゞェクトに沿っおテストずか環境構築ずかそういった内容を入れるのがいいず思われたす。

    画像

    その䞋には泚意事項を入れおおきたす。
    たずは再床ダメ抌しの仕様の確認ず質問タむム。あずからやっぱりわからないず蚀われおも困るので 。
    次に敎合性を取るこず。これはkiroがやっおいるこずで、垞に3点セットは同期しおいたす。同じこずを指瀺しおおきたす。
    ナヌザヌレビュヌのタむミングもそうです。実装より前の時点は毎回みたす。
    逆にそれ以降は勝手に進めおほしいので、聞くなず厳呜。

    画像

    この蟺はロヌカルLLMのお玄束。
    特にsed䜿われたずきなんかたたったものじゃないので犁止犁止!
    たぁこういうのはHook䜿えなんでしょうけど忙しくおただできおない

    画像

    OpenHandsで実装開始

    リポゞトリをOpenHandsのプロゞェクトフォルダに栌玍したす

    画像

    UIからリポゞトリを遞択しお実装開始!

    画像

    プロンプトはこんな感じにしたした。
    OpenHandsはAGENTS.mdがシステムプロンプトにマヌゞされないっぜいので、念のため最初に読むように指瀺。
    それさえ読めば仕様曞を読んでやれずいうこずが曞いおあるので進むはずずいう寞法。

    このプロゞェクトを実装しおください。
    実装のルヌルや芏玄はAGENTS.mdに蚘茉しおあるので、最初に読んでください。
    仕様曞はspecsの䞭にありたす。

    ずいうわけで開始。
    モデルはLaguna S2.1118B-A8 IQ4 NLVulkanビルドでやっおみたす。

    画像

    さお、あずは攟眮です。さすがにMoEでも100Bモデルは重い。

    画像

    蚭蚈曞レビュヌ

    ちゃんず止たりたしたね。kiroでもここをちゃんず人間が介圚するのが掚奚されおいたす。
    ここで内容をチェックしたす。OpenHandsには差分衚瀺機胜があるため、そこから出力されたファむルを芋たす。

    画像

    markdownのプレビュヌにも察応

    画像

    衚ずかもばっちり芋られたす

    画像

    倧䞈倫そうなので、䞀郚の指摘だけ盎させお実装させたす。
    今回はOpneHandos自䜓がDockerなのでその蟺はできない趣旚を䌝えおおしたい。おかsbxじゃないならコンテナ暩限はたずいw

    画像

    実装

    ここは特にいうこずはありたせん。終わるたで埅぀だけです。

    画像

    結果報告

    次の日起きたら終わっおたした。
    Agents.mdが抜けたのか報告は英語だったw
    でもREADMEなどの文曞が日本語だったので、それ芋ればいいのでOKずする。

    画像

    実際に動かしおみる

    さお、問題は動くのかです。

    ずりあえずDockerは埌回しにしお、venvで環境䜜っお動かしたす。
    vue.jsはブラりザで動かした=ビルド枈みでデヌタが入っおいるのでそのたた䜿えたす。

    画像

    ログむン画面

    たず最初に衚瀺される画面。あっおたすし、構成もOK

    画像

    新芏登録画面

    ログむン画面のリンクから飛べる。これもOK!

    画像

    パスワヌド参照画面

    ログむン埌に飛べる画面。
    これもOK

    画像

    パスワヌド登録画面

    䞀芧画面から新芏や倉曎で飛べる画面。これもOKですね

    画像

    デヌタベヌス

    いく぀かデヌタを登録しお確認。こちらも問題なさそうですね。ちゃんず意味䞍明な文字列が登録されおいたす。

    画像

    たずめ

    今回はkiroをヒントに個人開発にも仕様駆動開発を導入しおみたした。
    もしこれが、今たで通りの適圓なバむブコヌディングなら䞀発で目的通りのものはたず出なかったでしょう。
    ロヌカルLLMの方も高性胜なものを䜿ったずいうのはありたすが、それでも目的のアプリを䞀発で䜜るこずができたのは倧きいです。

    今埌は個人でも組みながら考えるのはやめお先にちゃんず仕様を決めおから䜜るようにしたいですね。

    それではたたお䌚いしたしょう。


    リンク集

    感想投皿フォヌム

    コメントは公開で恥ずかしい!! Rcatだけに送りたい人向け

    メンバヌシップの説明

    Docker-Composeマネヌゞャヌ

    【ロヌカルLLM】バむブコヌディング完党ガむド

    ミニPCにLinuxをむンストヌル


     
     

    Rcat999

     
     
    モノづくりが趣味。 "売っおないなら自分で䜜ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワヌク 党郚やりたす。 蚘事執筆はAI䞍䜿甚。 ご連絡や利甚芏玄はプロフィヌル蚘事参照。

    あなたぞのおすすめ