[MacOS] “かなキー2回押しで日本語変換”同等機能をAppleScriptで実装

[M1 Mac, Big Sur 11.6.8, Ventura 13.0]

“かなキー2回押しで日本語変換”と同等の機能をAppleScriptで実装しました。cmd + opt + zに割り当てています。ただしアルファベットの前に別種の文字があるとそれらを消してしまう仕様になっています。

このスクリプトはBig Surでは動きますが、残念ながらVenturaでは誤動作します。おそらくMontereyでもNGだと思います。

Venturaで”display dialog”コマンド(C言語におけるprintf)を使いAppleScriptの挙動をApple純正・非純正アプリにて検証してみましたが、スクリプトエディタのような純正アプリでもクリップボードへのコピーができない時がありとても不安定です。再現性がないというのは致命的です。

もはやスクリプト言語として開発環境が破綻しているようにも思えるので、AppleScriptとは距離を置くことにしました。JavaScript for Automation(JXA)についてはこれから試してみます。

それにしてもAppleScriptユーザーが率先してこのような状況を発信すべきだと思うのですが、ネットを見渡した限りほぼ皆無というのが実に不思議です。

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()

henkan()

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

on pasteString()
    tell current application
        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

on henkan()
    tell current application
        tell application "System Events"
            keystroke "a" using {command down}
            key code 104
            key code 104
        end tell
    end tell
end henkan
Automator設定
システム環境設定 – キーボード – ショートカット

[MacOS] Apple Siliconで内部音声付き画面収録

[M1 Mac, Ventura 13.0]

MacOSではデフォルトで内部音声付き画面収録ができません。

“BlackHole”という仮想オーディオドライバを導入すると内部音声も収録できるようになります。このドライバのソースコードはGitHubで公開されています。今回はビルド済みバイナリをダウンロードして導入しました(メールアドレスの登録が必要)。

MacOSのユーティリティ – Audio MIDI設定で以下のように設定します。

入力(マイクの記号)はBlackHole 2chに設定し、出力(スピーカーの記号)は複数出力装置でBlackHole 2chとMacのオーディオ装置をチェックします。左下の歯車ボタンで入力と出力を適切に設定しないとうまくできないので要注意です。

2023/3/31追記
現在のBlackHoleはビルド済バイナリのダウンロードでは$5以上の寄付が必須になっている。Homebrewからもインストール出来るが、M1 Macでは30分経過したあたりから音が割れ出して最終的には無音になる。仕方ないのでIntel Macで収録している。

[MacOS] Makefileを常にVSCodeで開く : SwiftDefaultApps

SwiftDefaultAppsでテキストエディットに関連するファイルを全てVSCodeで開くように変更しました。

Applicationsタブでテキストエディットの関連ファイルとしてチェックが入っているファイルタイプについて左隣のUniform Type Identifiers(UTI)タブでVSCodeに設定しました。

これでMakefileをダウンロードする度に右クリックメニューで関連付けを変更しなくて済みます。ちなみにMakefileのUTIはpublic.dataです。テキストエディットが起動することは今後一切ありません。

拡張子のないファイルについてはこの方法で解決できます。大げさですが長年の懸案からこれで解放されそうです。

ネットにはMakefileに関するこの種の情報が見当たりませんでした。こういう細かいところでの使いづらさに耐えきれず、皆さんLinuxへ行ってしまうのでしょうか。

私もほとほとあきれているクチですが、まだしばらくMacで粘ってみます。

[MacOS] Tokyo Cabinetの削除コマンド

インストールはしたものの私には不要だったので、以下コマンドで削除しました。下4つ以外は一括削除できます。

rm /usr/local/include/tcutil.h
rm /usr/local/include/tchdb.h
rm /usr/local/include/tcbdb.h
rm /usr/local/include/tcfdb.h
rm /usr/local/include/tctdb.h
rm /usr/local/include/tcadb.h
rm /usr/local/lib/libtokyocabinet.a
rm /usr/local/lib/libtokyocabinet.so.x.y.z
rm /usr/local/lib/libtokyocabinet.so.x
rm /usr/local/lib/libtokyocabinet.so
rm /usr/local/lib/pkgconfig/tokyocabinet.pc
rm /usr/local/bin/tcutest
rm /usr/local/bin/tcumttest
rm /usr/local/bin/tcucodec
rm /usr/local/bin/tchtest
rm /usr/local/bin/tchmttest
rm /usr/local/bin/tchmgr
rm /usr/local/bin/tcbmgr
rm /usr/local/bin/tcbtest
rm /usr/local/bin/tcbmttest
rm /usr/local/bin/tcftest
rm /usr/local/bin/tcfmttest
rm /usr/local/bin/tcfmgr
rm /usr/local/bin/tcttest
rm /usr/local/bin/tctmttest
rm /usr/local/bin/tctmgr
rm /usr/local/bin/tcatest
rm /usr/local/bin/tcamttest
rm /usr/local/bin/tcamgr
sudo rm /usr/local/libexec/tcawmgr.cgi
sudo rm -r /usr/local/share/tokyocabinet/
sudo rm -r /usr/local/man/man1/
sudo rm -r /usr/local/man/man3/

[macOS] 拡張子とアプリの関連付け

[M1 Mac, Big Sur 11.6.8]

Finderからファイルを開こうとした場合、”情報を見る”で開くアプリを選択できますが、設定してもすぐにデフォルトに戻ってしまいます。

この仕様はWindowsに比べて著しく劣っているところでもあります。

SwiftDefaultAppsを使えばデフォルトのアプリを変えることが可能です。

なぜ標準でこの機能を搭載しないのか不思議です。

[macOS] Linux USBインストールメディアの作成

備忘録として。

USBメモリのドライブパス確認

diskutil list

USBメモリをexFATで初期化(/dev/disk5の場合)

diskutil eraseDisk ExFAT NONAME /dev/disk5

USBメモリのマウント解除

diskutil unmountDisk /dev/disk5

ddコマンドでISOイメージをコピー

sudo dd if=ubuntu-22.04.1-desktop-amd64.iso of=/dev/disk5 bs=16m

[macOS] キーチェーンのパスワードを急に要求しだした

[M1 Mac, Big Sur 11.6.5]

codesignコマンド実行時に急にパスワードを要求するようになりました。

以下の方法で解決しました。

1.macOSのログインパスワードをシステム環境設定”ユーザとグループ”から設定し直す。今回はこれまでと同じパスワードを再設定しました。

2.キーチェーンアクセスを起動し、システムのキーチェーンアクセスを開く。

3.Mac Developer ID Applicationの秘密鍵を右クリックし、”情報を見る”を選択。

4.”アクセス制御”タブをクリックし、”これらのアプリケーションによるアクセスを常に許可”のところに”/usr/bin/codesign”を登録する。

これでうまくいきました。なお解決後、秘密鍵の内容を確認すると登録したはずのcodesignは消えていました。それでも問題ありません。

macOSに関する奇妙な現象は枚挙にいとまがなく、今では怒りもわかず気にならなくなりました。Appleに報告してもまず対応しないので、程よい距離感で付き合っていくことにしました。

[VSCode] PlantUMLのプレビュー表示ができない

[M1 Mac, Big Sur 11.6.5, VSCode 1.67.1]

PlantUMLのプレビュー表示のショートカットキーはoption + Dですが、偏微分記号∂が入力されてしまいます。

macOS Big Surのキーボードビューアを確認すると確かに∂がアサインされています。つまりショートカットキーの設定が不適切です。

VSCodeのキーボードショートカット設定でshift + command + Dに変更しました。

US配列だったらoption + Dで正常にプレビュー表示できるのでしょうか?このキーはWindowsでしか使えない気もします。

キーボードビューア

[VSCode] settings.jsonのファイルパス

[M1 Mac, Big Sur 11.6.5, VSCode 1.67.1]

Macの場合、settings.jsonは以下のパスに配置されています。

使い始めた頃はアプリからの呼び出し方が分からなくて苦労しました。

結構深いところにあるので、やはりアプリから呼び出す方が早いでしょう。左下の管理ギアにある”設定”を選択し、右上に出現する”ページをめくるような”マークをクリックします。

$HOME/Library/Application Support/Code/User/settings.json