Skip to main content
PTY(pseudo-terminal、擬似ターミナル)モジュールを使用すると、サンドボックス内でリアルタイムの双方向通信を備えた対話型ターミナルセッションを実行できます。 PTY セッションは リアルタイムストリーミング をサポートし、生成されたターミナル出力をコールバックを通じて継続的に配信します。また、双方向入力 により、セッションの実行中にデータを送信できます。さらに、ANSI カラーやエスケープシーケンスを含む完全なターミナル動作を備えた 対話型シェル 体験を提供し、セッションの永続化 もサポートしているため、実行中のセッションをデタッチして後から再接続できます。

PTY セッションを作成する

sandbox.pty.create() を使用して、対話型の bash シェルを開始できます。
PTY は TERM=xterm-256color を使用して対話型の bash シェルを起動するため、ANSI カラーやエスケープシーケンスは期待どおりに動作します。

タイムアウト

タイムアウト設定は構成可能で、PTY セッションがどのくらいの時間アクティブなままでいるかを決定します。JavaScript では timeoutMs: 0、Python では timeout=0 を設定することで、PTY セッションを無期限に開いたままにできます。デフォルトでは、セッションは 60 秒のタイムアウトを使用します。

PTY に入力を送信する

JavaScript では sendInput()、Python では send_stdin() を使用して、ターミナルにデータを送信できます。 JavaScript では、sendInput() は Promise を返し、ターミナル出力は直接返されるのではなく、onData コールバックを通じて配信されます。 Python では、send_stdin() は同期的に完了し、ターミナル出力は wait() に渡された on_pty コールバックを通じて配信されます。

ターミナルのサイズを変更する

ユーザーがターミナルウィンドウのサイズを変更したときに、resize() を使用して PTY に通知できます。 cols と rows の値は、ピクセルではなく文字数で表されるターミナルの寸法を示します。

切断と再接続

PTY セッションは、クライアントが切断した後もアクティブなままにできます。セッションからデタッチし、後で新しいデータハンドラーを使って再接続できます。 これは、ネットワーク中断からの復旧、複数クライアントからのターミナルアクセスのサポート、再接続をまたいだセッション状態の保持に使用できます。

PTY を終了する

kill() を使用して、PTY セッションを終了できます。

PTY の終了を待機する

ユーザーが exit と入力した場合など、ターミナルセッションが終了するまでブロックするには、wait() を使用できます。

対話型ターミナル(SSH のような)

上記で説明した同じ sandbox.pty API を使用して、raw mode、stdin の転送、ターミナルのリサイズイベントを処理することで、SSH のような完全に対話的なターミナルを作成できます。
最終更新日 2026年8月10日