2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI時代にJava設計はどう変わったのか ~きれいなコードが増えたのに複雑さが消えない理由~

2
Last updated at Posted at 2026-04-09

本記事は、2026/5/30開催の「JJUG CCC 2026 Spring」の登壇内容に関連した技術記事シリーズです。
AIエージェント(Copilot / Claude Code / Cursor)の普及により、Java開発の前提は大きく変わりました。
本シリーズでは「AI時代における設計の変化」をテーマに、実務視点で整理していきます。

【シリーズ一覧】

  1. AI時代にJava設計はどう変わったのか(本記事)
  2. カッペリーニコードとは何か
  3. Java17/21は設計をどう変えたか
  4. AIは設計できるのか
  5. AI時代の設計ガードレール

この記事で得られること

  • AI(Copilot / Claude Code / Cursor Agent)前提での開発スタイルの変化が整理できる
  • Java17 / 21の進化が「設計」にどう影響したか理解できる
  • なぜ「コードはきれいなのにシステムは複雑になるのか」が腹落ちする
  • AI時代において人間が設計すべき領域が明確になる

結論

AIによってコードは簡単に書けるようになった。
Javaによってコードはさらにシンプルになった。

しかし、

設計の難易度はむしろ上がっている。

なぜ今この話をするのか

ここ1〜2年で開発の前提が明確に変わりました。

  • Copilotによるコード補完
  • Claude Code / Cursor Agentによる複数ファイル変更
  • AIによるテスト生成・リファクタリング・PR作成

もはやAIは「便利な補助ツール」ではなく、

開発を実行する主体の一部

になっています。

この変化を前提にしない設計は、確実に破綻します。

1. AIエージェントによって「開発の主語」が変わった

現在のAIは大きく3つに分類できます。

分類 代表例 役割
補完型 Copilot コード補完
エージェント型 Claude Code / Cursor Agent 実装・修正・リファクタリング
IDE統合型 Cursor / Windsurf プロジェクト理解

特に重要なのはエージェント型です。

従来:

人間が設計し、人間がコードを書く

現在:

人間が意図を伝え、AIが実装する

さらにAIは複数ファイル変更、リファクタリング、テスト生成、PR作成まで実行します。

つまり、

「コードを書く」という行為はほぼ自動化された

と言えます。

2. 開発は「ツール」ではなく「プロセス」から変わっている

現在議論されている代表的な概念は以下です。

概念 概要
CC-SDD コード中心で設計・開発を進める思想
AI-DLC AIを組み込んだ開発プロセス全体
OpenSpec 仕様を中心にAIと連携する手法
Spec-Driven Development 仕様から実装・テストを生成するアプローチ
PromptOps プロンプト設計・管理・運用の体系化
Agentic Development AIが自律的に開発を進めるモデル

これらに共通しているのはシンプルです。

コードを書く主体が人間からAIへ移行している

では人間は何をするのか?

構造・意図・制約を設計する

これが役割になります。

3. Java17 / 21は「コードを正しく書きやすくした」

JavaもAI時代と相性の良い方向に進化しています。

機能 効果
Record DTOを簡潔に表現
Sealed Classes 型の制約を明確化
Pattern Matching 分岐をシンプル化
Virtual Thread 並列処理を扱いやすく

これらの進化によって、

短く・明確なコードを書くことが容易になった

のは間違いありません。

ただし重要なのは、

これらは設計を保証する機能ではない

という点です。

4. 「きれいなコード」は簡単に作れるようになった

現在は以下のようなコードは簡単に生成できます。

  • Controller
  • Service
  • Repository
  • DTO
  • Testコード

しかも命名は自然、レイヤー構造は整理されている、可読性も高い。

つまり、

局所的には非常にきれいなコードが量産される

状態になっています。

5. それでも複雑性が消えない理由

ここが本質です。

AI時代に増えている問題は次のようなものです。

  • クラスが増えすぎる
  • 小さな責務が分散する
  • 依存関係が増える
  • 全体像が見えなくなる

例えばよくある構成です。

UserController
UserService
UserUseCase
UserFacade
UserMapper
UserDTO
UserResponse
UserRequest

一つ一つは正しく、きれいです。

しかし、

全体として何をしているのかが見えにくい

なぜこうなるのか

理由は明確です。

AIは局所最適を積み重ねることに非常に強い一方で、全体構造を維持する主体ではありません。

さらに人間側も、コードを書かなくなり、構造に触れる機会が減るという変化が起きます。

その結果、

コードはきれい
しかし設計は見えなくなる

という状態になります。

さらに重要な問題

設計の責任がどこにも存在しなくなる

  • AIは設計を生成するだけ
  • 人間は構造を深く触らない

この状態が最も危険です。

6. AI時代に人間が設計すべき領域

ここは明確に分ける必要があります。

✅ AIに任せてよいもの

  • CRUD実装
  • DTO生成
  • テストコード
  • 単純なリファクタリング

🔴 人間がやるべきもの

  • パッケージ構造
  • レイヤー設計
  • 責務分割
  • トランザクション境界
  • 依存関係の制御

設計判断のチェックポイント

実務で使える観点として、最低限ここを見ます。

  • そのクラスは存在理由を説明できるか
  • 依存関係は一方向か
  • 変更時の影響範囲が読めるか
  • 同じ責務が分散していないか

まとめ

  • AIによってコード生成はほぼ自動化された
  • Javaの進化によってコードはさらにシンプルになった
  • しかし設計は自動化されていない

そして最も重要なのはこれです。

AI時代では「コードを書く力」より「構造を設計する力」が価値になる

次回予告

従来、設計が崩れたコードは「スパゲッティコード」と呼ばれてきました。

しかしAI時代の問題は異なります。

  • 細かいクラスが大量に存在する
  • 一つ一つはきれい
  • しかし構造は絡み合っている

私はこれを 「カッペリーニコード」 と呼んでいます。

次回はこの問題を深掘りします。

2
2
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
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?