Mac OS Xのターミナルで、シークレットコマンドを使ったことはありますか?
シークレットコマンドを使うと、『FaceTime』で自動受話ができるようになったりします。このようにかなりすばらしいコマンドがあるのですが、「シークレット」と言うだけあって、誰かがWebにさらしてくれない限り、知り得ないことが多いです。そこで今回は、Rob Johnsonさんのテック系ブログ「CornDog Computers」に載っていた、アプリケーションの隠れ機能を見つける秘伝の方法をご紹介しましょう。
「strings」というコマンドは、バイナリファイルからどんなテキスト(strings)でも引っ張ってこられるコマンドです。例えばターミナルを開き、以下のように入力します。
すると、ターミナルはコマンドの指示に関するテキストで溢れます。
このコマンドを使うのかなと思いきや、コマンドラインすら使わずにテキストエディタに入力するだけで、もっと簡単に、どんなファイルでもMac OSで実行できる「サービス」を作れます。
- Automatorを開き、ワークフローのテンプレートで「サービス」を選びます。
- プルダウンメニューから「ファイルまたはフォルダ」を選択。
- 検索対象のプルダウンメニューから「Finder」を選択します。
- 左カラムから「シェルスクリプトを実行」のアクションを追加。
- 入力の引き渡し方法のプルダウンメニューから「引数として」を選択。
- 「strings "$1"」と入力します。
- 左カラムから「テキストエディット書類の内容を取得」のアクションを追加。
- 保存します(筆者は「Get Strings」として保存しました)。
アプリケーションを右クリックし、コンテキストメニューで「パッケージの内容を表示」を選び、「MacOS」という名前のフォルダを開きます。すると、そのアプリで実行できるバイナリを見られます。そこで、右クリックから「Get Strings」(違う名前を付けている場合は上記で名付けたサービス)を選ぶと、新しいテキストエディット書類が開き、すべてのテキスト(strings)がそこに書かれているはずです!
好きなテキスト(strings)があれば、それをターミナルに入力してアプリを好きにいじれます。ターミナルコマンドは、次のように構造が特殊です。
例えば以下のような場合、
defaults write com.apple.FaceTime AutoAcceptInvites -bool YES or NO↓
「defaults write」+「stringsの最初のテキスト(com.apple.FaceTime)」+「strings(AutoAcceptInvites)」+「オプション(-bool YES or NO)」
オプションが真偽値(YES/NO、TURE/FALSE)でない場合は、もう少し複雑になります。例えば、「AutoAcceptInvites」のオプションは「YES/NO」だけですが、Face Timeの自動受話機能をすべての着信ではなく、追加した特定のAppleIDユーザーのみ自動受話したい場合などです。こういったケースでは、もっと複雑なコマンドを使わなければならないでしょう。もし、そのコマンドを見つけたよ! という方は、ぜひコメントで教えてください!
以上の秘伝の方法を使えば、色々なアプリを自分好みにカスタマイズできそうです。時間のある時に、ぜひともトライしてみてください。
Rob Johnson(原文/訳:的野裕子)