見出し画像

[#46] PowerPlantから離れられない本当のわけ

初出: MacPower 2004年 5月号

以前、Xcodeの話をした時に、「もうCodeWarriorを使うのはやめる!」と宣言してしまったが、あれから4カ月、いまだに使わなくてはいけない状況が続いている。まったくもって面目ない。しかも新しいパージョンに更新しないぞ、とまで言っていたと思うが、これも更新してしまっている。言い訳になるが、理由はクライアントサイドの要求だからなのだ。プログラミングを仕事に飯を食っている以上、これは断るわけにはいかない要求なのだ。MacPower誌で宣言してしまったんですけどー、なんていう理屈は通らないのだ。……すみません。

事情がわからない人にはある疑問がわくだろう。なんでいまだにCodeWarriorを要求するのか?Xcodeを使えばいいのではないか?それは、Classic環境のサポートがあるからなのだ。Classicなので当然Cocoaとは無縁、そうなれば手として考えられるのは2つ、CarbonEventを使って全部スクラッチで作るか、これまでどおりPowerPlantを使うか、である。前者も魅力的な案なのだが、過去の実績が少なくクライアント側でも不安を覚える。結局使い慣れたPowerPlantというところに落ち着き、CodeWarriorが選ばれていくことになる。

結局オレのXcode移行計画を邪魔したのは、偉大なるPowerPlantということになる。こいつはいったい何者なのか?ちょっとあらためて考えてみたいと思う。ひと言で言えば、PowerPlantはクラスライブラリである。つまり、たくさんのC++のクラスを定義したライブラリ集ということだ。しかし役割としてはアプリケーションフレームワークという用語で認識されている。アプリケーションの雛型としての役割である。

この2つの単語、クラスライブラリとアプリケーションフレームワークは混同して使われることが多いが、本来はまったく別の考え方だ。先に述べたとおり CarbonEventは、アプリケーションフレームワークとしての機能を十分に備えているが、クラスライブラリではなくC言語ベースの普通のライブラリだ。別にクラスを使わなくてもアプリケーションフレームワークは作れるが、柔軟性を持った仕組みを作るにはクラスを使うのがいちばん効率がいいというだけのことだ。逆にCocoaのFoundationKitは、クラスライブラリであるがアプリケーションフレームワークではない。なにかしら(必ずしもアプリケーションである必要はない)のひな形となっているわけではなく、便利なクラスの集まりというだけだ。

PowerPlantが現在の名声を得るきっかけとなったのが、紛れもなくこのアプリケーションフレームワークとしての役割であることには異論はない。しかし現在オレらが離れられなくなっているのは、どうもそのためではないように思う。実際の話 CarbonEventに移行するのはそんなに難しい話ではないのだ。CarbonEventは最近のAPIらしく設計もよくできていて、ドキュメントもそれなりにまとまっている。理解するのにそれほど労力を必要としているわけではない。ではなぜ使わないかと言えば、オレの場合は、初期のバージョンのClassic環境での挙動にかなり問題があったからだ。CarbonEvent を使えばClassicアプリケーションを作らなくてよく、Carbonアプリケーションに一本化できるぞ、というメリットがあったのだが、それが実現できなくなってしまうからだ。

ではCarbonEventも安定してきた現在もPowerPlant を手放せないのは何故か[*1]。アプリケーションフレームワークの価値を除いて残るそこにこそ、我々がPowerPlant から離れられなくなった理由があると思う。それは純粋なクラスライブラリとしてのPowerPlant の価値なのだろう。例えば文字列や配列といった基本的なデータを扱うクラスであり、ストリームやビューといまった仮想的で便利な概念であり、ToolboxのAPIに適合してきた例外(エクセプション)の扱い方であり、Macでのプログラミングの集大成がそこにあるからなのだと思う。

同じことを自分で書くこともできる。必要とされている基本機能はどのプログラマもさほど違うことはないだろうから、みんなで持ち寄って作ることも可能だろう。今までの経験を持ってすれば、PowerPlant から学んだ概念やテクニックをPowerPlantのソースを見ないで実装することも、さほどの苦労を必要とせずにできる。ではなぜ進まないのか。

理由の一つは、メンタリティの問題ではないかと思う。すでにあるモノと同じモノを作るという作業は、あまり意欲がわくことではない。ましてや、もう片方ではCocoaまであるのだ。PowerPlantを使わなくなったあとはCocoaに移ろうと思っていたプログラマはオレだけではないだろう。いざ始めようとしても、いまさらC++のクラスライブラリを再度実装し直す必要はないと感じてしまう。さらには多くのMacプログラマにあるだろうPowerPlant に対する敬意も、どこかでやる気を鈍らせている。

実は3年前のWWDCでは、Apple ClassSuites(ACS)という新しいクラスライブラリの計画が発表されていた。C++のための基本クラスライブラリであった。今考えると、まさにオレが現在求めているモノであったのだ。そのときは自分でも一瞬盛り上がったものの、イヤ待てよ、次はCocoaに行くのに必要なのか?という疑問もわいた。その後もさほど興味を示さずにいたら、残念ながらACS自体が、次の年のWWDCでは姿が見えなかった [*2]。

結局、次はCocoaという意識が常にあったので、PowerPlantに変わる基本クラスライブラリの必要性を常に軽視してきたのだが、どうもC++と手が切れる日が来ることはないのではという気がしている。そして、真剣に基本クラスライブラリを作り始める時なのではないだろうか、と思い直している。どうだろうか。一緒にやってみませんか?

バスケ(http://saryo.org/basuke/)
今年は花粉症が楽でだいぶ助かりました。仕事も山場を迎えていたので、これで花粉症に悩まされていたら、どうなっていたことやら。そんな中、急遽引っ越しをすることが決まり、さらにバタバタしてます。しかもプロ野球は開幕、阪神は好調、あーもう困った(笑)。もっと酒を飲みたいぞー。

[*1] PowerPlant を手放せないのは何故か - クライアントの要求以外の理由で、ということです(笑)。
[*2] 姿が見えなかった - http://developer.apple.com/tools/macapp/masources.html にて、ソースコードは落とせます。

この記事が気に入ったらサポートをしてみませんか?