Rigo
パソコンを買い替えたとき,ターミナルやエディターを,いつもの使い心地に戻したい。MacとLinuxで,共通の設定を使いながら,違うところだけを分けておきたい。Rigoは,そんな設定ファイルの持ち運びと整理を手伝うツールです。
macOS・Linux・Windowsに対応し,操作はターミナルから行います。設定ファイルをひとつのフォルダーに集め,元の場所へリンクする仕組みなので,導入後も普段どおりの場所で設定を編集できます。
このページでは,Rigoで何ができるかと,使い始めるまでの流れを紹介します。ダウンロードから試すことも,チュートリアルでひとつずつ操作を確かめることもできます。
いつもの設定を,別のパソコンでも
Gitの設定ファイル.gitconfig,シェルの設定ファイル.zshrc,.config/の中にあるエディターの設定。こうしたファイルは,dotfilesと呼ばれます。名前の先頭がドットのファイルに限らず,アプリケーションの設定ファイルも管理できます。
Rigoは,設定ファイルの実体をVaultと呼ぶフォルダーへ集めます。Vaultは普通のフォルダーです。Syncthing・Dropbox・iCloud Driveなど,すでに使っている同期サービスで別のパソコンへ届けられます。
別のパソコンでは,RigoでそのVaultから設定を配置します。普段の編集場所も使うエディターも,そのままです。
最初は1台,1ファイルから
同期サービスの準備は,別のパソコンと共有するときで構いません。まずは1台のパソコンで,設定ファイルをひとつ管理するところから始められます。
1台だけで使う場合も,散らばった設定ファイルをVaultへまとめ,所在を把握しやすくできます。普段の編集場所を変えずに整理でき,バックアップ対象もまとめられます。
操作の雰囲気
rigo statusで,管理している設定がこのパソコンでどう配置されているかを確認できます。
Figure 1: 小さなサンプル環境での状態一覧です。linkedはVaultへのリンクができている設定,pendingはVaultに実体があり,このパソコンの配置先にはまだファイルがない設定を表します。
たとえば,上の画面では.config/starship.tomlがpendingです。rigo applyを実行すると,このような未配置の設定へリンクを作ります。すでにリンクされている設定は,そのまま使い続けられます。
画面は,撮影用に用意した環境で本物のRigoを動かし,Prompt for Macで撮影したものです。Rigoのコマンドは,普段使っているターミナルで実行できます。
仕組みは,フォルダーとリンク
Vaultの中は,ホームフォルダーと同じ並び方です。たとえば,次のように置きます。
~/Sync/Vault/
├── .gitconfig
├── .zshrc
└── .config/
└── rigo/
└── rigo.tomlRigoは,~/.gitconfigからVault内の.gitconfigへ,~/.zshrcからVault内の.zshrcへ,シンボリックリンクを作ります。リンクは,元の場所から実体を参照するための入り口です。アプリケーションは,いつもの場所に設定ファイルがあるものとして読み込みます。
~/.gitconfigをエディターで開いて保存すると,編集されるのはVault内の実体です。編集のたびにコピーしたり,反映コマンドを実行したりする必要はありません。Vaultを同期していれば,その変更が同期ツールを通してほかのパソコンへ届きます。
applyは,新しく届いた設定などを配置するときに使います。設定の内容を編集する操作と,配置先にリンクを作る操作は,役割が異なります。
設計思想
Rigoを日々使ううえでの考え方は,次の3つです。
- 同期方法は,自分で選べる
Rigoは設定の配置を担当し,マシン間の同期は好みのツールに任せます。履歴も残したければ,VaultをGitで管理することもできます。 - 編集した内容が,そのまま実体になる
リンク先の設定を直接使うため,普段の編集方法を続けられます。同期後,アプリケーションによっては設定の再読み込みや再起動が必要です。 - ファイルの置き場所が,構成を表す
ファイル名を特別な形式に変換したり,管理するファイルを別のマニフェストへ列挙したりする必要はありません。Vaultの中を見れば,何を管理しているかがわかります。
設定ファイルrigo.tomlには,ディレクトリ全体をひとつのリンクにする指定や,マシンごとの使い分けなどを書きます。最初は空のファイルで構いません。必要になったところから設定を足せます。
設定が食い違ったときも,確認してから
新しいパソコンにも,すでに設定ファイルがあるかもしれません。その内容がVaultのものと異なる場合,Rigoはconflictとして知らせます。rigo applyでは競合するファイルを置き換えず,個別に確認できるように残します。
rigo link .gitconfigのように対象を指定すると,対話形式で差分を確認し,どちらの内容を使うか選べます。
Figure 2: Vault側はeditor = vim,このパソコン側はeditor = code --waitになっている例です。内容を見比べてから選択できます。
選択肢は,Vaultの内容を採用する,このパソコンの内容をVaultへ取り込む,操作を中止する,の3つです。図の-の行がVault側,+の行がこのパソコン側の内容です。
管理をやめたくなった場合は,rigo forgetでリンクを通常のファイルへ戻せます。このときVault側の実体は,すぐに削除されるのではなく,Vault内のごみ箱へ移されます。
主な機能
最初からすべてを使う必要はありません。共通の設定を配置するところから始め,環境が増えたら使い分けを加えられます。
| したいこと | Rigoでできること |
|---|---|
| 設定を少しずつ管理したい | ファイルを1件ずつ追加。ディレクトリ全体をひとつのリンクにすることも可能 |
| 配置の状態を確認したい | linked・pending・unlinked・conflict・brokenの5状態で表示 |
| MacとLinuxなどで設定を分けたい | 共通設定に加え,OS別・Linuxディストリビューション別・WSL向けの設定を配置 |
| 仕事用と個人用などで対象を分けたい | ホスト名やグループで配置対象を指定。共通の設定に,特定のマシンだけの設定を追加することも可能 |
| エディター関係の設定をまとめて扱いたい | タグを付け,まとめてリンク・解除 |
| Windowsでも使いたい | アプリケーションの設定場所や,ホーム外のドライブにも対応 |
| 秘密の情報は別に保管したい | 1Passwordの参照から,指定した場所へ情報を書き出すsecretsコマンド |
| 管理から外した設定を戻したい | Vault内のごみ箱を確認し,退避した実体を復元 |
OS別のフォルダー構成や状態の意味は仕組み,ホストごとの選択的配置や1Password連携は設定リファレンスで説明しています。
なぜ作ったか
欲しかったのは,普段使っている同期フォルダーに設定を集め,Mac・Linux・Windowsで使い分けられる道具でした。いつもの場所で設定を編集すれば,そのまま実体が更新されること。そして,別のパソコンへ配置するときには,既存の設定との違いを確認できること。その組み合わせを大切にして作ったのがRigoです。
名前は,環境を組み上げる「rig」と,実装言語の「Go」を合わせたものです。
動作環境
| プラットフォーム | 要件 |
|---|---|
| macOS | 13以降 |
| Linux | Linux向けバイナリーを提供 |
| Windows | 11。シンボリックリンクを作るため,開発者モードの有効化,または管理者権限での実行が必要 |
Rigoはターミナルで使うCLIツールです。設定ファイルの内容をマシンごとに変換するテンプレート機能は持たず,異なる設定はOS別などのファイルとして置き分けます。
インストール
ダウンロードページからOSとCPUに合うアーカイブを選び,展開したrigo(Windowsではrigo.exe)を,コマンドとして実行できる場所へ置きます。Linux向けには.deb・.rpmパッケージも用意しています。
Goを使っている場合は,次のコマンドでもインストールできます。
go install github.com/rinodrops/rigo@latestインストール後は,次のコマンドでバージョンを確認できます。
rigo versionバージョンを確認できたら,チュートリアル(macOS・Linux)またはチュートリアル(Windows)へ進んでください。
次はどこを読む?
| 知りたいこと | 案内 |
|---|---|
| 最初の設定から,別のパソコンへの配置まで試したい | チュートリアル(macOS・Linux)/チュートリアル(Windows) |
| Vaultやリンク,OSごとの使い分けを理解したい | 仕組み |
| コマンドのオプションや動作を調べたい | コマンドリファレンス |
| タグやマシンごとの配置対象などを設定したい | 設定リファレンス |
ライセンス
MITライセンスで公開しています。ソースコードとリリースはGitHubで確認できます。

