GitHub Codespacesをほとんど使っていないのに無料枠が減っていたり、不要なcodespaceを削除しても今月の使用量が戻らなかったりすると、課金が止まっていないように見えます。
結論からいうと、GitHub Codespacesには計算時間とストレージという別々の使用量があります。計算時間はcodespaceが稼働している間、ストレージはcodespaceやprebuildが存在している間に加算されます。
また、請求画面に表示される今月の使用量は累積値です。環境を削除しても、それまでに記録された使用量は減りません。削除によって止まるのは、削除後のストレージ使用量の加算です。([GitHub Docs][1])
Codespacesを止めても使用量が増える理由と不要環境の整理
GitHub Codespacesの使用量は、次の2種類に分けて確認する必要があります。
| 使用量 | 加算される条件 | 停止した場合 | 削除した場合 |
|---|---|---|---|
| 計算時間 | codespaceが稼働している間 | 以後の加算が止まる | 以後の加算が止まる |
| ストレージ | codespaceやprebuildが存在する間 | 引き続き加算される | 削除後の加算が止まる |
つまり、使っていないcodespaceを停止すれば計算時間は節約できますが、環境を残している限りストレージは消費されます。
反対に、今後使わないcodespaceを削除すれば、その環境によるストレージ使用量の増加も止められます。ただし、今月すでに消費した分が取り消されるわけではありません。([GitHub Docs][1])
ブラウザを閉じただけでは停止しない
特に間違えやすいのが、ブラウザのタブやVisual Studio Codeのウィンドウを閉じたことで、codespaceも停止したと思ってしまうケースです。
GitHubの公式ドキュメントでは、明示的に停止しなかったcodespaceは、アイドルタイムアウトが発生するまで稼働し続けると説明されています。ブラウザのタブを閉じただけでは、リモート側のcodespaceは停止しません。([GitHub Docs][2])
「今日は数分しか作業していないのに計算時間が多い」という場合は、画面を閉じた後もcodespaceが稼働していなかったか確認してください。
削除しても今月の使用量が戻らないのは正常
GitHub Codespacesのストレージ使用量は、保存容量だけでなく、環境が存在していた時間も含めて計算されます。公式ドキュメントではGB-hoursという時間ベースの単位で計測され、月内で累積すると説明されています。([GitHub Docs][3])
たとえば、次のような使い方をしたとします。
- 月曜日にcodespaceを作成する
- 水曜日まで環境を残す
- 水曜日にcodespaceを削除する
この場合、月曜日から水曜日までに発生したストレージ使用量は、削除後も今月の実績として残ります。木曜日以降の加算は止まりますが、月曜日から水曜日までの値が差し引かれることはありません。
請求画面のストレージ使用量は、現在の請求期間中は増えるか、同じ値を維持します。新しい請求期間が始まるとリセットされます。codespaceやprebuildを途中で削除しても、今月の累積値は減らず、以後の増加速度が下がるだけです。([GitHub Docs][1])
したがって、削除後に使用量が戻っていなくても、削除に失敗したとは限りません。
まず請求画面で計算時間とストレージを分けて確認する
無料枠が減っている原因を調べるときは、合計値だけを見るのではなく、計算時間とストレージを分けて確認します。
GitHubの個人アカウントでは、アカウント設定にある請求・使用量の画面から、利用中の従量課金製品を確認できます。組織の利用状況を確認する場合は、組織所有者や請求管理者など、請求情報を閲覧できる権限が必要です。画面名やメニュー構成は変更されることがありますが、Codespaces、Usage hours、Storageなどの項目を探してください。([GitHub Docs][4])
計算時間が増えている場合
主に次の原因が考えられます。
- codespaceを明示的に停止していない
- ブラウザやVisual Studio Codeを閉じただけになっている
- アイドルタイムアウトが長く設定されている
- ターミナルで動かしている処理が継続している
- Webサーバーのログなどがターミナルへ出力され続けている
Codespacesのアイドル判定では、キーボードやマウスの操作だけでなく、ターミナルの入出力も活動として扱われます。そのため、本人が操作していなくても、ログ出力などが続くことでタイムアウトまでの時間がリセットされる場合があります。([GitHub Docs][5])
ストレージが増えている場合
次の項目を確認します。
- 停止中のcodespaceが残っていないか
- 今後使わない古いcodespaceが残っていないか
- prebuildが設定されていないか
- 不要なVisual Studio Code拡張機能が入っていないか
- カスタムdev containerイメージを使用していないか
- リポジトリ以外のデータをcodespace内へ保存していないか
停止中のcodespaceでも、ファイルや拡張機能などを保持するためのストレージは使用します。また、カスタムdev containerを使っている場合は、標準イメージを使う場合よりストレージ量が増えることがあります。([GitHub Docs][1])
どのアカウントに計上されているか確認する
Codespacesの使用量は、codespaceを作成した個人アカウントか、リポジトリを所有する組織のいずれかに計上されます。
組織所有リポジトリでは、組織側がCodespacesの費用負担を許可しているかどうかによって請求先が変わる場合があります。フォークやテンプレートから作成したリポジトリでは、請求先の判断がさらに複雑になることがあります。([GitHub Docs][3])
次の3点をセットで確認してください。
- codespaceを作成したGitHubアカウント
- 元になったリポジトリの所有者
- 使用量を確認している請求アカウント
個人アカウントの請求画面だけを見て「環境がない」と判断せず、関連する組織の請求画面も確認することが重要です。
使わないcodespaceは明示的に停止する
作業を再開する予定があるcodespaceは、削除せずに停止します。停止すると、実行中のプロセスが終了し、計算時間の加算が止まります。保存済みの変更は、次回起動時にも利用できます。
Web画面から停止する基本的な流れは次のとおりです。
- GitHubの
Codespacesページを開く - 対象codespaceの右側にある三点メニューを開く
Stop codespaceを選択する- 一覧で停止状態になったことを確認する
GitHub CLIを使用している場合は、次のコマンドから停止対象を選択できます。
gh codespace stop
停止後もストレージ使用量は加算されるため、停止はあくまで「後で再開する環境」に向いた操作です。([GitHub Docs][2])
自動停止時間を短くする
停止し忘れが多い場合は、アイドルタイムアウトを短く設定します。
GitHubの個人設定では、Settings内のCodespacesから、デフォルトのアイドルタイムアウトを変更できます。設定後に新しく作成するcodespaceへ適用されるため、既存環境にも自動的に反映されるとは限らない点に注意してください。([GitHub Docs][5])
タイムアウトを短くすると計算時間を節約できますが、次のような作業では短すぎる設定が不便になることがあります。
- ビルドやテストに時間がかかる
- Webサーバーを起動して動作確認する
- 一時的に別の作業へ移ることが多い
- 長時間のデータ処理を実行する
通常の編集作業が中心なら短めに設定し、長時間処理が必要なときだけ個別に調整する運用が現実的です。
変更を保全してから不要なcodespaceを削除する
今後使わないcodespaceは削除します。ただし、削除前にローカル変更がGitHubへ反映されているか確認してください。
codespace内にしか存在しないデータは、環境を削除すると失われる可能性があります。
削除前に確認する項目
| 確認対象 | 対応 |
|---|---|
| エディターで未保存のファイル | Save Allなどで保存する |
| 未コミットの変更 | 内容を確認してコミットする |
| 未追跡ファイル | 必要なものだけ追加する |
| 未プッシュのコミット | リモートリポジトリへプッシュする |
.gitignore対象のファイル | 別途ダウンロードやバックアップを行う |
| ローカルデータベースや生成物 | 必要性を判断して退避する |
| APIキーや秘密情報 | リポジトリへコミットしない |
まず、ターミナルで現在の状態を確認します。
git status
変更内容を確認する場合は、次のコマンドも利用できます。
git diff
保存するファイルを選び、コミットしてプッシュします。
git add <保存するファイル>
git commit -m "Save work before deleting codespace"
git push -u origin <ブランチ名>
git add -Aですべてをまとめて追加すると、秘密情報や不要な生成物までコミットする可能性があります。特に.env、認証情報、秘密鍵、ローカル専用の設定ファイルは、追加前に必ず確認してください。
Web画面から削除する手順
変更を保全したら、次の手順で削除します。
- GitHubの
Codespacesページを開く - 対象codespaceの三点メニューを開く
Deleteを選択する- 削除確認を完了する
- 一覧から対象環境が消えたことを確認する
GitHub CLIでは、次のコマンドから削除対象を選択できます。
gh codespace delete
GitHub CLIは未保存の変更がある場合に確認を表示しますが、削除前の確認をツール任せにせず、リモートリポジトリへ必要な変更が反映されていることを自分でも確認してください。([GitHub Docs][6])
削除しても今月の累積使用量は減りません。ただし、そのcodespaceによる削除後のストレージ加算は止まります。
codespaceを削除してもストレージが増えるならprebuildを確認する
すべてのcodespaceを削除したのにストレージ使用量が増える場合は、prebuildが残っている可能性があります。
prebuildは、codespaceを素早く起動できるように、あらかじめ開発環境を構築して保存しておく機能です。prebuildは通常のYour codespaces一覧には表示されませんが、リポジトリ用のprebuildが存在すればストレージを消費します。([GitHub Docs][1])
prebuildの使用状況を調べる
請求画面のStorage項目を展開すると、prebuildによる使用量を確認できる場合があります。
詳細が分からない場合は、使用量レポートを出力し、Product列でCodespacesに関連する行を絞り込みます。使用量レポートを使うと、どのリポジトリにprebuildが存在するか調べやすくなります。([GitHub Docs][1])
不要なprebuild構成を削除する
リポジトリの管理権限がある場合は、リポジトリ設定のCodespacesページからprebuild構成を確認できます。
不要な構成を削除する基本的な流れは次のとおりです。
- 対象リポジトリの設定を開く
Codespacesの設定を開く- 対象のprebuild構成を確認する
- 三点メニューから
Deleteを選択する - 削除を確定する
Disable runsで更新処理を無効化しただけでは、すでに作成されたprebuildは削除されません。既存のprebuildによるストレージ使用も止めたい場合は、不要なprebuild構成そのものを削除する必要があります。構成を削除すると、それに関連する既存のprebuildも削除されます。([GitHub Docs][7])
ここでも、今月すでに記録された使用量は減りません。削除後のストレージ加算が止まると考えてください。
予算と支払い設定は個人・組織ごとに確認する
GitHub Codespacesの無料利用枠は、個人アカウントに含まれるものです。組織アカウントやエンタープライズアカウントには、個人アカウントと同じ無料枠が自動的に含まれるわけではありません。([GitHub Docs][1])
会社やチームのリポジトリでCodespacesを使っている場合は、次の項目を確認してください。
- 組織がCodespacesの費用負担を許可しているか
- 個人アカウントと組織のどちらが請求先か
- 支払い方法が登録されているか
- Codespaces用の予算が設定されているか
- 予算上限や利用ポリシーに達していないか
- 通知先のメールアドレスが正しいか
有効な支払い方法が登録されている場合でも、設定された予算によって利用が制限されることがあります。個人アカウントと組織アカウントでは予算設定が別になるため、実際の請求先アカウント側で確認してください。([GitHub Docs][3])
無料枠や単価は契約プランやGitHubの料金体系によって変わる可能性があります。過去の記事に掲載された固定金額だけで判断せず、現在の請求画面と公式料金情報を確認するのが確実です。
よくある勘違いと正しい対処
| 勘違い | 実際の動作 | 対処 |
|---|---|---|
| ブラウザを閉じれば停止する | タイムアウトまで稼働する場合がある | Stop codespaceを実行する |
| 停止すれば使用量は一切増えない | ストレージは加算される | 不要なら削除する |
| 削除すれば今月の使用量が戻る | 過去の累積値は残る | 次の請求期間まで待つ |
| codespace一覧が空ならストレージは使われない | prebuildが残っている場合がある | prebuild構成を確認する |
| コミット済みなら削除しても安全 | 未プッシュのコミットは環境内だけに存在する | リモートへプッシュする |
| 個人の無料枠が組織利用にも使われる | 請求先は設定や所有者によって変わる | 請求対象アカウントを確認する |
無料枠の減少を止めるための確認順序
GitHub Codespacesの使用量が想定より多いときは、次の順序で整理すると原因を切り分けやすくなります。
- 請求画面で計算時間とストレージを分ける
- どの個人・組織アカウントに計上されているか確認する
- 稼働中のcodespaceを明示的に停止する
- アイドルタイムアウトを必要に応じて短くする
- 未保存・未コミット・未プッシュの変更を保全する
- 今後使わないcodespaceを削除する
- prebuildが残っていないか確認する
- 請求先アカウントの予算と支払い設定を確認する
重要なのは、停止は計算時間を止める操作、削除は将来のストレージ加算も止める操作と理解することです。
削除後も今月の使用量が残るのは、請求画面が月内の累積値を表示しているためです。値を元に戻そうと繰り返し削除操作を行うのではなく、対象環境が一覧から消えていることと、その後の増加原因となるcodespaceやprebuildが残っていないことを確認してください。
[1]: https://docs.github.com/en/codespaces/troubleshooting/troubleshooting-included-usage “Getting the most out of your included usage – GitHub Docs”
[2]: https://docs.github.com/en/codespaces/developing-in-a-codespace/stopping-and-starting-a-codespace “Stopping and starting a codespace – GitHub Docs”
[3]: https://docs.github.com/en/billing/concepts/product-billing/github-codespaces “GitHub Codespaces billing – GitHub Docs”
[4]: https://docs.github.com/en/billing/how-tos/products/view-productlicense-use “Viewing your usage of metered products and licenses – GitHub Docs”
[5]: https://docs.github.com/en/codespaces/setting-your-user-preferences/setting-your-timeout-period-for-github-codespaces “Setting your timeout period for GitHub Codespaces – GitHub Docs”
[6]: https://docs.github.com/en/codespaces/developing-in-a-codespace/deleting-a-codespace “Deleting a codespace – GitHub Docs”
[7]: https://docs.github.com/en/codespaces/prebuilding-your-codespaces/managing-prebuilds “Managing prebuilds – GitHub Docs”

コメント