# GitHub CLI での GitHub Codespaces の使用

GitHub Codespaces コマンド ライン インターフェイスの gh を使うと、コマンド ラインから直接 GitHub を操作できます。

## GitHub CLI について

GitHub CLI は、コンピューターのコマンド ラインから GitHub を使用するためのオープン ソース ツールです。 コマンドラインから作業しているときは、GitHub CLI を使用して時間を節約し、コンテキストの切り替えを回避できます。詳細については、「[GitHub CLI について](/ja/github-cli/github-cli/about-github-cli)」を参照してください。

GitHub CLI 内の GitHub Codespaces を操作すると、次のことができます。

* [すべての codespaces を一覧表示する](#list-all-of-your-codespaces)
* [新しい codespace を作成する](#create-a-new-codespace)
* [codespace の詳細を表示する](#view-details-of-a-codespace)
* [codespace を停止する](#stop-a-codespace)
* [codespace を削除する](#delete-a-codespace)
* [codespace の名前を変更する](#rename-a-codespace)
* [codespace をリビルドする](#rebuild-a-codespace)
* [codespace に SSH 接続する](#ssh-into-a-codespace)
* [Visual Studio Code
  で codespace を開く](#open-a-codespace-in-visual-studio-code)
* [JupyterLab で codespace を開く](#open-a-codespace-in-jupyterlab)
* [ファイルをcodespaceにまたはcodespaceからコピーする](#copy-a-file-tofrom-a-codespace)
* [codespace 内のポートの変更](#modify-ports-in-a-codespace)
* [codespace ログにアクセスする](#access-codespace-logs)
* [リモート リソースにアクセスする](#access-remote-resources)
* [codespace のマシンの種類を変更する](#change-the-machine-type-of-a-codespace)

## GitHub CLI のインストール

GitHub CLI のインストール手順については、[GitHub CLI リポジトリ](https://github.com/cli/cli#installation)を参照してください。

## GitHub CLI の使用

まだの場合は、GitHub アカウントで `gh auth login` を実行して認証を行います。

`gh` を GitHub Codespaces の操作に使用するには、`gh codespace SUBCOMMAND` またはそのエイリアス `gh cs SUBCOMMAND` を入力します。

GitHub Codespaces を操作するために使用できる一連のコマンドの例として、次の操作を行うことができます。

* 現在の codespaces を一覧表示して、特定のリポジトリの codespace があるかどうかを確認します。<br>
  `gh codespace list`
* 必要なリポジトリ ブランチの新しい codespace を作成します。<br>
  `gh codespace create -r github/docs -b main`
* 新しい codespace に SSH 接続します。<br>
  `gh codespace ssh -c octocat-literate-space-parakeet-7gwrqp9q9jcx4vq`
* ローカル コンピューターにポートを転送します。<br>
  `gh codespace ports forward 8000:8000 -c octocat-literate-space-parakeet-7gwrqp9q9jcx4vq`

## GitHub Codespaces 用の `gh` コマンド

以下のセクションでは、使用可能な各操作のコマンドの例を示します。

各コマンドで使用可能なすべてのオプションの詳細を含む GitHub Codespaces の `gh` コマンドの完全なリファレンスについては、「[gh codespace](https://cli.github.com/manual/gh_codespace)」の GitHub CLI オンライン ヘルプを参照してください。 または、コマンド ラインで `gh codespace --help` (一般的なヘルプ) または `gh codespace SUBCOMMAND --help` (特定のサブコマンドのヘルプ) を使用できます。

> \[!NOTE]
> 多数のコマンドで使用される `-c CODESPACE_NAME` フラグは省略可能です。 省略すると、選択できる codespaces の一覧が表示されます。

### すべての codespaces を一覧表示する

```shell
gh codespace list
```

リストには、他の `gh codespace` コマンドで使用できる各 codespace の一意の名前が含まれています。

codespace のブランチ名の末尾にあるアスタリスクは、その codespace にコミットされていない、またはプッシュされていない変更があることを示します。

### 新しい codespace を作成する

```shell
gh codespace create -r OWNER/REPO_NAME [-b BRANCH]
```

詳しくは、「[リポジトリの codespace を作成する](/ja/codespaces/developing-in-a-codespace/creating-a-codespace-for-a-repository)」をご覧ください。

### codespace の詳細を表示する

```shell
gh codespace view
```

このコマンドを実行すると、既存の codespace のいずれかを選択するように求められます。 その後、次の情報が表示されます。

* codespace の名称
* 状態 ("使用可能" や "シャットダウン" など)
* リポジトリ
* Git の状態
* codespace の作成に使用される開発コンテナー構成ファイルへのパス
* マシンの種類
* 無操作タイムアウト
* codespace が作成された日時
* 保持期間

詳細については、[GitHub CLI リファレンス](https://cli.github.com/manual/gh_codespace_view)に関するページを参照してください。

### codespace を停止する

```shell
gh codespace stop -c CODESPACE-NAME
```

詳しくは、「[GitHub Codespaces に深く迫る](/ja/codespaces/about-codespaces/deep-dive#closing-or-stopping-your-codespace)」をご覧ください。

### codespace を削除する

```shell
gh codespace delete -c CODESPACE-NAME
```

詳しくは、「[codespace を削除する](/ja/codespaces/developing-in-a-codespace/deleting-a-codespace)」をご覧ください。

### codespace の名前を変更する

```shell
gh codespace edit -c CODESPACE-NAME -d 'DISPLAY-NAME'
```

詳しくは、「[codespace の名前を変更する](/ja/codespaces/customizing-your-codespace/renaming-a-codespace?tool=cli)」をご覧ください。

### codespace をリビルドする

```shell
gh codespace rebuild
```

完全なリビルドを実行するには、このコマンドの最後に `--full` を追加します。 詳しくは、「[codespace でのコンテナーのリビルド](/ja/codespaces/developing-in-a-codespace/rebuilding-the-container-in-a-codespace)」をご覧ください。

このコマンドを使用して codespace をリビルドすると、codespace のシステムに現在保存されている `devcontainer.json` ファイルが使用されます。 ファイルの現在の状態がソース管理に保存されているかどうかに関係なく、そのようになります。 詳しくは、「[開発コンテナーの概要](/ja/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers)」をご覧ください。

### codespace に SSH 接続する

リモート codespace コンピューターでコマンドを実行するには、ターミナルから codespace に SSH 接続できます。

```shell
gh codespace ssh -c CODESPACE-NAME
```

> \[!NOTE]
> 接続する codespace では、SSH サーバーを実行している必要があります。 既定の開発コンテナー イメージには、自動的に開始される SSH サーバーが含まれています。 codespaces が既定のイメージから作成されていない場合は、`devcontainer.json` ファイル内の `features` オブジェクトに次を追加することで、SSH サーバーをインストールして起動できます。
>
> ```jsonc
> "features": {
> // ...
> "ghcr.io/devcontainers/features/sshd:1": {
> "version": "latest"
> },
> // ...
> }
> ```
>
> `devcontainer.json` ファイルと既定のコンテナー イメージについて詳しくは、「[開発コンテナーの概要](/ja/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers)」をご覧ください。

GitHub Codespaces では、シームレスな認証エクスペリエンスを提供するためにローカル SSH キーを自動的に作成します。 SSH 暗号化を使用した接続について詳しくは、「[`gh codespace ssh`](https://cli.github.com/manual/gh_codespace_ssh)」を参照してください。

### Visual Studio Code で codespace を開く

```shell
gh codespace code -c CODESPACE-NAME
```

ローカル コンピューターに VS Code がインストールされている必要があります。 詳しくは、「[Visual Studio Code で GitHub Codespaces を使用する](/ja/codespaces/developing-in-a-codespace/using-github-codespaces-in-visual-studio-code)」をご覧ください。

### JupyterLab で codespace を開く

```shell
gh codespace jupyter -c CODESPACE-NAME
```

JupyterLab アプリケーションは、開いている codespace にインストールされている必要があります。 既定の開発コンテナー イメージには JupyterLab が含まれているため、既定のイメージから作成された codespace には常に JupyterLab がインストールされます。 既定のイメージの詳細については、「[開発コンテナーの概要](/ja/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#using-the-default-dev-container-configuration)」と [`devcontainers/images`](https://github.com/devcontainers/images/tree/main/src/universal) リポジトリを参照してください。 開発コンテナー構成で既定のイメージを使用していない場合は、`devcontainer.json` ファイルに `ghcr.io/devcontainers/features/python` 機能を追加して JupyterLab をインストールできます。 オプション `"installJupyterlab": true`を含める必要があります。 詳しくは、`devcontainers/features` リポジトリにある [`python`](https://github.com/devcontainers/features/tree/main/src/python#python-python) 機能の Readme をご覧ください。

### コードスペースへのファイルのコピーまたはコードスペースからのコピー

```shell
gh codespace cp [-r] SOURCE(S) DESTINATION
```

ファイル名またはディレクトリ名のプレフィックス `remote:` を使用して、codespace 上にあることを示します。 UNIX `cp` コマンドと同様に、最初の引数はコピー元を指定し、最後の引数はコピー先を指定します。 コピー先がディレクトリの場合は、複数のコピー元を指定できます。 いずれかのコピー元がディレクトリの場合は、`-r` (再帰) フラグを使用します。

codespace 上のファイルとディレクトリの場所は、リモート ユーザーのホーム ディレクトリに対して相対的です。

#### 例一覧

* ローカル コンピューターから codespace の `$HOME` ディレクトリにファイルをコピーします。

  `gh codespace cp myfile.txt remote:`

* codespace でリポジトリがチェックアウトされているディレクトリにファイルをコピーします。

  `gh codespace cp myfile.txt remote:/workspaces/REPOSITORY-NAME`

* codespace からローカル コンピューター上の現在のディレクトリにファイルをコピーします。

  `gh codespace cp remote:myfile.txt .`

* 次の 3 つのローカル ファイルを codespace の `$HOME/temp` ディレクトリにコピーします。

  `gh codespace cp a1.txt a2.txt a3.txt remote:temp`

* codespace からローカル コンピューター上の現在の作業ディレクトリに次の 3 つのファイルをコピーします。

  `gh codespace cp remote:a1.txt remote:a2.txt remote:a3.txt .`

* 次のローカル ディレクトリを codespace の `$HOME` ディレクトリにコピーします。

  `gh codespace cp -r mydir remote:`

* codespace からローカル コンピューターにディレクトリをコピーし、ディレクトリ名を変更します。

  `gh codespace cp -r remote:mydir mydir-localcopy`

使用できる追加フラグなど、`gh codespace cp` コマンドの詳細については、[GitHub CLI マニュアル](https://cli.github.com/manual/gh_codespace_cp)を参照してください。

### codespace 内のポートの変更

codespace 上のポートをローカル ポートに転送できます。 プロセスが実行されている限り、ポートは転送されたままです。 ポートの転送を停止するには、<kbd>Control</kbd>+<kbd>C</kbd> キーを押します。

```shell
gh codespace ports forward CODESPACE-PORT_NAME:LOCAL-PORT-NAME -c CODESPACE-NAME
```

転送されたポートの詳細を表示するには、`gh codespace ports` を入力して codespace を選択します。

転送されたポートの可視性を設定できます。 データ再利用可能コードスペース.portの可視性設定 %}

```shell
gh codespace ports visibility CODESPACE-PORT:private|org|public -c CODESPACE-NAME
```

1 つのコマンドを使用して、複数のポートの可視性を設定できます。 次に例を示します。

```shell
gh codespace ports visibility 80:private 3000:public 3306:org -c CODESPACE-NAME
```

詳しくは、「[codespace でのポートの転送](/ja/codespaces/developing-in-a-codespace/forwarding-ports-in-your-codespace)」をご覧ください。

### codespace ログにアクセスする

codespace の作成ログを確認できます。 このコマンドを入力すると、SSH キーのパスフレーズを入力するように求められます。

```shell
gh codespace logs -c CODESPACE-NAME
```

作成ログについて詳しくは、「[GitHub Codespaces のログ](/ja/codespaces/troubleshooting/github-codespaces-logs#creation-logs)」をご覧ください。

### リモート リソースにアクセスする

GitHub CLI 拡張機能を使用すると、codespace とご自分のローカル コンピューターの間にブリッジを作成し、コンピューターからアクセスできるあらゆるリモート リソースに codespace がアクセスできるようにすることができます。 拡張機能の使用方法について詳しくは、[GitHub CLI を使用したリモート リソースへのアクセス](https://github.com/github/gh-net#codespaces-network-bridge)に関する記事をご覧ください。

> \[!NOTE]
> GitHub CLI 拡張情報は現在 パブリック プレビュー 段階であり、変更される可能性があります。

### codespace のマシンの種類を変更する

```shell
gh codespace edit -m MACHINE-TYPE-NAME
```

詳しくは、「[codespace のマシンの種類を変更する](/ja/codespaces/customizing-your-codespace/changing-the-machine-type-for-your-codespace)」の「GitHub CLI」タブをご覧ください。