Gemini Code Assist実践ガイド：リファクタリングからテスト・ドキュメント生成まで

# はじめに
前回の記事で紹介した[Gemini Code Assistの導入方法](https://qiita.com/00b012deb7c8/items/7c998b3634580a239d3c)に続き、今回は実際のコーディングでの活用例を紹介します。

# 題材
幅広く知られている「FizzBuzz問題」を題材にします。
FizzBuzzは、1から100までの整数を順に出力し、3の倍数で「Fizz」、5の倍数で「Buzz」、両方の倍数で「FizzBuzz」と表示するシンプルな問題です。

## 冗長なコード例
3の倍数、5の倍数、15の倍数それぞれで個別にif-elseを使い、条件が重複する書き方
```python
for i in range(1, 101):
    if i % 3 == 0 and i % 5 == 0:
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)
```

:::note
この形は素直な実装ですが、条件式や出力内容が重複しやすく、冗長になりがちです
:::

# Gemini Code Assistによるリファクタリング
#### VSCodeでコードを書いてGemini Code Assistを起動する
![24b9c0c70a6dc714b4db-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4001795/362ad3df-d7a7-4b26-9c8b-eace03906c20.png)

#### Gemini Code Assistのインラインプロンプトでリファクタリングを指示
![24b9c0c70a6dc714b4db-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4001795/8475322d-baa8-4bcf-9fdb-3da5c6966ec4.png)

対象の場所を選択した状態で、インラインプロンプト（Quick Pickメニュー）を開きます。
- Windowsの場合：Ctrl + I
- macOSの場合：Command + I

「このFizzBuzzコードを最適化してください」など入力してEnter

#### 提案された変更の確認・適用

![24b9c0c70a6dc714b4db-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4001795/d6395354-959d-4e19-a1a4-05f489afa5bd.png)

Gemini Code Assistがリファクタリング案を生成し、diffビューで変更点が表示されます。
内容を確認し、「Accept（適用）」または「Discard（破棄）」を選択します。

# テストコード自動生成
#### Gemini Code Assistにテスト生成を依頼
![24b9c0c70a6dc714b4db-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4001795/5d3babee-d1a4-4efe-a723-7291eb1b9a74.png)

次はチャットパネルを使ってみます。
コード部分を選択した状態で、チャットパネルに
```
@[対象のファイル名] このコードのユニットテストを作成してください
```
など入力して送信します

#### テストコードの確認・適用
![24b9c0c70a6dc714b4db-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4001795/697f62fe-d6f9-4064-b059-c35043772692.png)

自動生成したユニットテストコードが作成されます。
内容を確認し、問題なければ適用します。

そうすると、元のファイル名に test_ がついたテスト用のファイルが作成されます。
（sample.py → test_sample.py

:::note
もとのFizzBuzzのコードは関数になっていなかったので、
適用すると同時に元のFizzBuzzのコードが関数に修正されます
:::

![24b9c0c70a6dc714b4db-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4001795/3d3359c9-f09e-414d-b5cc-95d7b26ca60d.png)

#### テストの実行
ターミナルでテストを実行します
![24b9c0c70a6dc714b4db-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4001795/6f0326d4-b00c-405a-9318-30ea9d8ea15e.png)

```bash
python -m unittest test_sample.py
```

テストがすべてパスすればOKです。
失敗した場合は、FizzBuzz関数やテスト内容を見直し、必要に応じて修正します。


# ドキュメント自動生成
FizzBuzz関数のドキュメント（docstring）を自動生成してみます。

#### チャットパネルでドキュメント作成を指示する
![24b9c0c70a6dc714b4db-8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4001795/9c675662-30e4-480c-82ae-c1da000f127e.png)

#### ドキュメントの確認・適用
![24b9c0c70a6dc714b4db-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4001795/0fc7f3b5-73f5-463d-b46b-ae0d48a3794c.png)

![24b9c0c70a6dc714b4db-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4001795/445365f2-dd64-4ee1-b4e9-ca824a5e2b2f.png)

もちろん日本語でも作成可能です
![24b9c0c70a6dc714b4db-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4001795/53354611-4dcb-4b86-b83f-8931ca045712.png)


# まとめ
本記事では、前回紹介したGemini Code Assistの導入に続き、冗長なFizzBuzz実装を題材にして、AIによるリファクタリング、ユニットテスト自動生成、ドキュメント自動生成の流れを整理しました。

Gemini Code Assistの利用により、
- コードの可読性・保守性向上
- テストやドキュメントの自動化による開発効率アップ
- チームでのナレッジ共有や品質担保の促進

といった実践的なメリットを得られることが分かりました