GitHub Codespaces
GitHub Codespacesは、長期的なプロジェクトであろうと、プルリクエストのレビューのような短期的なタスクであろうと、あらゆる活動のためのクラウドベースの開発環境を提供します。これらの環境は、Visual Studio Codeまたはブラウザベースのエディターから操作できます。

環境
環境はGitHub Codespacesの「バックエンド」にあたる部分です。コンパイル、デバッグ、復元など、ソフトウェア開発に関連するすべての計算処理が行われます。新しいプロジェクトに取り組んだり、新しいタスクを開始したり、PRをレビューしたりする必要がある場合、単にクラウドホスト型の環境を起動するだけで、GitHub Codespacesが適切な設定を処理します。ソースコード、ランタイム、コンパイラ、デバッガー、エディター、カスタムのドットファイル設定、関連するエディター拡張機能など、プロジェクトに取り組むために必要なすべてを自動的に設定します。
カスタマイズ
GitHub Codespacesは、プロジェクトごとに完全にカスタマイズ可能です。これは、VS Codeの開発コンテナー開発と同様に、プロジェクトのリポジトリに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.dev/org/repoに変更し、github.comをgithub.devに置き換えます。
制限事項:シークレットモードでブラウザを実行している場合や、広告ブロッカーを有効にしている場合、ウェブベースのエディターを使用できないことがあります。
注:このエディターは現在テクニカルプレビュー中です。今すぐ試して、https://github.co/browser-editor-feedbackでフィードバックを提供できます。
既知の制限事項と適応
Codespaces、特にウェブ版のVS Codeで作業する場合、いくつかの制限事項を考慮する必要があります。これらの制限事項の一部には、一貫した開発エクスペリエンスを提供するための回避策または適応策があります。
いくつかの問題(特にキーボードショートカット、またはデスクトップ版の回避策が記載されているもの)については、プログレッシブウェブアプリケーション(PWA)としてCodespaceをインストールして使用できます。

| 問題 | 理由 | 回避策 |
|---|---|---|
| FirefoxではCtrl+Shift+Pでコマンドパレットが起動しません。 | FirefoxではCtrl+Shift+Pが予約されています。 | F1を使用してコマンドパレットを起動します。 |
| ウェブ版では、特定のデフォルトのキーボードショートカット(デバッグ用)が異なります。 | ブラウザがすでにこれらのキーボードショートカットにアクションを登録している可能性があるため、ウェブ版のVS Codeではデフォルトを調整しています。 | 調整されたデフォルトを使用します。デバッグアクションのツールチップに表示されます。
|
| macOSでは、ウェブ版またはデスクトップ版でデバッグ用のF11が機能しません。 | これは既知の、ブラウザ固有ではない制限です。詳細については、issue #5102を参照してください。 | macOSでデスクトップを表示するF11を無効にします。
|
| ウェブ版では、新規ファイル用のCtrl+Nが機能しません。 | Ctrl+Nは代わりに新しいウィンドウを開きます。 | デスクトップ版では、新規ファイル用のCtrl+Nが機能します。 |
| ウェブ版では、エディターを閉じるためのCtrl+Wが機能しません。 | Ctrl+Wはブラウザで現在のタブを閉じます。 | デスクトップ版では、Ctrl+Wが機能します。 |
| Ctrl+Shift+Bはブラウザのお気に入りバーを切り替えません。 | Codespacesはこれをオーバーライドし、コマンドパレットの「ビルド」メニューにリダイレクトします。 | 現在の回避策はありません。 |
| VS CodeからCodespaceへのファイルのドラッグアンドドロップ(およびその逆)は機能しません。 | 詳細については、issue #115535を参照してください。 | いくつかのオプションがあります。
|
| Angularアプリのデバッグはウェブではサポートされていません。 | ブラウザで実行されているコードは、セキュリティ上の理由からデバッグモードで別のブラウザインスタンスを起動できません。 | いくつかのオプションがあります。
|
| ブラウザから拡張子のないファイルをダウンロードすると、自動的に「.txt」が追加されます。 | これはChromeとEdgeの動作です。 | 詳細と将来の潜在的な解決策については、issue #118436を参照してください。 |
| リモート(Codespacesを含む)からファイルをダウンロードすると、実行可能ビットなどの属性が削除されます。 | 詳細と将来の潜在的な解決策については、issue #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のような代替拡張機能を使用します。 |
| プロジェクトマネージャー | プロジェクトマネージャーはカスタムのprojects.jsonファイルの同期に依存しますが、これは現在サポートされていません。 |
デスクトップ版CodespacesまたはローカルのVS Codeで拡張機能を使用してプロジェクトを保存および管理できます。これらのオプションではカスタムファイルの同期は必要ありません。 |
| Chromeに依存する拡張機能。たとえば、Protractor Test RunnerやBrowser Preview。 | ChromeはCodespaceに含まれていません。 | 代替のエクスペリエンスを探すか、ローカルの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、開発コンテナー、Remote - SSH)はCodespaceにインストールできません。 | Codespaceはすでにリモートコンテキストです。 | 別のリモートコンテキスト(例:WSLまたはリモートSSHコンピューター)で実行したい場合は、VS Codeデスクトップ(Codespaceに接続されていない)を開き、他のリモート拡張機能のいずれかを起動します。カスタム開発コンテナーを使用したい場合は、Codespacesと開発コンテナーの両方で同じ.devcontainerを使用できます。 |
| My_Favorite_Extensionが機能せず、上記にリストされていません。 | リモートコンテキストで機能が期待どおりに動作しない原因となる、他のいくつかの問題があります。 | 場合によっては、別のコマンドを使用して問題を回避できますが、その他の場合は、拡張機能の変更が必要になることがあります。一般的なリモートの問題とそれらを解決するためのヒントについては、リモート拡張機能のヒントを確認してください。 |
よくある質問
なぜブラウザに拡張機能をインストールできないのか
組み込みの前提条件がある、またはデスクトップ上で実行する必要がある拡張機能はごく少数です。たとえば、拡張機能がデスクトップ上のVS Codeインストールからファイルにアクセスする場合や、拡張機能がデスクトップ環境で実行する必要がある実行可能ファイルに依存する場合などです。そのような拡張機能をブラウザにインストールしようとすると、拡張機能が利用できないというメッセージが表示されます。
注意:そのような拡張機能は、デスクトップ上で実行されているVS CodeからCodespaceに接続する場合でも使用できます。
VS Codeがクリップボードを読み取ることを許可するにはどうすればよいですか?
場合によっては、VS Codeがクリップボードから読み取る際に、クリップボードへのアクセス許可を求めることがあります。ブラウザの設定(「サイトのアクセス許可」で検索)またはアドレスバーの右側にあるこのオプションを探すことで、クリップボードへのアクセスを許可できるはずです。

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

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