Macでプログラミング(VDTタイマー)

PC作業の疲れを予防するためのアプリケーション「VDTタイマー」のMacバージョンを作りました。

参考書を2冊読み込む
Macでプログラミングをするのはこれが初めて。まずは入門書『たのしいCocoaプログラミング』と『Cocoaではじめよう Mac/iPhoneプログラミング入門』を買い、サンプルソースを入力してみました。
Macには、ソフト開発に必要なツールがすべてOSに付属しています。プログラムにはObjective-Cという言語を使用します。この言語のベースはC++なのですが、やけに [ ] を多用しており、1つのソースに2つの文法が混在しているような、独特な言語です(慣れてしまえば平気ですが)。
入門書には書かれていないこともたくさんありますが、この2冊のおかげで「分からないことがあったらヘルプやGoogleで調べられる」ようになりました。

「もっと具体的に質問せよ(英語)」の壁
VDTタイマーでは「ユーザーがPCを操作していないときタイマーを止める」という処理をしています。そのため、キーボードやマウス操作を監視しようと、やり方を検索してみたのですが、なかなか情報が見つかりません。
Discussion Boardなどでも、同じような質問がたくさんあるのですが、「CocoaアプリかCarbonアプリかAppleScriptかが分からないと答えられない」「何をしたいのか伝わってこない」「質問する前に過去ログを調べろ」「100年ROMれ」など、厳しいけど役に立たない回答ばかりで……。
結局は「CGEventSourceSecondsSinceLastEventType」という、「ユーザーが何も操作していない時間を取得する」APIがあることがわかり、あっけなく解決したのですが、とても時間がかかりました。
![]()
また、ドックのアイコンにプログレスバーを表示する仕組みは、こちらの記事を参考にしました。グラデーションのかかった画像を使い、立体感を出しています。
Windowsとのお作法の違い
ソフトウェアの操作法には「お作法」があります。つまりWindowsはWindowsらしく、ケータイはケータイらしく、MacはMacらしく、共通の操作性を持たせなければならない、ということです。
MacとWindowsでは「設定画面」に関するお作法が全く違います。Windowsでは、設定ダイアログの「OK」ボタンを押すまで、変更は反映されません。ところが、Macの設定ダイアログには「OK」ボタンも「キャンセル」ボタンも無く、ユーザーの操作はリアルタイムに反映されるのです。

Mac OSには、こうした操作を支える「バインディング」という仕組みがあります(上記の2冊の参考書では全く触れられていません)。この仕組みを使うと、設定ダイアログへの値の割り当て、ユーザー操作の反映、データの保存と読み込みまで、すべて面倒を見てくれます(解説)。(2009/05/05追記:Apple 日本語ドキュメント集のページにある、Cocoaセミナー上級編の動画+資料が、バインディングの自学習にとても便利でした)

もちろん、設定ダイアログのデザインにも「Windowsっぽさ」「Macっぽさ」があります。OS付属のアプリケーションなどを参考に、ダイアログの画面を設計していきます。
あとは「かわいいアイコン」を作るだけ
WindowsアプリとMacアプリには色々な操作法の違いがありますが、一番の違いは「アイコンの美しさ」だと思います。Mac版VDTタイマーにも、最後の仕上げとして、Macの画面になじむかわいらしいアイコンを作る予定です。
関連する記事
このサイトの内容は私の個人的な見解であり、私の所属するいかなる団体や組織の見解を反映しているものではありません。