スニペットツール(テキスト展開ツール)は、キーワードを入力するだけで定型文やコードブロックに自動展開してくれるツールです。メールの署名、住所、コードテンプレートなど、繰り返し入力する手間を大幅に削減できます。

有名どころでは 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 ~UsersUSER-NAMEAppDataRoamingespansomatchbase.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 を実行してください。

Espansoのスニペット管理用のGUIツール

base.yml を直接編集するのは面倒なので、GUI で管理できるデスクトップアプリ Espanso Manager を作りました。macOS 向けの DMG を GitHub で無料公開しています。

Espanso Manager:Espansoのスニペット管理をGUIで効率化するWebアプリを作った Espanso Manager:Espansoのスニペット管理をGUIで効率化するWebアプリを作った Espansoのbase.ymlをブラウザ上で直感的に管理できるWebアプリ「Espanso Manager」をリリースしました。aTextライクな2ペイン構成で、検索・ソート・カテゴリフィルタ・YAML/CSVエクスポートに対応。React + ...  続きを読む

トリガーの命名ルール

普段の入力と衝突しないように、 プレフィックス(接頭辞) を統一するのがおすすめです。

記号 / 特殊文字  :  (スペース) + && + keyword + ;    例) &&iq; → ¿
(※`& + ;` は文字参照自体の表記と同じなので、`&&` で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 の改行
rn 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行目rn2行目rn3行目"

# ファイルパス(バックスラッシュのエスケープ)
- trigger: " &appdata;"
  replace: "C:UsersusernameAppDataRoamingespanso"

ブロックスカラー(|)とダブルクォートの使い分け

方式 特徴 向いているケース
| (パイプ) そのまま書ける。見やすい 長文、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つでインデントしてください。


まとめ

Espansoは無料かつオープンソースでありながら、有料ツールと遜色ない機能を備えたスニペットツールです。

  • 有料ツールの不安定さや課金に悩んでいる方
  • クロスプラットフォームで統一したスニペット環境が欲しい方
  • Git管理できるテキストベースの設定が好みの方

にとっては、非常に有力な選択肢になるでしょう。

設定がYAMLファイルなので、VS Codeなどのエディタで快適に編集でき、Gitでバージョン管理もできます。

公式リンク

関連記事

Espanso Manager:Espansoのスニペット管理をGUIで効率化するWebアプリを作った Espanso Manager:Espansoのスニペット管理をGUIで効率化するWebアプリを作った Espansoのbase.ymlをブラウザ上で直感的に管理できるWebアプリ「Espanso Manager」をリリースしました。aTextライクな2ペイン構成で、検索・ソート・カテゴリフィルタ・YAML/CSVエクスポートに対応。React + ...  続きを読む