スニペットツール(テキスト展開ツール)は、キーワードを入力するだけで定型文やコードブロックに自動展開してくれるツールです。メールの署名、住所、コードテンプレートなど、繰り返し入力する手間を大幅に削減できます。
有名どころでは PhraseExpress や aText、TextExpander などがありますが、いずれも有料やサブスクであったり、そのわりに安定性に不満があったり、macOS限定だったりと一長一短。
そこでおすすめしたいのが Espanso です。
Espanso とは
Espansoは Rust製のオープンソース・テキスト展開ツール です。
- 完全無料(GPL-3.0ライセンス)
- クロスプラットフォーム(Windows / macOS / Linux)
- システムワイド(ブラウザ、エディタ、WordPressの管理画面など、どこでも動作)
- プライバシー重視(100%ローカル動作、データ送信なし)
- YAML形式の設定ファイル(Gitで管理可能)
公式サイト:https://espanso.org/
GitHub:https://github.com/espanso/espanso
有料ツールとの比較
筆者はこれまで PhraseExpress(買い切り版)と aText を使ってきましたが、以下のような不満がありました。
| ツール | 問題点 |
|---|---|
| PhraseExpress | 買い切りで購入したが、入力されないことが多々あり不安定 |
| aText | サブスクリプション。再起動しないと入力されなくなることがある |
| TextExpander | サブスク制。料金が高すぎ |
| Dash | macOS限定 |
Espanso に乗り換えて、これらの問題がほぼ解消されました。動作が軽快で安定しており、設定ファイルも見通しが良いです。
インストール方法
macOS(Homebrew)
brew install espanso
Windows
公式ダウンロードページ からインストーラーをダウンロードするか、以下のコマンドでインストールします。
winget install espanso
Linux
# Snap
sudo snap install espanso --classic
# または公式サイトからdeb/AppImageを取得
初回起動
インストール後、ターミナルで以下を実行します。
# サービス登録(初回のみ)
espanso service register
# 起動
espanso start
macOS の場合
アクセシビリティの許可 が必要です。Espansoがキーボード入力を検知するための設定です。
システム設定 → プライバシーとセキュリティ → アクセシビリティ からEspansoを許可してください。
動作確認
テキストエリア(メモ帳やブラウザの入力欄など)で :espanso と入力してみてください。「Hi there!」と展開されれば正常に動作しています。
基本的な使い方
設定ファイルの場所
# 設定ファイルをエディタで開く
espanso edit
# 設定ファイルのパスを確認
espanso path
設定ファイルの場所は以下のとおりです。
| OS | パス |
|---|---|
| macOS | ~/Library/Application Support/espanso/match/base.yml |
| Windows | ~\Users\USER-NAME\AppData\Roaming\espanso\match\base.yml |
| Linux | ~/.config/espanso/match/base.yml |
スニペットの書き方(YAML形式)
match/base.yml にYAML形式で記述します。
matches:
# 基本:キーワード → テキスト置換
- trigger: " &mail;"
replace: "your-email@example.com"
# 複数のトリガーで同じ内容に展開
- triggers: [" &tel;", " ☎"]
replace: "090-1234-5678"
# 今日の日付を動的に挿入
- trigger: " &today;"
replace: "{{mydate}}"
vars:
- name: mydate
type: date
params:
format: "%Y年%m月%d日"
# シェルコマンドの出力を挿入
- trigger: " &ip;"
replace: "{{output}}"
vars:
- name: output
type: shell
params:
cmd: "curl -s ifconfig.me"
保存すると自動で反映されます。反映されない場合は espanso restart を実行してください。
トリガーの命名ルール
普段の入力と衝突しないように、プレフィックス(接頭辞) を統一するのがおすすめです。
記号 / 特殊文字 : (スペース) + & + keyword + ;; 例) &iq;; → ¿
(※セミコロン1回は文字参照自体の表記と同じため、セミコロン2回)
HTML : (スペース) + < + keyword + ; 例) <p; → <p></p>
PHP : (スペース) + <? + keyword + ; 例) <?echo; → <?php echo() ;?>
WordPress : (スペース) + <?wp:keyword + ; 例) <?wp:part; → <?php get_template_part(); ?>
CSSプロパティ : (スペース) + : + keyword + ; 例) :p; → padding: 1rem;
CSSクラス定義 : (スペース) + . + keyword + ; 例) .grid; → .grid {display: grid;}
CSSメディアクエリ: (スペース) + @ + keyword + ; 例) @pc; → @media print, screen and (min-width: 744px) {}
インラインCSS : (スペース) + = + keyword + ; 例) =ml; → style="margin-left:1rem;"
JavaScript : (スペース) + $ + keyword + ; 例) $fn; → (function () {})();
TypeScript : (スペース) + $ts: + keyword + ; 例) $ts:interface; → interface MyInterface{}
Bash : (スペース) + % + keyword + ; 例) %run; → npm run, %gst; → git status
Shell(シェルスクリプトの中身/#!/bin/bash` で始まるスクリプト内容)
: (スペース) + # + keyword + ; 例) #for; → for i in "${array[@]}"; do ... done
Python : (スペース) + #! + keyword + ; 例) #!def; → def greet():
Markdown : (スペース) + #@ + keyword + ; 例) #@tbl; → |col1|col2|col3|
ファイル分割で整理
match/ フォルダ内に複数のYAMLファイルを作成できます。用途別に分けると管理しやすくなります。
espanso/
├── config/
│ └── default.yml ← 全体設定
└── match/
├── base.yml ← 基本スニペット
├── email.yml ← メール定型文
├── code.yml ← コードスニペット
└── html.yml ← HTMLテンプレート
特殊文字・制御文字の書き方
スニペットで改行やタブを使いたい場面は多いです。Espanso(YAML)での書き方を整理します。
複数行テキスト(改行を含むスニペット)
YAMLの ブロックスカラー | を使うのが最も読みやすい書き方です。
# ブロックスカラー(|):改行がそのまま保持される
- trigger: " &sig;"
replace: |
お世話になっております。
株式会社サンプル
山田太郎
TEL: 090-1234-5678
| のかわりに |- を使うと、末尾の改行を除去できます。
# |-(末尾の改行なし)
- trigger: " &hello;"
replace: |-
こんにちは。
本日はよろしくお願いいたします。
よく使う制御文字の一覧
ダブルクォートで囲んだ文字列の中では、バックスラッシュによるエスケープシーケンスが使えます。
| 記法 | 意味 | 用途 |
|---|---|---|
\n | LF(改行) | Unix/macOS/Linux の改行 |
\r\n | CR+LF(改行) | Windows の改行 |
\r | CR(復帰) | 単体ではほとんど使わない(旧Mac) |
\t | タブ | インデントや表の整形 |
\\ | バックスラッシュ | パスの記述(C:\\Users\\...) |
\" | ダブルクォート | 文字列内にクォートを含める |
ダブルクォート内での使用例
# 改行を含む1行記述(ダブルクォートで囲む)
- trigger: " &memo;"
replace: "【メモ】\n日時:\n内容:\n担当:\n"
# タブ区切りのテンプレート
- trigger: " &tsv;"
replace: "名前\tメール\t電話番号\n"
# Windows形式の改行
- trigger: " &wintext;"
replace: "1行目\r\n2行目\r\n3行目"
# ファイルパス(バックスラッシュのエスケープ)
- trigger: " &appdata;"
replace: "C:\\Users\\username\\AppData\\Roaming\\espanso"
ブロックスカラー(|)とダブルクォートの使い分け
| 方式 | 特徴 | 向いているケース |
|---|---|---|
| (パイプ) | そのまま書ける。見やすい | 長文、HTML、コードブロック |
|- (パイプ+ハイフン) | 末尾改行なし | 定型文、署名 |
"..." (ダブルクォート) | \n\t が使える | 1行で制御文字を含めたいとき |
基本的には ブロックスカラー | でそのまま書く のが可読性が高くおすすめです。タブ文字や特殊な制御文字が必要な場合のみダブルクォートを使いましょう。
便利な機能
検索バー
トリガーを忘れたときは ALT + Space(macOSでは Option + Space)でスニペット検索バーが開きます。キーワードで部分検索が可能です。
日付・時刻の動的展開
- trigger: " &now;"
replace: "{{mytime}}"
vars:
- name: mytime
type: date
params:
format: "%Y/%m/%d %H:%M"
# 出力例: 2026/02/12 10:30
主なフォーマット指定子は以下のとおりです。
| 指定子 | 出力例 | 意味 |
|---|---|---|
%Y | 2026 | 年(4桁) |
%m | 02 | 月(2桁) |
%d | 12 | 日(2桁) |
%H | 14 | 時(24時間) |
%M | 30 | 分 |
%S | 05 | 秒 |
%A | Wednesday | 曜日(英語) |
シェルコマンド連携
# クリップボードの内容をURLエンコード
- trigger: " &urlencode;"
replace: "{{output}}"
vars:
- name: output
type: shell
params:
cmd: "pbpaste | python3 -c 'import sys,urllib.parse; print(urllib.parse.quote(sys.stdin.read().strip()))'"
よく使うコマンド一覧
| コマンド | 説明 |
|---|---|
espanso start | 起動 |
espanso stop | 停止 |
espanso restart | 再起動 |
espanso status | 動作状態の確認 |
espanso edit | 設定ファイルを開く |
espanso path | 設定ファイルのパスを表示 |
espanso log | ログの確認(デバッグ用) |
espanso service register | サービス登録(初回) |
espanso service unregister | サービス解除 |
トラブルシューティング
macOS:launchctl exited with non-zero code exit status: 3
macOSでサービス起動に失敗するケースがあります。以下のコマンドで unmanagedモード で起動してください。
espanso service start --unmanaged
それでも解決しない場合は、クリーンに再登録を試します。
espanso service unregister
rm ~/Library/LaunchAgents/com.federicoterzi.espanso.plist
rm -rf ~/Library/Caches/espanso/
espanso service register
espanso start
macOS:展開が動作しない
アクセシビリティの許可を再設定 してみてください。
システム設定 → プライバシーとセキュリティ → アクセシビリティ でEspansoを一度削除(−ボタン)してから再追加(+ボタン)します。macOSのアップデートで許可が無効化されることがあります。
Windows:一部アプリで展開されない
管理者権限で起動しているアプリでは、Espansoの展開が効かない場合があります。
設定ファイル(config/default.yml)で バックエンドを変更 すると改善する場合があります。
# config/default.yml
backend: Clipboard
# または
backend: Inject
スニペットが反映されない
# YAMLの構文エラーがないか確認
espanso log
# 再起動して反映
espanso restart
YAMLはインデント(スペース)が重要です。タブ文字は使えません。半角スペース2つでインデントしてください。
aText / PhraseExpress からの移行
既存ツールのスニペットが多い場合、エクスポート機能でJSON等に書き出し、スクリプトで一括変換するのが効率的です。
例えばaTextの場合は snippet.json ファイル(JSON形式)をエクスポートし、Pythonスクリプト等でEspansoのYAML形式に変換できます。トリガー文字列と置換テキストの対応を抽出して、YAMLの trigger / replace に変換するだけなので、プログラミングの基本知識があれば難しくありません。
移行の際に大量のスニペットを変換する場合は、YAMLライブラリ(PythonのPyYAMLなど)を使って出力すると、エスケープ処理を安全に行えます。
まとめ
Espansoは無料かつオープンソースでありながら、有料ツールと遜色ない機能を備えたスニペットツールです。
- 有料ツールの不安定さや課金に悩んでいる方
- クロスプラットフォームで統一したスニペット環境が欲しい方
- Git管理できるテキストベースの設定が好みの方
にとっては、非常に有力な選択肢になるでしょう。
設定がYAMLファイルなので、VS Codeなどのエディタで快適に編集でき、Gitでバージョン管理もできます。
公式リンク
- 公式サイト:https://espanso.org/
- ドキュメント:https://espanso.org/docs/
- GitHub:https://github.com/espanso/espanso
- Espanso Hub(パッケージ):https://hub.espanso.org/

