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

こんにちは。エンジニアのサミーラです。

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

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

自己紹介

クラウド開発事業部所属のサミーラです。
普段は製品サービスYouWireを担当しています。エンジニア歴は7年で、主にPHP, CSS, Javascript, MySQL, Apacheを使った開発をしています。

普段使ってるAIツール

日常的に以下のAIツールを活用しています。
・Claude Code: 毎日・開発、障害調査、設計、運用、テスト

企画概要とゴール

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

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

# 禁止事項:エディタで直接コードを書く・修正すること
– 許されるのは「AIへの指示」のみ。人間の役割は「Architect/Reviewer」、つまりAIをマネジメントして成果物を判断することです。

# お題
社員の生産性を上げる日々の業務管理ツールを作ってください。

## 必須要件:
– KiroとPlaywright MCPを使うこと
– スペック駆動開発を行うこと(vibe codingはNG)
– Todoを追加・編集・削除できること
– 追加は画面上部のフォームから可能
– 編集・削除は各行の操作ボタンで行う
– 一覧でTodoを確認できること
– 一覧にはタイトル、担当者、期限を表示
– サクサク軽く操作できること
– 画面は1ページで完結
– PlaywrightでCRUD周りのテストをすること

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

作業プロセス

要件の理解と整理

まず、お客様からのご要望を拝見しました。

そして、お客様の要件を満たす方法、さらにはユーザーエクスペリエンス(UX)の観点からその要件の品質をいかに向上させるかについて深く考えました。

その上で、私はインターネットでシンプル(簡易的)なタスク管理ツールを探しました。

実務でもそうですが、要件定義書には「書かれていること」と「書かれていないこと」があります。今回の企画では、意図的に曖昧な部分が残されていると気がつき、自分で判断する必要があると思い、具体的には以下の点を自分で仮説立てる方向性にしました。

運営への質問事項

今回のご依頼はシンプルなタスク管理アプリケーションの作成であったため、私は受け取った要件で十分だと考えました。また、お客様ご自身も必要なツールについて明確な理解をお持ちではないだろうと推測しました。

そのため、私はインターネットでタスク管理ツールについて調査し、一般的で使いやすいアプリケーションをお客様に提供することを計画しました。このような理由から、私は担当部署(あるいは管理者)に質問をすることはありませんでした。

Specs定義

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

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

私自身、これまでKiro を使って開発を進めた経験がなかったため、どのように指示を与えればよいのか最初は分かりませんでした。

そこでまず、「どのようなアプリケーションを作りたいのか」を簡単に説明し、Kiro が理解できる形式のドキュメントを作成してほしいと依頼しました。

そのドキュメント形式に沿って必要な要件を埋めていくことで、Kiro に正確に意図を伝えられるようにしました。

Kiroへの指示

I need to create a single-page application for a simple task management tool. First, I need to design the application. What details do you need in order to design a production-level application? Could you give me a template for a design document that you can easily understand, so that I can fill it in?

出力の判定と修正

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

判定結果

デザインをレビューしたところ、いくつか細かい修正が必要な点が見つかったため、修正してほしいポイントを Kiro に伝えました。その後、指示内容に基づいて、Kiro は期待どおりにデザインを更新してくれました。

良かった点

要件定義書や設計書を作成するために、こちらから細かい指示を与える必要はありませんでしたが、Kiro 自身が要件分析からプロジェクトを開始する点は、AI ベースのコード編集ツールとして非常に良い取り組みだと感じました。

また、タスクリストが作成され、各タスクを内容を確認しながら個別に実行できるため、アプリケーションがどのように構築されていくのかを深く理解することができました。

予想どおり、Kiro は要件に基づいた設計を提示してくれただけでなく、要件自体についても整理した内容を提供してくれました。

問題点

Kiro は非常に網羅的な設計ドキュメントを作成してくれるため、内容を読み込み、理解するまでにかなりの時間がかかります。

また、テスト設計に関しては、すべてのテストシナリオが網羅されているかどうかを判断するのが難しいと感じました。

Kiroとの対話

私が考えていた内容と、Kiro が生成した設計との間にいくつかのズレがあったため、指定したポイントに基づいて修正を行うよう Kiro に依頼しました。

開発およびテストは Docker コンテナを使用して自分の PC 上で行う必要があったため、開発・テスト用の Docker 開発コンテナ環境を構築するよう Kiro に依頼しました。

タスクを実行した際、Kiro は Docker ホスト(自分の PC)上で再度プロジェクトのセットアップを行い、「npm install」などのプロジェクト関連コマンドをホストマシン上で実行し始めました。本来は Docker コンテナ内でコマンドを実行してほしかったため、その点を Kiro に依頼しました。

Kiro がアプリを実装した後に内容を確認したところ、いくつか修正が必要な点が見つかりました。そのため、それらの修正を行うよう Kiro に依頼しました。

Kiro は自らテストケースを作成し、テストの実装まで行ってくれました。しかし、Playwright を使用したテストケースは作成されていなかったため、Playwright を使ってテストケースの作成および実装を行うよう、改めて Kiro に依頼しました。

テスト実装

本タスク管理アプリでは、Playwright を用いた包括的な E2E(エンドツーエンド)テストスイートを構築しました。

全体で 34 のテストケースを実装し、4 つの主要なテストカテゴリに分けて機能・デザイン・レスポンシブ対応を網羅的に検証しています。

テストは Chrome / Firefox / Safari / Edge / モバイル Chrome / モバイル Safari の 6 種類のブラウザ・デバイスで実行され、モバイル・タブレット・デスクトップの各画面サイズに対応した動作確認を行っています。

テスト内容の主なカバー範囲

  • タスク作成・編集・削除などの基本機能
  • ステータス変更やリアルタイム UI 更新
  • サブタスクの階層構造とアニメーション挙動
  • レスポンシブデザインと操作性
  • 入力バリデーションやエラーハンドリング
  • デザイン(カラー、レイアウト、アニメーション)の一貫性

テスト設計の特徴

  • Page Object Model を採用し、保守性の高いテスト構成
  • TypeScript による型安全なテスト実装
  • 並列実行と 自動リトライ による安定したテスト運用
  • テスト失敗時の スクリーンショット・動画記録・HTML レポートの自動生成

品質保証の効果

このテストスイートにより、

  • ユーザー操作の主要なフローがすべて自動検証され
  • ブラウザやデバイスが変わっても一貫した体験を提供でき
  • UI・機能・レスポンシブ対応の品質を継続的に担保できる

という 高い信頼性と再現性のある品質保証環境を実現しています。

成果物

メイン画面

メイン画面(サブタスク含め)

サブタスクを追加

所要時間

6時間

主な機能

  • タスク作成・編集・削除
  • タスクで、タスクのステータス、完了日設定可能。
  • サブタスク作成・編集・削除
  • サブタスクで、タスクのステータス、完了日設定可能。

工夫点など

  • 使いやすさを高める高度なタスク管理機能
    • ドラッグ&ドロップによる並び替え、タスクテンプレート、通知機能、共同編集、時間計測などにより、生産性と柔軟性を大幅に向上させます。
  • リアルタイムかつオフライン対応のアーキテクチャ
    • WebSocket を用いたリアルタイム共同編集と、オフラインファースト設計により、ネットワーク状況に依存しない快適な利用体験を実現します。
  • 大量データに対応する検索・一括操作機能
    • 高度な全文検索やフィルタリング、一括更新・削除などの機能により、多数のタスクも効率的に管理できます。
  • ネイティブアプリのように使える PWA 化
    • PWA 対応により、インストール可能なアプリとして利用でき、プッシュ通知やバックグラウンド同期などの機能を提供します。
  • スケーラブルで高速なパフォーマンス設計
    • 仮想スクロール、楽観的 UI 更新、キャッシュ戦略、遅延読み込み、DB 最適化により、大規模データでも快適な動作を維持します。

感想

良かった点

これまで、AI を使ってアプリケーションを一から実装した経験はありませんでしたが、このプロジェクトを通じて、AI を活用してアプリをゼロから構築する実践的な経験を得ることができました。

苦労した点

指示を出しても、Kiro が問題を修正してくれないことが時々ありました。そのため、どのように指示を出せば Kiro に正しく作業してもらえるのかを工夫する必要がありました。

今後に活かせること

現在の AI 時代において、ソフトウェア開発にAIを活用することはもはや当たり前になっています。今回のプロジェクトを通じて、新規プロジェクトだけでなく既存プロジェクトに対しても、AI を問題なく活用できることを実感しました(特に既存プロジェクトでの活用には良い経験があります)。

一方で、開発に時間を要するフェーズは大きく変化してきています。
AI 開発では、実装そのものよりも、設計ドキュメントをレビューし、適切なプロンプトで修正指示を出すことに、より多くの時間を使う必要があると感じました。

この記事が、少しでもみなさんのにお役に立てば幸いです。
ここまでお読みいただき、ありがとうございました!

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

Twitter で

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

採用情報
ページトップへ