> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# コードカバレッジ

> Devin はコードベースのテストスイートを分析し、チームのコードカバレッジを高めるための追加テストを作成できます。

<div id="improving-code-coverage-with-devin">
  # Devin を使ったコードカバレッジの向上
</div>

本番環境で稼働しているアプリケーションのほとんどは、コードカバレッジが 100% ではありません。エンジニアリングチームはシビアに優先順位を付ける必要があり、限られた時間から最大の効果を得るために、クリティカルパスのテスト作成に注力しがちです。Devin は、コードベースの既存のテストスイートのスタイルを分析し、クリティカルではないものの依然として重要な関数のカバレッジを拡大することで、このギャップを埋めることができます。

この例では、RealWorld 仕様に基づくオープンソースの Typescript サンプルアプリケーションを扱います。このアプリケーションにはすでにいくつかテストがありますが、カバレッジは十分に網羅的ではありません: [https://github.com/SeuRonao/realworld-express-prisma](https://github.com/SeuRonao/realworld-express-prisma)

完全な Run は[こちら](https://app.devin.ai/sessions/9169ca11ab2141f9b0a5345f0338632d?ts=1727821682237)から確認できますし、そのままこの後の本文を読み進めて、Devin のプロセスの各ステップの要点を追っていくこともできます。この投稿では、Editor や Shell など、Devin の Workspace のさまざまな部分を順に取り上げていきます。

<div id="initial-prompt">
  #### 初期プロンプト
</div>

まず、Devin に開発環境のセットアップと、アプリケーションの既存コードカバレッジの評価を行うよう指示するシンプルなプロンプトから Run を開始します。

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/57fe8d5a746bec6477a14fdb0918d500bdc94092-1318x468.png)
</Frame>

Devin はシェル内で、まず GitHub からリポジトリをクローンし、README ファイルを読み取り、ローカル環境にプロジェクトの依存関係をインストールします。

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/d89ed7e02584d27c4830fbee59f819fdeff119a0-1332x1188.png)
</Frame>

続いて Devin は、内蔵エディタを使って `.env` ファイルを作成し、アプリケーションをローカルで実行できるようにします。Devin と一緒に作業する際は、VS Code を自分で開いて手動で編集したり、Devin が作業しているファイルを確認・レビューしたりすることもできます。

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/193d75f4af3868b6057729de9370001715d7e385-1360x486.png)
</Frame>

<div id="establishing-a-coverage-baseline">
  #### カバレッジのベースラインを確立する
</div>

続いて Devin は、自身の Shell でテストスイートを実行します。Devin の大きな利点の 1 つは、チームのコードを変更・作成できるだけでなく、自身の Browser と Terminal から直接作業し、コードベースや開発環境、さらには稼働中のアプリケーションに対して、より高レベルな操作を行えることです。

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/b975dcb6d4ffab70f223185e443197a4fe7470c0-1172x906.png)
</Frame>

以下のように、Devin が Shell での結果をどのように解釈し、より人間が読みやすく要点を絞った形にしてチャットに反映しているかがわかります。

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/88d2ea80095b6c7fcc2335b2f0895e4514d4c608-1536x1014.png)
</Frame>

<div id="making-an-improvement-plan">
  #### 改善計画の作成
</div>

ここから、実際のタスクであるコードカバレッジの向上に進みます。デフォルトではほとんどカバレッジがないことから、profileViewer.ts が最初に取り組むのに適した対象のようです。次のステップについて Devin にプロンプトを入力すると、プロセス全体を通して何が起きているかを逐一報告してくれます。

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/a954746c9a9132a562b061785708d8f8c4e2f309-1336x1478.png)
</Frame>

Devin は既存のファイルを読み込み、そこにある機能に基づいてどのようなテストケースを実装すべきかを判断し、介入なしで実際に新しいテストを書いてくれます。新しいテストケースの実装が完了すると、Devin は行った変更内容の最終的な概要を示してくれます。

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/cbebc6dd647b42c1539219a6dd9d12a48b358d06-1334x890.png)
</Frame>

<div id="code-review">
  #### コードレビュー
</div>

また、Devin は新しいファイルを共有してくれるので、それをダウンロードしてレビューすることもできます。あるいは、この新しいファイルを含めて [GitHub 上で直接プルリクエスト (PR) を作成する](/ja/integrations/gh) よう Devin に依頼し、通常のコードレビュー プロセスの一環として確認してもらうこともできました。ここでは、ファイルをダウンロードする手間を省くために、Devin に組み込まれているEditor上でそのままレビューすることにします。

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/20ce6078f7ed37fbd1aeb97f41c395d51eca8291-1842x1196.png)
</Frame>

全体的に変更内容は良さそうですが、見落としているランタイムバグがないことを確認したいので、テストスイートをもう一度実行して結果を報告するよう Devin に依頼します。

<Frame>
  ![Devin](https://cdn.sanity.io/images/2mc9cv2v/production/4e384c0d9df09ef718a397fb852ff0aaf82c4244-1344x1176.png)
</Frame>

テストは期待どおりに実行され、関数のカバレッジは 28.57% から 57.14% に増加しました。これはまさに達成したかった目標です。途中で席を外し、次の指示を Devin に与えるまで待たせたにもかかわらず、この一連の処理を実装するのに Devin が要した作業時間は 10 分もかかりませんでした。テストカバレッジの向上を Devin に任せるだけで、エンジニアリングチームのバックログから退屈なタスクを取り除くことができます。

もしコードカバレッジを上げるために頻繁に Devin に戻ってきているのであれば、このプロンプト自体を [詳細な Playbook](/ja/product-guides/creating-playbooks) にしてしまい、アプリケーションのさまざまな部分に対して簡単に新しい Run を開始できるようにすることもできます。Devin がどのような種類のプロンプトと相性が良いかをさらに知りたい場合は、ドキュメントにあるいくつかの [サンプル](/ja/learn-about-devin/prompting) を参照してください。
