日曜プログラマへの道(邪道編)


新しい記事ほど最初のほうにありますぅ。(手抜きですぅ。)


すべての眠れるBasicプログラマに告ぐ!(97.8.3)

かつて8bitパソコンが全盛だった頃、プログラミング言語といえばBasicだった。Basicなら触ったことがある、というかつてのパソコン少年は思ったよりも多くこの世の中に姿を潜めている。
しかしBasicはその後、「汚いプログラムしかかけない」だの「Basicで勉強を始めた者はまともなプログラマになれない。」だのとさんざんに叩かれ、プログラムといえばCで組むのが当たり前、C++で「オブジェクト指向」するのが軽い優越感を持って語られ、Javaぐらい知っていなければ時代遅れ、という世の中になってしまった。
そして開発環境が進化していく一方で、プログラミングに対する敷居はどんどん高くなり、もはや初心者が気軽に手を出せるような代物ではなくなってしまった。
かつてはパソコンを持っている誰もが電源を入れれば現われるBasicインタプリタのコンソールでひとことふたこと魔法の単語を打ち込めば「コンピュータ」を自分の意図通りに動かせる、という実感を持つことが出来た。たとえ自分が偉大なプログラマではありえないにしても、誰もが「可能性」という夢を紡ぐことができた。

今はどうか?特にこのMacintoshの世界では?
HyperCardをさわってみてもFaceSpanを使ってみても心の中の何かが満たされないのはなぜか?
所詮「プログラミング」とは一部の雲の上の人達だけのためのものなのか?

そんなお寒いMacintoshワールドに今、すごい奴がその姿を現わそうとしている。
そいつの名前は、CrossBasic
Andrew Barryが心血を注ぐ今世紀最後のBasicだ。

今すぐ、このホームページCrossBasicをダウンロードし、自分の目で確かめて欲しい。
そこには真にVisualなレイアウトエディターが、使いやすいコードブラウザーとクラスエディターが、あなたを待っている。

あまりの進化に「これがBasicか?」とあなたは面喰らうかもしれない。しかし、コードを書き込んだ次の瞬間にRunして動作を確かめることのできるこの気軽さはまさにBasicそのものだ。
それでいてCrossBasicはインタプリタではなく完全なるコンパイラである。
68k、PowerPCネイティブのどちらか一方、またはFatバイナリとしてスタンドアロンアプリケーションを生成できるだけではなく、CrossBasicJavaアプレットを生成することも可能である。
つまり68kを含む完全なMacintoshワールドのみならず、Javaを実行できるすべてのコンピュータをターゲットにできるのだ。

アツい何かが体の中に甦ってくるのを感じはしないか?そして、もう一度夢を見たくはないか?

CrossBasicは$30(US)のシェアウェアだ。しかし今のところ機能制限のようなものは一切ない。ぜひダウンロードしてその素晴しい機能を知って欲しいと思う。そしてもし気に入ったならこのCoolなプログラムを作り上げたAndrew Barry氏に感謝するため、必ずシェアウェア代金を支払おう。(実際この値段はCrossBasicの能力を考えれば安すぎるぐらいのものだ。そこにいるHyperTalkerよ、製品版HyperCardなんか絶対買っちゃだめだ!)

'97.8.3現在、DR1r14が最新バージョンであるが、バージョンアップは2週間から1週間に一度というめまぐるしい勢いで行われている。(実際DR1r13とDR1r14の間は4日しかなかった。)
最新版を手に入れたいなら頻繁にホームページをチェックしたほうがいいだろう。

「こんなモノができても、質の低いゴミみたいなプログラムが増えるだけじゃないの?」と口の悪い奴は言うかもしれない。
しかし、言いたい奴には言わせておけ。
いつでも新しい世界は混沌の中から生まれてくるものだ。


SC Basic おそるべし。

SC Basicってみなさんごぞんじでしょーか?
少し前のMuON Info-mac Selectionで紹介されたフリーのBasicコンパイラなんですが、紹介記事をfj.sys.macでみてすぐに私はダウンロードを試みたわけです。

ところが、どうしたことか、どのAMUGのミラーサイトに置かれている圧縮ファイルはどれも壊れていて、正常に解凍できなかったので、私はダウンロードをそのときはあきらめました。
そして、最近までSC Basicのことは忘れていたのですが、ふと思いだしてAMUGからもう一度ダウンロードしてみたところうまく解凍できたではありませんか。

そこで、今回はこのSC Basicをすこし紹介したいと思います。

私は最初は、圧縮ファイルの長さが100Kb程度でしかないのに、Basicコンパイラである、との紹介文が書いてあったので、「ホンマかいな。」と多少眉に唾つけながら、「どうせ、実際の開発には使えないデモ版か何かだろう。」と思ってダウンロードしたのですが、解凍して出てきたものは、実際に開発に使えるかどうかはともかくとしても、アプリケーションをちゃんと生成できる、たかだか150Kb程度の大きさのコンパイラだったのだから驚きました。

サンプルリストと簡単なマニュアルを含めたフォルダ全体でも300Kb程しかありません。う〜む、小さい。

仕様としては浮動小数点の使えない整数型のBasicで、通常使うinteger型は32bit長になっているようです。現在のバージョンでは可変長の文字列は使えず、宣言時に最大長をきめる固定長の文字列を使います。
行番号を用いない構造化された「今どきのBasic」のスタイルでプログラムすることができますし、Cのように構造体を宣言でき、ToolBoxとのやりとりを簡便に行うためのByte,Word,Char,Str255などの型も用意されています。

Oop拡張はされておらず完全な手続き型のプログラミングスタイルでプログラムを組むことになりますが、CでMacのプログラムを組むことのできる人なら同じ様な感覚でプログラムを組むことができるのではないでしょーか?(でもCを使える人はこんなBasicは使わないよーな気もするが。)

大きなアプリケーションを作るのはつらそうですが、なんといってもタダ、そしてツール自体がコンパクトなところが私の心をくすぐります。

興味があればVectorのAMUGのミラーから取ってこれます。
しかし本家ホームページに置いてあるこっちのほうがすこしバージョンが新しいようです。

ところで、この本家ホームページにはSC Basicを拡張しビジュアルなGUIの構築、イベントハンドリングの自動化、ToolBoxのフルサポートなどの機能を盛り込んだ製品版のCrimson Basic Development Systemが紹介されています。Demoバージョンも置かれていたので、さっそく試してみたところ、私のところでは、ウインドウを閉じるたびにMacsBugに落ちてしまってまともに使えませんでしたが、ちょっと見た感じではかなりVisual Basicを意識しているように思えます。
Future Basic IIの対抗馬になるかどうか今後が楽しみです。


今、Macで求められている開発環境とは

上の見出しはパクリだったりする。
MacFan(6月1日号)のWatch&Viewが元ネタだ。
この記事に書かれていることは、ふだん私が感じていることとかなりオーバーラップしていて、読みながら思わず涙目で「そーだ、そーだ」と頷いてしまった。
読んでいない人のために簡単に内容を書くと、Macにはプロ(Code Warrior等)と初心者(HyperCardやAppleScript)の間を補完すべきツールがすっぽりぬけ落ちている、という指摘である。
もっとはっきり書けば、WindowsにおけるVisual Basicに相当するものがMacにはないよん、ということである。
昨今のWindowsにおける開発環境の充実ぶりはMacユーザーの私からみるとまさによだれ垂れまくり状態だったりする。Visual Basicしかり、Delphiしかり、である。
Visual BasicってHyperCardのパクリみたいな奴じゃないの?と思うMacユーザーは多いわけで、実際、ビジュアルに部品を配置して、部品の属性をいじることでプログラムしていくスタイル自体は同じなわけだけど、Visual Basicのほうはどんどん進化して今ではActiveXのコンポーネントも作れるなど「使える」ツールであることはWatch&Viewに書かれているとおりであるらしい。
HyperCardも製品版にはさまざまな機能を実現するためのツールが付属しているし、AppleScriptもFaceSpanをつかえばビジュアルに部品を配置しながら複数のカラーウインドウをもつスクリプトを書くことができるけれども、どちらもとにかく実行速度が遅い!
少し凝った作業をさせようとするとあっというまに能力の限界がやってきてしまう。
自分のアイデアを実現するために、ではどんな開発環境があるのかと周りを見渡したときMacユーザーの目にはいるのはいきなりCなのだ。HyperCardやAppleScriptからCへのジャンプは相当厳しい。しかもCを覚えるだけではなく「ToolBoxも勉強してね。」とInside Machintoshを見せられたら最後、その分量の多さ(と値段)に目を白黒させて絶望的なため息つくしかない。「素人は容易には手をだせない領域なのだ。」と。
思えば、初めてHyperCardでスクリプトを書くことを知った潜在的Macプログラマ予備軍の多くは、こんなふうにして、マルチメディアタイトル作成の方面へ転んでいったのではないかと考えてしまう。
では、どんな開発環境が望ましいのか?
現在、HyperCardからのジャンプに苦労している私の独断で書くと、以下のようになるかな?

スタンドアロンアプリケーションを作ることのできるコンパイラ言語であること。
これは、実行速度が十分速いものであって欲しい、ということのほかに、インタプリタ型の場合、実行のための環境が整っていないとプログラムを走らせることができないという事態が往々にしてある。せっかくPerlやJgawkで有用なスクリプトを書いてもPerlやJgawk本体を持っていない人が多いため気軽に他人に渡すことができないのはちょっぴり悲しい。(自分で使う分にはすっげぇ便利なのだけれど)

オブジェクト指向言語であること
今さら手続き型でcase文なりif文なりを多用したイベント駆動プログラムを書く気にはならないしオブジェクト指向がイベント駆動としっくりくるのはわかっているのだから各種イベントの発生はオブジェクト間のメッセージのやりとりで通知してほしいのである。

★アプリケーションを作るためのフレームワークおよびウインドウとかボタンとかポップアップとかファイルの入出力とかのクラスが多数用意されていてToolBoxを直接いぢらなくてもよいようになっていること。
上のオブジェクト指向であること、というのと関連する事柄だけど、イベントループを処理してオブジェクトへのメッセージ送信に変えてくれるとかは勝手にやってて欲しいし、画面上に配置されるさまざまな部品のたぐいもクラスを用意してて欲しい。

インターフェースをビジュアルに構築するツールが付属していること。
Visual Basicなどに触れているからこの条件は真っ先に挙げられる条件のようにも思えるが私の内部ではかならずしも必須の条件というわけではない。上の3つの条件のほうがはるかに重要だけど、やはりソースコードを自動生成してくれるのは便利と思う。

安価(できればフリー)で入手可能なこと。
かなり勝手な要求ですが・・・( ^ ^;)
HyperCardのなにが偉かったかというと、やはりすべてのMacにバンドルされていた(過去形)ということだと思うのである。昔に比べると各種言語の値段は格段に安くなったけど初心者がちょっとためしてみようと思うには敷居がまだ高いかも。
一念発起して金をだして開発環境を手に入れたはいいが、挫折なんかしようもんならその人は一生プログラムのことなんか顧みなくなるのではないかと考えてしまう。
気楽に手をだせるように敷居は低ければ低いほうがよい。フリーウェアしか作れないけれどとっても安い開発環境とかがもっとでてくるとよいと思う。

じつは、Javaには秘かに期待しているところがある。JavaやC++やObject Pascalのメソッド呼び出しの表記法はオブジェクトにメッセージを投げているという意識が希薄で、単に関数呼び出しにしか見えないところが、ちょっといや〜ん、な感じではあるのだが、それはそれとして、将来のMacOSにはJavaを実行する環境が標準で付属するらしい。
そこでAppleにお願いしたいのは、Javaアプリケーションやアプレットを作ることのできるビジュアルなツールをやはり標準でつけて欲しいと思う。そして、標準で付属するツールではフリーウェアしか作れないというような制限を設けて製品版やサードパーティ製品と住み分けてみたらどうだろうか。
プラットフォームに依存しないで実行できるJavaのプログラムをMacに付属のツールで作ってみることができるというのは、HyperCardをこのまま飼い殺しにするよりはずっと明るい未来のように思えるのだけれど。

開発ツールには何を選ぶべきか?

Macでなにがしかのプログラムのようなものを作りたいと思った時、ユーザーのとることのできる選択肢はきわめて限られている。

もし、これまで一度もプログラムを組んだことがなく、そもそもコンピュータはいかなる仕掛けで動いているのだろうか?というレベルから始める場合、やはりHyperCardからはじめるべきだろう。

(邪道編)と銘打っている割には王道の答えだが良くも悪くもMacには他に選択肢がない。ただし決して製品版を買ってはいけない。

AppleのFTPサーバーからフリーでダウンロードできるHyperCard 2.2 Liteを手に入れたらMagicコマンドですべての機能が使えるように準備を整えよう。
あまり厚くない解説書を買ってきたら変数だとか、制御構造だとかどんなプログラム言語を使う上でも共通の概念を習得しよう。

そして、一番大切なことは、いったい自分はどんなものを作りたいと思っているのか、そこをはっきりさせることだ。
ゲームを作りたいと思っている場合、リアルタイムの動きを要求されるアクションゲームなどは速度的にHyperCardではむずかしい。
紙芝居的なものならほとんどプログラムを組む必要がない。でも白黒でないグラフィックやもっと凝った動きをさせたいなら製品版のHyperCardなんかすっとばしてOMOやGreenやいっそのことDirectorなどのオーサリングツールを買ったほうがいいだろう。

住所録だとか名刺管理だとかデータベース的なものや家計簿などなら市販のデータベースや表計算ソフトを使えば望む機能が以外に簡単に実現することも多い。

DOSのバッチ処理のようなことがしたいと思っているなら AppleScriptがある。これも決して製品版のScripter's Tool Kit を買ってはいけない。確かにFace Spanは美しいインターフェースをAppleScriptに付け加えることができるが、インターフェースが欲しいだけなら、HyperCard LiteでもHyperTalkの代わりにAppleScriptでスクリプトを作成することができるのだ。

テキストファイルの加工などの処理がやりたいなら、jgawkやMacPerlを使う方が簡便だったりする。これらはフリーで入手できる。

昔のパソコンはBASICを内蔵していた。その頃を知っている人なら、BASICでプログラムが組みたいという人もいるだろう。
Future Basic IIはスタンドアロンアプリケーションを作成できるなかなかよくできたMac用のBasicだがこれを紹介するのはあまりにも王道的なので、邪道を進むわれわれとしてはフリーのchipmunk-basicを入手しよう。
グラフィック描画命令が豊富でスプライトも使えるなかなか懐かしい雰囲気のインタプリタ型BASICだ。インタプリタではあるがPowerPC NativeアプリケーションなのでPowerPCではなかなか侮り難い速度で実行される。さらにclass命令などのオブジェクト指向の拡張もなされている。(おまけのような感じではあるが)

以上にあげたのはFuture Basic II以外はインタプリタとかスクリプト実行型のプログラミング言語である。
やっぱり、コンパイラでもってスタンドアロンのアプリケーションが作りたい、という場合はどうするのか?

Cを勉強するのが王道だがこれはつまりInside Macintoshを読んでToolBoxを勉強しなさいという意味でもある。オブジェクト指向は生産性を向上するはずだが、C++はCの学習を前提とした解説書がほとんどで初心者がいきなり勉強するには敷居が高いし、すでにCでToolBoxに習熟しているプログラマにとってはC++のクラスライブラリの使い方を今さら覚えるのは負担以外の何者でもない。しかもC++のオブジェクト指向には落し穴がいっぱいあるので、結局「オブジェクト指向なんぞのどこがええんじゃ、ボケぇ!」ということになりがちだ。

どう考えてもこれは話が逆で、本来の正しい姿としては、プログラムを習いたての初心者はオブジェクト指向言語でクラスライブラリを使いながらサクサクとプログラミングをし、効率を重視される処理に対してはプロは直接ToolBoxを操作する、というものではないかと思うのだが。
どうもC++を使っているのがすべての元凶のような気がしてならない。

邪道を進むわれわれは、当然、金を払ってCコンパイラを買うようなことはしない。
われわれがおススメするのは、豊富なクラスライブラリをもち多重継承もサポートするオブジェクト指向言語、Mopsである。当然これもフリーで入手可能である。ベースになる言語がFORTHだというのも邪道テイストたっぷりで、なかなかいい感じである。



戻る