Appleの人たちは自社製品にこだわるべきだけれど、iCalを開発した人たちは明らかにiCalを使っていないように思えます。長年愛用してきたカレンダーアプリ、Dave WarkerのRemember?(「Remember? Not Forgotten」2003年6月30日号参照)から乗り換えようかと考えていた時に、そう思ったのです。
Remember? を捨てるのは容易ではありませんでしたが、このユーティリティはここ数年、私が期待していたほどの進歩を遂げていません。Snow LeopardでもRosettaで動作するPowerPCアプリのままで、対応年も2018年までしか選択できません(信じられないかもしれませんが、それ以降も予定を入れているイベントがあるのです)。Cocoaへの移植を手伝うと申し出たにもかかわらず、このプログラムは3年前の最後のアップデート以来、古臭いアバンダントウェアの匂いを漂わせており、代替品を探し始めました。しかし、お金を使う気は全くありませんでした(私も悪名高いケチなので)。そこで、Mac OS Xに付属のiCalを検討し始めました。
驚いたことに、iCalは多くの点で驚くほど使いやすかった。アプリケーション自体が実際に動作していなくても画面にリマインダー(アラート)を表示でき、一時的に「スヌーズ」することもできる。これはRemember?の機能の中でも特に気に入っていた機能の一つだ。また、イベントの繰り返し機能もなかなか優秀だ。インターフェースはかなりひどい。Remember?でのイベント設定は、iCalでやらなければならないぎこちないクリック操作に比べれば、驚くほどスムーズで高速だ。Remember?のコンパクトなカレンダー表示に勝るものはないだろうが、それでも我慢できるレベルだ。
しかし、この計画を根底から覆す重大な問題が一つありました。iCalがカレンダー単位に整理されきれていないのです。例えば、今日が2010年7月30日(金曜日)でiCalを起動しても、週表示でも月表示でも、8月初めに週/月の境界をまたいで重要な予定があることを知らせてくれる表示はありません。つまり、iCalは今後の予定を表示してくれないのです。自分で将来の週や月をページングして探し回らなければなりません。これは全くもって受け入れ難いことで、特に私がMacを使い始めてほぼずっと毎朝目にしている、今後40日間の予定をすべて表示するRemember?の素晴らしい表示と比べると、なおさらです。
話は逸れそうに見えたが、ふと考えた。iCalには大きな利点が一つある。それは、クエリが非常に扱いやすいことだ。しかも、iCalを起動しておく必要があるAppleScript経由だけではない。iCalの「ストア」(カレンダーデータ)自体も、iCalを起動することなくシステムから直接クエリできるのだ。つまり、理論上はRemember?がかつてやっていたように、今後のイベントを表示してくれる小さなアプリを書けるかもしれない。
しかし、この時点で、私の大きな長所の一つ、怠惰が邪魔をしました。なぜ私が仕事をしなければならないのか?きっと誰かが既にこの問題を解決してくれているはずだ。少しグーグルで検索してみると、Ali Rantakariのウェブページにたどり着きました。彼は確かにこの問題を解決し、さらにそれ以上のことをしてくれました。彼の素晴らしいコマンドラインツール、icalBuddyがまさに解決策のように見えました。
「春分の後の最初の満月の後の最初の日曜日」と言う前に、icalBuddy をダウンロードし、ReadMe ファイルを調べ、install.command をダブルクリックして、ターミナルを開き、この小さな呪文を入力しました。「icalBuddy eventsToday+40」。
このコマンドは、iCalを起動することなく、今後40日間の予定をすべてテキスト形式でリストアップしてくれる。まさに私が求めていたものだ。問題は解決。あとは毎朝ターミナルを起動してこのコマンドを入力し、ターミナルウィンドウを一日中開いたままにしておくだけ…いや、それは無理だ。毎日自動的にこのデータが表示されるようにする方法が必要だった。
Ali Rantakari の Web サイトに戻ると、彼は事実上、「icalBuddy が気に入ったら、GeekTool を使用して実行したいと思うでしょう」と述べていました。私は GeekTool について聞いたことがありませんでしたが、それがパズルの欠けているピースであることにすぐに気付きました。
Yann Bizeul氏によるGeekToolは、システム環境設定パネルとバックグラウンドアプリケーションを組み合わせたツールです。この環境設定パネルでは、デスクトップ上に長方形の領域(デフォルトではデスクトップの背景の前面、デスクトップアイコンの背面に表示される、ボーダーレスウィンドウ)を設定し、シェルコマンドの出力を表示します。さらに、このシェルコマンドは一定の間隔で繰り返し実行されるように設定できます。
そこで、デスクトップの左下隅に次の出力が表示されるように設定しました。
date; echo; /usr/local/bin/icalBuddy -nrd -nc eventsToday+80
つまり、まず現在の日時を確認しましょう。こうすることで、このウィンドウが最後に更新された日時と、最初のイベントが表示されるまでの残り時間を把握できます。次に、現在の日時とイベントを区切るために、空白行を挿入します。最後に、icalBuddy を使って、今後80日間のすべてのイベントを、相対日付やカレンダー名なしで表示します。結果はスクリーンショットのようになります。
「80日」という指定は少し誤解を招くかもしれません。私が本当に言いたいのは「ウィンドウを埋め尽くすだけのイベント(もしそれだけの数があれば)」であり、それ以上あっても気にしません。重要なのは、今後の予定が常に見えるということです。そうすれば、必要に応じてiCalを開いて直接確認するのに十分な情報が得られます。このGeekToolウィンドウは1時間ごとに更新されるように設定されているので、常に最新の情報を確認できます。少し透明になっている部分(デスクトップ中央の写真の一部が透けて見えます)とフォントとサイズは私が自由に設定しています。
実際、このプロセス全体を通して、よくやったと自画自賛しながら最も感銘を受けたのは、私が使っていたツールを提供してくれた人々の寛大さでした。ソフトウェアが無料だという意味ではなく、好きなように使える力を与えてくれるという意味です。GeekToolはウィンドウを1つだけ作るのではなく、複数作成でき、スクリプトを実行するだけでなく、ファイルを監視したり画像を表示したりすることもできます。icalBuddyにも、膨大な数のオプションがあります。これらの無料ツールはどちらも、多くのユーザーが抱えるであろう現実的な問題を解決してくれます。しかも、ユーザーが動作をカスタマイズできるようにすることで、その問題を解決しているのです。
私たちは素晴らしい時代を生きています。クールなフリーウェアツールが溢れる時代です。そして、この2つのツールのおかげで、iCalへの移行は、そうでなかったらもっと楽になったかもしれません。