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. トリガー設定ファイルを編集
-
設定ディレクトリを開きます(デフォルトでは ~/.config/espanso/)
espanso edit
-
すると default.yml(もしくは config/default.yml)がエディタで開きます。
-
「なう→日付+曜日+時刻」テンプレートをファイルの先頭あたりに追記します。
-
もしすでに matches: セクションがある場合は、そのリストの中に追加してください。
-
ファイルを保存してエディタを閉じます。
-
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
これでやっと思い通りにタイムスタンプが打てる!