Alternative Architecture DOJO

オルターブースのクラウドネイティブ特化型ブログです。

GitHub Copilot Workspaceが利用可能になったのでゼロからアプリを作ってみた

こんにちは、MLBお兄さんこと松村です。
昨年の MLB 全体ドラフト1位のポール・スキーンズ投手がメジャーデビューしました。予想通りの豪速球でした。


2024年4月29日についにテクニカルプレビューが開始となった GitHub Copilot Workspace ですが、ゴールデンウィーク中に私のアカウントでも利用可能となっていたため、試してみたことを書いていきます。

利用開始まで

この記事を書いている時点では、 GitHub Copilot Workspace の利用には待機リスト (Waitlist) への登録が必要であり、その通過を待つ必要があります。
そのため GitHub Copilot Workspace を利用したい方は、こちらから登録を行いましょう。

githubnext.com

ゼロからアプリを作ってみる

今回は練習として私がコードを書くこと無く、 C# の簡単なアプリを作ってみます。
GitHub Copilot Workspace でコードを生成する流れとしては、以下のようになります。

  1. 要件をまとめた Issue を作成する
  2. Issue からワークスペースを起動する
  3. Copilot が仕様や計画を作成・提案する
  4. 仕様や計画に不足があれば追加する
  5. Copilot がコードを実装する
  6. ワークスペースからプルリクエストを作成する
  7. プルリクエストをマージする(終わり)

1. 要件をまとめた Issue を作成する

今回は四則演算を行うコンソールアプリケーションを作ってみます。
まず、アプリの要件をまとめた Issue を作成します。とりあえず簡単な内容を日本語で書いておきます。

- C#, .NET 8を使う
- コンソールアプリケーションを作る
- 入力された2つの値で四則演算を行う
- 数字以外の文字の場合は「🙅」と表示する

github.com

2. Issue からワークスペースを起動する

作成した Issue に表示されている「Open in Workspace」ボタンを押し、ワークスペースを起動します。
最初はワークスペースへのログインが求められます。

ちなみに、リポジトリに何もファイルがない状態で開始するとエラーとなりました。
そのため README.md だけコミットし、改めてワークスペースを起動します。

3. Copilot が仕様や計画を作成・提案する

すると Issue を元に Copilot が仕様を作成しました。
出力結果としては、仕様に対して現在のリポジトリがどうなっているかという情報 (Current) と、このあと行う作業内容の提案 (Proposed) の2つとなっています。

内容を確認し、「Generate plan」ボタンを押すことで、Copilot の作業計画が作成されます。
ひとまず、README.md の更新と、四則演算を行う C# ファイルの作成を行うようです。

4. 仕様や計画に不足があれば追加する

ただしこれだけではファイルが不足しているため、 Visual Studio で扱えるように変更を行います。
仕様や計画を破棄し、Issue に要件を追加して、仕様や計画を再生成します。

- READMEにビルド手順と実行手順を日本語で記載する
- Visual Studioで開けるようにプロジェクトファイルやソリューションファイルも作成する

きちんとプロジェクトファイルやソリューションファイルも作成する計画になっていますね。いい感じです。

5. Copilot がコードを実装する

一旦この計画で良しとして、コードの実装に移ります。
実装を行う項目にチェックを入れ、「Implement selected files」ボタンを押します。
順々にコードが生成されていく様子を見るのは面白いですね。

6. ワークスペースからプルリクエストを作成する

本来ならちゃんとデバッグを行いたいところですが、一旦そのままプルリクエストを作成します。
ワークスペースからプルリクエストを作成することができます。

プルリクエストの内容も Copilot が作成してくれます。すごいですねー。

なお、ここではプルリクエスト作成以外にも操作できるようです。

  • プルリクエストの作成
  • ドラフトのプルリクエストの作成
  • 現在のブランチへのプッシュ
  • 新しいブランチへのプッシュ

7. プルリクエストをマージする

あとは通常の開発フロー同様、プルリクエストを確認し、最終的にマージを行います。
これで全ての工程が GitHub Copilot で完結しました。

github.com


生成されたコードを実行してみる

では GitHub Copilot が生成したコードの動作を確認してみます。
リポジトリをクローンし、アプリケーションを実行します。動作としては問題なさそうです。

dotnet run
復元が完了しました (0.3 秒)
プレビュー版の .NET を使用しています。https://aka.ms/dotnet-support-policy をご覧ください
  CalculatorApp 成功しました (0.2 秒) → bin\Debug\net8.0\CalculatorApp.dll

1.0 秒後に 成功しました をビルド
Welcome to the Calculator App!
You can perform arithmetic operations with two input values.
Type 'exit' to close the app.
Enter the first number:
1
Enter the second number:
6
Enter operation (+, -, *, /):
+
Result: 7
Would you like to perform another calculation? (yes/no)
dotnet run
復元が完了しました (0.4 秒)
プレビュー版の .NET を使用しています。https://aka.ms/dotnet-support-policy をご覧ください
  CalculatorApp 成功しました (0.2 秒) → bin\Debug\net8.0\CalculatorApp.dll

1.0 秒後に 成功しました をビルド
Welcome to the Calculator App!
You can perform arithmetic operations with two input values.
Type 'exit' to close the app.
Enter the first number:
a
Enter the second number:
b
Enter operation (+, -, *, /):
-
🙅
Would you like to perform another calculation? (yes/no)

残念ながらソリューションファイルの構成に問題があり、そのまま Visual Studio で開くことはできませんでした。
生成の工程で微調整しながら対応する必要があるかもしれません。

日本語の生成も違和感ない

README.md を日本語で記述するよう指示しましたが、文章としても違和感ありません。
指示に含めていなかった必要条件も記載されていました。

github.com


操作を試してみた印象ですが、要件からコードを生成する工程をすべて GitHub Copilot が実行しれくれたことに驚きました。
今回のように、ゼロから実装する場合に GitHub Copilot Workspace を使用するケースは少ないかもしれませんが、要件や仕様をきちんとまとめることで、目的のコードを生成できる道筋はイメージできそうです。

今後もこういった新しい機能は積極的に使っていきたいですね。


サービス一覧 www.alterbooth.com www.alterbooth.com www.alterbooth.com