0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude CodeでREADME.mdのアーキテクチャを適用させたら素敵なアプリができた

0
Posted at

Claude CodeでREADME.mdのアーキテクチャを適用させたら素敵なアプリができた

ai_creation_pokeapp.png

はじめに

2025年6月、ClaudeのProプランで「Claude Code」が利用可能になりました。今回、最初から「このアプリを作りたい」という明確なゴールは持たずに、プロジェクト設計の方針だけを記載したREADME.mdをClaude Codeに渡し、何を作るかから提案してもらうというアプローチで開発を進めました。

提示した条件はシンプルで、「このアーキテクチャと使いたいパッケージを活かせるオープンソースのAPIを提案して」という一言だけです。Claude Codeは複数のAPIを候補として挙げ、それぞれの特徴まで説明してくれました。その中からPokéAPIを選択すると、即座にプロジェクト構成を提案し、コーディングを開始。なんと一発で動作する素晴らしいアプリが完成しました。

Claude Codeの提案力

Claude Codeに「Dio と Retrofit を使ったFlutterサンプルアプリを作りたい。これらのパッケージが活かせるオープンソースのAPIを提案して」と依頼したところ、以下の提案をしてくれました:

  • OpenWeatherMap API - 天気予報データ
  • NewsAPI - 世界中のニュース記事
  • PokéAPI - ポケモンの詳細データ
  • REST Countries - 国の情報

各APIの特徴や使いやすさ、認証の有無まで説明してくれた上で、PokéAPIを選択すると、即座にコーディングを開始しました。

渡したREADME.md

実際にClaude Codeに指示したREADME.mdは以下のような内容です:

# Flutter 基本開発方針

## アーキテクチャ
MVVM + Repository

## 利用パッケージ
### 状態管理
- hooks_riverpod
- state_notifier

### API通信
- dio
- retrofit

### モデルユーティリティ
- freezed
- json_serializable

### その他
- logger
- flutter_lints
- mocktail

このシンプルな情報だけで、Claude Codeは完全に動作するアプリを作成してくれました。

できあがったアプリの特徴

1. 一貫性のあるコード生成

  • 既存プロジェクトのパターンを理解し、同じスタイルでコードを生成
  • ネーミング規則やディレクトリ構造を自動で踏襲
  • pokemon_list_page.dartpokemon_detail_page.dart で一貫したファイル構造

2. 包括的な機能実装

  • API通信、状態管理、UI構築を一括で実装
  • エラーハンドリング、ロギング、ローディング状態の管理も含めて実装
  • テストコードまで生成

3. ベストプラクティスの自動適用

  • MVVM + Repository パターンの適切な実装
  • Freezed によるイミュータブルなモデル設計
  • Riverpod のプロバイダー設計のベストプラクティス

4. リッチなUI

かなりデザイン面もリッチにしてくれました:

  • キャラクターのサムネイル画像を丸く括る
  • パラメータをカードのようなレイアウトに
  • センタリングなど配置も良い感じ

5. インフィニティスクロール対応

リストは20件ずつ読み込むインフィニティスクロールに自動対応。スクロール位置がリストの下端に近づくと、続きの20件を読み込んでリストを延長する実装になっていました。

更新されたREADME.md

開発結果に合わせて、Claude CodeはREADME.mdも丁寧にアップデートしてくれました:

# Pokemon App

PokéAPIを使用したFlutterサンプルアプリケーション。
MVVM + Repositoryアーキテクチャ、hooks_riverpod、
freezed、retrofitなど、モダンなFlutter開発の
ベストプラクティスを実装しています。

## セットアップ
1. 依存関係のインストール
2. コード生成
3. アプリの起動

## 機能
- ポケモン一覧表示(無限スクロール対応)
- ポケモン詳細表示
- プルダウンリフレッシュ
- エラーハンドリング
- ロギング

もともとの使用したいパッケージ一覧とざっくりとしたフォルダ構成も、きちんと整理してまとめてくれています。そしてセットアップ手順や適用アーキテクチャ、簡単な機能概要まで追加してくれる親切っぷりです。

実装の詳細

Dio/Retrofitを活用したAPI通信

@RestApi(baseUrl: "https://pokeapi.co/api/v2/")
abstract class PokemonApi {
  factory PokemonApi(Dio dio, {String baseUrl}) = _PokemonApi;

  @GET("/pokemon")
  Future<PokemonListResponse> getPokemonList(
    @Query("limit") int limit,
    @Query("offset") int offset,
  );

  @GET("/pokemon/{name}")
  Future<PokemonDetail> getPokemonDetail(
    @Path("name") String name,
  );
}

型安全で保守性の高いAPI通信を実現してくれました。

MVVM + Repository アーキテクチャ

[UI層]
 View (HookConsumerWidget)
 ↓
 ViewModel (StateNotifier)
 ↓
[データ層]
 Repository
 ↓
 ApiClient (Retrofit)
 ↓
 Dio

明確な責務分離により、テストがしやすく、変更に強い設計が実現されています。

Claude Codeを使った開発のポイント

1. プロジェクトの方向性を明確に伝える

「Dio と Retrofit を使ったFlutterサンプルアプリを作りたい。これらのパッケージが活かせるオープンソースのAPIを提案して」

2. 技術スタックを事前に指定

  • 使用するパッケージ(hooks_riverpod, freezed, retrofit など)
  • アーキテクチャパターン(MVVM, Clean Architecture など)
  • コーディング規約やスタイル

3. 段階的に機能を追加

  • まず基本機能を実装してもらい、動作確認
  • その後、追加機能を段階的に依頼
  • 各段階で生成されたコードをレビュー

4. 不明点や改善点は積極的に質問

  • 「なぜこの実装にしたの?」
  • 「この部分をもっと効率化できない?」
  • 「エラーハンドリングを追加して」

まとめ

Claude Codeは、README.mdに記載したアーキテクチャとパッケージ情報だけで、以下を自動的に実現してくれました:

✅ API候補の提案と特徴説明
✅ プロジェクト全体の設計と実装
✅ ベストプラクティスに基づいたコード生成
✅ エラーハンドリングやロギングの実装
✅ リッチなUIとUX
✅ README.mdの自動更新

特に印象的だったのは、「何を作るか」から提案してくれる点です。単にコードを生成するだけでなく、開発の方向性から一緒に考えてくれるのがClaude Codeの大きな強みだと感じました。

Flutter開発者にとって、Claude Codeは圧倒的な開発速度の向上と、ベストプラクティスを学ぶ機会を提供してくれるツールです。ただし、生成されたコードを理解し、必要に応じてカスタマイズできる能力は、これまで以上に重要になってきています。


詳細な実装内容や、Dio/Retrofit、MVVM+Repositoryパターンの具体的な解説は、以下の記事で詳しく紹介しています:

👉 Claude CodeでREADME.mdのアーキテクチャを適用させたら素敵なアプリができた

記事では以下の内容も詳しく解説しています:

  • Dio/Retrofitの型安全なAPI通信の実装
  • MVVM + Repositoryアーキテクチャの詳細
  • hooks_riverpod、freezed、go_routerの活用方法
  • 実際の開発フローと生成されたコード
  • Flutter開発者にとってのメリット・デメリット

ぜひ本編記事もご覧ください!

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?