【Kiro・Playwright】社内でフルAI開発バトル!!「1行も書かずに」Todoアプリを完成させた話〜落合の場合〜

こんにちは。エンジニアの落合です。

このブログはギークフィードアドベントカレンダー2025の2日目の記事です。

他の記事もぜひチェックしてみてください!

 

自己紹介

クラウド開発事業部所属の落合です。
最近はコールセンターのシステムのクラウド移植を担当しています。エンジニア歴としては3年目で、主にJavaScriptやPHP(Laravel)を使った開発をしています。

最近はSwitch2をようやく手に入れたので「Pokémon LEGENDS Z-A」や「牧場物語 let’s 風のグランドバザール」を楽しんでいます。
リアル脱出ゲームにもちょくちょく参加したりしています。

 

普段使ってるAIツール

日常的に以下のAIツールを活用しています。

  • Gemini: 文章の添削、ちょっとしたコードの解説、案出しなど
    画像生成機能も優れているので生成AIの中で一番よく使います。
  • Copilot: コード補完機能や実装内容の紐解きなど
  • Kiro: 要件定義・設計書の段階から開発をする際に利用。
    クレジットが少なめなので基本的にコードについて疑問点がある場合はCopilotに頼りがち。

 

企画概要とゴール

今回、「フルAI開発バトル」という企画に参加しました。

ルールはシンプルかつ過酷です。

 

詳しいルールや目的はアドベントカレンダー1日目の記事で紹介しております。

 

作業プロセス

要件の理解と整理

まず最初にしたことは、手元のメモに画面の想像図を書いたことです。
想像図を書くことで、現在提示されている要件のみでどの程度まで実装できそうか、他にヒアリングしておいたほうが良い要件はないかが出しやすかったです。

以前業務である機能の実装をした時に、最初に全体像を把握しておらず、後から大きな修正をする必要が出てきてしまったことがあり、今回はその経験を活かした形になりました。

また、Kiroにも実装に必要な要件を出してもらいました。

 

運営への質問事項

運営(佐藤さん)には3回質問しました。

 

Specs定義

要件を整理した上で、スペック駆動開発の第一歩として、Kiroに要件定義を依頼しました。

指示に至るまでの思考プロセス

Kiroに出してもらった質問事項と、運営からの回答を組み合わせてKiroに要件を送りました。
何度もKiroとやりとりをすると、出力によってはどんどん要件から逸れてしまう恐れがあったので、できるだけ1度の入力で要件定義書を完成させてもらえるようにしました。

Kiroへの指示


Kiroの出力

  • requirements.md

 

  • design.md

 

  • tasks.md

出力の判定と修正

Kiroの出力を確認し、期待通りか、修正が必要かを判断しました。

判定結果

修正必要

 

良かった点

  • 1枚ページで完結することやリスト形式でタスクが一覧化されることなど、最初に提示した要件は守られていた
  • 最初に手元のメモに書いたページとほとんど同じUIだった

問題点

  • 優先度が5(最高)・4(高)・3(中)・2(低)・1(最低)の5段階になった
    →わかりにくいのでシンプルさを求めて高・中・低に変更
  • ページングが隣のページにしか行けないようになっていた
    →任意のページが見られるようにしたい

Kiroとの対話

  • 優先度は高・中・低にして→リスト一覧は高・中・低になったものの、登録欄が5段階のままだった→「優先度は高・中・低の3段階で統一して」→修正◎
  • ページングで任意のページに遷移できるようにしたい
    →想定通りに修正◎

 

テスト実装

  • プロパティ1: タスク追加でリストが成長する要件 1.1 を検証 100回の反復テスト
  • プロパティ2: 空のタイトルは拒否される要件 1.3 を検証 100回の反復テスト
  • プロパティ3: ストレージラウンドトリップの一貫性要件 1.4, 2.3, 6.1 を検証 100回の反復テスト
  • test-priority-sort.html – プロパティ9: 優先度ソート不変性要件 4.1, 4.2, 4.3 を検証 100回の反復テスト

 

成果物

  • タスクの追加、Undo操作

 

  • タスクの編集、削除、Undo操作

 

所要時間

2時間30分

主な機能

  • タスクの追加: タイトル、担当者、期限、優先度を入力して新規タスクを作成
  • タスクの編集: 既存タスクの情報を更新
  • タスクの削除: 不要なタスクを削除
  • 優先度順ソート: タスクを優先度の高い順に自動表示
  • ページング: 20件ごとにページを分割して表示
  • シンプルなUI: タイトル、担当者、期限を一覧で確認
  • ローカルストレージ保存: ブラウザを閉じてもデータが残る
  • 即座の保存: 追加・編集・削除時に自動保存
  • Undo機能: 直前の操作を取り消し(最大10回分)
  • 高速動作: 100ミリ秒以内のUI更新、2秒以内の初期表示
  • 単一ページ完結: ページ遷移なしで全機能を利用可能

工夫点など

  • 要件定義時点でできるだけ細かく要件を詰めたこと

 

発見と学び

  • 細かく要件を指示したところはうまくアプリに取り込めた反面、ざっくり指示した部分はAIに解釈の余地を与えてしまい、修正が必要になりました。
  • 最初に想像図を書くことで、AIへ指示する際に言語化がしやすくなりました。
  • 自分の中で勝手に解釈してしまった部分があること(社内で使うならレスポンシブ対応いらないかも、とか)に後から気がついたので、そういった部分も最初に全て出しきって整理したほうが良かったかもしれません。

 

感想

良かった点

  • 最初に想像していた通りのアプリが作れた
  • 先日の失敗で学んだことを今回の企画で活かすことができた

苦労した点

  • ざっくりとした指示をすると、想像していた動作と異なる動きになってしまうことがあったこと
  • 途中から修正をしようとすると、ドキュメントへの反映が漏れてしまうことがあり、修正指示をしても後でまた修正がデグレードしてしまうことがあった

今後に活かせること

実務でも、最初に要件を詰める際にAIに質問事項を作成してもらうことで要件定義がスムーズに行えそうだと感じました。

また、テスト項目の作成やテストの実施を自動でやってくれるのは非常に便利なので活用していきたいと思いました。

 

この記事が、少しでもみなさんのにお役に立てば幸いです。

ここまでお読みいただき、ありがとうございました!

この記事が気に入ったら
いいね ! しよう

Twitter で

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ