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 の設定に関するドキュメントを参照してください。
ユーザーごとの dotfile 設定
ドットファイル (Dotfiles) は、ファイル名がドット (.) で始まるファイルです。通常、アプリケーションの設定情報が含まれており、ターミナル、エディター、ソース管理、その他の様々なツールの動作を制御できます。.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 体験も利用できます。Web ベースのエディターを使用すると、GitHub からソースコードリポジトリを安全かつ迅速に参照し、軽微なコード変更を行うことができます。任意のリポジトリ、フォーク、またはプルリクエストをエディターで開くことができ、検索や構文ハイライトなど、VS Code の多くの機能を備えています。コードを実行またはデバッグしたい場合は、クラウドホスト環境または VS Code デスクトップに切り替えることができます。
このブラウザーベースのエディターにアクセスするには、github.com でリポジトリに移動し、. (ピリオドキー) を押すか、リポジトリの URL を github.dev/org/repo
に変更します (github.com
を github.dev
に置き換えます)。
制限: シークレットモードでブラウザーを実行している場合や、広告ブロッカーを有効にしている場合、Web ベースのエディターを使用できないことがあります。
注: このエディターは現在テクニカルプレビューです。今すぐお試しいただき、https://github.co/browser-editor-feedback にてフィードバックをお寄せください。
既知の制限と対応策
Codespaces、特に Web 上の VS Code で作業する際には、いくつかの制限事項に留意する必要があります。これらの制限の一部には、一貫した開発体験を提供するための回避策や対応策が用意されています。
いくつかの問題 (特にキーボードショートカットや、デスクトップでの回避策が記載されているもの) については、Codespace を プログレッシブ Web アプリケーション (PWA) としてインストールして使用することができます。
問題 | 理由 | 回避策 |
---|---|---|
Ctrl+Shift+P は Firefox ではコマンドパレットを起動しません。 | Ctrl+Shift+P は Firefox で予約されています。 | コマンドパレットを起動するには F1 を使用します。 |
特定のデフォルトキーボードショートカット (デバッグ用) は Web では異なります。 | ブラウザーがそれらのキーボードショートカットに対してすでに行動を登録している可能性があるため、Web 上の VS Code のデフォルトを調整しています。 | 調整されたデフォルトを使用してください。それらはデバッグアクションの上にマウスをホバーした際のツールチップに表示されます。
|
デバッグ用の F11 は macOS の Web またはデスクトップでは機能しません。 | これはブラウザー固有ではない既知の制限です。詳細は issue #5102 で確認できます。 | macOS でデスクトップを表示するための F11 を無効にします。
|
Web で新しいファイルを作成するための Ctrl+N は機能しません。 | Ctrl+N は代わりに新しいウィンドウを開きます。 | デスクトップでは新しいファイルを作成するための Ctrl+N は機能します。 |
Web でエディターを閉じるための Ctrl+W は機能しません。 | Ctrl+W はブラウザーで現在のタブを閉じます。 | デスクトップでは Ctrl+W は機能します。 |
Ctrl+Shift+B はブラウザーでお気に入りバーを切り替えません。 | Codespaces はこれを上書きし、コマンドパレットの「ビルド」メニューにリダイレクトします。 | 現在のところ回避策はありません。 |
VS Code から Codespace へのファイルのドラッグアンドドロップ (またはその逆) は機能しません。 | 詳細は issue #115535 で確認できます。 | いくつかの選択肢があります。
|
Angular アプリのデバッグは Web ではサポートされていません。 | セキュリティ上の理由から、ブラウザーで実行されているコードは、別のブラウザーインスタンスをデバッグモードで起動できません。 | いくつかの選択肢があります。
|
ブラウザーから拡張子のないファイルをダウンロードすると、自動的に「.txt」が追加されます。 | これは Chrome と Edge の動作です。 | 背景と将来の解決策の可能性は issue #118436 にあります。 |
リモート (Codespaces を含む) からファイルをダウンロードすると、実行可能ビットなどの属性が削除されます。 | 背景と将来の解決策の可能性は issue #112099 で確認できます。 | 現在のところ回避策はありません。 |
Codespace から特定のフォルダーをダウンロードしようとすると、「Your_codespace_name はシステムファイルを含んでいるため、このフォルダーを開けません」というプロンプトが表示されることがあります。 |
ユーザーエージェントは、機密性の高いディレクトリに対して制限レベルを自由に課すことができます。詳細は この仕様 と Chromium のブロックリスト にあります。 | 仕様とブロックリスト以外の追加の回避策はありません。 |
Web 上の Codespace からフォワードされたポートにアクセスするために、手動で https://:forwarded_port にアクセスしても機能しません。 |
これは、Codespaces がポートフォワーディングを処理し、Web 用の正しい URL を生成する方法に基づいています。 | ポートフォワーディングの通知からリンクをクリックしてアプリを開くか、ポートビューの地球儀アイコンをクリックしてください。どちらも適切に生成されたリンクを提供します。詳細は Codespaces のドキュメント を参照してください。 |
一部の拡張機能は Web で動作が異なります
拡張機能 | 問題 / 理由 | 回避策 |
---|---|---|
ブラウザーのショートカットと重複するキーボードショートカットを持つ拡張機能。例えば、更新に Ctrl+R を使用する Git Graph など。 | キーボードショートカットが既存のブラウザーショートカットと重複する場合があります。例えば、Ctrl+R は Safari でウィンドウを更新します。 | キーボードショートカットを最大限に活用するには、Web ベースではなくデスクトップベースの Codespace を使用できます。ブラウザーによって動作が異なる場合もあります (Chrome では Git Graph を更新できます)。 |
言語パック、例えば Visual Studio Code 用日本語言語パック | 言語パック拡張機能は、現在 Web ベースの Codespace ではサポートされていません。 | デスクトップベースの 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 に依存する拡張機能。 | Chrome は Codespace に含まれていません。 | 代替の体験を探すか、ローカルの VS Code (Codespaces に接続していない状態) でプロジェクトにこれらの拡張機能を使用することができます。 |
Flutter (および Flutter 開発全般) | Docker コンテナーと Codespaces の性質上、Flutter のワークフローのいくつかの側面が制限されています。
|
Flutter 開発にはローカルの VS Code を使用できます。 |
LaTeX Workshop | この拡張機能は、LaTeX のオーサリングを支援するために3種類の機能を提供します: 1) 一般的なコマンドを表示する一連のビュー、2) PDF プレビューアー、3) スニペットや IntelliSense などの言語機能。この拡張機能はかなり多くの機能を使えますが、Web やセキュリティ上の制限がいくつかあります。 | 以下の回避策は、ビューとプレビューアー機能領域の制限に対処します。
|
Git Graph | Codespaces では、一部の Git Graph Webview の機能が制限される場合があります。例えば、コミットからのファイルと Git Graph Webview を切り替えると、Webview が空白になることがあります。 | 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 のディスカッションに問題を投稿できます。