[AppleScript] 02 アルファベット入力からローマ字変換 スクリプト案

かなり時間が掛かりましたが、土台が出来上がりました。

以下のスクリプトではクリップボードのアルファベットをひらがなに変換するだけです。

操作中のアプリで文字を全選択してひらがな変換し、アプリに貼り付けるという動作はまだできません。

いつになるかわかりませんが、完成すればAutomatorに登録してショートカットを割り当てる予定です。

それにしてもAppleScriptの情報の少なさには困り果てました。ネット検索する限りでは日本語ユーザーの有識者は2人位しかいらっしゃいません。on – endが関数の設定と分かるまでは全く前に進みませんでした。

use AppleScript version "2.5" --  (10.12) or later
use framework "Foundation"
use scripting additions

property NSString : a reference to current application's NSString
property NSStringTransformLatinToHiragana : a reference to current application's NSStringTransformLatinToHiragana

selectString() -- 全選択のみ可

set latin to the clipboard

set hiragana to alphabetToHiragana(latin)

set the clipboard to hiragana

pasteString() -- 今のところ機能せず

on selectString()
    tell current application
        activate
        tell application "System Events"
            keystroke "ac" using command down
        end tell
    end tell
end selectString

on pasteString()
    tell current application
        activate
        tell application "System Events"
            keystroke "v" using command down
        end tell
    end tell
end pasteString

on alphabetToHiragana(aStr)
	set aString to NSString's stringWithString:aStr
	return (aString's stringByApplyingTransform:(NSStringTransformLatinToHiragana) |reverse|:false) as string
end alphabetToHiragana

参考サイト

[AppleScript] 01 アルファベット入力からローマ字変換

アルファベットから”かな”キー連打でローマ字変換するという機能がmacOS Monterey 12.3.1では今のところ使えません。

もうAppleの対応をあてにせず、AppleScript等でなんとかできないか探ってみます。

実装したい内容は以下の通りです。
1.カーソル直近のアルファベット文字列を自動選択する。
2.ローマ字変換でひらがなに変換する。
3.漢字変換する。
アサインするキーはこれまで通り”かな”キー連打あるいは⌘ + 1文字とします。

ネットで調べるとAppleScriptでNSStringTransformLatinToHiraganaを使っているコード例が見つかりました。

またBig Surに戻すのもアホらしいのでなんとかしたいです。

[macOS] 34 launchdによる定期実行 実施例

[macOS Big Sur 11.6.1]

launchdによるプログラムの定期実行を試してみました。

エディタやXcodeを使ってxml形式でplistファイルを作成するのですが、エディタでは非常に書きにくいです。Xcodeが多少マシかと思います。どちらにしても結局crontabの方が扱いやすいです。

plistファイルを/Library/LaunchAgentsに作成したら、chownコマンドで所有者変更、chmodコマンドで権限変更します。最後にplistファイルをロードすると定期実行が始まります。

下記コード例では60秒おきにtest.pyを実行します。

このスキルはcrontabが使えなくなった際の代替手段としてストックしておきます。htmlとxmlは極力書きたくないです。だからなのかJavaScriptとはまた疎遠になっています。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>test</string>
    <key>ProgramArguments</key>
    <array>
        <string>python</string>
        <string>test.py</string>
    </array>
    <key>StartInterval</key>
    <integer>60</integer>
    <key>StandardOutPath</key>
    <string>test.out</string>
    <key>StandardErrorPath</key>
    <string>test.err</string>
</dict>
</plist>
Xcodeでplistを表示
# plistを有効化
launchctl load test.plist

# plistを無効化
launchctl unload test.plist

[macOS] 33 launchdによる定期実行検討

[macOS Big Sur 11.6.1]

前回記事でMicrosoft AutoUpdateの定期実行を強引にできなくしましたが、そもそもどこで管理しているのか調べてみました。

今回のケースではライブラリディレクトリにあるLaunchAgentsやLaunchDaemonsでコントロールしています。crontabだけではなくこのlaunchdというサービス管理フレームワークでも自由にプログラムの定期実行を設定できるようです。

Microsoftの他にCubaseのメーカーであるSteinbergやフリーソフトKarabinerのプロパティリストファイルがありました。知らぬ間に放り込まれているので監視が必要ですね。ここに名を連ねるアプリは曲者という印象です。

ちなみにplistファイルは基本的にはXcodeで編集可能なはずですが、RunAtLoadの設定をNOにすることはできませんでした。ファイルの権限を変えても不可でした。どうやらファイルごと消去するしかないようです。

次回以降でlaunchdを使った定期実行を試してみます。

2021/11/20追記:plistファイルを編集するには権限だけでなくchownコマンドでファイルの所有者を変更する必要があります。Macにrootでログインしてコマンド実行します。

[macOS] 31 crontabの設定

[macOS Big Sur 11.6.1]

M1 Mac miniでcrontab(定時実行のスケジュール管理ツール)の設定に手間取ったのでメモ書き。Intel Mac miniの時も設定したはずですが、すっかり忘れていました。

crontabのログは/var/mail/[ユーザー名]に記録されています。

今回そこには”Operation not permitted”と記されていました。

その場合はシステム環境設定 “セキュリティとプライバシー”のフルディスクアクセスをcronに許可します。cronファイルは/usr/sbin/cronにあります。

[macOS] 30 ショートカットで今日の日付入力

macOSを使いこなしている方々からすれば目新しくないでしょうが、Automatorで日付入力(yymmdd)できるようにしました。

設定方法

1.Automatorを起動し設定する。コマンドは以下のとおり。クイックアクション名は仮に”きょう”とする。

export LC_ALL=en;
date +%y%m%d;
export LC_ALL=;

2.[システム環境設定]-[キーボード]-[ショートカット]-[サービス]から”きょう”を探し、適当なショートカットを登録する。
設定ファイルのパスは、/Users/[ユーザ名]/Library/Services/きょう.workflow

これで日付が簡単に入力できるようになりました。日付入りのファイルを量産している身としては大きな進歩です。

[macOS] 29 XtraFinderのCatalinaでの使用

昨年11月の段階ではCatalina 10.14.5以上でXtraFinderが使えなくなっていましたが、12月に修正アップデートされていたようです。

5ヶ月ほどFinderを我慢して使っていたものの、いよいよ限界がきたため近況を調べてみたら使えるようになっており再導入しました。

ただSIPの機能が一部無効になっているので、不安な方にはお勧めしません。

それにしてもデフォルトのファイラーの出来が悪いなんて考えられないです。Big Surで改善されたという話も聞かないですし、新iMacでカラバリ増やしている場合じゃないと思いますよ。

インストール方法

1.Macをリカバリーモード※で起動し、ユーティリティ-ターミナルからSystem Integrity Protection(SIP)を無効にする。
※ ⌘ + Rをリンゴマークが一旦消えるまで押し続ける

csrutil disable

2.Macを通常モードで再起動しターミナルにmountコマンドを入力する。

mount -uw /

3.Finderを以下コマンドで再起動する。

killall Finder

4.For OS 11 Big SurディレクトリのXtraFinderInjector.osaxファイルを/Library/ScriptingAdditionsにコピーする。

5.For OS 11 Big SurディレクトリのXtraFinder.appファイルをアプリケーションにコピーする。

6.Macをリカバリーモードで起動しSIPを条件付き有効にする。

csrutil enable --without fs --without debug