Closed5

100日チャレンジ day48 (Pty Terminal)

riddle_tecriddle_tec

昨日
https://zenn.dev/gin_nazo/scraps/2d9aa5f2e76309


https://blog.framinal.life/entry/2025/04/14/154104

100日チャレンジに感化されたので、アレンジして自分でもやってみます。

やりたいこと

  • 世の中のさまざまなドメインの簡易実装をつくり、バックエンドの実装に慣れる(dbスキーマ設計や、関数の分割、使いやすいインターフェイスの切り方に慣れる
  • 設計力(これはシステムのオーバービューを先に自分で作ってaiに依頼できるようにする
  • 生成aiをつかったバイブコーティングになれる
  • 実際にやったことはzennのスクラップにまとめ、成果はzennのブログにまとめる(アプリ自体の公開は必須ではないかコードはgithubにおく)

できたもの

https://github.com/lirlia/100day_challenge_backend/tree/main/day48_gui_terminal_emulator

riddle_tecriddle_tec

擬似端末(pseudo terminal、略してpty)とは、**ソフトウェア的に実現された端末(ターミナル)**のことです。
物理的な端末(キーボードやディスプレイがついた本物の端末)ではなく、OS内部で仮想的に作られる端末のペアです。

仕組み(ざっくり)

  • ptyは「マスター」と「スレーブ」という2つのファイル(デバイス)で構成されます。
    • マスター側: プログラム(例: ターミナルエミュレータ)が操作する側
    • スレーブ側: シェルや他のプログラムが「本物の端末」として認識する側

何のために使う?

  • ターミナルエミュレータ(例: GNOME Terminal, iTerm2, VSCodeのターミナル)や、ssh、screen、tmuxなどがptyを使っています。
  • 例えば、ターミナルアプリはptyのマスター側を操作し、スレーブ側にシェル(bashやzshなど)を接続します。
  • これにより、シェルは「本物の端末で動いている」と思い込むので、入出力や制御シーケンス(カーソル移動、色付けなど)が正しく動作します。

  • あなたがsshでリモートに接続するとき、リモート側でptyが作られ、シェルがそのスレーブ側で動きます。
  • ターミナルアプリで新しいタブを開くと、ptyが作られ、そのスレーブ側でシェルが起動します。

まとめ

  • 擬似端末(pty)=仮想的な端末デバイスのペア
  • ターミナルエミュレータやリモート接続、画面分割ツールなどで必須の仕組み
  • シェルやプログラムに「本物の端末」を見せかけるために使う

もしさらに詳しい技術的な仕組みや、Goでの使い方など知りたい場合は教えてください!

このスクラップは3ヶ月前にクローズされました