GitHub Codespaces
GitHub Codespaces は、長期にわたるプロジェクトからプルリクエストのレビューなどの短期のタスクまで、あらゆるアクティビティに対応するクラウド搭載の開発環境を提供します。これらの環境は、Visual Studio Code またはブラウザベースのエディタから操作できます。

環境
環境は GitHub Codespaces の「バックエンド」側にあたります。コンパイル、デバッグ、復元など、ソフトウェア開発に関連するすべてのコンピューティングがここで行われます。新しいプロジェクトで作業したり、新しいタスクに取り掛かったり、PRをレビューしたりする必要があるときは、クラウドホスト型の環境を起動するだけで、GitHub Codespaces が自動的に正しく設定を行ってくれます。ソースコード、ランタイム、コンパイラ、デバッガ、エディタ、カスタムのドットファイル設定、関連するエディタ拡張機能など、プロジェクトの作業に必要なものがすべて自動的に設定されます。
カスタマイズ
GitHub Codespaces は、プロジェクトごとに完全にカスタマイズできます。これは、VS Code の Dev Containers 開発と同様に、プロジェクトのリポジトリに devcontainer.json ファイルを含めることで実現します。
カスタマイズの例は以下の通りです
- 使用する Linux ベースのオペレーティングシステムの設定。
- 各種ツール、ランタイム、フレームワークの自動インストール。
- よく使用されるポートのフォワーディング。
- 環境変数の設定。
- エディタ設定の構成と、お好みの拡張機能のインストール。
codespace 特有の devcontainer.json 設定については、Codespaces の設定に関するドキュメントを参照してください。
ユーザーごとのドットファイル設定
ドットファイルとは、ファイル名がドット (.) で始まるファイルのことです。通常、アプリケーションの設定情報が含まれており、ターミナル、エディタ、ソース管理、その他さまざまなツールの動作を制御できます。.bashrc、.gitignore、および .editorconfig は、開発者によく使用されるドットファイルの例です。
codespace を作成する際に、ドットファイルが含まれている GitHub リポジトリ、ファイルの配置先、およびインストール用のコマンドを指定できます。
codespace にドットファイル設定を追加する方法については、Codespaces のパーソナライズに関するドキュメントを参照してください。
はじめに
両方の GitHub Codespaces クライアント用のスタートガイドが用意されています。これらを利用することで、GitHub Codespaces へのサインイン、最初の codespace の作成、およびお好みのクライアントを使用した接続をスムーズに行うことができます。
- VS Code での Codespaces - GitHub Codespaces 拡張機能を使用して環境に接続し、作業を行います。
- ブラウザでの Codespaces - ブラウザベースのエディタを介して codespace に接続します。
拡張機能の作成者
VS Code 拡張機能 API はリモート実行の処理詳細のほとんどを隠蔽するため、多くの拡張機能は修正なしで GitHub Codespaces 環境で動作します。ただし、すべての機能が期待通りに動作することを確認するために、codespace で拡張機能をテストすることをお勧めします。詳細については、リモート開発と GitHub Codespaces のサポートに関する記事を参照してください。
ブラウザベースのエディタ
また、完全にブラウザ上で動作する、無料かつ軽量な Visual Studio Code 体験を利用することもできます。ウェブベースのエディタを使用すると、GitHub のソースコードリポジトリを安全かつ迅速にブラウズし、軽微なコードの変更を行うことができます。任意のリポジトリ、フォーク、またはプルリクエストをエディタで開くことができ、検索や構文ハイライトなど、VS Code の機能の多くが備わっています。コードを実行またはデバッグしたい場合は、クラウドホスト型の環境やデスクトップ版の VS Code に切り替えることができます。
このブラウザベースのエディタにアクセスするには、github.com 上のリポジトリに移動して .(ピリオドキー)を押すか、リポジトリの URL の github.com を github.dev に置き換えて github.dev/org/repo に変更します。
制限事項:ブラウザをシークレットモードで実行している場合や、広告ブロッカーを有効にしている場合は、ウェブベースのエディタを使用できないことがあります。
注意: このエディタは現在テクニカルプレビュー版です。今すぐお試しいただき、https://github.co/browser-editor-feedback からフィードバックをお寄せください。
既知の制限事項と適応方法
Codespaces(特にウェブ上の VS Code)を使用する際には、留意すべきいくつかの制限事項があります。一貫した開発体験を提供するため、これらの制限の一部には回避策や適応策が用意されています。
いくつかの問題(特にキーボードショートカットや、デスクトップ向けの回避策が記載されているもの)については、Codespace を プログレッシブウェブアプリケーション (PWA) としてインストールして使用することができます。

| 問題 | 原因 | 回避策 |
|---|---|---|
| Firefox では Ctrl+Shift+P でコマンドパレットが起動しません。 | Firefox では Ctrl+Shift+P が予約されています。 | コマンドパレットを起動するには F1 を使用してください。 |
| ウェブ上では、一部のデフォルトのキーボードショートカット(デバッグ用)が異なります。 | ブラウザによってこれらのキーボードショートカットにすでにアクションが登録されている場合があるため、ウェブ版の VS Code のデフォルト設定を調整しています。 | 調整されたデフォルト設定を使用してください。これらは、デバッグアクションの上にマウスホバーした際のツールチップに表示されます。
|
| macOS では、ウェブでもデスクトップでもデバッグ用の F11 が機能しません。 | これは既知の制限であり、特定のブラウザに限定されません。詳細については、イシュー #5102 を参照してください。 | macOS でデスクトップを表示するための F11 を無効にします。
|
| ウェブでは、新規ファイル作成の Ctrl+N が機能しません。 | 代わりに Ctrl+N で新しいウィンドウが開きます。 | デスクトップ版では、新規ファイル作成の Ctrl+N が機能します。 |
| ウェブでは、エディタを閉じるための Ctrl+W が機能しません。 | ブラウザでは Ctrl+W によって現在のタブが閉じられます。 | デスクトップ版では Ctrl+W が機能します。 |
| ブラウザでは Ctrl+Shift+B でお気に入りバーの切り替えは行われません。 | Codespaces がこれをオーバーライドし、コマンドパレットの「ビルド」メニューにリダイレクトします。 | 現在のところ回避策はありません。 |
| VS Code から Codespace(およびその逆)へのファイルのドラッグ&ドロップは機能しません。 | 詳細については、イシュー #115535 を参照してください。 | いくつかのオプションがあります
|
| ウェブでは Angular アプリのデバッグはサポートされていません。 | セキュリティ上の理由から、ブラウザで実行されているコードがデバッグモードで別のブラウザインスタンスを起動することはできません。 | いくつかのオプションがあります
|
| ブラウザから拡張子のないファイルをダウンロードすると、自動的に「.txt」が追加されます | これは Chrome および Edge の仕様動作です。 | 背景および将来的な解決策については、イシュー #118436 を参照してください。 |
| リモート(Codespaces を含む)からファイルをダウンロードすると、実行可能ビットなどの属性が削除されます。 | 背景と将来的な解決の可能性については、イシュー #112099 を参照してください。 | 現在のところ回避策はありません。 |
Codespace から特定のフォルダをダウンロードしようとしたときに、「システムファイルが含まれているため、Your_codespace_name はこのフォルダを開くことができません」というプロンプトが表示されることがあります。 |
ユーザーエージェントは、機密性の高いディレクトリに対して自由に制限レベルを課すことができます。詳細については、この仕様および Chromium のブロックリストを参照してください。 | 仕様およびブロックリスト以外の追加の回避策はありません。 |
ウェブ上の Codespace からフォワーディングされたポートにアクセスする際、手動で https://:forwarded_port にアクセスしても機能しません。 |
これは、Codespaces がポートフォワーディングを処理し、ウェブ用の正しい URL を生成する方法に基づいています。 | アプリを開くには、ポートフォワーディング通知のリンクをクリックするか、ポートビュー の地球儀アイコンをクリックしてください。どちらも適切に生成されたリンクを提供します。詳細については、Codespaces ドキュメントを参照してください。 |
一部の拡張機能はウェブ上で動作が異なります
| 拡張機能 | 問題 / 原因 | 回避策 |
|---|---|---|
| ブラウザのショートカットと重複するキーボードショートカットを持つ拡張機能。たとえば、更新に Ctrl+R を使用する Git Graph などです。 | キーボードショートカットが既存의 ブラウザショートカットと重複する場合があります。たとえば Safari では Ctrl+R でウィンドウが更新されます。 | ウェブベースではなくデスクトップベースの Codespace を使用することで、キーボードショートカットを最大限に活用できます。ブラウザによって動作が異なる場合もあります(Chrome では Git Graph を更新できます)。 |
| 言語パック。たとえば、Visual Studio Code 用日本語言語パックなどです。 | 言語パック拡張機能は、現在ウェブベースの Codespaces ではサポートされていません。 | デスクトップベースの Codespace を使用して言語パックを適用し、表示言語を設定できます。 |
| Bracket Pair Colorizer 2 | インストール場所に依存する問題があり、簡単に修正できないため、ブラウザ上では動作しません。 | Bracket Pair Colorizer を使用してください。 |
| Debugger for Firefox などのブラウザデバッガ。 | UI/デスクトップ拡張機能ホストを必要とする拡張機能は、ブラウザにはロードされません。 | これらの拡張機能は、ローカルの VS Code(Codespaces に接続されていない状態)で使用できます。または、アプリを Codespace で実行している間に、Chrome DevTools などの代替ツールを使用して要素を検証したり、ブレークポイントを設定したりすることも可能です。 |
| open in browser などの、ブラウザを開くための拡張機能。 | UI/デスクトップ拡張機能ホストを必要とする拡張機能は、ブラウザにはロードされません。 | 可能であれば、Live Server などの代替の拡張機能を使用してください。 |
| Project Manager | Project Manager はカスタムの projects.json ファイルの同期に依存していますが、これは現在サポートされていません。 |
これらの方法であればカスタムファイルを同期する必要がないため、デスクトップ版の Codespaces またはローカルの VS Code で拡張機能を使用してプロジェクトを保存および管理できます。 |
| Protractor Test Runner や Browser Preview などの、Chrome に依存する拡張機能。 | Codespace には Chrome は含まれていません。 | 代替となる方法を探すか、ローカルの VS Code(Codespaces に接続されていない状態)でプロジェクトに対してこれらの拡張機能を使用してください。 |
| Flutter(および Flutter 開発全般) | Docker コンテナおよび Codespaces の性質上、Flutter ワークフローのいくつかの側面が制限されます。
|
Flutter の開発には、ローカルの VS Code を使用できます。 |
| LaTeX Workshop | この拡張機能は、LaTeX の執筆を支援する 3 つの機能を提供します。1) よく使うコマンドを表示するビュー群、2) PDF プレビューア、3) スニペットや IntelliSense などの言語機能。この拡張機能はかなりフル機能に近い形で使用できますが、ウェブやセキュリティに関するいくつかの制限があります。 | 以下の回避策は、ビューおよびプレビューアの機能領域における制限に対処するものです。
|
| Git Graph | Codespaces では、Git Graph ウェブビューの一部の機能が制限される場合があります。たとえば、コミットからのファイルと Git Graph ウェブビューを切り替えると、ウェブビューが空白になることがあります。 | デスクトップ版の VS Code 内であれば、Git Graph を完全に機能させることができます。 |
| 他のリモート開発拡張機能(WSL、Dev Containers、Remote - SSH)を Codespace 内にインストールすることはできません。 | Codespace 自体がすでにリモートコンテキストであるためです。 | 別のリモートコンテキスト(WSL やリモート SSH コンピュータなど)で実行したい場合は、ローカルの VS Code(Codespace に接続されていない状態)を開き、他のリモート拡張機能のいずれかを起動してください。カスタム開発コンテナを使用したい場合は、Codespaces と Dev Containers の両方で同じ .devcontainer を使用できます。 |
| お気に入りの拡張機能が動作せず、上記にも記載されていません。 | リモートコンテキストにおいて機能が期待通りに動作しない原因となる、その他の問題がいくつか存在します。 | 一部のケースでは別のコマンドを使用して問題を回避できますが、別のケースでは拡張機能自体の修正が必要になる場合があります。一般的なリモートの問題と解決のヒントについては、リモート拡張機能のヒントを参照してください。 |
よくある質問
なぜブラウザにインストールできない拡張機能があるのですか?
一部の拡張機能には、あらかじめ想定されている前提条件があるか、あるいはデスクトップ上で実行する必要があります。たとえば、デスクトップ上の VS Code インストールからファイルにアクセスする拡張機能や、デスクトップ環境で実行しなければならない実行ファイルに依存する拡張機能などです。ブラウザ上でこのような拡張機能をインストールしようとすると、その拡張機能は利用できない旨が通知されます。
注意: このような拡張機能でも、デスクトップで実行されている VS Code から Codespace に接続する場合には、引き続き使用することができます。
VS Code によるクリップボードの読み取りアクセスを許可するにはどうすればよいですか?
特定のケースにおいて、VS Code がクリップボードから読み取る際、アクセス許可を求めてくることがあります。ブラウザの設定(「サイトのアクセス許可」を検索)からクリップボードへのアクセスを許可するか、アドレスバーの右側にある該当オプションを探して許可することができます。

VS Code にクリップボードへのアクセスを許可した後は、操作を再試行できます。
VS Code が常に新しいタブやウィンドウを開くことを許可するにはどうすればよいですか?
セキュリティ上の予防措置として、ブラウザが VS Code による新しいタブやウィンドウの起動をブロックすることがあります。これが発生した場合、VS Code はブロック動作を検出してユーザーに明示的に通知します。ただし、ブラウザのナビゲーションバーのコンテキストメニューからサイト設定を開き、ポップアップウィンドウを許可に設定することで、VS Code が常に新しいウィンドウやタブを開くことを許可できます。

ブラウザの VS Code からローカルのファイルやフォルダへのアクセスを許可するにはどうすればよいですか?
ブラウザの VS Code からローカルのファイルやフォルダを開くには、ブラウザが File System Access API をサポートしている必要があります。現時点では、Microsoft Edge と Google Chrome の両方がこのレベルのサポートを提供しています。ブラウザで VS Code を使用する際にローカルファイルやフォルダにアクセスしたい場合は、これら 2 つのブラウザのいずれかに切り替えることを検討してください。
質問またはフィードバック
ご質問がある場合は、GitHub Codespaces のトラブルシューティングガイドをご参照ください。フィードバックを提供したい場合は、GitHub Codespaces のディスカッションにイシューを投稿してください。