もう切断で困らない!GitHub Codespacesタイムアウト設定方法

前回はGithub CodespacesNode-REDから、Ollamaを経由してLLMにアクセスし、テキスト生成をするといった内容を書きました。

uepon.hatenadiary.com

この講義を行った際に、学生からも作業中にサーバがタイムアウトがされてしまい、作業が中断してしまうという相談を度々受けました🙇🙇🙇特にワークショップやハンズオンセッションでは、この予期せぬ切断が学習の妨げになることも考えるとちょっと見逃せない問題です。

先の記事を書くにあたって参考にさせていただいた、IBM Championの知り合いから「Codespacesの接続時間は伸ばせますよ」という話を聞いて調べてみると、 実は、GitHub Codespaces のタイムアウト時間は最大240分まで延長可能とわかりました。本記事では、Node-REDに限らずGitHub Codespacesでの開発作業を快適に進めるために、タイムアウト設定のカスタマイズ方法について書いてみます。

方法としては、リポジトリ内の設定ファイルとして記述する方法と個人設定で行う方法は2つありますが、 後者のGitHub個人設定を変更する方法だけ行えば大丈夫です。急いでいる方向けのリンク

方法 - リポジトリ内の設定ファイルで記載する方法 - GitHubの個人設定を変更する方法

リポジトリ内の設定ファイルで記載する方法

GitHub Codespacesタイムアウト時間を延長する1つ目の方法は、リポジトリ内にある.devcontainer/devcontainer.jsonを編集する方法です。現在のリポジトリにある.devcontainer/devcontainer.jsonVisual Studio Codeで開いて編集します。

【編集後のファイル】.devcontainer/devcontainer.json

// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/universal
{
    "name": "Default Linux Universal",
    // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
    "image": "mcr.microsoft.com/devcontainers/universal:2-linux",

    // Features to add to the dev container. More info: https://containers.dev/features.
    // "features": {},

    // Use 'forwardPorts' to make a list of ports inside the container available locally.
    // "forwardPorts": [],

    // Use 'postCreateCommand' to run commands after the container is created.
    "postCreateCommand": "sudo bash ./install.sh",

    // 編集部分
    // Configure tool-specific properties.
    "customizations": {
        "codespaces": {
            "idle_timeout": "30m"
        }
    }

    // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
    // "remoteUser": "root"

上記の編集後のファイルの"idle_timeout": "30m"の値を変更することで長くできるのですが…実は個人ユーザではこの値は30分以上に変更することが出来ないようです。この設定値はどちらかというと短くする意図がある印象でしょうか?

最大タイムアウト時間を調べてみると以下になっていました。

  • 個人アカウント: 30分
  • Organization(組織) アカウント: 最大240分(4時間)

GitHub Organization アカウントには無料プランもあり、基本機能は利用可能で最大240分までの接続が維持されます。ただ、ユーザをOrganization(組織)に追加する手間が必要になるため、事前設定が必要そうです🥲

GitHubの個人設定を変更する方法

もう一つの方法は個人毎のGitHub Codespacesタイムアウト時間の設定を変更となります。これがわかりやすいかもしれません。Codespacesの使用時間は個人に対して1ヶ月毎に設定されているので、使用者の都合に合わせて設定できる点ではこちらのほうが柔軟性があると思います。

GitHubにログインして、画面右上にある自身の【アイコン】をクリックします。

プルダウンで表示されるメニューの【Setting】をクリックします。

プロフィールページに遷移するので、左側のペインを下にスクロールして

【Codespaces】をクリックします。

Codespacesの設定画面に遷移するので、画面をスクロールし

【Default Idle Timeout】の値を変更して【Save】ボタンをクリックします。

これでOKです。

最小は5分で、最大は240分まで設定できますが、タイムアウト時間の設定は慎重に検討する必要があります。というのも、GitHub Codespaces には無料アカウントの場合、月間の使用時間の制限があるためです。

例えば:

  • タイムアウトを240分に設定し、作業を終えても閉じ忘れた場合、4時間分の利用時間が消費されてしまいます
  • 90分のワークショップであれば、60分程度の設定でも十分かもしれません
  • 途中で作業が完了した場合は、手動でCodespaceのサーバを停止することで残りの時間を節約が可能ですが、作業を忘れることのほうが多いと思います

実際の作業時間を考慮して、必要十分な時間を設定がおすすめします。

おわりに

これでGitHub Codespacesを使用したワークショップでの懸念点であった、接続タイムアウトの問題を軽減することができました。 特にNode-REDでは、フローの編集やデプロイ後のサーバー起動など、アクティブな状態の判断が難しい場合があります。

適切なタイムアウト時間を設定することで、作業の中断を防ぎ、より集中した開発が可能なるだけでなく、参加者のストレス軽減ができます。 ただし、設定した時間をむやみに長くしすぎないよう注意も必要です。

関連記事

uepon.hatenadiary.com

uepon.hatenadiary.com

/* -----codeの行番号----- */