0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kiroを使ってAI駆動開発をしてみたpart2

0
Posted at

Kiroを使った社内向けAIチャット開発

前回まではKiroを使った要件定義、設計までを行いました。
ここからはプログラムの実装に入っていきます。

プランの切り替え

part1では無料プランでやってきましたが、
50クレジットでは開発が全然進まないという事情もありKiro Proという有料プランに切り替えました。
毎月1日に1000クレジット付与されるプランです。
有料プランに切り替えるとAIのモデルも選択肢が増えるので、Opusの一番最新のものを使っていました。

プログラムの実装

実装の流れ

①AIチャットを開く
②ここまでの要件定義と設計情報を読み込ませる
③読み込ませたうえで、実装に必要なタスクを洗い出し順番にmdファイルに記載する
④mdファイルに記載のタスクの通りに実装(実装+テスト)
⑤Kiro自身が実装のセルフレビュー
⑥⑤まででで発生した課題についてKiroに回答、各タスクのフェーズ事のフィードバック
⑦動作確認をして実装内容について確認
⑧細かい改善点の指摘(機能・UIなど)

意識していること

AIはタスク分割して依頼をしたほうが精度が上がるのと、こちらも実装内容が多い場合どこまで進めたか管理がしやすいので上記の方法を採用しています。
また、Part1同様、Kiro自身にセルフレビューを行わせることで人間側のチェックが減るため、必ずセルフレビューをしてもらい判断ポイントを減らした状態でチェックをしています。

実装中に発生した主な課題

※主にAIチャットに関するものを抜粋

No 概要 対策
1 AIの回答精度が低い 類似度閾値を0.5→0.8に調整
2 AIで自然な会話ができない AIに対するロールを適切に付与(流暢な日本語話者)
3 AIチャットを投げるとタイムエラーになる 出力上限を1024 tok → 320 tokに調整
4 UIのデザインがやや古い chatGPTに画面案を出させてKiroに読ませたうえで修正

実装機能

まとめるのが大変なので、機能一覧はKiroに作成してもらいました。
画面イメージはデバッグ時のスクリーンショットです。

1. ログイン画面

機能 詳細
ログイン 社員番号 + パスワードで認証
ロックアウト 5回失敗で 15 分ロック(失敗メッセージは統一・アカウント実在を漏らさない)
パスワード変更 /auth/change_password 現在のパスワードを確認してから変更(8〜15文字・英数字混在)
ログアウト POST で送信(CSRF 対策)

画面イメージ

image.png

2. ダッシュボード(トップ)

機能 詳細
ウェルカムメッセージ ログイン中のユーザー名を表示
AI チャットショートカット チャット画面への導線カード
最新ブログ記事 5 件 タイトル・投稿者・投稿日時を降順で表示

画面イメージ

image.png

3. AI チャット

機能 詳細
メッセージ送信 最大 500 文字(全角・半角ともに 1 文字)。空白のみは拒否
RAG 連携 社内ドキュメントから類似度 0.8 以上のチャンクを検索してコンテキストに付加
該当なし通知 関連ドキュメントが見つからなかった場合にその旨を表示
LLM 推論 ローカル LLM(Qwen 2.5 3B)でオフライン推論。60 秒タイムアウト・最大 320 トークン
打ち切り通知 出力トークン上限に達した場合「途中で終了」と表示
履歴表示 直近 20 ターン以内の会話を画面に表示
履歴全削除 自分の全会話を物理削除
ローディング表示 生成中はインジケーターを表示し、入力欄を無効化

画面イメージ

image.png

4. ブログ一覧

機能 詳細
記事一覧 投稿日時の降順。20 件/ページのページネーション
記事詳細 /blog/<id> マークダウン本文を HTML にレンダリング(XSS サニタイズ済み)
記事作成 /blog/create タイトル(最大 200 文字)・本文(最大 10,000 文字)・マークダウンプレビュー
記事編集 /blog/<id>/edit 本人のみ編集可
記事削除 本人または Admin のみ削除可
ストック(ブックマーク) 記事ごとに追加・削除(重複不可)

画面イメージ

image.png

5. マイストック

機能 詳細
ストック一覧 自分がブックマークした記事の一覧表示

画面イメージ

image.png

6. プロフィール

機能 詳細
プロフィール表示 氏名・部署・自己紹介・アバター画像・投稿記事一覧
プロフィール編集 /profile/<id>/edit 本人のみ編集可。自己紹介(500 文字以内)・部署・アバター(最大 2MB、JPEG/PNG/GIF/WebP)
アバター配信 /profile/avatar/<filename> static/ の外に保存し専用ルートで配信(直接 URL アクセス防止)

画面イメージ

image.png

7. ユーザー管理(Admin のみ)

機能 詳細
ユーザー一覧 全ユーザーを社員番号の昇順で表示
ユーザー作成 /admin/users/create 社員番号(半角数字 5 桁)・氏名・メール・パスワード・ロールを登録
アカウント無効化 対象ユーザーの既存セッションも失効(自分自身は不可)
アカウント再有効化 ロック状態も同時にリセット

8. ドキュメント管理(Admin のみ)

機能 詳細
ドキュメント一覧 ファイル名・形式・サイズ・登録者・登録日時を表示
ドキュメントアップロード PDF・TXT・DOCX。最大 50MB。テキスト抽出 → チャンク分割 → ベクトル化 → ChromaDB に登録
テキスト抽出 UTF-8 / BOM 付き / CP932(Shift-JIS)対応。DOCX は表のセルも抽出
スキャン PDF 検出 テキストが抽出できない場合は登録失敗として理由を表示
ドキュメント削除 DB レコード・ベクトルデータ・実ファイルをすべて削除

共通機能

機能 詳細
サイドバーナビゲーション 左固定サイドバー。開閉可能(状態をブラウザに保存)
未認証リダイレクト 認証必須ページへのアクセスはログイン画面へ
API の 401 応答 fetch から呼ぶ JSON API が未認証のとき 401 を返す(リダイレクトしない)
CSRF 保護 全 POST/DELETE に CSRF トークンを検証
セキュリティヘッダー CSP / X-Frame-Options / X-Content-Type-Options など全レスポンスに付与
413 エラーページ 50MB 超のアップロードに分かりやすいエラーページを返す

Kiroを使って実装してみた感想

自身がやることはただひたすらKiroに対して判断とレビュー、改善案を出すことでした。
今思うと実装より前の要件定義や基本設計がやや甘いのと明確な差別化ができておらず、作成された資料は内容が重複していて、Kiroに読み込ませるとき同じ情報を無駄に何回か読み取ってしまっていたのかもしれないと思っています。
その部分が改善されたらよりスムーズにKiroも作業ができるのではないかと思いました。

また、プログラムに関してはほとんどロジックを見ておらず、テストもKiroが実施しているので設計力、判断力と作りたいもののイメージがあれば個人開発レベルではそれなりのものが出来上がりますが、今の自分にはどれもまだ力不足だと実装中に痛感しました。

あとはクレジットを無駄に消費しないためにKiroの標準機能のSteeringなどを最初から活用し、制約などをつけておけばよかったなどの反省点があります。Kiro Proで1か月分のクレジットを2日ぐらいで使い切っていました。

まとめ

今回の個人開発では、新しい言語を利用するための環境構築から、要件定義・設計・実装まで、一連の開発工程を自力で進めることに初めて挑戦しました。

開発を進めるなかで特に印象的だったのは、AIそのものや、その活用方法が目まぐるしく変化していったことです。開発当初はプログラムの作成に重点を置いていましたが、AIの進化とともに、後半にはAIエージェントをいかに活用し、開発全体の生産性を高めるかという視点へと変化していきました。実際に、開発の後半では生産速度が大きく向上したことも実感しています。

一方で、AIを活用すればすべてが解決するわけではありません。何を作るべきかというアイデアの創出や、実装方針の判断、AIが生成した成果物に対するレビューなど、人間が担うべき役割も多くあります。今回の経験を通じて、単にプログラムを書く技術を身につけるだけでなく、AIの特性を理解し、その能力を最大限に引き出すための使い方を習得することが重要だと感じました。

また、AIチャットの開発を通じて、AIの仕組みやモデルの種類、内部の設定値などにも触れました。普段は意識することの少ない仕組みを学ぶことで、現在広く利用されているAIが持つ能力の高さや、その技術を支える工夫について理解を深めることができました。

今回の開発で得られたのは、技術的な知識や実装経験だけでなくAIの進化に合わせて開発の進め方を変え、自分自身も学び続けていく必要があるという気づきも、大きな収穫でした。

今後も新しい技術を積極的に取り入れながら、AIに任せられる部分と自分自身が考えるべき部分を見極め、より良い開発の進め方を模索していきたいと思います。

...という、このまとめの文章でさえ、AIにレビューしてもらっています笑
来年もこの続きかあるいはテーマを決めてもっと効率のよいAI駆動開発をしてみたいと思っています。

皆様ここまで読んでいただきありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?