日付:2001/12/5
Mac OS X 上でのプログラミング私がMac OS Xを導入したのは3月である。このOS Xには実にうれしいプログラムが付属していた。それまで製品として単独で販売されていたProject Builder/Interface Builderである。
特にこのInterface Builderというのは、その昔Nextというコンピューターが発表されたとき(それはもう10年も前だろうか)その使い方の容易さ、機能の高さから大いに話題になったものである。それが無料で(というかOS Xを買えば)つかえるとは。もちろんこれはAppleの
「みなさんがんばってOS X上でプログラムを開発してくださいね」
という切実な要望にそったものだろうが、とにかく私としてはありがたい。
さて、OS XがPowerMac 7500上で稼働するようになるとさっそくこのPB/IBをインストールである。文字の入力だけでも虹色カーソルがくるくるまわるくらいの速度だから、インストールもとても時間がかかる。ようやく終了するとさっそく立ち上げ。しかし何をするのにも時間がかかる。最初は
「やたらカーソルが回るのも、SEの頃を思い出して風情がある」
などと強がっていた私だが、今風のパソコン環境に甘やかされた頭はそれほど忍耐強くない。結局7500上ではPB/IB はほとんど使わなかった。そのうち何の加減かやたらと
"Kernel Panic"
というメッセージがでてハングするようになってからはOS Xも使わなくなってしまった。
そこに新しいiBookへの乗り換えである。前があまり芳しくない結果に終わったから今度はどうか、、とおそるおそるOS Xへ切り替えてみるとこれがご機嫌である。OS 9に比べれば遅いのかもしれないが、G3@320MHzからG3@600Mhzへ移行した処理速度の向上はそれを補ってあまりがある。これならいけるかもしれない。私はアップルのサイトからOS 10.1に対応したPB/IBをダウンロードした。(本当のことを言えば、会社でダウンロードして、CD-Rに記録し、インストールした。だって100MBを越えてるんだもん)
さっそくたちあげてみると結構軽快に動く。そしてインターネット上をあさってみると新しい環境-Cocoa-での開発の仕方について懇切丁寧に説明しているサイトもいくつか見つかる。さて、では何かやってみるか、、といってすぐに腰があがるほど私は勤勉ではない。新しい環境への移行というのは、それがいかに便利なものであっても面倒なものだ。ちょっとサンプルプログラムなど立ち上げ、それが動くので喜ぶ。そしてプログラムを終了する。やっぱり新しいこと覚えるのは面倒だし。今まで使ってきたCode Warrierが早くOS X上で動くようにならないかなあ、えっ?もう動いている?値段が高いなあ、とそんなことを漫然と考え続ける。
そうはいっても是非ともOS X に移行しなければならない自作のプログラムもいくつか存在していた。アクセス解析の結果解析プログラムとSETI@Supportである。何も変更しなくてもClassicと呼ばれる互換環境でちゃんと動くのだがなんとなくいやである。せっかくならOS Xのアプリケーションとして動いてほしいではないか。Javaプログラムだからコンパイルだけしなおせば問題なく動くはずなのだが、、とやってみる。するとなにやらエラーメッセージがでているのがそれが文字化けしていて読むことができない。おまけにコンパイル途中でハングまでしてしまう。
なんだこれは?と思いあれこれ調べると対処方法があるサイトに掲載されていた。やってみると問題解決。二つのプログラムは無事OS Xの上で動き始めた。本当のことを言えばSETI@Supportの動きは結構怪しいのだが、とりあえず今は打つ手がない。そのうち私は(例によって)別の妄想にとらわれ始めた。
私は未だに「パソコン通信」の環境でメールの読み書きをしている。最近は「パソコン通信」と言っても知っている人の方がすくないかもしれないが、、、とにかくそうなのである。最近よく送られてくるMIMEエンコードという機能が必要なメールは、そのままでは読みづらい。というかまったく無意味な文字列として表示されてしまうから、自分でなんとかする必要がある。そうしたメールには時々
「最近のメールプログラムはみんなMIMEエンコードできるんだよーん」
とかあたかもこちらが悪いようなメッセージが埋め込まれているのだが、よけいなお世話である。こうした環境でメールを読み書きしている限りウィルスには感染のしようがない。どんな凶悪なウィルスであっても無意味な文字列のままでは手も足も出ない。
しかしながらその環境にいつまで安住していいていいのか、という疑問も少し前から存在はしていたのである。そして世の中にはいくつもメーラーと呼ばれるメール送受信のためのプログラムが存在している。そろそろ乗り換えるべきではなかろうか。
しかしそれにはいくつかの制約条件が存在していた。私は自分のサイトのアクセス解析結果をメールで自分宛に送信している。それをJavaで書いたプログラムで集計するわけだが、これをやろうと思うと、メールはテキスト形式で保存されていなければならない。しかしたいていのメーラーは独自のフォーマットでしかメールを保存してくれないのである。
そうしたものがないだろうか、、とあれこれ探したあげく一つだけ無料で、かつテキスト形式でメールを保存してくれるプログラムが見つかったので試してみた、、が途端にいくつかの問題にぶつかり乗り換えを断念した。それでなくても、この無料プログラムの使い勝手は私の好みにどうにもあわない。何カ所かで同様の意見を読んだことがあるが、メーラーというのは頻繁に使うプログラムであることも手伝って人の好みというのが結構如実に現れる。そして
「どうにも好きなメーラーがない」
と思いあぐねた人は自作という道を検討し始めるのである。
これは一つには前述の無料メーラーが実は小さなプログラムの寄せ集めであることを発見したせいでもある。つまり面倒な送信、受信処理を一から自分で作る必要はない。うまくやれば、それらをコントロールするプログラムだけをかけば結構なメール環境が手に入るかもしれない。
それとは別に私にはもう一つ動機があった。父は家族や友達とのコミュニケーションにメールを活用している。私がStanfordにいた10年前には、ワープロ機上で使えるNiftyserveのメールプログラムで時々メールを送ってくれたものである。しかし今やそのワープロ機も寿命を迎え、父が使うのはiMac上のOutlook Expressである。
しかし父に使い方を教えるたびに
「なんて使いにくいんだ」
という思いを新たにすることになる。たとえばメールの一覧が表示されている小さなタイトルをクリックすると、名前や、受信日時でソートができる。これは確かに便利な機能だがが、意図せずそのタイトルをクリックしてしまうと
「あれ、いつのまにか一覧がくしゃくしゃになっている」
とあわてるわけである。
プログラム制作者の立場からすれば
「それは便利な機能ですから、ぜひマニュアルを読んでください」
ということなのかもしれないが、面倒は面倒である。もっと機能を単純化して、父上でも、というかパソコンなどさわりたくないと思っている人でも簡単に使えるようにならぬものであろうか。そう考えるとGraphical User Interface と呼ばれているもののいくつかの構成要素はそれほど使いやすくもないことに気がつくのである。新しいメールを書こうと思うと新しいウィンドウが開く。しかしウィンドウとはなんだ。今まで見ていたものはどこへ行った。そしてこれを閉じるにはどうすればいいのだ。ドラッグ&ドロップとはなんだ。マウスを押したままマウスを動かすなんてことが果たしてやりやすいといえるのだろうか。これをやりたいのだけど、、何?ポップアップメニュー?それ何?ああ、ここを押すとでてくるのね。あら消えちゃった。
そう考えていると最近Appleが発表したいくつかのプログラムが頭に浮かんでくるのである。iTune, iDVDなどはどちらもウィンドウが一つしかない。またボタンは大きくすぐにさわれるところに配置されている。こうしたメーラーができないものだろうか。
そんなことをつらつらと考えていた私の前に現れたのが、このPB/IB、それに無料のメーラープログラムである。幸いなことに後者はソースコードが公開されており、誰でも開発に参加できるようだ。これは一発がんばってみるか。
さて、そう考えるとさっそくあれこれやり始める。まずはCocoaと呼ばれるMac OS X での新しい環境の勉強だ。この環境はNext のNext Stepをベースにしており、本来の記述言語はObjective - Cである。何だそれは、と思う人も多いだろうが、オブジェクト指向がCに導入された黎明期に時々名前だけは聞いてはいた。とはいっても中身は何もしらない。サンプルソースをちょこっとながめてみたが、何のことやらさっぱりわからない。名前に”C”という文字が含まれているのだがどちらかと言えば別の言語に近いのではなかろうかと思う。(どうやらSmalltalkに近いようだが)これをマスターするのはなかなか骨のようだ。
さて、幸いなことに、Cocoa上ではJavaも使えるようになっている。もちろん全部Javaで書いてもいいのだが、Mac OS X上で使える便利な画面の部品を使うと思ったら、どうしてもCocoa + Javaというプログラムの書き方を学ぶ必要がある。しかしここは一念発起。
そう決意すると早速本屋に向かう。その名もCocoa + Javaとかいう本が売り出されているのだ。半ば買う決意を固めてぱらぱらとめくる。するとどこかいやな予感がしてくる。スクリーンショットがふんだんに取り入れられたその本は確かに読みやすそうだ。しかしどうにも内容が広く浅い。ツールの使い方が懇切丁寧に書かれ、Javaの概要まで書いてあるのだが、Javaのことはあらかた知っているし(本当は知らないのかもしれないが、自分に必要なことは知っている)ツールの使い方も最初の一歩さえ分かればあとはマニュアルを見ればなんとなかなる。そして裏表紙にある値段をみれば3800円である。
これはいかにも高い。そして今までにも何度か新しい環境、言語を学ぼうとしたときのことが思い出される。結局役にたつのは、サンプルプログラムをたくさん載せている本とか、その目的がはっきりしている本なのである。こういう総花入門書は最初に一度だけ読んでその後2度と読まないことが多い。それにしてはこの値段は高すぎる。
そう考えると私はその本を書棚に戻した。幸いなことにCocoa + Java でのプログラミングを解説してくれているサイトが二つ見つかっていた。あのサイトの情報に頼ってみよう。それでだめだと解ってからこの本を買っても遅くはないだろう。
そう決めると、今度はこの二つのサイトを読んでみる。最近ADSLによる常時接続環境にしたので、疑問点があれば、すぐにアクセス。さらにわからなければ検索エンジンを使ってアクセスできるのがいいところである。まずは一つ簡単なサンプルプログラムを作ってみる。正直言って私は結構驚いた。
Interface Builderというのは、画面上でボタンとか、リストとかの部品を貼り付け、画面に関する部分のプログラムを自動生成するツールだと聞いていた。これが発表された当初はこうしたツールは珍しかったのだが、今ではたいていのプログラミング環境についてくる。一番最初にJavaを使おうとしたとき、Visual Cafeにもその機能があったのでさっそく使ってみた。しかししばらくしてこれは使い物にならない、という結論に達した。一度配置をするのは確かに簡単だが、そのうちプログラムからでなくてはいじれないことをどうしてもやりたくなる。でもってプログラムを修正しようと思うと、ツールからはき出されたコードはとても読みにくい。ツールの都合で大量のコメントが挿入されており、ここはいじるなとか書いてある。そこを自分の手でいじってしまうとこんどはツールで扱えなくなる。結局ものの数日でそうしたツールには見切りをつけた。
であるからして今度のInterface Builderにも大して期待はしていなかったのだが、これは使える。なんといっても画面上のテキストやボタンとプログラム中の変数、関数をつなぐのが簡単なのがよい。画面上で線を延ばしてつなげばはい、おしまい。これをJavaで全部書こうとすると、やれListnerやらやれ内部クラスとかとにかく面倒である。おまけにInterface Builder がどんなコードを生成しているかは私には見えないのである。であるからしていじりようもない。機能は今のところ不足を感じないから自分でいじる必要性にも迫られない。つまりユーザーインタフェースの一番上の部分をうまくかくしてプログラムで使えるようにしてくれるわけだ。
あるいは人によっては
「自分が知らないコードが作られているといやだ」
というのかもしれないが、私はそんな考えはみじんも持たない。私が目指すところは
「楽して楽しい生活」
である。面倒なコードをツールが作ってくれて、かつ私がさわれないところでちゃんと面倒を見てくれるのであれば、それはまことに結構。
などと感心することしばらくの後、メーラーの構想を具体化すべくInterface Builderであれこれ画面上に部品など配置してみる。しかしそうして配置してみるともっとちゃんと考えなければならないことがあれこれ見えてくる。そしてしばらく嘆息する。メーラーというのは単純に見えるがなかなか面倒なプログラムであるなあ。これはなかなか道が遠そうだ。そう思うとやるきが途端にしぼんでいく。
かくのごとくメーラープログラム作成構想に半ば挫折しかかった時、ふいに別の構想が頭に浮かんだ。
注釈