51
Google マップをアドレス帳ウィジェットで使う

先週金曜日のブログでは、変更したダッシュボードウィジェットを安全に使用する方法について説明しました。 ユーザーフォルダの /Library/Widgetsフォルダにコピーを配置すると、OS Xは元の標準ウィジェットではなくコピーしたウィジェットを使用します。今週は、そのトリックを使って、アドレスブックウィジェットの修正版を作成します。

アドレス帳ウィジェットは非常に便利です。連絡先を閲覧・検索できるだけでなく、連絡先のアドレスをクリックすると、デフォルトのブラウザにその場所のMapQuestマップ(この段落の下、左側のスクリーンショット)が表示されます。MapQuestは優れたサービスですが、位置情報を示すポップアップバルーンやマウスでマップをスクロールする機能など、「新参者」のGoogleマップがサポートしている便利な機能がいくつか欠けています。アドレス帳ウィジェットでGoogleの地図サービス(下、右側の写真)が使えたら最高だと思いませんか? 正直、どちらのマップを使いたいですか?

もちろん、できますよ。そうでなければ、今日このヒントを皆さんにシェアするなんて考えられません!今日のヒントは比較的長いですが、実際にはそれほど難しくはありません。プロセスの各ステップを丁寧に説明しようとしただけです。

はじめる

まず最初に、先週のブログ記事で紹介したAppleのアドレスブックウィジェットのコピーを作成します。Finderウィンドウを2つ開きます。最初のウィンドウでは、最上位の/Library/Widgetsフォルダに移動します。2つ目のウィンドウでは、 ユーザーフォルダの /Library/Widgetsフォルダに移動します(必要であれば、ここにWidgetsフォルダを作成してください)。次に、アドレスブックウィジェットを最上位のWidgetsウィンドウからユーザーのWidgetsフォルダにドラッグします。OS Xは最上位ディレクトリを保護しているため、システムはウィジェットを移動するのではなく、自動的にコピーを作成します。これで、安全なバックアップ(元のウィジェットファイルが元の場所に保存されている)と、このヒントで使用するコピーができました。

アドレスブックウィジェットのマップサーバを置き換えるのは、設定ファイルの文字列を変更するほど簡単ではありません。これは、AppleがMapQuestのURLを含むコードをコンパイル(つまりバイナリ形式)しているためです。そして、コンパイルされたコードは、通常のテキストファイルのように簡単に編集することはできません。そのため、 16進 エディタを使用し、変更を加える際には細心の注意を払う必要があります。些細なタイプミスでも1つでもあれば、プログラムは確実に壊れてしまいます。ありがたいことに、macosxhints.comの読者が既に大変な作業を済ませてくれているので、私たちはそのようなことをする必要はありません。代わりに、ターミナル(/アプリケーション/ユーティリティ)を使ってスクリプトを作成するだけで済みます。

スクリプトの作成

自分のマシンでスクリプトを作成する最も簡単な方法は、既に記述されているソースコードをブラウザで表示することです。ブラウザの「保存」メニュー(Safariの場合は「ファイル」→「名前を付けて保存」、Firefoxの場合は「ファイル」→「ページを別名で保存」)を使って、コピーをローカルに保存します。ファイル名は「abwidgetmap.sh」にしてください。OS Xでテキストファイルに.txt拡張子がないと表示された場合は、 拡張子を付け ないでください。

ファイルの保存場所については、このプログラムをあまり使用しない可能性が高いため、おそらく問題にはならないでしょう。必要であれば、ドキュメントフォルダ内のフォルダを探してください。他のスクリプトを別の場所に保存している場合は、このスクリプトもそこに保存できます。Unixのフォルダ構造にこだわる場合は、ユーザー bin フォルダまたは に保存してください/usr/local/bin。つまり、どこに保存したかを覚えておけば、それほど重要ではありません。

これで、Mac に複雑そうな Unix コードのファイルが作成されました。このコードは何をするのでしょうか?このスクリプトは、アドレスブックのマッピングサービスを MapQuest と Google マップの間で切り替えます。ウィジェットはデフォルトで MapQuest を使用するため、最初の実行では Google マップに切り替わります。ほとんどの方にとって、このスクリプトが必要になるのは初回実行時のみです。しかし、MapQuest のマップが必要になった場合(例えば、Mac の技術ライターで、デフォルトのアドレスブック マッピングサービスのスクリーンショットが必要な場合など)、スクリプトをもう一度実行するだけで MapQuest のマップを復元できます。

では、どのように動作するのでしょうか?正直なところ、私にとっては魔法のようです。スクリプトの機能の詳細な説明は、このヒントの範囲をはるかに超えていますし、私の知識も不足しています。しかし、基本的には、このスクリプトはウィジェット内のコードのバックアップコピーを作成し、現在のウィジェットの動作設定を確認し、Unixプログラムを使用して xxd 適切な検索URL(GoogleマップまたはMapQuest)をバイナリ形式でファイルに挿入します。スクリプトを実行するたびに、地図サービスはGoogleマップとMapQuestを交互に切り替えます。

スクリプトの使用

スクリプトを使用する前に、このテキストコレクションが単なるテキストファイルではなく、実際のプログラムであることをMacに認識させる必要があります。ターミナルを開き、を使用して cd ファイルを保存したディレクトリに移動します。例えば、ユーザーのDocumentsディレクトリ内のScriptsというフォルダに保存した場合は、次のように入力します。

cd ~/Documents/Scripts

Returnキーを押すと、ターミナルはそのフォルダに移動します。そこで、次のコマンドを使ってコードを実行可能にします。

chmod a+x abwidgetmap.sh

これでスクリプトを使う準備ができました。使用するには、次のように入力してください。

./abwidgetmap.sh

スクリプトを現在いるディレクトリから実行するため、先頭 ./ に が必要です。フルパスを指定するだけで、他の場所からでも実行できます。 ~/Documents/Scripts/abwidgetmap.shこの操作を頻繁に行う場合、Unix の使用経験があれば、スクリプトをパス上のフォルダに移動するだけで済みます。

スクリプトを初めて実行すると、ターミナルに次の出力が表示されます。

AddressBook Widget replaced - now using the Google map server Run this script again to revert it back to MapQuest Don’t forget in order for the change to take effect you must re-launch the AddressBook Widget in Dashboard. Just refreshing the widget via Command-R won’t force the changes to take effect. You can also have two copies of the Address Book running - one with MapQuest the other with Google.

重要な注意

変更を有効にするには、まずアドレス帳ウィジェットを閉じる必要があります(ダッシュボードレイヤーで、Optionキーを押しながらウィジェットにマウスオーバーし、閉じるボックスをクリックします)。Command+Rで再読み込みするだけでは機能しません。前述の通り、これは実際には両方のマッピングサービスが利用可能になることを意味します。スクリプトを実行する前にアドレス帳ウィジェットを開き、スクリプトを実行した後、ダッシュボードバーからウィジェットの別のコピーを開いてください。

これで、アドレス帳ウィジェットに Google マップが簡単に表示され、標準ウィジェットをまったく変更する必要もなくなりました。