Android Studio の Gemini の機能

Android Studio の Gemini を使ってみる。

Android Studioを起動し、Empty Activityを選択。

プロジェクト名をつけて「Finnish」。

Geminiを起動する

Gemini を起動するには、Android Studio プロジェクトを開くか開始して、[Gemini]アイコンをクリックします。

ログインしていない場合には、「Sigin in to Google」のボタンをクリックしてGoogleアカウントにログインします。

ブラウザが開きます。Googleアカウントにログインすると「Googleは、あなたに関する情報へのアクセスをAndroid Studio に許可します」と表示されます。プライバシーポリシー・利用規約を読み「次へ」をクリックします。

「Android Studio が Googleアカウントへのアクセスをリクエストしています」と表示されます。「許可」をクリックします。

「Success! You’ve signed in to Android Studio. To continue, go back to Android Studio.」と表示されたら、ブラウザを閉じ、Android Studioに戻りましょう。

チェックを入れ、「Next」を押します。

ここで規約が表示されます。内容は以下の通り。

  • Geminiとプライバシー規約 要約
  • 収集されるデータ
    • チャット、プロンプト、コード、生成結果、使用状況、フィードバック
  • 利用目的
    • Google製品・サービス(Google Cloud含む)の提供・改善・開発
  • 人間レビュー
    • 品質向上のため、人間がデータを読み取り・注釈・処理する可能性あり
  • 保持期間
    • 最大18か月(匿名化)
    • この期間中は削除不可
  • 注意事項
    -機密情報や個人情報を含めないこと

「Next」を選択します。

NOTE: 規約で述べられている通り、Geminiを通じて収集されたデータはGoogleによって利用されます。機密情報や個人情報を含めないよう注意するのはもちろんのこと、企業での利用は機密性を持つ情報を取り扱うことが多いため慎重に検討する必要があります。企業向けには、「企業向け Gemini in Android Studio」が用意されているので、知的財産権とコンプライアンスを重視する場合は企業向けGeminiを利用してください。

今度は、プロジェクトコンテキストに関する設定です。プロジェクトコンテキストを使うとプロジェクトの内容に合わせてGeminiが生成してくれるため、状況にあったコードを生成しやすくなります。しかし、プロジェクト全体が読み取られるため、たとえば個人情報やパスワードなどの機密情報が読み取られないよう注意しましょう。機密情報は一箇所にまとめ、.aiexclude ファイルに記載します。.aiexclude を使うことで Gemini と共有すべきでないファイルの情報を記載することで、特定のファイルやディレクトリを除外することができます。

「Use chat only, without project context」を選択した場合、Geminiはプロジェクトの情報を使用しません。Geminiはプロンプトと過去の会話履歴のみを使用して応答します。そのためこのモードでは、AIコード補完などの一部の機能は利用できません。

ここでは「Use all Gemini features (recommended)」を選択してください。「Apply to all projects」にチェックを入れると、すべてのプロジェクトに適用することができます。またここでの設定は【Settings】→【Tools】→【Gemini】より設定可能です。

AGENTS.md

AGENTS.mdファイルを使用すると、Geminiの動作を調整することができます。このファイル自体すらも、Geminiに作成させることができます。

今回は、Claudeさんにお願いして、Gemini向けAGENTS.mdを作ってもらいました。Claudeさんには次のようにお願いしました。

Geminiを使って、AndroidStudioのプロジェクトを管理しています。
プロジェクトの画面説明を画像添付しますので、こちらも参考にして、AGENTS.mdを作成してほしい、AGENTSでGeminiに指示したい内容をこのあと指定しますのでこれを下にノートアプリの機能を検討しAGENTSに記載してください。

応答は日本語で行ってください。

このプロジェクトは、ノートアプリです。シンプルな1画面のメモ一覧UIを持ちます。メモ一覧UIにはタイトル、検索アイコン、情報アイコン、追加アイコン(右下の+FABアイコン)があります。

メモ画面では、タイトル、本文、更新日時、作成日時、SAVEボタン、シェアボタンがあります。

Claudeは次のようなAGENTS.mdを作ってくれました。これをAndroidStudioに保存します。
もしくは、Claudeにお願いするのではなく、Geminiにお願いすれば、AGENTS.mdファイルの作成も行ってくれますので、ファイルの作成、保存といった手作業すらも省略することができます。

# Notes App - Gemini Agent Instructions

## プロジェクト概要
シンプルで使いやすい1画面構成のノートアプリ。Jetpack Compose + Material3 + Room DBで構築。

## アーキテクチャ
- MVVM(Model-View-ViewModel)パターン
- Repository層によるデータアクセスの抽象化
- Kotlin Coroutines + Flowによる非同期処理
- 単一Activityマルチスクリーン構成(Compose Navigation)

## 主要機能

### 1. メモ一覧画面(NotesListScreen)
**UI構成:**
- トップバー
  - タイトル「Notes」
  - 検索アイコン(右上)
  - 情報アイコン(右上)
- メモカードリスト(LazyColumn)
  - タイトル表示
  - 本文プレビュー(最初の数行)
  - 更新日時表示(オプション)
- FAB(右下):新規メモ作成用の+アイコン

**機能要件:**
- メモの一覧表示(新しい順)
- メモカードタップで詳細画面へ遷移
- スクロール可能なリスト
- 空状態の表示(メモが0件の場合)
- 検索機能の実装
- アプリ情報表示機能

**データ表示:**
- タイトルが空の場合は「(タイトルなし)」などのフォールバック表示
- 本文プレビューは23行まで、それ以上は省略記号(...)で切り詰め

### 2. メモ詳細・編集画面(NoteDetailScreen)
**UI構成:**
- トップバー
  - 戻るボタン(<)
  - SAVEボタン
  - シェアボタン
- 編集エリア
  - タイトル入力フィールド(TextField)
  - 本文入力フィールド(TextField、複数行対応)
- フッター情報
  - 更新日時表示(更新: YYYY/MM/DD形式)
  - 作成日時表示(作成: YYYY/MM/DD形式)

**機能要件:**
- 新規メモ作成モード
  - 空のタイトル・本文フィールド
  - 保存時に作成日時・更新日時を記録
- 既存メモ編集モード
  - 既存データの読み込み・表示
  - 保存時に更新日時のみ更新
- リアルタイム編集(入力内容の即時反映)
- SAVEボタン:データベースへの保存処理
- シェアボタン:テキスト共有のAndroid共有インテント起動
- 戻るボタン:一覧画面へ戻る(未保存の変更がある場合は確認ダイアログ表示を推奨)

### 3. 検索機能
**実装:**
- 検索アイコンタップで検索バー表示(または新しい検索画面へ遷移)
- タイトル・本文の両方から部分一致検索
- リアルタイム検索結果の更新
- 検索結果の件数表示

### 4. 情報表示機能
**実装:**
- 情報アイコンタップでダイアログまたは新画面表示
- アプリバージョン情報
- 開発者情報
- ライセンス情報など

## データモデル

### Note エンティティ
```kotlin
@Entity(tableName = "notes")
data class Note(
    @PrimaryKey(autoGenerate = true)
    val id: Long = 0,
    val title: String,
    val content: String,
    val createdAt: Long,  // Unix timestamp
    val updatedAt: Long   // Unix timestamp
)
```

## データベース設計
- Room Database使用
- NotesDao:CRUD操作のインターフェース
  - getAll(): Flow<List<Note>> - 全メモ取得(更新日時降順)
  - getById(id: Long): Flow<Note?> - ID指定取得
  - insert(note: Note): Long - 新規作成
  - update(note: Note) - 更新
  - delete(note: Note) - 削除
  - search(query: String): Flow<List<Note>> - 検索

## Navigation構成
```
NotesListScreen (startDestination)
  ↓ (FAB or カードタップ)
NoteDetailScreen (引数: noteId or null for new)
  ↓ (戻るボタン)
NotesListScreen
```

## UI/UXガイドライン
- Material3 Design準拠
- ダークモード対応
- レスポンシブデザイン(タブレット対応も考慮)
- アクセシビリティ対応(contentDescription設定)
- 日本語UIテキスト

## コーディング規約
- Kotlin coding conventions準拠
- Composable関数名はPascalCase
- ViewModelはHiltでDI
- 状態管理はStateFlowまたはStateを使用
- エラーハンドリングの適切な実装

## テスト方針
- ViewModelのユニットテスト
- Daoのインストゥルメンテーションテスト
- UI要素の表示確認テスト

## Geminiへの指示方針
1. 機能追加時は既存コードとの整合性を保つこと
2. Material3のベストプラクティスに従うこと
3. パフォーマンスを考慮した実装(無駄な再コンポーズを避ける)
4. 日本語コメントとドキュメントを適切に記述すること
5. エッジケースの処理(空文字、null、長文など)を考慮すること
JSON

こうして、「アプリケーションを作成してください。画面構成は画像を参考にしコンポーネントの全体的な配置とサイズを尊重してください。」と依頼をします。

アプリケーションを作成してください。画面構成は画像を参考にしコンポーネントの全体的な配置とサイズを尊重してください。

Geminiが作業を開始し、ソースの変更を提案するので、内容を確認しAcceptを選択します。エラーが発生した場合はそのエラーも随時解決しながら、Geminiが作業を進めてくれます。

毎回修正内容を確認するのが面倒な場合、「Auto-accept changes」にチェックを入れると、自動的にAcceptされ最後まで処理が進みます。

コメント

タイトルとURLをコピーしました