1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PCから離れてもターミナルを手放さない — セルフホスト型 Web ワークステーション Den を作った

1
Last updated at Posted at 2026-02-23

Claude Code で長時間の作業を回していると、ずっとPCの前に座っているのが辛くなってきます。

席を離れて休みつつ、iPadなどのタブレットから Claude の様子をちょっと覗きたい。そんなとき、どうしていますか?

  • RDP: キー入力がかなり不便。タブレットからの操作はストレスが溜まる
  • SSH(Terminus等): 操作感は悪くない。でも細かいところを見ていくと、やっぱり自分好みにカスタマイズしたくなる

結局「自分で作るか」となり、Claude Code に作ってもらいました。

Den とは

Den はセルフホスト型の Web ワークステーションです。PCで起動しておけば、ブラウザからターミナルとファイラにアクセスできます。

terminal.png

技術スタック:

  • バックエンド: Rust(Axum + portable-pty + russh)
  • フロントエンド: Vanilla JS(xterm.js + CodeMirror 6、フレームワークなし)
  • シングルバイナリ配布(静的アセットは rust-embed でバイナリに埋め込み)

PCとタブレットでセッションを引き継ぐ

Den の一番の特徴は SSH サーバーを内蔵 していることです。

これにより、以下のような使い方ができます:

  1. タブレットのブラウザ で Den にアクセスし、ターミナルセッションを開始
  2. PCに戻ったら、好きなターミナルソフト から Den に SSH 接続
  3. さっきのセッションにそのままアタッチ
# PCのターミナルからセッションに接続
ssh -t -p 2222 den@localhost attach default

# セッション一覧
ssh -p 2222 den@localhost list

逆もOKです。PCで作業していたセッションを、タブレットのブラウザから引き継ぐこともできます。

tmux や screen のように「セッションを使い回す」感覚ですが、ブラウザと SSH の両方から透過的にアクセスできるのがポイントです。

タブレットでの操作を快適にする機能たち

ブラウザからターミナルが使えるだけでは、正直あまり快適ではありません。タブレットで実際に使うために、いくつかの機能を用意しました。

キーバー

タッチデバイスにはファンクションキーや修飾キーがありません。Den のキーバーは Ctrl, Shift, Alt, Esc, F1〜F12 などをタップで入力できます。ボタンの配置は設定画面から自由にカスタマイズ可能です。

settings.png

スニペット

よく使うコマンドをワンタップで入力。git statusclaude --resume など、繰り返し打つコマンドを登録しておけます。

クリップボード履歴

システムクリップボードとSSH先のクリップボードを自動監視し、コピーした内容を履歴として保持します。PC側やリモートサーバーでコピーした内容を、タブレットから参照して貼り付けるといった使い方ができます。

ファイルマネージャ

ディレクトリのツリー表示、ファイルの閲覧・編集(CodeMirror 6 でシンタックスハイライト付き)、検索、画像や Markdown のプレビューなど一通りの機能があります。SFTP でリモートサーバーのファイルも扱えます。

files.png

Claude Code に作ってもらった

Den は Claude Code と一緒に作りました。自分は Rust の経験が浅いので、設計方針を伝えて実装は Claude に任せる、という進め方です。

たとえば「PTY のセッション管理を broadcast channel + ring buffer で実装して」「russh で SSH サーバーを内蔵して、既存セッションにアタッチできるようにして」といった指示を出すと、数分でコードが出てきます。

ただし「Claude に丸投げ」ではなく、以下のような点は自分で判断しています:

  • 何を作るか: 機能の取捨選択、優先順位
  • どう使うか: ユーザー体験の設計
  • セキュリティ: 認証方式の選定(HMAC-SHA256 + HttpOnly Cookie)

Claude Code は「手を動かしてくれる優秀なパートナー」であって、プロダクトの方向性を決めるのは自分、という役割分担です。

セットアップ

# リリースバイナリをダウンロード(GitHub Releases)
# または自分でビルド
git clone https://github.com/jss826/den.git
cd den
cargo build --release

# パスワードを設定して起動
DEN_PASSWORD="your-password" ./target/release/den

# ブラウザで http://localhost:8080 にアクセス

SSH サーバーを有効にする場合:

DEN_SSH_PORT=2222 DEN_PASSWORD="your-password" ./target/release/den

まとめ

Den は「PCから離れてもターミナルを手放さない」ための個人ツールです。

  • ブラウザからターミナルとファイラにアクセス
  • 内蔵 SSH サーバーで PC ↔ タブレットのセッション引き継ぎ
  • キーバー・スニペット・クリップボード履歴でタブレット操作を快適に

MIT ライセンスで公開しています。同じような悩みを持つ方の参考になれば幸いです。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?