Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新

Feb 1, 2026 - 日記

tmux-try: tryとtmuxを繋いで実験ディレクトリを即セッション化する

tmux-try: tryとtmuxを繋いで実験ディレクトリを即セッション化する cover image

「ちょっと試したいことがあるから、新しいディレクトリ作って、tmux起動して…」という作業を毎回やっていませんか?

以前紹介したtry (詳細は「try: 深夜2時のひらめきを翌朝見つけられるか? 」参照)は実験用ディレクトリを日付プレフィックス付きで管理してくれる便利なツールですが、そこからtmux セッションを起動するのは別作業でした。この2つを繋ぐためにtmux-try を作りました。

tmux-tryが解決する問題

tryで実験ディレクトリを作った後、毎回以下の手順を踏んでいました。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# tryでディレクトリ作成&移動
try redis-test

# tmuxセッションがあるか確認
tmux list-sessions | grep redis-test

# あればアタッチ
tmux attach-session -t redis-test

# なければ新規作成
tmux new-session -s redis-test

セッションがあるかないかで打つコマンドが変わるのが地味に面倒です。これを1コマンドにまとめたのがtmux-tryです。

1
2
# これだけで完結
tmux-try redis-test

主な機能

1. パスベースセッション

明示的なパス(./, ~/, /で始まる)を指定すると、そのディレクトリでセッションを開始します。

1
2
3
4
5
6
7
8
# カレントディレクトリ配下
tmux-try ./myproject

# ホームディレクトリ配下
tmux-try ~/projects/myapp

# 絶対パス
tmux-try /absolute/path/to/project

ディレクトリが存在しない場合は自動的に作成されます。

2. 名前ベースセッション(try連携)

パスプレフィックスがない場合、tryのfuzzy finderが起動します。

1
2
3
4
5
# 既存の実験を検索、または新規作成
tmux-try redis

# 引数なしで対話的に選択
tmux-try

tryがインストールされていない場合は、カレントディレクトリでセッションを開始します。

3. GitHubリポジトリのクローン&セッション化

Git URLを渡すと、tryを使ってクローンし、即座にセッションを開始します。

1
2
3
4
5
# HTTPSでクローン
tmux-try https://github.com/tobi/try

# SSHでクローン
tmux-try [email protected]:user/repo.git

クローン先は~/src/tries/2026-01-31-tobi-try/のように日付プレフィックス付きで作成されます。

4. tmuxinator自動検出

tmuxinator がインストールされている場合、自動的に.tmuxinator.ymlを作成・使用します。

1
2
3
4
5
6
7
8
name: myproject
root: /path/to/myproject

windows:
  - main:
      panes:
        - zsh
        - opencode

tmuxinatorがない環境では、素のtmuxコマンドにフォールバックします。

引数の解決ルール

tmux-tryは引数の形式から、どの動作をすべきか自動判定します。

引数判定動作
./foo, ~/foo, /fooパスプレフィックスディレクトリとして使用
https://..., git@...Git URLtryでクローン
foo名前のみtmuxinatorプロジェクト → try実験
(なし)tryセレクタ → カレントディレクトリ

インストール

必須要件

  • tmux: ターミナルマルチプレクサ(必須)
  • try: 実験ディレクトリマネージャ(名前ベースセッションに必要)
  • bash: シェル(バージョン4.0以降)

オプション

  • tmuxinator: tmuxセッションマネージャ(あれば自動的に使用)

手順

  1. スクリプトをダウンロード
1
2
curl -sL https://raw.githubusercontent.com/tumf/tmux-try/main/tmux-try \
  -o /usr/local/bin/tmux-try
  1. 実行権限を付与
1
chmod +x /usr/local/bin/tmux-try
  1. tryをインストール(推奨)
1
2
gem install try-cli
eval "$(try init)"  # .zshrc または .bashrc に追加
  1. エイリアスを設定(おすすめ)
1
2
# .zshrc または .bashrc に追加
alias t='tmux-try'

t redisだけで実験環境が立ち上がります。1文字なので、思いついた瞬間に実行できます。

設計判断

なぜtmuxinatorを必須にしなかったのか

tmuxinatorは便利ですが、以下の理由でオプション扱いにしました。

  • 環境依存を減らす: tmuxだけあれば動く
  • 軽量さ: Rubyのインストールが不要な環境でも使える
  • 柔軟性: tmuxinatorの設定を使いたい人だけ使える

実装では、tmuxinatorの有無をcommand -v tmuxinatorで検出し、自動的にフォールバックします。

1
2
3
4
5
6
7
if command -v tmuxinator &> /dev/null; then
  # tmuxinatorを使用
  tmuxinator start "$project_name"
else
  # 素のtmuxを使用
  tmux new-session -s "$session_name" -c "$directory"
fi

tryとの統合

tryは「実験ディレクトリ管理」に特化したツールです(詳細は「try: 深夜2時のひらめきを翌朝見つけられるか? 」参照)。日付プレフィックス付きの自動命名、fuzzy検索、時間認識ソートなど、実験のライフサイクル全体を管理する機能を持っています。

tmux-tryはこの思想を尊重し、tryの機能をそのまま活用する設計にしました。独自のディレクトリ管理は実装せず、tryに委譲しています。

使用例

ケース1: 新しい実験を始める

1
2
3
4
5
# tryのfuzzy finderが起動
tmux-try

# "redis"でフィルタリングして新規作成
# → ~/src/tries/2026-01-31-redis/ に移動してセッション開始

ケース2: GitHubリポジトリを試す

1
2
3
4
# リポジトリをクローンして即座にセッション開始
tmux-try https://github.com/tobi/try

# → ~/src/tries/2026-01-31-tobi-try/ でセッション起動

ケース3: 既存プロジェクトで作業

1
2
3
4
5
# 既存のtmuxinatorプロジェクトを起動
tmux-try myproject

# または明示的なパス指定
tmux-try ~/projects/myproject

まとめ

tmux-tryは、tryとtmuxを繋ぐシンプルなラッパーです。

主な利点:

  • 1コマンドで完結: ディレクトリ作成 → 移動 → セッション起動を自動化
  • 柔軟な引数解決: パス、名前、Git URLを自動判定
  • 環境適応: tmuxinatorの有無を自動検出してフォールバック

「ちょっと試したい」という思いつきを、すぐに実行環境に変換できるツールです。興味のある方はぜひ試してみてください。

参考リンク

関連記事