T-CREATOR

GitHub Copilot Workspace 速理解:仕様 → タスク分解 →PR までの“自動開発”体験

GitHub Copilot Workspace 速理解:仕様 → タスク分解 →PR までの“自動開発”体験

GitHub Copilot Workspace は、自然言語で記述した要求をもとに、AI が仕様書を生成し、タスクへと分解して、コード実装から Pull Request(PR)の作成まで一貫した開発フローを支援してくれる、まさに"自動開発"を体験できる革新的なツールです。

本記事では、このツールを最大限に活用するため、背景や課題から具体的な操作手順まで、初心者にもわかりやすく解説します。

背景

GitHub Copilot の進化

GitHub Copilot は当初、コード補完ツールとして登場しました。開発者が書いているコードの文脈を読み取り、次に書くべきコードを提案するという、開発者の「手元」を支援する役割です。

その後、Copilot Chat という会話形式で質問や指示ができる機能が追加され、コードの説明やリファクタリング案の提案など、開発者の「思考」にも寄り添うようになりました。

こうした進化を経て、2024 年に発表されたのが GitHub Copilot Workspace です。

下図は、GitHub Copilot の進化を段階的に示したものです。

mermaidflowchart LR
  phase1["フェーズ1<br/>コード補完"]
  phase2["フェーズ2<br/>Copilot Chat<br/>会話形式"]
  phase3["フェーズ3<br/>Copilot Workspace<br/>タスク全体の自動化"]

  phase1 -->|進化| phase2
  phase2 -->|進化| phase3

Copilot Workspace は、単なるコード補完や部分的なサポートを超え、Issue を起点にした開発タスク全体を AI がリードする、新しいパラダイムを実現するものです。

これまでの開発フロー

従来の開発では、以下のような手順を人間が主導して行う必要がありました。

#ステップ説明
1Issue 作成要求や不具合を Issue にまとめる
2仕様策定Issue を読み解き、変更内容を言語化
3タスク分割修正すべきファイルや処理を洗い出す
4コード実装実際にコードを書く
5PR 作成コミットメッセージや説明文を書く

この流れでは、各ステップで人間が判断・記述する作業が多く、時間やスキルが求められます。

Copilot Workspace は、これら一連のプロセスを自動化し、開発者は自然言語で要求を伝えるだけで、仕様書・タスク・コード・PR が自動生成されるという、まったく新しい開発体験を提供します。

課題

従来の開発プロセスの課題

従来の開発プロセスには、いくつかの典型的な課題が存在します。

仕様策定の負担

Issue に記載された内容を正確に理解し、それを技術的な仕様書へと落とし込むには、ドメイン知識やコードベースへの理解が必要です。特に大規模リポジトリでは、どのファイルが影響を受けるかの把握だけでも時間がかかります。

タスクの分割ミス

適切にタスクを分割できなければ、実装が進んでから「この部分も修正が必要だった」と気づくことになり、手戻りが発生します。

コード実装の時間

実装には集中力と時間が必要であり、特に複数ファイルにまたがる変更の場合、ファイル間の整合性を保つのが困難です。

PR 作成の煩雑さ

コミットメッセージや PR の説明文を丁寧に書くには、変更内容を改めて整理する必要があり、作業が終わった後のこのステップは心理的にも負担となります。

下図は、従来の開発フローにおける課題を示したものです。

mermaidflowchart TD
  issue["Issue"]
  spec["仕様策定"]
  task["タスク分割"]
  code["コード実装"]
  pr["PR 作成"]

  issue --> spec
  spec --> task
  task --> code
  code --> pr

  spec -.->|課題1<br/>ドメイン知識が必要| burden1["負担"]
  task -.->|課題2<br/>分割ミスで手戻り| burden2["手戻り"]
  code -.->|課題3<br/>時間と集中力が必要| burden3["時間消費"]
  pr -.->|課題4<br/>説明文の整理が煩雑| burden4["心理的負担"]

これらの課題を解決するために、AI が開発プロセス全体を支援し、人間は確認と判断に専念するという新しいアプローチが求められていました。

解決策

GitHub Copilot Workspace の登場

GitHub Copilot Workspace は、Issue を起点に、仕様書・タスク分解・コード実装・PR 作成までを AI が自動で行う開発環境です。

開発者は自然言語で「何をしたいか」を Issue に記述するだけで、Copilot が以下のプロセスを自動実行してくれます。

#ステップCopilot Workspace の役割
1SpecificationIssue をもとに仕様書を生成
2Plan修正すべきファイルと変更内容を列挙
3Implementationコードを自動生成
4PR 作成コミットメッセージと説明文を自動作成

仕様書の自動生成(Specification)

Copilot Workspace は、Issue に記載された内容とリポジトリの現状を分析し、以下の 2 つの仕様を自然言語で提示します。

  • Current(現状の動作): 現在のコードベースがどのように動作しているか
  • Proposed(提案される変更): どのように変更すべきか

この仕様書は、開発者が編集可能であり、AI とのチャットで追加や修正を行うことができます。

仕様書生成の流れ

mermaidflowchart LR
  issue["Issue"]
  repo["リポジトリの<br/>コードベース"]
  current["Current<br/>現状の動作"]
  proposed["Proposed<br/>提案される変更"]

  issue --> current
  repo --> current
  current --> proposed

タスク分解(Plan)

仕様書が確定すると、Copilot は次に Plan(実装計画) を生成します。

Plan では、以下のような情報が明示されます。

  • 変更が必要なファイル一覧
  • 各ファイルで行うべき具体的な変更内容(箇条書き)
  • ファイルの作成・編集・削除・移動などの操作種別

開発者はこの Plan を確認し、必要に応じて調整できます。

Plan 生成の例

mermaidflowchart TD
  spec["仕様書<br/>(Specification)"]
  plan["実装計画<br/>(Plan)"]
  file1["src/app.ts<br/>- API 呼び出しを追加<br/>- エラーハンドリング追加"]
  file2["src/types.ts<br/>- 新しい型定義を作成"]
  file3["README.md<br/>- 使い方を更新"]

  spec --> plan
  plan --> file1
  plan --> file2
  plan --> file3

コード実装(Implementation)

Plan が確定したら、Copilot がファイルごとにコードを自動生成します。

生成されたコードは、差分(diff)形式で表示され、開発者は以下のことができます。

  • コードを直接編集
  • AI にチャットで修正を依頼
  • GitHub Codespace で開き、本格的な編集を行う

実装が完了したら、内蔵のターミナルでビルドやテストを実行し、動作を確認できます。

コード生成と確認の流れ

mermaidflowchart LR
  plan_node["Plan"]
  impl["コード生成<br/>(Implementation)"]
  diff["差分表示<br/>(Diff)"]
  edit["編集・修正"]
  test["ターミナルで<br/>動作確認"]
  done["完了"]

  plan_node --> impl
  impl --> diff
  diff --> edit
  edit --> test
  test --> done

Pull Request の自動作成

最後に、Copilot Workspace は コミットメッセージと PR の説明文を自動生成し、ボタン一つで PR を作成できます。

開発者が手動で説明文を書く手間が省け、一貫性のある記述が保たれます。

図で理解できる要点

  • Copilot Workspace は Issue → 仕様書 → タスク → コード → PR までを一貫して自動化
  • 各ステップで人間が確認・調整可能
  • AI との対話でリアルタイムに修正できる

具体例

ここでは、実際に GitHub Copilot Workspace を使用して、簡単な Web アプリケーションを実装する流れを、ステップごとに見ていきます。

前提条件

  • GitHub Copilot の有料サブスクリプション(Individual / Business / Enterprise)が必要
  • リポジトリには最低限 README.md などのファイルが必要(空のリポジトリではエラーになる)

ステップ 1:Issue の作成

まず、GitHub リポジトリに Issue を作成します。

以下は、簡単な天気アプリを作る Issue の例です。

markdown# タイトル

React + Vite で OpenWeather API を使った天気アプリを作成

# 内容

- OpenWeather API を使って、指定した都市の天気情報を取得する
- 都市名を入力するフォームを作る
- 取得した天気情報を画面に表示する
- エラーハンドリングを実装する

このように、やりたいことを自然言語で記述するだけで OK です。

ステップ 2:Copilot Workspace の起動

Issue の画面に表示される 「Open in Workspace」 ボタンをクリックします。

すると、Copilot Workspace が起動し、AI が Issue の内容を解析し始めます。

ステップ 3:仕様書の確認と調整

Copilot は、Issue とリポジトリの内容をもとに、Specification(仕様書) を生成します。

生成された仕様書は、以下のような構成になっています。

Current(現状の動作)

markdown- 現在、リポジトリには基本的な React + Vite のテンプレートのみが存在する
- API 連携は実装されていない

Proposed(提案される変更)

markdown- OpenWeather API を呼び出す関数を作成
- 都市名を入力するフォームコンポーネントを追加
- 天気情報を表示するコンポーネントを追加
- エラー時のメッセージ表示を実装

もし内容を調整したい場合は、直接編集するか、AI とチャットで「エラーメッセージは英語ではなく日本語にしてください」などと指示できます。

ステップ 4:Plan(実装計画)の確認

仕様書が確定すると、Copilot は Plan(実装計画) を生成します。

Plan には、以下のような情報が含まれます。

#ファイル操作変更内容
1src/api/weather.ts作成OpenWeather API を呼び出す関数
2src/components/WeatherForm.tsx作成都市名入力フォーム
3src/components/WeatherDisplay.tsx作成天気情報表示コンポーネント
4src/App.tsx編集フォームと表示を統合
5.env.example作成API キーの設定例

この Plan を確認し、問題なければ次のステップへ進みます。

Plan 生成の流れを図解

mermaidflowchart TD
  spec_step["仕様書確定"]
  plan_gen["Plan 生成"]
  file_list["変更ファイル一覧"]
  action_list["各ファイルの<br/>変更内容"]

  spec_step --> plan_gen
  plan_gen --> file_list
  plan_gen --> action_list

ステップ 5:コード生成と確認

Plan が確定すると、Copilot がファイルごとにコードを自動生成します。

生成されたコードは、差分形式で表示されます。

例:src/api/weather.ts

生成されたコードの一部を示します。

typescript// OpenWeather API を呼び出す関数
export async function fetchWeather(
  city: string
): Promise<WeatherData> {
  const apiKey = import.meta.env.VITE_OPENWEATHER_API_KEY;
  const url = `https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=${apiKey}&units=metric&lang=ja`;

  const response = await fetch(url);

  if (!response.ok) {
    throw new Error('天気情報の取得に失敗しました');
  }

  const data = await response.json();
  return data;
}

このコードは、API キーを環境変数から取得し、指定した都市の天気情報を取得する関数です。エラー時には日本語のエラーメッセージを投げるようになっています。

もしコードに問題があれば、AI にチャットで「API キーが未設定の場合のエラーメッセージを追加してください」などと指示できます。

例:src/components/WeatherForm.tsx

typescriptimport { useState } from 'react';

// 都市名入力フォームコンポーネント
export function WeatherForm({
  onSubmit,
}: {
  onSubmit: (city: string) => void;
}) {
  const [city, setCity] = useState('');

  const handleSubmit = (e: React.FormEvent) => {
    e.preventDefault();
    if (city.trim()) {
      onSubmit(city);
    }
  };

  return (
    <form onSubmit={handleSubmit}>
      <input
        type='text'
        value={city}
        onChange={(e) => setCity(e.target.value)}
        placeholder='都市名を入力'
      />
      <button type='submit'>天気を取得</button>
    </form>
  );
}

このコンポーネントは、ユーザーが都市名を入力して送信できるシンプルなフォームです。

ステップ 6:動作確認

Copilot Workspace には、内蔵のターミナルがあり、その場でビルドやテストを実行できます。

bashyarn dev

このコマンドを実行すると、開発サーバーが起動し、ブラウザで動作を確認できます。

もしエラーが発生した場合は、AI にチャットで「シンタックスエラーを修正してください」と指示すると、Plan に修正が追加され、コードが再生成されます。

ステップ 7:Pull Request の作成

動作確認が完了したら、「Create Pull Request」 ボタンをクリックします。

Copilot が以下の内容を自動生成します。

  • コミットメッセージ
  • PR のタイトル
  • PR の説明文

生成された PR の説明文の例

markdown# 変更内容

- OpenWeather API を使った天気情報取得機能を追加
- 都市名入力フォームと天気表示コンポーネントを実装
- エラーハンドリングを追加

# テスト

- ローカル環境で動作確認済み
- API キーが未設定の場合のエラーメッセージ表示を確認

このように、一貫性のある説明文が自動生成されるため、手動で書く手間が省けます。

開発フロー全体の図解

以下は、Issue 作成から PR 作成までの全体フローを示した図です。

mermaidflowchart TD
  issue_create["Issue 作成"]
  workspace_open["Workspace 起動"]
  spec_gen["仕様書生成"]
  spec_review["仕様書確認・調整"]
  plan_gen_step["Plan 生成"]
  plan_review["Plan 確認"]
  code_gen["コード生成"]
  code_review["コード確認・修正"]
  test_run["動作確認"]
  pr_create["PR 作成"]

  issue_create --> workspace_open
  workspace_open --> spec_gen
  spec_gen --> spec_review
  spec_review --> plan_gen_step
  plan_gen_step --> plan_review
  plan_review --> code_gen
  code_gen --> code_review
  code_review --> test_run
  test_run --> pr_create

図で理解できる ��� 点

  • Issue を起点に、すべてのステップが連続して実行される
  • 各ステップで人間が確認・調整可能
  • AI とのチャットでリアルタイムに修正できる

まとめ

GitHub Copilot Workspace は、Issue を起点に、仕様書・タスク分解・コード実装・PR 作成までを AI が自動で行う、まさに"自動開発"を体験できる革新的なツールです。

従来の開発プロセスでは、仕様策定やタスク分割、コード実装、PR 作成といった各ステップで人間が主導して作業を行う必要がありましたが、Copilot Workspace では、開発者は自然言語で要求を伝えるだけで、これらの作業を AI がサポートしてくれます。

本記事で紹介した具体例のように、React + Vite での天気アプリ開発では、Issue に「やりたいこと」を記述するだけで、仕様書・Plan・コードが自動生成され、最終的に PR まで作成されました。

もちろん、生成されたコードをそのまま使えるわけではなく、人間による確認と調整は依然として重要ですが、Copilot Workspace は開発のスピードと効率を大幅に向上させる強力なツールであることは間違いありません。

これからの開発では、AI との協働がますます重要になっていくでしょう。Copilot Workspace を活用し、より創造的で価値の高い開発に集中できる環境を手に入れてください。

関連リンク