れるカーネルを拡張するためのプログラム もありますが , これは「カーネル環境」層に 埋め込むプログラムとして開発します。 Ma c OS X は以前のバージョンと違い , カーネ ル層が Dar ⅲに置き換えられたため , 以前 のバージョンのデバイスドライバや機能拡 張はまったく使えません。それどころか 根本的な考えが違うため , デバイスドライ P A バの設計概念を流用することさえもできま せん。 ポイン うとするプログラムがどの階層やモシュ メラ構造になっている。自分が開発しよ Mac OS X の構造は一枚岩ではなく , キ R ールを利用するのかを認識しておこう。 T 開発環境の準備 標準添付される開発環境 Macintosh でプログラムを開発する際に は , 「情報不足」との戦いを覚悟しないとい けません。というのも , たとえば W1ndows のプログラムを解説した書籍や雑誌は過剰 と言えるほど市場にあふれかえっています。 これに対して Mac ⅲ tosh の場合は , 出版さ れている書籍のほとんどがいわゆる「ユー ザ本」ばかりで , プログラム開発に関する ものはほとんどないか , たまにあっても内 容が古いためにあまり参考にならないかで す。したがって , 必要な情報は必然的にイ ンターネット上で探すハメになります。も ちろん , これらの情報はほとんどが英語で す。以前 , 本誌で Macintosh プログラム講 座が連載されていた時期は , lnside Mac と いう API 解説書があったり , THINK-C や Sy mantecC + + という開発環境があったのです が , これも「遠い」過去の話です。 現状は lnside Mac に相当する API 情報は インターネットの AppIe の開発者サイト ( コ ラム 2 ) を参照しないといけませんし , THIN K-C や Symantec C + + はとっくの昔に新規開 発が中止されています。現状では CodeWar rior が圧倒的なシェアを誇っていますが 3 イ C MAGAZINE 2g1 6 徐々に REALbasic のシェアが増えつつある ようです。 ところが Mac OS X では , 驚くべきことに Developer Tools CD という開発環境の CD - R OM が標準添付されました。以前の Mac OS では HyperCard というツールが標準添付さ れていた時期もありました。しかし , Hype rCard は実行速度が遅く , 期待するほどの パフォーマンスも得られなかったため , い つの間にやらすたれてしまいました。 今回 Mac OSX に標準添付された開発環 App の開発者サイト Macintosh 用のプログラム開発者にとっ て , Apple Developer Connection ( 以下 , A http://developer.apple.com/ja/ は , 必読のサイトと言えます。ここからた どれるべージに , 開発に必要なドキュメン トやツール , サンプルコードが公開されて います。また , ADC 会員になると、ツール の版のダウンロードやいくつかのサービ スを受けられます。詳しくは FAQ のペー http://developer.apple.com/ja/faq/ をご覧ください。 コラム 2 境は , UN Ⅸのコマンドラインツールや NeX TSTEP, OPENSTEP で好評を得た project Builder , lnterface Builder が含まれていま す。 5 つの A 円 現時点で MacOSX 用のプログラム開発 は , おおまかに ( 1 ) アプリケーションプログラムの開発 ( 2 ) テパイスドライバ , Kernel Extention の開発 の 2 パターンが考えられます。 もちろんほかにもプログラムの種類はあ りますが [ 注 3 ] , 現時点でもっとも需要が大き いのは , この 2 つでしよう。 このうち ( 2 ) に関しては今のところ project BuiIder を使って開発することになります し , 利用するインタフェイスも 1 種類しか ないので , 迷う余地はありません。 これに対して , ( 1 ) のアプリケーション 開発は何パターンかに分類できます。それ は「どういう開発ツールを使うか」という分 類と「どの I を使うか」という分類です。 いろんな意見がありそうですが , MacOSX の開発においては , まず「どの API を使うか」 を最初に決めておかないと , 後々大変なこ とになると思われます。というのも , アプ リケーションには , Classic, Carbon, Coc oa, Java, BSD の 5 つの API が利用できます が , これらは , 「お見事 ! 」と言っていいく らい考え方がバラバラなのです。このバラ バラさが , まさにキメラな構造である Mac OSX の内情を表していると言ってもいいほ どです。 以下は 5 つの API について筆者なりの注釈 です。多少 , 皮肉つばい表現で鼻につくか もしれませんがご了承ください。 [ 注 3 ] スクリーンセーバ , フレームワーク , プリンタドライバなど CIassic かって T001b0X という愛称で呼ばれてい たものです。もはや「過去の栄光」であり ,
00 ① ユーサインタフェイス 求めて r¯使いやすい があれば , それを見直してみてください。 ン」を理解すれば , UI をより理解すること の一種ということになります。 従来 , UI の設計は専門家の仕事でした。 が可能になると思われます。ただ , そのた また , ちょっとした欠陥に慣れてしまって めにはコンピュータに関する学問とは異な いて , ふだんから不具合があることを忘れ 機械を作ることのできる人は限られている る分野の理解が必要です。とくに , 行動心 からです。しかしコンヒ。ュータが普及する てしまっていることも意外とあります。ア 理学や認知心理学のような心理学系の知識 プリケーションがどんなに優れた UI を持っ につれ , 少しその様子が変わってきました。 や , 人間の特性を研究する人間工学のよう GUI を設計するのはプログラマや SE ですが ていても , このような環境要因がダメでは そのような人たちが必ずしも UI の専門家で な分野の知識が重要になってきます。もち だいなしです。 あるとは限りません。きわめて簡単な UI の ろん , これらの分野を勉強するのも一案で 基本でさえ知らなければ , どうしようもな すが , 最近では UI だけでもひとつの学問の い画面デザインを作ってしまうこともしば 分野として成立するようになってきました しばあるのです。さらに , コンピュータか そこで UI に関して書かれた書籍を調べてみ 誰でも使える時代になるにつれ , 個人レベ 人間をシステムとしてモデル化する試み るのがわりといいのではないかと思います ルで簡単にプログラムを作ったり web サイ は , かなり昔から行われてきました。みな ただし , そのような分野のべースになって さんが得意分野のはずのコンピュータをモ トを公開する機会が増えました。 いるのは , やはり前述した心理学や人間工 デル化するとわかりやすいと思います。す UI に関する予備知識をまったく持ってい 学なので , そちらの分野の理解もある方が なわち , 入出力 , 演算装置 , 記憶装置とい ないと , 知らないうちに非常に使いにくい 望ましいでしよう。 ものを作って広めてしまう危険性がありま しかし , 今さら研究する暇も時間もない , うようにモデル化すればよいのです。 す。また , ちょっとした工夫でずいぶん使 という人が多いと思います。ある程度「よ 入出力は , 感覚器官からの情報をやりと いやすくなることに気づかず , コミュニケ い UI 」を設計するには , ある程度の専門的 りすることに対応させればよいでしよう な知識があれば , 精通していなくてもそれ 何かを見た結果を行動に反映するには , ま ーションの機会を失ってしまっているかも ず , 目から情報を得る必要があります。 しれません [ 注 1 ] 。 なりに何とかなるものです。本稿が , その UI の知識への重要性は , ますます高くな れは , ビデオカメラからの情報を PC に取り 「ある程度」のおおまかな知識を得るきっか けになれば幸いです。 込むのと同じことです。演算装置は , その りつつあります 刺激に従って , 脳などの神経系が判断を行 [ 注 1 ] 世の中に非常によく広まっている GUI の 中には , 首をかしげざるをえないような設計 ユーサインタフェイスを見直す前に うことに対応させればよいでしよう。記憶 のものが意外とたくさんある。先例が必ずし 装置は , 人間が情報を記憶する機能に対応 も優れているとは限らないことに注意か必要だ。 本論とはあまり関係ないのですが , とく させることになります。 関連する分野 に GUI を見直す前に再考しておいてほしい コンピュータという存在が , ある意味人 間をまねしたものとして解釈されることが ことがあります。それは , 物理的な環境が ありますが , そう思えば対応させやすいの UI を完璧に理解するには , 少なくとも 3 適切であるかということです。 ではないかと思います。つまり , 情報処理 たとえば , 作業環境の明るさ , 静けさ , つのことを理解しなければなりません。す の視点から考えれば , 人間はコンピュータ なわち , 「ユーザを理解すること」「ユーザ 温度 , 湿度などは作業に適した状況になっ に似ているし , コンピュータは人間に似て の操作するオプジェクト ( たとえばコンピ ているでしようか。作業時の姿勢や , いす いるということです ュータ ) を理解すること」そして「インタフ の高さはどうでしようか。机の広さは十分 ェイスそのものを理解すること」です。と でしようか。画面の明るさは十分で , 写り 短期記憶と長期記憶 ころが , この 3 つのどれもが非常に奥が深 込みがなく , フォーカスはちゃんと合って く , 完璧ざを求めるには難しい分野でもあ いるでしようか。キーポードは正常に動作 短期記憶とは , 大ざっぱにいえば , 一瞬 ります。少なくとも , とてもしろうとが手 していますか。押しにくいキーがあをり で忘れてしまうような種類の記憶のことで に負えるものではありません。 しませんか。マウスは思ったとおりに操作 す。あなたはこの文章を読んでいるとき , この記事を読んでいるみなさんは , おそ できるでしようか。ボタンのクリック感が 目で見た文字や言葉を , まずどこかに記憶 らくコンピュータについての理解度は人並 変だったり , ポールが汚れていてひっかか しているはずです。文章を解釈するために み以上だと思います。したがって , ユーザ ったりしないでしようか。 は , 1 文字だけ認識できても無意味で , あ を理解する , すなわち「人間の行動パター このほかにも , 作業に影響しそうな要因 特集 1 使いやすいユーザインタフェイスを求めて 13 人間というシステム
Standard 構築し , ほとんど予告もなしに提案したの は偶然ではないのだ。 Beman の夜のセッションでは , ハッシュ 表を今後の標準 C + + 改版に加えるべきかど うかで若干ムダな時間を使ったが , 参加者 はその表記に関心を持った。というか , 議 論の大部分はハッシュ表を実装するテンプ レートコンテナが表現する外部インタフェ イスに費やされた。私は , Musser の実装は を幅広く用いられているが , 現在利用可能な ものはそれだけではないことを指摘した。 私自身も 1 , 2 年前に本連載で議論したハッ シュ表を書いた ( 本誌 2000 年 1 月号『ハッシ ュ表』 ) 。私の会社である , Dinkumware, Ltd. は , Dinkum C + + Library の一部として これを追加してコンパイラ業者に出荷して いる。 Microsoft V1suaI C + + のアップグレー ドバッケージの一部として個人がインター ネット経由で利用することもできる。 私のものは , Musser の外部インタフェイ スに正確に一致していなかった。むしろ , 私は , 自分が書いたハッシュ表を既存の se t / m 叩コンテナに似るようにしようとした たとえば , タの必要性をなくした シュ再計算の際に指定すべきパラメー strategy) を利用し , 全テーブルのハッ ・段階的成長戦略 (incremental growing ートする シュ表コンテナは双方向反復子をサポ 在するコンテナすべてと同様に , ハッ より , 標準 c + + ライブラリにすでに存 双方向リンクリストを使った。これに ・下部表現に , 単リンクリストではなく ーを使い , 要素すべての領域を定める 用 map に対して , この関数は等価なキ なる。 / 、ツシュ mu は iset やノ、ツシュ mu 「 ange を上手に定義することが可能に った。これにより , メンバ関数 equal_ うに順序付け規則として ope 「 ator くを使 はなく , 既存の se map コンテナのよ ・ Musser が使った伝統的な ope 「 ato 「 = = で 第 たほど問題にならないことだ。デフォルト のテンプレートパラメータとハッシュ表の 基本的操作にとどまる限り , これら 2 つの 実装は互いに交換可能であり , また , 既存 の木構造べースのコンテナとも交換可能で たちはみな , 経験から利益を得ることがで だ。そして , 難しい決断を後で行う前に , 私 ある変種で実験する好機であるという理由 それが , それぞれ違うが , かなり互換性の るに違いない細かい点であった。そして , 来の C + + 標準に追加する以前に合意に達す あった。それらは , 人々がハッシュ表を将 級のハッシュ表ユーザの関心が向く部分で ある。設計上の決定のほとんどは , より上 きる。 表の基本要素としても利用されている。 に述べたように , これは Musser のハッシュ 幅広く採用されているものである。私が先 + + ライプラリに対する非標準の拡張として トコンテナであった。これもまた , 標準 C は , 単リンクリストを管理するテンプレー がますます強くなった。そのリストの筆頭 さらに拡張することを考えたいという思い センスしている標準 C + + ライプラリに対し その会議から帰ってから , 私たちがライ ー小さなリスト見つけた とみなされなかった。 しかった。違いは単にどちらでもいいもの が好意を持って受け止められたことがうれ のところ , かって私が行った設計上の選択 ントロールされた改革はいいものだ。結局 って改善され続けてきているのだ。よくコ ョンでさえも Silicon Graphics のメンバによ ナルのテンプレートクラスの現在のバージ 表明はなかった。実際には Musser のオリジ 即座に標準としようとする感情的な意見の かったこともうれしかった。最初の実装を った。また , これらの違いが論点とならな 解に真剣に努力したことを私はうれしく思 が , 両方の設計と違いの裏にある理由の理 その夜のセッションでの議論で , 参加者 見たところ , 標準 C + + ライプラリにこの ような追加を施す必要はない。すでに双方 向リスト ( テンプレートクラス list) が存在 し , 単リンクリストから得られる機能のス ーパーセットを提供している。しかし , 単 リンクリストが必要な理由が , 少なくとも 2 つある。 ・単リンクリストはリストノードそれぞ れの要素の値につき , リンク 1 つだけ を格納する。双方向リストは 2 つのリ ンクが必要なことは明らかだ。状況に よっては , 記憶容量削減の要求が重要 な場合もある ・普通は , 単リンクリストのほうが要素 挿入 , 削除のためのコードが簡単にな る。状況によっては , 実行時間やコー ド領域削減の要求が重要な場合もある 双方向リストの場合 , 支払わねばならな いコストは , 反復子にある。双方向リスト の場合 , 明らかに双方向反復子 ( bidirec ⅱ 0 皿 literato を十分サポートできるが , 単リ ンクリストは前方反復子 (forward iterator) だけをサポートする。もちろん , 逆方向反 復子 (reverse iterator) も守備範囲外である。 てハッシュ表が広まるにつれ , 昔の決定を ある。それで , とくに , 非標準の拡張とし ならないという必要性もないという現実が れば , どうしても私たちから買わなくては 供されるライプラリで満足できないのであ という義務はない一方で , 顧客のほうも , 提 るものなら何でも提供しなくてはならない のだが , ライプラリ業者として顧客が求め すべてを提供することはほとんどできない の要望が何件かある。実際は , 求めるもの もかかわらず , 顧客からの単リンクリスト の双方向リストの改善に注力した。それに ( 本誌 2000 年 11 月号『リストの改良』 ) , 既存 た。実際には , 以前本連載で触れたように ると , 私は何年も前に自分を納得させてい するにはこの潜在的な節約は中途半端すぎ テンプレートクラス丸々 1 つぶんを保証 子が必要だからである。 この魔法の裏には , 少なくとも双方向反復 よい知らせは , これらの違いは思ってい 2 1 6 / 6 c MAGAZINE
4 月末 ~ 5 月発売予定の新刊 ( 0 は CD-ROM 付 ) 書籍名 内容 出版社 定本明解 C 言語シリーズの 1 冊。 c 言語プログラマが陥りや 定本明解 C 言語実践編 柴田望洋 ソフトバンクバブリッシング ¥ 2 , 200 すい落とし穴を平易に解説 上巻¥ 3 , 400 新 C + + 言語入門シニア編 プログラミング言語 C + + の詳細まで体系的に学ぶための入 林晴比古 ソフトバンクバブリッシング 門書。「シニア編」では c + + の多様な言語仕様の全体を解説 上巻 ( 基本機能 ) / 下巻 ( クラス機能 ) 下巻¥ 3 , 600 VisuaI C + + , Borland C + + 、 gcc での例をあげながら , 基 入門 C + + プログラミング 小出俊夫 ¥ 2 , 800 秀和システム 礎からゆっくり C + + 言語を学ほう。 ANSI/ISOC + + 準拠 New Language シリーズ標準 練習問題形式で Java の基本的な言語仕様やオブジェクト 河西朝雄 ¥ 2 , 280 技術評論社 Java プログラミングプック 指向 , AP 休リ用法を解説。取り外して使える別冊解答付き SUN 教科書 Java2 試験番号 : Sun Certified Programmer fo 「 the Java Platform(Java2) BiII Brogden ¥ 4 , 200 翔泳社 [ 試験番号 : 310-025 ] 」に対応した学習書 310-025 直前必修問題集 Sun Certified Sun Certified p 「 0 rammer fO 「 Java 2 日 atform ( 試験番号 310-025 ) の試験範もを網羅した解説書 Simon Roberts ¥ 3 , 800 IDG ジャパン programmer for Java 2 David FIanagan, 多層分散システムにおけるアプリケーション開発を簡素 オライリー J2EE クイックリファレンス ¥ 5 , 800 化する技術として注目を浴びる J2EE の技術全体を解説 オーム社 Jim FarIey, ほか i アプリの作り方 fi アプリの作り方』の改訂版。 NTT ドコモが公開したツー 山崎由喜憲 with exilis ソフトバンクバブリッシング ¥ 2 , 200 ル (SDKfor Doja SDK) を利用した i アプリ作成法を解説 NTT DoCoMo DoJa 編 i モード Java プログラミングスタンド ゲーム , 実用プログラムを満載し , 全機種に対応した i ア 0 アスキー書籍編集部編 アスキー ¥ 3 , 600 プリプログラム集。 CD - ROM には開発キットを収録 アロン・アプリケーション編改訂新版 プログラミング作業の 70 % とも 80 % を占めるともいわれ Perli バッグ明快技法 オーム社 Martin Brown ¥ 3 , 800 るデバッグに焦点を定めて , シャープに解説した書籍 XM L とその周辺技術をどのように活用して目的を達成す プロフェッショナル XML インプレス Didier Martin, ほか ¥ 5 , 980 るかを解説。 XML の実践段階で悩んでいる開発者に最適 戌亥稔 , 田中聡 , XML データベースの理解に必要な知識や , 構築方法 , 企 実践 XML データベース構築 オーム社 ¥ 3 , 800 業間の取引などをプログラムや概念図を多用して解説 田中行広 JavaScript を使ってデータを手軽に処理する , 軽い XML シ OXML&JavaScript システム開発 高羽実 秀和システム ¥ 3 , 200 ステムを作ることを可能にする実用的な書籍 24 時間集中講座 グラフィカルなプログラムを迅速かっ容易に作れる Qt に ヒ。アソン・エテュケーション Daniel Solin ¥ 4 , 000 ついて , 基本仕様から言語の特徴について 6 部構成で解説 Qt プログラミング入門 なによりも実践重視の VC + + / MFC プログラミング超入門 プログラミング実習 VC + + 入門編小林健一郎 ソフトバンクバブリッシング ¥ 2 , 600 書。 5.0 / 6.0 両対応でプログラミングの経験値不問 ! ASP の概要から組み込みオブジェクト , ADO コンポーネ OASP ポケットリファレンス 西沢直木 技術評論社 ¥ 1 , 980 ント , FileAccess コンポーネントなどの必須の機能を解説 フ日からっかえる ASP3.0 サン XML にも対応した , Windows 2000 + lnternetlnformation 山田祥寛 秀和システム ¥ 2 , 800 N 騒プル集 Server/ Services 5.0 上で最適なスクリプト集 Exchange 2000 Server システム Exchange 2000 Server Enterprise 版 /Wi ndows 2000 Advan ソフトバンクバブリッシング Barry G e rbe rn ¥ 6 , 800 cedServer による戦略的情報システム構築手順を詳説 w 構築ガイド S 上巻¥ 4 , 800 Microsoft Exchange 2000 Exchange 2000 Se Ⅳ e 「管理者必携の解説書。上巻は導入 日経 BP ソフトプレス Microsoft Corporation ガイド , 下巻はアーキテクチャの設計に関する技術情報 下巻¥ 3 , 800 Server リソースキット上・下 DeIphi pasc のすべての言語要素とともに , 使い方のポ ・ジャ / ヾン / オライリー DeIphi クイックリファレンス Ray Lischner ¥ 4 , 500 オーム社 イントを解説した , 完全なリファレンスマニュアル VineLinux2.1 システム管理ブ 新米「 00t ユーザ必修の Vine Linux システム管理を徹底解説。 0 野村直 アスキー ¥ 2 , 600 しかもリリース直後の「 Vine Linux 2.1 .5 」緊急収録 ! ック ヒューレット・パッカード (HP) 社の HP-UXI 1 . x および 1 1 i #HP - UX11i システム管理 ピアソン・エテュケー ンヨン Marty Poniatowski ¥ 6 , 800 向けに改訂した書籍および追加情報を元に翻訳 ネットワーク設定やファイル共有など , Linux で発生する オーム社 Linux 管理トラブル解決 Q & A Brian Ward ¥ 3 , 200 さまざまな問題の具体的な解決方法とその背景技術を紹介 国際的な文字コード規格 Unicode を実際に利用するうえで 翔泳社 ユニコード標準入門 Tony Graham ¥ 4 , 200 必要な技術的基礎部分を提供する必携の 1 冊 MATLAB 活用ブック 主に工学系の卒論生や大学院生および工ンジニアを対象 秀和システム 小林一行 ¥ 2 , 800 にした MATLAB に関するノウハウ , テクニック集 ~ 信号・画像処理プログラム ~ テキストマイニン久遺伝子解析など現代の難問解決に 帰納論理プログラミング 古川康ー , ほか 共立出版 ¥ 5 , 000 期待されている帰納論理プログラミングの総括的入門書 パーソナルソフトウェアプロセ 知識の伝達ではなく , “技能の獲得をガイド”することを目 共立出版 ¥ 3 , 500 W. S. Humphrey 的にしたソフトウェア工学の教科書 ス入門 インターネットのサービス品質 ( QOS : QuaIity Of Service) 詳解ネットワーク QoS 技術 戸田巌 オーム社 ¥ 3 , 500 の考え方から解析・設計まで , 品質保証技術全般を詳解 自分でサーバを構築 / 管理したいというユーサ向けに , ネ 小寺伸ー , 熊倉真他 工ーアイ出版 Q & A でわかる ! BIND ¥ 2 , 400 ームサーバの基本的な設定を FAQ でわかりやすく解説 世界 12 か国で翻訳された実績の前版から 1 年にして加筆大 クラッキング防衛大全第 2 版 JO Scambray, ほか 翔泳社 ¥ 3 , 800 改訂。 Windows 2000 eb ユーサへの攻撃対策を特別強イヒ 著 者 ・ジャノヾン / Z ー X その他 163 Cmaga Bookends
MAGAZINE アンケートはがき アンケートはがきの書き方 CMAGMINE をご愛読いただき , 誠にありがとうござい ます。本誌内容を今後も充実させ , みなさまのご要望に お応えするため , 読者アンケートにご協力ください。 ・このはがきは OCR 処理にて集計します。黒の細いポ ールペンを使用し , 枠内に収まるように 1 マスに 1 文 字ずつ楷書体でご記入ください。 ※回答欄が 2 マスの欄に 1 桁の数字を書き込む場合は , 「 01 」のように左の欄に 0 を入れてください。 モニタ募集要項 応募資格 . プログラミング経験者 , プログラミング学習者。 、 = 000.0 000 0000 00 、 = 00 0 = = 。、 0 = 発送に日時を要するものがあることをご了承ください ) 。 モニタレポート : モニタ期間中に最低 2 回のモニタレポー トを提出していただきます。レポートはテキストファイル とし , フロッヒ。ーティスクにて「 READERS' ROOM モニタ 係」宛に投函いただくか , e - ma ⅱアドレス宛に電子メールを 送信ください。 ◇選考発表 . この号のモニタ選考結果は本号発売日から 4 か 月後の本誌上で発表いたします。 ◇レポート発表 . 提出いただいたレポートは , 編集部到着月 日から 2 か月後に発売する本誌上 , または付録 CD - ROM に て掲載収録する予定です。 モニタ応募の注意 ◇綴じ込みの葉書に必要事項を明記のうえご応募ください。 ◇記入漏れやモニタ番号が 1 つの欄に複数記入されている場 , 綴じ込み葉書以外でのご応募は無効とさせていただき ます。 ◇締め切りは 6 月 18 日必着です。 読者プレゼント応募の注意 ◇綴じ込みの葉書に必要事項を明記のうえご応募ください。 ◇雑誌公正競争規約の定めにより , 懸賞当選者 , モニタ該当 者はこの号のほかの懸賞に応募できない場合があります。 ◇締め切りは 6 月 18 日必着です。 ・読者モニタ , あるいは読者プレゼントに応募される場 合は , 表面の所定の位置にご希望の商品記号をご記入 ください。 ・読者モニタに応募される方は , 下記モニタ規定を必ず 読ください。 ・はがき裏面のフリースペースに記述いただいた内容は , 原則として断わりの記述がない場合 , C MAGAZINE 誌 上で掲載させていただくことがあります。あらかじめ ご了承ください。 郵便はがき ] 0 7 - 8 7 9 0 料金受取人払 赤坂局承認 526 ( 受取人 ) 東京都港区赤坂 4 丁目 13 番 13 号 ソフトバンクバブリッシング ( 株 ) 差出有効期間 平成 15 年 3 月 14 日まで有効 C MAGAZINE 編集部行 い卍トⅢ C MAGAZINE 2001 年 6 月号 フガ姓カ亡 年齢性 ー男性 2. 女性 名 送希望送付先 付 l. 勤務先 先 2. 自宅 勤務先名 部署 ( 学校名 ) 課名 E-mail アドレス 役職譬 " 巐当員従業員数爿島人勤務先の業種田製造業に , ンピ = , ータ関連 ) 02 ・製造業 ( 0 似外 ) 03. 商社 ( コンピュータ関連 ) 国 . ( 03 以外の ) 商社及び卸・小売業 3. 係長・主壬職 3. 和 ~ 的人 05. コンピュータ関連ショップ ( 五情処理・ゾ外ハウス 口 , 、ロ 4. ・般社・職員 0 ス建設・ ( 鼈金融・保険・不動産的 . 運輸・通信 5. 学生 6. - 婦 7. l( ). 医療機関仕官公庁・公共機関 に学校・教育関係 その他 区弁護十・会計事務所その他 ( あなたの職種 OI. 術職 02. 研究職 03 コンピ . 、一タ関連技術職 ( 情報処理 ) ( ログラマ・ SE 05. 事務職 06. 営業・販売職 07. サーピス業 08. 教師・・師 09. 専門職 ( 師 / 弁護士等 ) 6 月号モニタ商品・プレゼント賞品 都道 府県 ロ一 =
特集 2 Mac 05X アフリケ - ション開発ガイド は省略します。ただし以下の 3 点は , Object ⅳ e - C の場合と違っています。 (1)NSLog の Java 版が見つからなかった ので , 代わりに System. err. print を使 用している ( 2 ) MyView はコンストラクタがないと工 ラーになるため , コンストラクタを追 加している [ 注 1 引 (3)Objective-C と違い , Java は型に厳し いため ( Out 回を Object 型のままにする 参考文献 残念ながら , MacOSX 正式版が出たば かりということもあり , Mac OS X プログラ ミングに関する書籍は出版されていません ()' REILLY から「 Learning Cocoa 」 , http:// www.oreilly.com/catalog/learncocoa/と「 L earning Carbon 」 , http://www.oreilly.com/ catalog/learncarbon/ が出版される予定 ) 。 NeX"ISTEP や OPENSTEP の文献をとも考え ましたが , これらは MacOSX とは微妙に食 い違う部分もあるため , あえて紹介しない ことにします。 Developer T001S CD をインストールする と , /DeveIoper/Documentation 以下のデ ィレクトリに多数のドキュメントが収めら れています ( ただし , いずれも英文 ) 。主に Web プラウザや Acrobat Reader で読むファ イルばかりですが こが最初のとっかか りとなるでしよう。 [1]SystemOverview. pdf 場所は , /Developer/Documentation/Sy stemOverview/SystemOverview/SystemOv erview. pdf 日本語訳された PDF 書類 (syst emOverviewJ. pdf) は http://devel叩er.apple. com/ja/techpubs/pdf/System()ve1ViewJ.pd f からダウンロードできます。 Mac OS X テ クノロジの概要について述べています。 [2]CarbonPortingGuide. pdf 場所は /Developer/Documentation/Carb on/pdf/CarbonPortingGuide. pdfo これも 日本語訳された PDF 書類 (CarbonPortingJ. p (f) を http://developer.apple.com/ja/techpu とエラーになる ) , OutIet を適切な型 (MyView) に変更している おもしろいのは Objective-C 版と Java 版を 見比べると , ほば 1 行ずつ忠実に移し替え たかのように似通っている点ですは 16 ] 。 ポイント Pure Java による Java2 開発が簡単になっ たが , Java Bridge による Cocoa フレー ムワークを使った開発もある。 bs/pdf/CarbonPortingJ. pdf からダウンロー ドできます。既存の Mac OS 用プログラム を Carbon 化する際の注意点や移植の例につ いて述べています。 [3]Inside Mac OS X:System 0verview 「 Devel 叩 er Help Center 」から参照できる ドキュメントで , Mac OS X の内部構造に ついて詳細に書かれています。ただし , プ ログラミングの参考資料として直接役に立 つトビックというより , 「内側はこうなっ ています」という説明です。全部を理解で きないとプログラミングができないという ものではないので , 行き詰まったときは適 当に先に読み進んだほうがいいでしよう。 [4]Cu 「「 e ncy Conve e 「 Tutorial これも「 DeveI 叩 er Help Center 」から参照 できるドキュメント。簡単な Cocoa プログ ラム ( 両替の計算をする ) を作ることで , Co coa プログラムがどういうものかを理解させ るチュートリアルです。これは重要な文書 なので , じっくりと読んで理解することを お勧めします。単に Cocoa の説明だけにと どまらずオプジェクト指向開発の意義や , MVC という重要なデザインパターンについ ても説明しています。 [5]DeveIoping Cocoa Java Applications: A TutoriaI 同じく「 Developer Help Center 」から参照 できるチュートリアルですが , Java を使っ た例で説明しています。 [6]ObjC. pdf 場所は /D eveloper/Documentation/Coco a/ObjectiveC/ObjC. pdfo 残念ながら , この [ 注 15 ] nib ファイルにある NS Ⅵ ew を継承し たオプジェクトが初期化される際 , Objecti ve-C の場合は , init ではなく「 - (id) initWith Frame: (NSRect) frameRect 」が呼ばれるこ とになっている。通常は親クラスのⅲ itW1th Frame をそのまま流用すればよいが , もし 独自の初期化処理を付け加えるなら , Java の場合と同様に , 初期化メソッド (initW1th Frame) の記述が必要になる [ 注 16]Java は Objective-C を参考にしている という説があるが , この結果を見るとなん となく納得できる ドキュメントの日本語訳はまだないようで す。 Project Builder で利用する Objective-C の言語仕様だけでなく , オプジェクト指向 開発に関する考えも述べています。 [7]MoonTraveI.pdf 場所は /Developer/Documentation/Carb on/pdf/MoonTravel. pdfo 残念ながら のドキュメントの日本語訳はまだないよう です。 Project Builder を使って Carbon アプ リケーションを作るチュートリアルです。 [ 8 ⑩ e 関係のサイト Developer Documentation (http://develo per.apple.com/ja/techpub s/ ) や こから たどれるべージに , いくつか日本語訳され た文書が公開されています。 MacOSX 関 係でいえば , 'TechnicaI NOte 2003 MOVing your co de tO Mac OS X", http://developer.ap ple.com/ja/technotes/tn2003.html, 既 存のソースを Mac OS X 向けに移植す るときの注意 "TechnicaI NOte 2005 SimpleCocoaA pp: An Overview", http://developer.a pple.com/ja/technotes/tn2005.html, 簡単な Cocoa アプリケーションを作成 する例 は必読でしよう。 [9]Cocoa はやつばり Project Builder による Cocoa フレームワー クを利用した開発例をチュートリアル形式 でわかりやすく解説しています。 U 糺は , http://www.big.0「.jprcrane/cocoa/です。 特集 2 MacOSX アプリケーション開発ガイド 55
定期購読受付中 ! このページのハガキを切り取ってお送りいただき、必要事項をご記入のうえ定期購読センター までお申し込みください。お送りいただく場合は切手は不要です。 お支払いについて 〇郵便振替・コンビニ支払 初回配本の数日後に、弊社よりお支払い用紙をご郵送いた します。 郵便局またはお近くのコンビニエンスストアでお支払いく ださい。手数料は不要です。 〇クレジットカード クレジットカードはインターネットからのお申し込みの みお受けしております。このハガキからではお受けでき ませんので、ご注意ください。 注 : 銀行振込をご希望の場合は、定期購読センタ ーまでご相談ください。 インターネットでは、 http://www. sbp-direct.com/ からお申し込みいただけます。 インターネットではクレジットカードでのお支 払いもできます。 ご利用いただけるカードは UC 、 MasterCard 、 VISA 、 AMEX 、」 CB です。 郵便はがき 国囹 2 囘材 0 料金受取人払 赤坂局承認 定期購読誌のお届けについて できるだけ発売日当日にお届けできるよう発送いたしま すが、郵便事情などで数日遅れることがございます。予 めご了承ください。 ご送付先について ご送付先を登録先とは別にされたい場合は、インターネ ットからお申し込みいただくか、定期購読センターまで ご相談ください。 ご継続について すでに定期購読されている雑誌のご継続のお申し込み は、弊社よりお送りしますご継続のご案内でお申し込み ください。 このハガキからお申し込みになりますと新規のご注文と してお受けいたしますのでご注意ください。 799 差出有効期間 平成 14 年 5 月東京都港区赤坂 4-13-13 31 日まで ソフトバンクバブリッシンク株式会社 定期購読センター行き
しかし , もし大勢がそれに慣れていると なると , 話は変わってきます。明らかに優 れているデザインが別にあるにもかかわら ず , すでに大勢が使い慣れているというた けの理由 ( しばしば「歴史的理由」と表現さ れます ) で , 旧来の UI が支持されるという のは , しばしばあることです。典型的なの が , キーボードの QWE Ⅲ配列 , Webvx— ジの青色のリンク色などです [ 囿。 [ 注 2 ] ただし , 特定の条件下ではこれが成り 立たないことがある。たとえば満員電車の中 で片手で操作しなければならない場合だ。も っとも , 電車の中で携帯電話を使うなという 意見はありそうだが。 [ 注 3 ] キーポードの配列の話は長くなるので 省略する。青色は , 一般に見づらい色に分類 されている。また , 黒に比較的近い色になる ため , リンクとそうでない所の区別に適して いない。 Web ページのリンク色に青が使われ た理由は , 最初そうだったからという説が有 カらしい。今となってはそれに慣れたユーザ が多いため , 安易に変えることができないの である。 変化の検出 人間の体の中で , センサの役割を果たす 器官を感覚器官と呼んでいます。要するに 目 , 耳 , 鼻や皮膚などのことです。これら の器官は , 外界の状態を情報として取り人 れ , 神経系を通じて必要な部位に情報を送 る働きをします。 感覚器官に共通した重要な性質のひとつ は , 「感覚器官は変化を検出する」というこ とです。要するに , 変化だけを感じるとい うことは , 同じ刺激をずっと続けて受けて いると , そのうち何も感じなくなるという ことです。また , 見方を変えれば , 感覚は Fig. 1 明るさ 原則として相対的なものだということにな ります 駐 4 ] 一例として , 視覚を考えてみます。ある 部屋には窓がなく , 蛍光灯だけで照明され ているとします。晴れた日の昼間に外から やってきた人がこの部屋に人ると「この部 屋は暗いな」と感じるでしよう。一般的に 太陽光の下というのは , 照明された室内よ りもかなり明るいからです。ところが , 真 夜中に同じように外からやってきた人がこ の部屋に入ったときは , 「明るいな」と感じ るはずです。しかし , この部屋の明るさは , 昼間も夜間も同じです。ということは , の感じ方の差は , 今までいた環境との比較 によって , 部屋の明るさを認識しているこ とを意味しています。これは , 明るいとか 暗いという感覚が , 相対的なものであるこ との証拠です。 Fig. 1 の右と左の図の真ん中の灰色の明 るさは同じなのですが , 左のほうが周囲が 暗いために明るく見えるはずです。真ん中 の明るさを絶対的情報ではなく , 周囲との 相対的情報として認識しているためです [ 注 4 ] 絶対音感のような感覚もないわけでは 動いているものは目立つ 人間に限らず , 視覚を持っている動物は , 基本的に動いているものに対して敏感に反 応する性質を持っています。これは感覚器 官が差分を認識するという性質に関連して います。同じものをずっと見続けていると , 風景の中に溶け込んでしまって , 全体に印 00 ① ユーをた 求めて r¯使いやすい 特集 1 使いやすいユーザインタフェイスを求めて 1 5 「動いているものを , あえて無視しようと 合わさるとどうなるでしようか。ユーザは 使っていることが多い」という条件が組み もの」があることと , 「バナー広告は動画を 面上に「バナー広告という見る必要がない こで学習能力が威力を発揮します。画 プする人は非常に少ないのです。 バナーをクリックしてそのサイトにジャン 義のないものであることが知られています。 ナー広告はユーザにとってまったく見る意 また , 残念なことに , 実際ほとんどのバ ではない」という反論はナンセンスです。 こで , 「バナーを強制的に見せているわけ や不快感を与えることになるはずです。 制的に見せるという行為は , ユーザに反感 す。単純に考えても , 見たくないものを強 たり来たりすることになると疲労になりま ナーに注目させられることで , 視線が行っ たい所が別にあるのに無意識のうちにバ を増やす要因にもなります。また , 本来見 神経系に強いることになるので , ストレス うことは , それ自体 , 負荷のかかる処理を ります。また , 動きのある画面を見るとい 対して , 強制的に注目させられたことにな ものであれば , ユーザは見たくないものに もしバナー広告がユーザにとって不要な 持っています。ここがポイントです 動以外に , 意識的に行動を学習する能力も れません。しかし , 人間にはその本能的行 では合理的な選択のように思われるかもし するのは本能的な行動ですから , その意味 すぎます。たしかに動いているものに注目 使ったほうがいい」と結論づけるのは安直 ただし「バナー広告はアニメーションを 率は高くなるはずです いると , ユーザがそこに注目してくれる確 た状態の中で , バナーの部分だけが動いて 単純に考えれば , ほとんどの画面が静止し いているものに注目する性質があります。 理由は簡単です。前述のように , 視覚は動 ションが多用される傾向があるようです。 Web サイトのバナー広告には , アニメー 象が薄くなってしまうのです物 ] 。
するとか , ボタンを押せなくしてしまえば , 編集中のファイルを残してアプリケーショ ンを閉じる事故はほとんど防ぐことができ ます。編集内容をセープするか , あるいは 無効にする操作を行った状態にすることで , アプリケーションを終了させることができ ます。 ところが , 実際にそのような制限を持た せているアプリケーションはあまり見かけ ません。このトラブルを避けるもう 1 つの方 法は , 終了の処理の中に , ファイルを保存 する処理を埋め込んでしまうことです。つ まり , 終了時に編集中のファイルがあれば , 自動的にそれをセープしてからアプリケー ションを終了させればよいのです。ただし , この方法には , セープするつもりのないフ ァイルをうつかりセープしてしまう事故が 発生する危険があります。そこで , アプリ ケーションの終了時に保存してよいかどう かを確認して , 事故を防ぐようにするのが 通例です。 ・デフォルト 確認パネルで問題になるのはデフォルト です。デフォルトのボタンは , 簡単に押せ る状態になるため , 無意識に操作する対象 になってしまうことがあります。このよう な状態になると , 必ずしもユーザの意志に よって選択されるのではなく , 惰性で操作 されてしまう危険も出てきます。 ディスクの初期化や全データ削除のよう な , きわめて危険な操作に対しては , デフ ォルトに指定しないのが基本です。また この種の操作は , 頻繁に行うものではない ので , 多少の操作性の低下は問題になりま せん。 Fig. 2 は , WZ Editor で編集したファイル がある状態でウインドウを閉じたときに表 示される確認パネルです。ここでは@@f)] がデフォルトになっています。おそらく , 慣れた人は無意識のうちにを押し てしまうと思われますが , それはほとんど の場合 , 適切な選択であるはずです。 20 C MAGAZINE 2 1 6 色 画面デザインで , 色は重要な要素です。 うまく使えば , UI としてもよい画面を作る ことが可能なのですが こで 1 つ重要な ことを想定する必要があります。環境によ っては , 色を識別できない場合があるとい うことです。最近は白黒のディスプレイは 少なくなりましたが , 基本的に白黒のディ スプレイで見ても差し支えないような色を 選択すべきだと思います。そのためには , 色相だけではなく輝度も変えるとか , 単色 ではなくパターンを使って見分けられるよ うにするといった工夫が必要になります。 基本的に , 字を読ませる場合の色の選択 は , 白地に黒がもっとも見やすいだろうと いわれています。 W1ndows の時代になる前 は , これを反転させた黒地に白というのも よく使われていましたが , どちらが見やす いかという研究はいろいろあるので , 興味 のある方は調べてみるとよいでしよう。 色調を選択するにあたってもっとも簡単 な法則は「見やすい組み合わせを選べ」とい うことです。あたりまえのようですが , 意 外とこれができていないページが多数ある ようです。基本的には , 似た色相を選ばな いことと , 輝度の近いものを選ばないこと が重要です。たとえば , オレンジの背景に 黄色で字を書いたら , これはほとんどわけ のわからないページになってしまうでしよ う。色相が近すぎるからです。プルーの背 景に赤の字というのはどうでしようか。色 相はかなり違うのでよさそうですが , 実は 輝度が近いとそうでもないのです。 Fig. 2 確認パネルのデフォルト 印刷では , 強調したい箇所の文字色を赤 などにすることがあります。全体が黒の文 字で印刷されている中で , ごく一部の色が 赤になっていれば , 非常に目立つからです。 しかし , あまり多くの箇所を赤にしてしま うと , あまり目立たなくなってしまいます。 また , 白黒表示にした場合に , 赤は暗い灰 色として表示されてしまうため , かえって 目立たないことになります。そこで , コン ピュータの表示では , 強調したい箇所を高 輝度にしたり , 反転表示 ( 背景色と文字色 を交換する ) にすることがあります。そう することで , 色相以外の情報で強調箇所を 識別することができるようになります。 文字色を選択する場合も , 似た色相は区 別するのが難しいということに留意する必 要があります。多くの Web サイトでは , テ キスト中にリンクがあることを青色の文字 で表示することで区別できるようになって います ( 実際は , サイトの問題ではなくプ ラウザの設定であることが多い ) 。白地に 表示する文字色としては , 青は比較的見や すい色なのですが , 色彩の基本としては , 青や紫のような周波数の高い系の色は見づ らいものとされています。また , 青と黒の 判別も難しいことは , 実際に Web サイトを ご覧になればわかると思います。というこ とは , リンクを青の文字で表示するという のは , UI としてはあまりよいものではない ことがわかります [ 注 8 ] 。 [ 注 8 ] だから青色以外にすべきだというのは 早計である。 Web サイトの利用者は , リンク が青で表示されるという先入観を持っている からだ。もしリンクを緑で表示したサイトが あったら , そのページを初めて見た人は , そ れがリンクであるということに気づかない。 s . ⅸ t は更新されています。保存しますか ?
ルーフを踏まえた設計をするとよい , とい う趣旨のことを紹介したところですが , れだけでは防ぎきれない事故もあります。 たとえば , 編集中にパソコンの電源を間違 って切ってしまったような場合です。 いくら何でもそこまでアプリケーション でめんどうをみる必要はないだろう , とい う考え方もあります。話がそれますが , 私 の場合 , 基本的に原稿は V. 用 0 ノートで書 いています。どこでも原稿が書けるという 理由もありますが , 何度か自宅のプレーカ ーがとんだときに , このおかげで被害が最 小限で済んでいます。ノート型のパソコン は , AC 電源がいきなり切れても , バッテリ で数時間稼働することができるからです。 デスクトップの場合も , 無停電電源装置を 使えば , いきなりの停電でも原稿をロスト せずに済ませることができます。 ところで , ノートパソコンだと AC 電源が 切れても OK だといっても , バッテリにも限 界があります。原稿を書くのに夢中になっ ていて , 電源コードが抜けてしまったのに 気づかないことがありました。 V. 用 O の場合 は , バッテリの残りが少なくなってきたら 警告のアナウンスが音声で流れるのですが , スピーカを OFF にしていて , それにも気づ かなかったことがあります。 VAIO ノートは , バッテリ残量がほとんど なくなったときに , これが最後の最後とな ったら , 強制的にサスペンド状態に移行し ます。つまり , 現在のシステムの状態をハ ードディスクに保存して電源を落としてし まうのです。この後 , AC 電源をつないで再 起動すれば , 前回の続きから作業を行うこ とができるわけです。このように , 何かの 間違いが起こったときも結果が安全である ような設計のことをフェイルセーフと呼ん でいます。 ・自動セーブ機能 工デイタによっては , 定期的にファイル をセープする機能を持っているものがあり ます。一定時間ごとに自動的にセープする ものと , 指定文字数の追加でセープするも のがあるようですが , このような機能があ れば , 万一停電のようなアクシデントが発 生しても , 最後に自動的にセープした状態 までは復元できるので , 何時間もかけて書 いた原稿が全部バーになることだけは避け られます。これがフェイルセーフの一例です。 ソフトウェアの例も紹介しておきましよ う。ディスクのフォーマットやファイルを すべて削除するコマンドのように , 間違っ て実行するとむちゃくちゃ危険な機能を提 供するときには , 実行前に確認を行うのが 慣例です。いきなり実行するのではなく , ワンクッションおいて , ユーザに本当にそ の処理を行ってよいかを尋ねるのです。た とえばそれは「ディスクを初期化すると既 存のデータはすべて消去されます。初期化 してもよいですか ? (Yes/No) 」のようなパ ネルが出るとか , Y か N のどちらかのキーを 人力させる , というようなことになります。 こで , うつかりユーザが何をするかを 考えてみると , 押すつもりはなかったのに キーを押してしまったとか , キー を押すつもりだったのに回キーを押して しまったなどの操作ミスがあるかもしれま せん。この場合 , ディスクの初期化という コマンドは実行した場合に危険なので , 操 作ミスがあった場合には実行しないという UI の設計を行います。つまり , デフォルト のボタンを電に設定することで , うつかり キーを押した場合には何も起きない ようにするとか , 回という解釈不能の入力 があった場合は , 何もなかったことにする などの設計にするわけです [ 注 7 ] 。 [ 注 7 ] ふだん使っているアプリケーションが 「 Yes 」をテフォルトとするパネルを表示して いる場合を考える。たまたま , あるユーサが をクリックしたい場合にキーを押し てからキーを押す , という一連の操作 に慣れていたとしよう。このユーザが , ディ スクの初期化コマンドを間違って起動したと きに , いつもと同じようにを選択するつ もりで Tab キーを押してから匡キーを押 したら , Ye を押したことになってしまうだ ろう。この事故を防ぐには , どのような設計 をすべきだろうか ? 00 ① ューンタフェイス 求めて I¯使いやすい 特集 1 使いやすいユーザインタフェイスを求めて 19 あります。 [ 終了 ] メニューを選択できなく 終了する操作ができないようにする方法が ァイルがある場合にはアプリケーションを るしかありません。たとえば , 編集中のフ 目的であるアクションをユーザに強制させ このトラブルを避けるためには , 本来の きません。 ンを押せる UI である限り , 避けることはで 閉じてしまう事故は , 間違ってボタ ァイルを保存しないでアプリケーションを ヒューマンエラーは必ず存在します。フ るのです。 ボタンを押してしまうという事故が発生す が本来望んでいない場合に間違って霆 ことではないからです。その結果 , ユーザ という保証であって , ボタンを押す いるのは , その処理を行っても安全である たく異なっています。システムが要求して デアは似ていますが , これは本質的にまっ から実行するというものがあります。アイ に警告文を表示し , ボタンを押して これに似た UI に , リスクのある処理の前 ることです。 あるアクションによって引き起こされてい 処理が , 「切符を取る」という本来の目的で こで重要なのは「ドアを開ける」という るので , 注意が必要です。 システム全体の操作性に影響する危険もあ 套手段です。ただし , へたに多用すると , のステップに進めないようにするのは , 常 ポイントを設けて , 何か対応されないと次 うにすることだと紹介しました。チェック 法は , 切符を取らないとドアが開かないよ いう問題がありました。この問題の解決方 機には , 「切符を取り忘れることがある」と 先に指摘したように , 新幹線の自動改札 からです。 何も考えずにボタンを押してしまう はありません。ある程度熟練したユーザは , ようなパネルです。これはあまりよい UI で とがよくあります。「終了します」の GUI には , 確認のパネルが用いられるこ ・確認バネル