Garden に戻る

OpenSpec for Copilot:スペック駆動開発を加速するVS Code拡張機能

OpenSpecのプロンプトとGitHub Copilotを組み合わせることで、VS Code上でのスペック駆動開発を強力に支援する拡張機能「OpenSpec for Copilot」の開発経緯と特徴を紹介します。

公開日 読了目安 6 分

AIを活用したソフトウェア開発の手法として、スペック駆動開発(Spec-Driven Development: SDD)をご存知でしょうか。事前に仕様(スペック)を明確に定義し、それを元にAIにコードを生成させるアプローチです。

私自身、これまでKiroやOpenSpecといったツールを利用し、SDDの実践を重ねてきました。中でもOpenSpecは、自身で契約しているAIモデルを自由に選択できる柔軟性や、CLIツールとして既存のプロジェクトに違和感なく導入できる手軽さが素晴らしく、私の開発フローには欠かせない存在となっています。特に、曖昧なアイデアを構造化された仕様へと落とし込むプロセスは非常に洗練されており、エンジニアとしての思考を整理する上でも強力なパートナーです。

しかし、OpenSpecを使い込むにつれて、いくつかの課題に直面しました。それは、プロンプトを実行して仕様を入力するフォーマットを毎度コピペしたり、アーカイブする対象をGitHub Copilotのチャットに入力したりするひと手間が面倒だと感じたことです。こうした作業は、開発者の集中力を削いでしまいます。「これらの手間を解消し、より手軽に効率よくOpenSpecを使いたい」という思いから、この度「OpenSpec for Copilot」というVS Code拡張機能を開発しました。

本記事では、OpenSpec for Copilotの開発経緯と、その特徴について紹介します。

OpenSpec for Copilotとは

OpenSpec for Copilotは、OpenSpecのプロンプトとGitHub Copilotを組み合わせることで、VS Code上でのスペック駆動開発を強力に支援する拡張機能です。

https://marketplace.visualstudio.com/items?itemName=atman-dev.openspec-for-copilot

OpenSpecが持つ「要件定義からタスク分解までを構造化する力」と、GitHub Copilotの「コード生成能力」をシームレスに統合することで、開発者はコンテキストの切り替えを最小限に抑え、実装に集中できます。

summary

主な機能

OpenSpec for Copilotは、主に以下の機能を提供します。

1. スペック管理(Spec Management)

プロジェクトの仕様書(スペック)をVS Code上で視覚的に管理できます。

  • スペックの作成: コマンドパレットから OpenSpec for Copilot: Create New Spec を実行すると、作成ダイアログが開きます。ここで概要や製品コンテキスト、制約事項を入力します。
  • Copilotによる生成: 入力された情報は最適化されたOpenSpecプロンプトに変換され、自動的にGitHub Copilot Chatへ送信されます。これにより、要件定義書(Requirements)、設計書(Design)、タスクリスト(Tasks)が生成されます。
  • スペックの閲覧: 生成されたスペックは、専用の「Specs」ビューで一覧表示され、簡単にアクセス可能です。

2. タスク実行支援

生成された tasks.md ファイルには、実装すべきタスクがリストアップされます。本拡張機能は、このタスクリストとCopilotを連携させます。

  • CodeLens機能: tasks.md を開くと、各タスクの上に「Start Task」というCodeLensが表示されます。
  • 実装の開始: これをクリックすると、そのタスクのコンテキスト(関連する要件や設計情報)を含んだ状態でGitHub Copilot Chatが起動します。開発者はそのままチャットを通じてコードの実装を進めることができます。

3. プロンプト管理(Prompt Management)

プロジェクト固有のプロンプトや指示書も、VS Codeのエクスプローラーで管理できます。

  • カスタムプロンプト: .github/prompts ディレクトリ配下のMarkdownファイルをプロンプトとして認識します。
  • プロジェクト指示書: .github/instructions や .github/agents に配置されたファイルも「Project Instructions」としてツリービューに表示されます。これらを再利用可能な指示書として管理し、必要に応じて呼び出すことが可能です。
  • コンテキストメニュー: ツリービューから直接プロンプトを実行したり、ファイル名の変更や削除を行ったりできます。

導入方法

OpenSpec for Copilotを利用するには、以下の準備が必要です。

前提条件

  • Visual Studio Code 1.84.0 以上
  • GitHub Copilot Chat 拡張機能
  • OpenSpec(npmパッケージ)のグローバルインストールと初期化

インストール手順

  1. OpenSpecのインストール:
    ターミナルで以下のコマンドを実行し、OpenSpecをグローバルインストールします。

    npm install -g @fission-ai/openspec@latest
    
  2. プロジェクトの初期化:
    利用したいプロジェクトのルートディレクトリで、初期化コマンドを実行します。

    openspec init
    
  3. 拡張機能のインストール:
    VS Code Marketplaceで「OpenSpec for Copilot」を検索し、インストールしてください。

基本的なワークフロー

実際の開発フローは以下のようになります。

  1. スペックを作成する:
    「Specs」ビューから「Create New Spec」をクリックし、作りたい機能のコンテキストを入力します。「Create Spec」ボタンを押すと、Copilot Chatが起動し、仕様書の生成が始まります。

    image-create-spec

  2. タスクを実装する:
    生成された tasks.md を開き、実装したいタスクの「Start All Tasks」をクリックします。Copilotがタスクの内容を理解した状態でチャットが始まるため、スムーズにコーディングに入れます。

    image-start-all-task

  3. 変更をアーカイブする:
    実装が完了したスペック(Change)は、ビュー上のコンテキストメニューから「Archive Change」を選択することで、アーカイブへ移動できます。これにより、すぐに次のタスクに取り掛かれます。

    archive

まとめ

OpenSpec for Copilotは、私が信頼を置くOpenSpecの構造化されたアプローチと、GitHub Copilotの利便性を掛け合わせることで、開発体験を向上させることを目指して開発しました。

プロンプトの管理やコンテキストの受け渡しといった「煩雑なコンテキスト管理」を自動化することで、開発者が本来注力すべき「どのような価値を作るか」という思考や、実際のコーディングにより多くの時間を使えるようになります。

スペック駆動開発に興味がある方、あるいはGitHub Copilotをより効果的に活用したいと考えている方は、ぜひ一度お試しください。

また、本拡張機能は開発途上のため、皆様からのフィードバックを歓迎しています。機能の要望やバグ報告は GitHub Issues へ、気に入っていただけたらVS Code MarketplaceでのレビューやGitHubのスターをいただけると励みになります。

参考情報