espansoでタイムスタンプ『:D』で一発入力!2025/05/08/THU/07:49 

2025/05/08/THU/07:49 ←やっと完成!

Google日本語入力のお気に入りは、

『きょう』と打ち込むと、『2025/05/08』の変換候補があらわれる。

そして、『いま』と打ち込むと『5:33』と現在時刻を打ち込んでくれる。

しかし、一気に、 『2025/05/08 5:34』までは打ち込んでくれない。

 

常に、メモを取るときなどは、『2025/05/08/THU/5:35』を冒頭にどうしてもいれたい。
そう、これだけで、この一行が完全に個別のデータとして扱い管理できるからだ。
『grep』検索でもひっかかるからだ。

そこでChatGPTに聞いてみると、 Python で書く…という方法があった。

🧩 ステップ①:Pythonスクリプトの作成

# ime_now.py
import datetime
import csv
from pathlib import Path

now = datetime.datetime.now()
formatted = now.strftime("%Y/%m/%d/%a/%H:%M/")
entry = ["なう", formatted, "名詞"]

# 出力先:ホームディレクトリ配下に保存
output_path = Path.home() / "dictionary.csv"
with open(output_path, "w", newline='', encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(entry)

print(f"辞書ファイルを出力しました: {output_path}")

 

**🧩 ステップ②:Google日本語入力でインポート

🧩 ステップ③:毎日自動実行(launchd)**

macOSでの自動実行はlaunchdが推奨されます。

おもしろそうだけど、毎日実行とかが、これは面倒なので却下…。Espansoにトライする。

espanso という、スニペットアプリがあるようだ。


https://qiita.com/kkensuke/items/816077efdd1aa2a3fc97

とはいっても、『ターミナル.app』からインストールするって難易度が高い!

でも、『ターミナル』や『シェル』が扱えてこそのプログラマーなのであえて挑戦!

そして、インストールする時には、不具合がある時を想定して、削除方法も調べておきたい。

ただし、気をつけておきたいことが一点! ChatGPTは、平気で嘘をつくのでw、用心しながらだ。
言う通りにやっていると、ターミナルが壊れてしまい、GWの連休が復旧作業で追われてしまった。生産性は全く皆無だ。しかし、経験値は確実に上がったがw

しかしながら、python パッケージのanaconda とコンフリクトしているみたいだ。

_conda_setup=”$(‘/Users/paulkanda/anaconda3/bin/conda’ ‘shell.bash’ ‘hook’ 2> /dev/null)”

 

2025/05/08 6:21 復旧終了しなおして再トライ

porukandanoMac-mini:/ paulkanda$ brew -v
Homebrew 4.5.1
porukandanoMac-mini:/ paulkanda$ echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
porukandanoMac-mini:/ paulkanda$ source ~/.zshrc
porukandanoMac-mini:/ paulkanda$ brew -v
Homebrew 4.5.1
porukandanoMac-mini:/ paulkanda$ brew install espanso
==> Downloading https://formulae.brew.sh/api/formula.jws.
==> Downloading https://formulae.brew.sh/api/cask.jws.jso
==> Downloading https://github.com/espanso/espanso/releas
==> Downloading from https://objects.githubusercontent.co
################################################## 100.0%
espanso start
espanso register
==> Installing Cask espanso
==> Moving App 'Espanso.app' to '/Applications/Espanso.ap
==> Linking Binary 'espanso' to '/opt/homebrew/bin/espans
🍺  espanso was successfully installed!

 

6:23

espanso のサブコマンド体系がバージョンアップにより変わっており、

単に espanso register ではなく、service 以下のサブコマンドとして実行する必要があります。以下の手順でサービス登録→起動してください。

  • 役割:LaunchAgent(macOS のユーザーサービス)に espanso を登録し、ログイン時に自動起動する設定を行います。

espanso service register

やった!

2. サービスを起動

  • 役割:登録済みの espanso サービスを立ち上げます。以降、バックグラウンドで常駐し、タイプしたトリガーを監視します。

espanso service start

3. 動作確認

  • 出力例Service running などが返ってくれば、正常に動作中です。

espanso status

GUIの指示に従う…※ChatGPTに嘘にまどわされないw

『menu bar』に espanso 登場!

1. トリガー設定ファイルを編集

  1. 設定ディレクトリを開きます(デフォルトでは ~/.config/espanso/

espanso edit

  1. すると default.yml(もしくは config/default.yml)がエディタで開きます。

  1. 「なう→日付+曜日+時刻」テンプレートをファイルの先頭あたりに追記します。

    1. もしすでに matches: セクションがある場合は、そのリストの中に追加してください。

    2. ファイルを保存してエディタを閉じます。

matches:
  - trigger: "なう"
    replace: "{{date}}/{{weekday}}/{{time}}"
    vars:
      - name: date
        type: date
        params:
          format: "%Y/%m/%d"
      - name: time
        type: date
        params:
          format: "%H:%M"
      - name: weekday
        type: shell
        params:
          cmd: "LANG=C date +%a"

 

2025/05/08 6:39

 

キャラクターベースのコントロール画面…なんだか20世紀仕様だなぁ…。

:いま  だめだなぁ…

あらら?

[ERROR] unable to load match group "/Users/paulkanda/Library/Application Support/espanso/match/base.yml"

Caused by:

    0: failed to parse YAML match group

    1: mapping values are not allowed in this context at line 13 column 27

    2: mapping values are not allowed in this context at line 13 column 27

YAML の構文エラーは、おそらく以下のように余分な文字列や重複した matches: セクションが混入しているためです:

…          
      - name: weekdmatches:           ← これは不要/誤記
…
# espanso match file
# (以下、デフォルトのコメント付きサンプルがそのまま残っている)
matches:
  - trigger: ":espanso"
    …

 

ほんとかなぁ…

以下の内容をそのまま ~/Library/Application Support/espanso/match/base.yml(または ~/.config/espanso/match/base.yml)に上書きしてください。

何度もだまされてるGWでしたから…。

 

# espanso base match file
# あなたの独自トリガーはこのファイルにまとめます。

matches:
  - trigger: "なう"
    replace: "{{date}}/{{weekday}}/{{time}}"
    vars:
      - name: date
        type: date
        params:
          format: "%Y/%m/%d"
      - name: time
        type: date
        params:
          format: "%H:%M"
      - name: weekday
        type: shell
        params:
          cmd: "LANG=C date +%a"

  - trigger: "なう"
    replace: "{{date}}/{{weekday}}/{{time}}"
    vars:
      - name: date
        type: date
        params:
          format: "%Y/%m/%d"
      - name: time
        type: date
        params:
          format: "%H:%M"
      - name: weekday
        type: shell
        params:
          cmd: "LANG=C date +%a"

 

2025/05/08 6:49

お! 『なう』と打つだけで、『2025/05/08  6:59』

おしい!曜日がないぞ

2025/05/08  7:02
2025/05/08  7:12

■曜日を確実に含めるには、複数の vars を組み合わせるよりも、日付と曜日と時刻をまとめて出力するフォーマットを使うのが最も確実です。Espanso の date タイプでは、format%a(英3文字曜日)を指定できます。

『なう』だと、既存の変換と当たるので、『ようび』へと変えた。

めちゃくちゃシンプル 最初から提案すればよいのに。

matches:
  - trigger: "ようび"
    replace: "{{datetime}}"
    vars:
      - name: datetime
        type: date
        params:
          format: "%Y/%m/%d/%a/%H:%M"

ポイントは:

  • datetime という変数一つにまとめる

  • format: “%Y/%m/%d/%a/%H:%M”

    • %Y → 西暦4桁

    • %m → 2桁の月

    • %d → 2桁の日

    • %a → 英3文字曜日(例: WED

    • %H:%M → 時:分(24時間表記)

 

base.yaml のロケーション

/Users/paulkanda/Library/Application Support/espanso

 

ようび トリガーで「YYYY/MM/DD/英3文字曜日/HH:MM」を一発出力する最もシンプルで確実な方法は、Espanso の date 型だけを使うことです。以下のように base.yml を書き換えてみてください。

解説

  • trigger: “ようび”

    → 入力トリガーは ようび(→ スペース or Enter で展開)。

  • replace: “{{datetime}}”

    → 変数 datetime 一つで置き換え。

  • vars:

    • name: datetime

    • type: date

      → Espanso組み込みの日付生成機能を使う。

    • params:

      • format: “%Y/%m/%d/%a/%H:%M”

        • %Y→西暦4桁

        • %m→2桁月

        • %d→2桁日

        • %a→英語3文字曜日(WED など)

        • %H→2桁時

        • %M→2桁分

matches:
  - trigger: "ようび"
    replace: "{{datetime}}"
    vars:
      - name: datetime
        type: date
        params:
          format: "%Y/%m/%d/%a/%H:%M"

 

2025/05/08/木/07:31

2025/05/08/木/07:32

2025/05/08/木/07:32

2025/05/08/木/07:35

acOS の date コマンドは、曜日の言語を制御するのに LC_TIME を参照します。先ほどの LC_ALL=C だけでは、ロケールが完全に切り替わらないケースがありますので、以下のように LC_TIME=C を使ってみてください。

matches:
  - trigger: ":D"
    replace: "{{datetime}}"
    vars:
      - name: datetime
        type: date
        params:
          # LC_TIME=C で曜日を英語略称に固定
          cmd: "LC_TIME=C /bin/date +\"%Y/%m/%d/%a/%H:%M\""

 

Thu, 08 May 2025 07:38:04 +0900

Thu, 08 May 2025 07:42:32 +0900

matches:
  - trigger: ":D"
    replace: "{{datetime}}"
    vars:
      - name: datetime
        type: shell
        params:
          cmd: >
            LC_TIME=C date -j -f "%a, %d %b %Y %H:%M:%S %z" "$(date -R)" \
            +"%Y/%m/%d/%a/%H:%M" | tr '[:lower:]' '[:upper:]'

 

: D にしてやっとうまくいった!」

2025/05/08/THU/07:46

# ~/.config/espanso/match/base.yml
matches:
  - trigger: ":D"
    replace: "{{datetime}}"
    vars:
      - name: datetime
        type: shell
        params:
          cmd: 'LC_TIME=C /bin/date +"%Y/%m/%d/%a/%H:%M" | tr "[:lower:]" "[:upper:]"'

 

2025/05/08/THU/07:48

2025/05/08/THU/07:48

これでやっと思い通りにタイムスタンプが打てる!