Make_hybrid.app – 更新その2

更新内容

  • 前のバージョンではディスクイメージファイル(iso形式)作成中の待機画面を、‘Gooey Gadgets.App’ version 0.3.9を使用することで、プログレスバー表示させていましたが、macOS 10.12 Sierraから起動できなくなってしまっていたところを、自作のプログレスバー表示アプリケーションで置き換え、ついでにScriptの一部をメンテナンスアップデートしました。
  • ファイルシステム(形式)をHFS Plus/ISO 9660ハイブリッドフォーマットからUDFに変更しました。
  • アイコンの変更
    アイコンを変更しました。

 

機能について

Make_hybrid.appは、AppleScriptで書かれたアプリケーションです。
任意の場所にあるファイル/フォルダからディスクイメージファイル(UDF形式)を作成します。
dmg形式のディスクイメージファイル作成ツールは機能豊富なものがいくつもありますが、ファイルシステムがハイブリッドフォーマットの.iso形式のものを簡単に作成するツールが見当たらなかったので作成しました。その際に、処理対象のフォルダ内の「.DS*」「._*」ファイルが削除可能であれば、自動的に削除します。

使い方

  • ダブルクリックでは機能しません。
  • ドラッグ&ドロップでの使用
    アプリケーションMake_hybrid.appのアイコンに、対象となるファイル/フォルダをドロップしてください。
  • スクリプトメニューから実行する
    ユーザースクリプトフォルダ(~/Library/Scripts/)内にMake_hybrid.appを入れておけば、メニューバー右側のスクリプトメニュー(メニューエクストラ)から実行できます。ファインダ上で対象ファイル/フォルダを選択した状態で、スクリプトメニューからMake_hybrid.appを実行してください。

オプション

同時に複数のファイルフォルダを選択して処理を実行させることができます。

ダウンロード

http://amstudio.sytes.net/amweb/Make_hybrid_w_progress.iso.zip
※Make_hybrid.appの著作権は放棄いたしませんが、対価は不要です。自己責任で、自由にお使いください。
インターネット上のリンクは、作者への事前/事後の承諾は不要ですので、自由にリンクして下さい。
基本的に、再配布・転載は認めません。

保証

動作に関する保証はいたしません。また、使用によって生じたと思われるいかなる損害に対しても、作者は一切責任を負い ません。使用は御自身の責任において行なってください。

余談

「.iso」ファイルをWindowsユーザに渡しても、マウントするためには別途にアプリケーションを用意するしかなく、マルチフォーマット対応とはいえディスクに焼くためのフォーマットくらいにしか使えないとよく言われていたのですが、Windows 8からはExplorerでそのままマウントできるようです。
日本語のファイル/フォルダ名も文字化けせずそのまま通りますし、アーカーバの一形式として認知されてもいいような気がしますが、長年の習慣からそれも難しいのかもとも思ってしまいます。
うっかりMacでそのまま工夫なくZIP圧縮してしまって、文字化けのクレームを受けるということもまだまだ続くようですし、もう少しなんとかならないものかと思います。

Gooey Gadgets.appなき今 – AppleScriptでプログレスバーもどきを作ってみる

macOS Sierraとなってから(だった思います)‘Gooey Gadgets.app’が起動できなくなってしまったので、AppleScriptからプログレスバーを簡単に表示できる手段を失ってしまった格好です。

‘Gooey Gadgets.app’を使っていた際の手順は以下のような行程でした。

  • Script内でメインの処理プロセスをコールする直前に外部プロセスとしてプログレスバーを呼び出す
  • Script内の処理が終わった段階でプログレスバー表示を終了させる
  • 後処理としてScriptの終了処理をする

調べてみると‘cocoaDialog.app’というアプリケーションがあるようです(ザリガニが見ていた…さんのページを参考にしました)。
が、使ってみると、スクリプト内から‘do shell script…’で“ –indeterminate”モードでコールすると、Script内のプロセスとして‘cocoaDialog’が組み込まれてしまうので、Scriptの次のステップに移れなくなってしまい、私の技量レベルでは使えそうにありません。
(別プロセスとして‘cocoaDialog.app’を起動するためのアプリケーションを用意するという手がありそうですが、あまり気乗りのする手段ではなさそうです。)

こうなれば自作してみる – AppleScript

私が欲しいものは、進捗状況を反映したものではなく、単に“処理中です…”などのテキストを表示してくれればいいだけのものです。まさに‘Gooey Gadgets.app’のようなシンプルなアプリケーションであればいいのです。
プログレスバーに進捗状況を反映させるだけの技量はないので、プログレスバーもどきとしてScriptの処理中に画面に“処理中…”などと表示させればいいので、AppleScriptの‘progress’を使ってアプリケーションを仕立ててみることにしました。
Script自体はいたって簡単です。

set progress total steps to 100 -- ここから
repeat with i from 1 to 100
	set progress completed steps to i
	delay 0.2
end repeat -- ここまでは、まさにダミーで、なんら進捗状況を反映しているわけではありません。
set progress description to "処理中です。
しばらくお待ちください..."
with timeout of 7200 seconds -- まあ2時間もあればいいかと...
	set progress total steps to -1
	delay 7200
end timeout

必ず、アプリケーション形式で保存します。今回は、そのまま‘Dialog.app’という名前で、アプリケーションフォルダ内へ保存しました。
固定表示の時間設定は、使い勝手に合わせて適当に書き換えればいいでしょうが、中途半端に短いとScriptの処理の途中で画面表示が終わってしまいます。

Script内で呼び出す時は、

‘do shell script “/Applications/Dialog.app/Contents/MacOS/applet”’

あるいは

‘do shell script “open /Applications/Dialog.app”’

で呼び出せばいいでしょう(アプリケーションフォルダ内を前提にしています)。(直接実行ファイルを叩くと、外部アプリケーションとして扱えないようで、appletの処理待ちになってしまいますので、‘do shell script “open /Applications/Dialog.app”’という起動の仕方を使ってください — 2017.06.23)
‘Dialog.app’を終了させてダイアログを消す時は、‘do shell script “killall applet”’を使った方が間違いがないようです。‘tell application “Dialog” to quit’でやると、何度か空振りしてしまいました。
‘do shell script “killall applet”’を使う時には、同時に複数のAppleScriptアプリケーションが起動していないように注意してください。

と、ここまで書いた後に、実行ファイル、”/Applications/Dialog.app/Contents/MacOS/applet”の名称を‘applet’から‘Dialog’にリネームしてみました。動きました。
となると、
Script内で呼び出す時は、

‘do shell script “/Applications/Dialog.app/Contents/MacOS/Dialog”’

でOKで、終了は、

‘do shell script “killall Dialog”’

でいけることになります。

補足と修正 – 17.06.21

実行ファイル、”/Applications/Dialog.app/Contents/MacOS/applet”の名称を‘applet’から‘Dialog’にリネーム後に、‘Info.plist’の中も書き換えていたことを書き忘れていたのですが、その後、再現してみると‘Info.plist’を書き換えると、アプリケーションの起動時に初期画面が出てしまうことがわかりました。現時点で、リネームしてそのまま起動させる方法が分からなくなってしまったのでリネームなしで使った方がいいようです。m(._.)m

ダウンロード

アプリケーションを下記アドレスからダウンロード可能としました。
http://amstudio.sytes.net/amweb/Dialog.iso.zip

(このアプリケーションは、”Dialog.app/Contents/MacOS/applet”の名前を変更していません。環境に合わせて、必要であればリネームしてください)

※アプリケーションの著作権は放棄いたしませんが、対価は不要です。自己責任で、自由にお使いください。
インターネット上のリンクは、作者への事前/事後の承諾は不要ですので、自由にリンクして下さい。
基本的に、再配布・転載は認めません。

保証

動作に関する保証はいたしません。また、使用によって生じたと思われるいかなる損害に対しても、作者は一切責任を負いません。使用は御自身の責任において行なってください。

CotEditorの文字種変換などやってみる

CotEditor知人から強く勧められたので、CotEditorを試用してみることにしました。

CotEditorのホームページからおもな特長を拾ってみると、次のように記載されています。

 

 

主な機能

・シンタックスハイライト
HTMLやPHP, Python, Ruby, Markdownなど、40以上のメジャーな言語にあらかじめ対応。自分で新たな定義を作成することもできます。

・瞬時に起動
あっという間に立ち上がるので、思い立ったそのときにすぐに書き始めることができます。

・パワフルな検索と置換
定評のあるOniGmo正規表現エンジンによる強力な検索/置換パネルを備えています。

・クリックで設定
マニアックな知識を必要とする複雑な設定ファイルはありません。テーマやシンタックス定義も含め、設定はすべて一般的な環境設定ウインドウから行えます。

・自動バックアップ
CotEditorが編集を逐次自動でバックアップするので、もう強制終了で未保存分の編集を失う心配は無用です。

・アウトラインメニュー
書類から定められたルールに適合した行を抽出しメニューとして表示します。メニューを選択すれば、該当箇所に移動します。

・文字情報表示
選択された文字のUnicode文字情報をポップオーバーで簡単に表示できます。

・エディタの分割
エディタを分割し、文書の異なる部分を一度に表示できます。

・スクリプト
AppleScriptにPython, Ruby, Perl, PHP, UNIX shell、あなたの好きな言語でマクロを書くことができます (YosemiteならJavaScriptでも!)。

・非互換文字の検出
エンコーディングを変換する際には変換できない文字をリストアップします。

“あっという間に立ち上がる”というのは魅力です。

起動してみると、豊富な「シンタックススタイル」によるカラーリング機能、入力補完機能、正規表現が使える検索置換機能など、コードエディタとしての面を見ると評価が高いことが納得できます。
一方、通常のテキストエディタとして使う場合はどうでしょうか?

気になる文字種変換

DTP屋としては、文字種変換が一番きになるところで、組込みの機能は「テキストメニュー」→「変換」にありました。

mojishu

“全角半角変換”機能について試してみました。

aAbBcCDdEeFfGghHIiJjkKlLmMnNOopPqQRrSsTtuUvVWwXxYyzZ。,.:;?!`^_/〜'()[]{}+−=<>$%#&*@0123456789 —

aAbBcCDdEeFfGghHIiJjkKlLmMnNOopPqQRrSsTtuUvVWwXxYyzZ。,.:;?!`^_/〜’“”()[]{}+−=$%#&*@0123456789

上の全角キャラクタを変換したところ、下のようになります。
つまり、“全角半角変換”では、英数だけでなくパーレン他の記号も変換されてしまいます。
DTP屋としては、英字、数字、パーレン類、句読点、記号などは別種として扱いたいところです。
そこで、幾つかスクリプトを書くことにしました。
数字の“全角半角変換”では、

set Zenkaku to "0123456789"
set Hankaku to "0123456789"

tell application "CotEditor"
	if not (exists front document) then return
	tell front document
		set {loc, len} to range of selection
		if (len = 0) then 
			display dialog "文字列を選択してから実行しましょう。" buttons {"OK"} default button "OK" with icon note giving up after 1
			return
		else if (len > 0) then
			set preString to contents of selection
			display dialog "全角<->半角変換できます。" buttons {"キャンセル", "半角", "全角"} default button 2 with icon note returning {button returned:theVarb}
			if theVarb = "全角" then
				set a to my Sed_y(preString, Hankaku, Zenkaku)
				set contents of selection to a
			else if theVarb = "半角" then
				set a to my Sed_y(preString, Zenkaku, Hankaku)
				set contents of selection to a
			end if
		end if
	end tell
end tell

to Sed_y(TheString, SString1, SString2)
	do shell script "export LANG=ja_JP.UTF-8; " & "echo " & quoted form of TheString & " | sed -e 'y/" & SString1 & "/" & SString2 & "/'"
end Sed_y

大文字小文字変換は、

tell application "CotEditor"
	if not (exists front document) then return
	
	tell front document
		set {loc, len} to range of selection
		if (len = 0) then 
			display dialog "文字列を選択してから実行しましょう。" buttons {"OK"} default button "OK" with icon note giving up after 1
			return
		else if (len > 0) then
			display dialog "小文字 <-> 大文字変換できます。" buttons {"ワードキャップ", "小文字", "大文字"} default button 2 with icon note returning {button returned:theVarb}
			if theVarb = "ワードキャップ" then
				tell selection to change case to capitalized
			else if theVarb = "小文字" then
				tell selection to change case to lower
			else if theVarb = "大文字" then
				tell selection to change case to upper
			end if
		end if
	end tell
end tell

その他、“半角カナ”“全角カナ”変換は、アーカイブページの中にサンプルスクリプトが用意されていて、その中にphpのスクリプトがあります。

‘SampleScripts-master/ShellScript/Extras/J-Text-Utility/Full-width Katakana to half-width.php’
‘SampleScripts-master/ShellScript/Extras/J-Text-Utility/Half-width Katakana to full-width.php’

余計なテスト

もっとも単純なバイナリーplistファイルのサンプルとして、‘.webloc’ファイルをCotEditor、Mi、BBEditで開いた場合の表示が次の図です。CotEditor、Miでは扱いが同じで、xml形式の‘plist’ファイルとして扱えるのはBBEditのアドバンテージでしょうか。
因みに、ドキュメントウィンドウ内に‘.webloc’ファイルをドロップすると、CotEditor、Mi、BBEdit共にURLが挿入されます。

plist

TextWrangler.app / BBEdit.appで日本語の文字種変換をやってみる

長い間TextWrangler.appを使い続けていて、機能面で不足を感じていた訳ではないのですが、つい出来心(?)でBBEdit.appにアップデートしてしまいました(次のメジャーアップデートの際に、有料でアップデートするかどうか悩ましいところです…)。
有難いことに、スクリプトは(ほぼ?)完全互換のようで、TextWranglerr.app用に書いたものは全てBBEdit.appで動作します。逆も然り。
AppleScriptではScript内の‘Tell application …’以下の名称をTextWranglerからBBEditに変更するだけです。

現在、mi.appでやれることはほぼBBEdit.appでもやれるようにしていますが、日本語の文字種変換だけ手付かずのままでした。

BB

日本語の文字種変換は、対応していないアプリケーションでも「サービス」に対応していれば、‘CharConvX.app’<http://www5.wind.ne.jp/miko/>を使えば実現できてしまうので、それはそれでいいかな、と放置していたわけです。

で、結局‘sed’を使ってみることにしました。

set vString1 to "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッー・「」。、゚゙"
set vString2 to "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッー・「」。、゜゛"

tell application "BBEdit" --BBEditをTextWranglerに置き換えればTextWrangler.appで動作します
	activate
	if (selection of text window 1 as string) is not "" then
		replace "ヴ" using "ヴ" searching in selection of project window 1
		replace "ガ" using "ガ" searching in selection of project window 1
		replace "ギ" using "ギ" searching in selection of project window 1
		replace "グ" using "グ" searching in selection of project window 1
		replace "ゲ" using "ゲ" searching in selection of project window 1
		replace "ゴ" using "ゴ" searching in selection of project window 1
		replace "ザ" using "ザ" searching in selection of project window 1
		replace "ジ" using "ジ" searching in selection of project window 1
		replace "ズ" using "ズ" searching in selection of project window 1
		replace "ゼ" using "ゼ" searching in selection of project window 1
		replace "ゾ" using "ゾ" searching in selection of project window 1
		replace "ダ" using "ダ" searching in selection of project window 1
		replace "ヂ" using "ヂ" searching in selection of project window 1
		replace "ヅ" using "ヅ" searching in selection of project window 1
		replace "デ" using "デ" searching in selection of project window 1
		replace "ド" using "ド" searching in selection of project window 1
		replace "バ" using "バ" searching in selection of project window 1
		replace "ビ" using "ビ" searching in selection of project window 1
		replace "ブ" using "ブ" searching in selection of project window 1
		replace "ベ" using "ベ" searching in selection of project window 1
		replace "ボ" using "ボ" searching in selection of project window 1
		replace "パ" using "パ" searching in selection of project window 1
		replace "ピ" using "ピ" searching in selection of project window 1
		replace "プ" using "プ" searching in selection of project window 1
		replace "ペ" using "ペ" searching in selection of project window 1
		replace "ポ" using "ポ" searching in selection of project window 1
		set PreString to (selection of text window 1 as string)
		set the clipboard to my Sed_y(PreString, vString1, vString2)
		delay 0.1
		paste
	else
		display notification "文字列を選択してから実行しましょう。" with title "Notification" subtitle ""
	end if
end tell

to Sed_y(TheString, SString1, SString2)
	do shell script "export LANG=ja_JP.UTF-8; " & "echo " & quoted form of TheString & " | sed -e 'y/" & SString1 & "/" & SString2 & "/'"
end Sed_y

半角カタカナの濁音・半濁音については、半角カタカナが2文字に換算されるので‘sed’のルーチン枠内では変換できないので、無骨に1文字ずつ置換をしています。逆方向の変換は変数を逆にすればOKです。
このやり方をベースにすれば、全角英数字⇄半角英数字の変換も容易です。

テンキーのないMacbook ProでInDesignのテキストスタイルのショートカットを登録してみる

面白いことに、InDesignでは、テンキーの数字キーは[文字スタイル][段落スタイル]に割り当てるショートカット用として予約されています。
そのため、通常のショートカットでは使用できません。
逆に言えば、[文字スタイル][段落スタイル]のショートカットには、テンキー+command、option、shiftキーの組み合わせしか登録できないようで、テンキーのないマシンでは困ったことになります。

ScreenShot 2015-04-13 at 12.53.52

追加でテンキーを導入するというのも作業スペースの関係で採用したくないので、なんとか方法はないものかと思ってはいたのですが、漸く少し時間が空いたので、AppleScriptとKeyboard Maestro 4でやってみました。
(Keyboard Maestro 4のTypeアクションだけでやれると思っていたのですが、commandとoptionキーの同時押し下げの方法が分かりませんでした…)

取り敢えず、「command+shift+数字」と「command+option+数字」のパターンを設定してみました。

1KM

・InDesignがフロントアプリケーションの時だけ動作するように、最初にマクログループを作って、そのグループフォルダ内にAppleScriptを実行するアクションを設定してます。
・テンキーの数字に対応するキーコードは、このページを参照してください。

「command+shift+数字」パターンでは、スクリプト内ではshiftを設定していないのですが、Keyboard Maestro 4のホットキーの「shift」を拾っているのかもしれません。

■補遺

サンプルとしての上の図のKeyboard Maestro 4のホットキー設定は、InDesignの既定のショートカットとのコンフリクトを一切考慮していません。あくまで、テンキーのkey codeを使えば、[文字スタイル][段落スタイル]にショートカットをテンキーのないマシンでも設定できることを試したものです。

もし、既定のショートカットとのコンフリクトがある場合は、ホットキー設定を変えるか、InDesign側の既定値を書き換えるなどで対処してください。

2ディスプレー環境でそれぞれのデスクトップピクチャを切り替えるAutomatorワークフロー

セカンドディスプレー側のデスクトップピクチャの取得方法が中々つかめないまま放置していたのですが、重い腰(?)を上げて調べてみました。
「デスクトップピクチャ 2ディスプレイ mac」などのキーワードで検索したのですが、Automator、AppleScript関連の情報があまり出てこないなと彷徨ったところ、ここを見つけました。

メインディスプレーのピクチャをランダムに変更するAutomatorワークフローについてはこちらで記しましたが、もう一つのディスプレーのピクチャをどうやればいいのか…というのが、これでなんとかなりそうです。(System Events.appとはねえ…)

1

Automatorワークフローは図のAppleScriptの部分を書き換えることにします。画像ファイルの取得とフィルタリングはそのままです。
AppleScriptの部分は次の通りです。

on run {input, parameters}
	tell application "System Events"
		set DispNamae to name of every desktop as list
		set DispNamae1 to (item 1 of DispNamae as string)
		set DispNamae2 to (item 2 of DispNamae as string)
		display dialog "どちらのデスクトップのピクチャを変更しますか?" & return & "=-=-=-=-=-=-=-=-" & DispNamae1 & return & DispNamae2 & return & "=-=-=-=-=-=-=-=-" buttons {"Cancel", DispNamae1, DispNamae2} default button 2 with icon note returning {button returned:theVarb}
		if theVarb is DispNamae1 then
			tell (every desktop whose display name is DispNamae1)
				set previousItem to picture
				set targetItem to (some item in input) as alias
				if targetItem is previousItem then
					set targetItem to (some item in input) as alias
				end if
				try
					set picture to targetItem
				end try
			end tell
		else if theVarb is DispNamae2 then
			tell (every desktop whose display name is DispNamae2)
				set previousItem to picture
				set targetItem to (some item in input) as alias
				if targetItem is previousItem then
					set targetItem to (some item in input) as alias
				end if
				try
					set picture to targetItem
				end try
			end tell
		end if
	end tell
end run

2

ディスプレーの名前を入力するのも面倒なので、先ず名前を取得して、ダイアログボタンでどちらを変更するか選択するようにしています。

Yosemiteで「l」キーでら行を入力できるようにするためのスクリプトのアプリケーション化−‘set_kotoeri_mode.app’

昨年のYosemiteでのJapaneseInputMethopのら行入力の方法の変更についてのエントリで、シェルスクリプトだけではターミナルに不慣れな方には少し辛いかなと思って、アップルスクリプトのコードも追記で載せていましたが、思いの外アクセスが継続して多いのと、アップルスクリプトでも自身でコンパイルする際にエラーで失敗をするケースがあるようです。
アップルスクリプト自体が、存在感を薄めているというか、なんというか…な情勢ですから、不慣れな方が多いのも仕方が無いことなのかもしれません。
そう長く無い時点でアップルスクリプトは消えてゆく可能性が高いようですし…

そこで、少し時間が取れたので、スクリプト自体を少し見直して再掲載することにし、また、アプリケーション化したファイルをダウンロード出来るようにしておきます。

property UserName : ""
property UserPasswd : ""

on run
	my checkPass_Name()
	my SetMode()
end run

on checkPass_Name()
	tell application "System Events" to set UserName to name of current user
	if UserName is "" then
		activate
		display dialog "ログインユーザ名を入力してください。" buttons {"キャンセル", "設定"} default answer "" default button 2 with icon caution returning {text returned:theVart, button returned:theVarb}
		if theVart is not "" then
			set UserName to theVart
		else
			return
		end if
	end if
	if UserPasswd is "" then
		activate
		display dialog "ログインパスワードを入力してください。" buttons {"キャンセル", "設定"} default answer "" default button 2 with icon caution with hidden answer returning {text returned:theVart, button returned:theVarb}
		if theVart is not "" then
			set UserPasswd to theVart
		end if
	end if
end checkPass_Name

on SetMode()
	try
		do shell script "sudo /bin/test -f /System/Library/Input\\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Default_org.txt || mv -f /System/Library/Input\\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Default.txt /System/Library/Input\\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Default_org.txt" user name UserName password UserPasswd with administrator privileges
		do shell script "sudo cp -f /System/Library/Input\\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Kotoeri.txt /System/Library/Input\\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Default.txt" user name UserName password UserPasswd with administrator privileges
		do shell script "sudo killall -HUP JapaneseIM" user name UserName password UserPasswd with administrator privileges
		tell me to activate
		beep 3
		display dialog "kotoeriモードに設定されました。" buttons {"OK"} default button 1 with icon note giving up after 3

	end try
end SetMode

■ダウンロード
http://amstudio.sytes.net/amweb/set_kotoeri_mode.iso.zip
※set_kotoeri_mode.appの著作権は放棄いたしませんが、対価は不要です。自己責任で、自由にお使いください。
set_kotoeri_mode.appの使用に関して、作者はいかなる責任も負いません。
インターネット上のリンクは、作者への事前/事後の承諾は不要ですので、自由にリンクして下さい。
基本的に、再配布・転載は認めません。

■保証
動作に関する保証はいたしません。また、使用によって生じたと思われるいかなる損害に対しても、作者は一切責任を負い ません。使用は御自身の責任において行なってください。

Microsoft Office FontCacheToolを起動させないためのスクリプト

先の“Microsoft Office FontCacheToolを起動させないためのAutomatorアプリケーション”というエントリでAutomatorアプリケーションを紹介しましたが、追補で書いたようにアクセス権の制限で正常動作していませんでした。
で、訂正情報なのですが、ターミナルで

sudo /bin/test -f /Applications/Microsoft\ Office\ 2011/Office/MicrosoftComponentPlugin\.framework/Versions/14/Resources/FontCacheTool | mv -f /Applications/Microsoft\ Office\ 2011/Office/MicrosoftComponentPlugin\.framework/Versions/14/Resources/FontCacheTool /Applications/Microsoft\ Office\ 2011/Office/MicrosoftComponentPlugin\.framework/Versions/14/Resources/FontCacheTool_org

とやっても、10.9 Mavericks以降、アクセス制限がかかってしまうようでパーミッションエラーが出ます
そこで、AppleScriptで実行するようにすると何故か動作してしまうので、下記にそのスクリプトを記します。

try
	do shell script "sudo /bin/test -f /Applications/Microsoft\\ Office\\ 2011/Office/MicrosoftComponentPlugin\\.framework/Versions/14/Resources/FontCacheTool | mv -f /Applications/Microsoft\\ Office\\ 2011/Office/MicrosoftComponentPlugin\\.framework/Versions/14/Resources/FontCacheTool /Applications/Microsoft\\ Office\\ 2011/Office/MicrosoftComponentPlugin\\.framework/Versions/14/Resources/FontCacheTool_org" user name YourName password YourPassword with administrator privileges
on error
	display dialog "FontCacheToolは既に処理されているようです。" buttons {"OK"} default button 1 with icon 1 giving up after 10
end try

“YourName”と“YourPassword”は環境に合わせて書き換えてください。

▪️スクリプトファイルのダウンロードリンク
http://amstudio.sytes.net/amweb/Remove_FontCacheTool.iso.zip
http://homepage3.nifty.com/amstudio/amweb/Remove_FontCacheTool.iso.zip
※スクリプトの著作権は放棄いたしませんが、対価は不要です。自己責任で、自由にお使いください。
インターネット上のリンクは、作者への事前/事後の承諾は不要ですので、自由にリンクして下さい。
基本的に、再配布・転載は認めません。

■保証
動作に関する保証はいたしません。また、使用によって生じたと思われるいかなる損害に対しても、作者は一切責任を負い ません。使用は御自身の責任において行なってください。

OS X 10.10 Yosemiteで「ことえり」は消えた? ラ行を「l」キーでも入力できるようにする

つい、迂闊にもYosemiteに上げてしまったのですが、困惑したのは、アイコンやフォント/インターフェース周りやメモリ関連、通知センター、iCoudなどなどではなく、日本語入力の方でした。
なんと、ラ行が「l」キーで入力出来なくなっていて、ユーザ辞書も飛んでいました。

▪️ユーザ辞書のコピー
ユーザ辞書は、10.9 Mavericksから引っ張って来ることにしました。
10.9 Mavericksの「システム環境設定」の“キーボード”の“ユーザ辞書タブ”を表示して、ユーザ辞書リストのアイテムを全選択し、マウスでドラッグアンドドロップでデスクトップなどにドロップすれば「ユーザ辞書.plist」ファイルが出来上がりますので、それを、OS X 10.10 Yosemite上で同じように「システム環境設定」の“キーボード”の“ユーザ辞書タブ”を表示して、ブランクになっているリストペインにドロップすればコピーされます。

▪️追加辞書の設定
追加辞書も消えているので、再読み込みさせます。
10.9 Mavericks上では‘~/Library/Dictionaries/’の中にあったユーザ辞書ファイルを、OS X 10.10 Yosemite上で「システム環境設定」の“キーボード”の“入力ソース”タブの右側のペインの下の方に“追加辞書”の項目があるので、この欄内にそれぞれの追加辞書ファイルをドロップします。追加辞書ファイルは、それぞれ、‘~/Library/Dictionaries/JapaneseInputMethod/’フォルダ内に「.dictionarydata」という拡張子を持ったファイルとしてコピーされるはずです。

▪️ラ行を「l」キーでも入力できるようにする
OS X 10.10 Yosemiteでは、“日本語入力エンジン「ことえり」を終了し、新しい「日本語IM」を新採用”<http://www.macotakara.jp/blog/mac_os_x/entry-24770.html>ということのようです。
ことえりのはるか以前から、ラ行を「l」キーでも入力するという習慣がついてしまっているので、今更変更が効きづらいというか変えたくないので、なんとかしたいものです。
色々と探してみると、‘/System/Library/Input Methods/’以下に、‘JapaneseIM.app’というものがあり、そのバンドルパッケージ内に設定ファイルがありました。
‘JapaneseIM.app’は、‘/System/Library/Input Methods/JapaneseIM.app/Contents/Resources’にある ‘RomajiRule_Default.txt’を設定ファイルとして読み込んでいるようです。

ScreenShot 2014-11-02 5.38.16

‘RomajiRule_Default.txt’をTextWranglerで読み込んでみると、確かに「la li lu le lo」は「ぁぃぅぇぉ」となるように設定されています。
この‘RomajiRule_Default.txt’を書き換えるのも一つの方法ですが、図を見るとわかるように同じディレクトリに‘RomajiRule_Kotoeri.txt’というファイルもあるので開いてみると、従来のことえりの設定がそのまま記述されていました。そこで、‘RomajiRule_Default.txt’に手を加えるのではなく、‘RomajiRule_Kotoeri.txt’->‘RomajiRule_Default.txt’へ複製してしまうことで対処することにしました。
ターミナルからでは、

$ sudo mv -f /System/Library/Input\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Default.txt /System/Library/Input\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Default_org.txt; cp -f /System/Library/Input\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Kotoeri.txt /System/Library/Input\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Default.txt

ということになります。
しかし、ここで残念なことには、10.9 Mavericksからシステムドメイン側のファイルをターミナルから‘sudo’で上書きしようとすると、権限がないという警告が出て上書きできないということが起きます。
詳しくは、ここ<http://wp.me/p1Cs3W-6R>で書きましたので参考にしてください。
何故か、同じことをスクリプトエディタ上でAppleScriptから”do shell script …”で実行すると通ってしまうので、AppleScriptの方も記しておきます。

do shell script “sudo mv -f /System/Library/Input\\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Default.txt /System/Library/Input\\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Default_org.txt; cp -f /System/Library/Input\\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Kotoeri.txt /System/Library/Input\\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Default.txt” user name “YourUserName” password “YourPassword” with administrator privileges

オリジナルの‘RomajiRule_Default.txt’は、名前を変えて‘RomajiRule_Default_org.txt’として保存され、‘RomajiRule_Kotoeri.txt’の複製を‘RomajiRule_Default.txt’という名前にするというスクリプトです。

▪️Path Finder.appをroot権限で立ち上げて、そこからターミナルモジュールを使ってコマンドを実行する
拙作の“Quasi_Launcher.app”を使えば、Path Finder.appをrootユーザとして起動できます。
次の図が、そのrootユーザとして起動したPath Finder.app上で、ターミナルモジュールを使ってコマンドを実行しているところです。この場合は、当たり前ですが、‘sudo’は要りません。

PF_terminal

 

▪️追記

忘れていました。
最後に、JapaneseIM を再起動しなくてはいけません。下記のコマンドを追加してください。

$ sudo killall -HUP JapaneseIM

単純にマシンを再起動してもいいです。

▪️追記2−141103

AppleScriptでアプリケーション化するとすれば、次のように書けばいいでしょう。

property UserName : ""
property UserPasswd : ""

on run
	my checkPass_Name()
	my SetMode()
end run

on checkPass_Name()
	tell application "System Events" to set UserName to name of current user
	if UserName is "" then
		activate
		display dialog "ログインユーザ名を入力してください。" buttons {"キャンセル", "設定"} default answer "" default button 2 with icon caution returning {text returned:theVart, button returned:theVarb}
		if theVart is not "" then
			set UserName to theVart
		else
			return
		end if
	end if
	if UserPasswd is "" then
		activate
		display dialog "ログインパスワードを入力してください。" buttons {"キャンセル", "設定"} default answer "" default button 2 with icon caution with hidden answer returning {text returned:theVart, button returned:theVarb}
		if theVart is not "" then
			set UserPasswd to theVart
		end if
	end if
end checkPass_Name

on SetMode()
	try
		do shell script "sudo mv -f /System/Library/Input\\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Default.txt /System/Library/Input\\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Default_org.txt; cp -f /System/Library/Input\\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Kotoeri.txt /System/Library/Input\\ Methods/JapaneseIM.app/Contents/Resources/RomajiRule_Default.txt" user name UserName password UserPasswd with administrator privileges
		do shell script "sudo killall -HUP JapaneseIM" user name UserName password UserPasswd with administrator privileges
	end try
end SetMode

これをアプリケーション形式で保存すれば、起動するだけで設定できます。

■追記−150330

上記のスクリプトを少し見直して、コンパイル済みのアプリケーションとしたファイルをダウンロード出来るようにしました

ダウンロード→解凍→「.iso」ファイルをダブルクリックでマウントできますので、マウントボリューム中の「.app」ファイルを任意の場所にコピーしてダブルクリックで起動すれば、‘RomajiRule_Kotoeri.txt’を‘RomajiRule_Default.txt’に置き換えることができます。

InDesignでパーレンの起こしと受けのペアを一括変換

前処理としてテキストエディタで処理できれば問題はないのですが、組み込んでから半角パーレンを全角に変換しなければならないケースは結構あります。
文字種変換ではパーレン類は変換対象ではないので<http://wp.me/p1Cs3W-8L>、選択対象を一括で変換するという方法はないようです。
となると検索/置換するしかないのですが、パーレンは起こしと受けのペアとなるので面倒です。
そこで、2回が1回になるだけでも有り難いということで、スクリプトを書いてみました。

tell application "Adobe InDesign CC"
	activate
	set SelectedStrngs to the selection
	if SelectedStrngs is not {} then
		set {find grep preferences, change grep preferences} to {nothing, nothing}
		set find_replaceStrList to {{"[ ]?\\(", "("}, {"\\)[ ]?", ")"}, {"[ ]?\\[", "["}, {"\\][ ]?", "]"}}
		set case sensitive of find change text options to false
		set include footnotes of find change text options to false
		set include hidden layers of find change text options to false
		set include locked layers for find of find change text options to false
		set include locked stories for find of find change text options to false
		set include master pages of find change text options to false
		set whole word of find change text options to false
		repeat with i in find_replaceStrList
			set find what of find grep preference 1 to (item 1 of i) as string
			set change to of change grep preferences to (item 2 of i) as string
			--set FoundChar to find grep SelectedStrngs
			change grep SelectedStrngs
		end repeat
		--
		set {find grep preferences, change grep preferences} to {nothing, nothing}
		display notification "終わりました。" with title "完了"
	else
		display notification "文字列を選択してから実行しましょう。" with title "注意!"
	end if
end tell

単純にループしているだけですから、‘find_replaceStrList’リストに付け加えれば何種類でも一括変換できます。

注記)エラーがでることがありますが、同じスクリプトを繰り返し動作させるとエラーなしで処理できてしまいます。なんなんでしょうか?
今回、エラーダイアログのキャプチャーを載せたいと思って試したところ、何度やってもエラーがでないので諦めましたが、これも謎です。