dip
内定者インターンでAIとDDDを活用した開発健全性可視化アプリを作った話

内定者インターンでAIとDDDを活用した開発健全性可視化アプリを作った話

# 実践# AI
本松 達裕
2026/04/06公開2026/04/06更新

TL;DR

  • 開発健全性を計測するアプリを作成したよ
  • 保守性を意識したよ
  • AIを開発にもプロダクトにも取り入れたよ

今回作成したもの

アプリケーション自体の説明は別の記事に譲るとして、なぜ開発しようと思ったかを中心に解説させていただきます。まず作成したものは「開発初心者用の開発健全性可視化アプリ」です。
issueを以下の3軸でスコアリングをし、その推移を可視化することで健全性を可視化しレトロスペクティブがよりデータに立脚した振り返りになることを期待しています。

評価している3軸

  • issueのリードタイム
  • issueの構造化
  • issueとPRの整合性

今回意識したこと

AIを使いこなすこと

1. 設計段階での活用法

今回AIを使うならアイデア出しから活用しようと思い、たまたま日々の悩みや考えをストックしていたObsidianにGemini cliを導入し、その中から開発に使えそうなアイデアがないか探していきました。
結果的に私が外部インターンで担当している「大学1年生向けに行っている開発研修」での、課題を解決するために今回の開発をしようと割とすぐ決めることができました。
AIによって思考の整理が行われはしたのですが、Obsidianを偶然日記代わりにしていた過去の自分に感謝しました笑

2. 開発段階での活用法

開発段階で意識したこととしては「コンテキストを含んだ具体的な指示」を与えることです。そのためアプリケーションでAIによってissueの採点をしてもらうときには、完全に採点をAIに投げてしまうというよりかは採点項目とそれに対応する点数を付与した状態で、採点してもらいました。
このことによって、どう採点しているかをブラックボックス化せずにお互いの共通理解がある上で納得できる形で採点してもらえていると思います。

また、この共通理解と似たような話になってくると思うのですが、AIと自分の認識を揃えることは常に意識していました。そのため後に出てくるヘッドレスUIの活用や

保守性で考慮したこと

ビジネスロジックを抽出する

今回一番挑戦したなということはビジネスロジックをドメイン層に書いていくという部分だったと思います。DDDは書いた経験があるものの1から書いたことはなく、実装期間が短い中で丁寧に作ることはリスクかもなーと思いつつ、今回のアプリケーションがビジネスロジックが割と複雑でユーザーの声を反映させながら変化させていきたいという考えがあったためビジネスロジックを依存の頂点にした構成にしていこうと思いました。
実際ビジネスロジックをドメイン層に記述することで、それをAIが参照してくれるのでAI-DLCとの親和性は高かったと感じています。

抽象化レイヤーを作成する

このアプリケーションはDBとGitHub API、AIエージェントなど外部依存が少なくありません。ベンダーロックインを避けるために外部サービスとの接点に抽象レイヤー具象レイヤーを設けています。
実際に現時点ではOpenAIを利用していますが、個人でこれからも使っていくならGeminiを使っていくことになると思います。このような技術の移行を容易にするために抽象レイヤーを設けました。

その他

早い段階でプロトタイプを作ること

自分が当初考えていたこととして、多分想定外のことは起こるし早めにAI-DLCに慣れることとプロトタイプを作ることで仕様の深堀をしておこうということでした。
私はAI-DLCというものに触れてこなかったのでそもそもClaudeで開発することに慣れるためにTodoリストの作成をしました。ここで基本的なコマンド操作とどのようなskillsを書けば良いかなども学ぶことができたと思います。
次に中間発表に向けてプロトタイプを作りました。要件を予めGeminiと壁打ちしながら作成していたので、実装自体は1weekほどで形になりました。プロトタイプを作成して良かったこととして、それ自体を運用することで実際にアプリケーションが達成したい課題を解決できるのかが分かり、その段階から改善のサイクルを回すことができるということです。
実際に想定しているユーザーたちに向けてアプリケーションを操作してもらったりもしたことで、何が課題かをはっきりさせた上でそれ以降の実装に向かうことができました。

画像はFBを元に改めて必要な画面の要素を書き出したもの

ヘッドレスUIの導入

自分が開発で意識したこととして、AIを使うことによって生じる想定外のことを極力避けるということでした。個人開発をする前にTodoリストをAI-DLCで実装してみたのですが、UIを狙ったものにすることが難しいという課題が見えていました。
そのためヘッドレスUIである「shadcn/ui」を導入しました。これによってどのUIコンポーネントを使うかというより具体性のあるAIとの共通言語ができたので1つのガードレールとして機能しながら快適に開発できたと思います(私は海外のサイトによくありがちなグラデーションが多用されたAIが生成するデザインがあまり好きではないので、shadcn/uiを導入することで要素と色に統一感が出て満足しています)。

本当はストーリーブックを導入した方が自分の好みのデザインで、尚且つAIと認識を揃えることができると思いますが時間の関係で1から

TDDの導入

上記にもあるとおり意識したことの1つとして「想定外のことを極力起こさない」ということがありました。そのため、1つ機能を開発するにしてもまずはテストケースを作成してもらい、それをチェックした上でそのテストケースにそうような形でClaudeに実装してもらうよう指示していました。
これによって想定外の実装はほぼなかったように感じます。結果的に開発にスピードを出すことにも繋がったのではないでしょうか。

やりたかったけど時間の制約上諦めたこと

AIエージェントのオーケストレーション的な利用

AIを活用して開発する記事を眺める中で、エージェントに役目を与えて開発をするやり方をいくつか見つけました。

感想

今回この開発期間にAWS SAAも取得したりと、色々なことを平行しながら取り組んでいました。
よかった点としては中間発表の際に機能は全て完成したものをあげられたことです。
(ただここで安心してその後の動きが鈍くなってしまったのは内緒です、、、笑)

また機能選定の際にはメンターの方やCTOとも壁打ちをさせていただきました。特にメンターの先輩には元々用意されていた枠以外でも壁打ちの時間をいただくお願いをして、アプリケーションやプレゼンのFBをいただきました。本当にありがとうございました🙇

執筆者

本松 達裕

本松 達裕

# フロントエンドエンジニア

AWS CLF, SAA取得。周りと一緒に成長する頑張れって感じのエンジニアを目指しています。反復・継続・丁寧の鬼(になりたい)。広報運動家。