はじめに

こんにちは!普段、ソフトウェア開発の現場で「もっと効率的に開発を進められないか」と感じることはありませんか?特に、GitHubのIssueを読んで、ローカルで環境を立ち上げ、コードを書き、テストを実行し、プルリクエストを作成する…という一連の作業は、一つ一つは小さくても積み重なると大きな時間になりますよね。

最近、話題のAIソフトウェアエンジニア「Devin」を試す機会があり、GitHubのIssueからプルリクエストを作成するプロセスがかなり効率化されたことに衝撃を受けました。

この記事では、Devinがどのように私たちの開発ワークフローをサポートするのか、そして実際に使ってみて感じた「便利さ」と「うまく使うためのコツ」をご紹介します。

Devinとは?

まず、「Devinって何?」という方のために簡単にご紹介します。

Devinは、Cognition社が開発した完全自律型AIソフトウェアエンジニアです。(公式サイト: https://devin.ai/
単にコードを生成するだけでなく、人間と同じように開発計画を立て、コードを書き、デバッグし、最終的にタスクを完了してくれます。

今回Devinを試した状況と作業内容

既存のGitHubリポジトリのコードを使用して、作成されたIssueを元にサービスの改修を行いました。

これまでの開発フロー:Issueからプルリク作成まで

これまでの一般的な開発フローを思い出してみましょう。

  1. Issueの確認: 担当するIssueの内容を読み込み、背景や目的を理解します。必要であれば関連するコードを読み解き、調査を行います。
  2. 開発環境の準備: ローカルに最新のソースコードをプルし、新しい開発ブランチを作成。必要なライブラリのインストールなど、開発環境を整えます。
  3. コーディング: Issueの要件を満たすようにコードを実装します。
  4. テスト: ユニットテストや結合テストを作成し、変更が既存の機能に影響を与えていないか、新しい機能が正しく動作するかを確認します。
  5. コミットとプッシュ: 変更内容を分かりやすくコミットメッセージにまとめ、リモートリポジトリにプッシュします。
  6. プルリクエストの作成: GitHub上でプルリクエストを作成し、変更内容やレビューしてほしい点を記述します。

この全部のステップをこなすには、結構集中しないといけないし、考えることも多いです。

Devinを使った場合の開発フロー:Issueからプルリク作成まで

一方、Devinを使うと開発フローはシンプルになり、人間がやることは、実質的に「指示」と「確認」だけです。

  1. Devinに指示を出す
    「このIssueを解決してプルリクを作成して」と、DevinのインターフェースにGitHub IssueのURLを貼り付けて指示を出します。そうするとDevinが自律的に作業を開始します。
  2. Devinの作業を見守りながらチャットで指示を出す
    Devinは内部で、Issueの分析→計画立案→コーディング→テスト→デバッグといった一連の作業を自動で進めてくれます。その様子をリアルタイムで確認できるので、もし予想と異なる部分があれば、チャットで指示して修正してもらいます。
  3. 完成したプルリクエストを確認する
    すべての作業が終わると、Devinがプルリクエストを作成し、URLを教えてくれます。そしてその内容を最終レビューし、問題がなければマージします。

実際に使って感じたDevinをうまく使うコツ3つ

今回Devinを試してみて、単に「便利」というだけでなく、AIとうまく協業していくためのコツが見えてきました。

1. ReadMeやドキュメントが、AIの作業ガイドになる
Devinはコード解析時に、ReadMe.mdを読み込んでいました。セットアップ方法やプロジェクトの概要がしっかり書かれていると、それを元にスムーズに作業を進めてくれるようです。人間にとって分かりやすいドキュメントは、AIにとっても役に立ちそうです。

2. 最終的なコードレビューは常に必要
Devinが生成したコードはほぼ期待通りでしたが、一部、プロジェクト固有のコーディング規約やAWSベストプラクティスに沿っていない部分がありました。これらはチャットで指示して修正してもらったので、人間によるレビュープロセスおよび人間側の知識も欠かせないと感じました。

3. AIの「事前学習」が重要
逆に言えば、こうした固有ルールを(将来的には設定などで)あらかじめDevinにインプットしておけば、手直しの手間も減らせそうです。AIを単なるツールとして使うだけでなく、自分たちのプロジェクトに合わせてカスタマイズするという感覚が大事だと思います。

まとめ

これからは、コードを書く作業はAIに任せて、人間はアイデア出しに時間を使う、そんな風になっていくのかもしれません。
これからもAIを活用して業務の効率化をしていきたいと思います!