沖に流れて、眺めていたら     〜意外に多いかも? 開発者予備軍

 CodeWarriorに挫折して沖を流されているうちに、ここにたどり着いちゃった1人、mizuno-amiです。

 NS Basic島にいると、色々なものが見えてきます。その中で「まだプログラミングはしたことないけど、やってみたいなぁ」という人が意外に多くて驚かされます。
 ということで、プログラミングの具体的な話の前に、日曜プログラマ予備軍をNS Basicに巻き込んでみよう、というお話です。
 そもそも「プログラミング」と聞いても、何をどうするモノなのか、なにかしら専門的で不安を抱かせる言葉ですね。そこで、とりあえず何か見てみようと書店などに足を運び、プログラミングの入門書などに目を通してみる訳です。すると、

 「コンピュータに作業手順を教えるものです」

などと書かれています。そんなことを言われても、その時点では「はぁ、そうですか」と言うしかありません。次に、

 「コンピュータは、人間の言葉でなく、専用の言語しか理解しません」

と書かれていたりすると、「私、母国語すらまともに理解できないのですが……」と不安になったりします。もう少し進むと、

 「C言語やBASICなどがあります」

とあるのに、

 「コンピュータは機械語しか理解できません」

とあったりします。「もう、何のことやら……」ですね。何はともあれ、一般論と具体論が交錯する入門書の第1章ですが、今回は、NS Basicの特徴について「間接的な部分」から語りつつ、プログラマ予備軍の方を誘ってみましょう。
 まず、BASICという言語ですが、基本的にBASICで作ったプログラムはそれ単独で動作できないのが普通です。大抵の場合は「ラインタイム」と呼ばれるファイルが必要になります(ランタイムを組み込んで、単体で動作するプログラムを作ることは可能ですが、サイズが……)。例えば、

 「このプログラムは、○○○ランタイムファイルがないと動きません」

と説明ファイルに書かれていて面倒だと思ったりしますが、その上「ランタイムは、××からダウンロードしてください」とあると、「なんだかなぁ」と思ったりします。
 しかし、このように面倒なランタイムの存在は、お気楽開発者にとって、とてもありがたい存在なのです。例えばPalm OSですが、日本でメジャーなバージョンを並べてみるだけで、2.0、3.0、3.1、3.5、4.0、4.1と、こんなにあったりします。CodeWarriorなどで、これらに対応したプログラムを作ろうとなると、SDKと呼ばれるキットをそれぞれ別途入手し、またバージョン間の違いによる機能の違いを考慮したり、各バージョンの実機で試してみたくなります。
 通常はバージョンが上がっても「上位互換」で、今までのアプリケーションは問題なく動くはずですが、例えばWindows 98 SEとWindows Me、Mac OS 10とMacOC 10.1ではどうでしょうか? もしかして、泣いた人が多いかもしれませんね。
 それではということで、各バージョン毎の環境で確実に対応していたら膨大な作業量になりますし、名もないプログラマがサイトで「試してください」と言っても、なかなか声が集まらないでしょう。
 でも、BASICならこれらの面倒な作業をランタイムが吸収してくれています。動作させたいPalm OSのバージョンがどうであれ、NS Basicのランタイム「NSBRuntime.prc」が動作する環境であれば、それだけで「対応完了」になり、難しいことを考える必要がありません。正確に言うとNS Basic社は、難しいことを考えてランタイムを作っているわけですが、使う側はそれほどの苦労をしなくても良くなっています。
 そして、最新のNS Basic/Palm Ver.2.1.0(2月14日リリース)は、既にPalm OS Ver.5に対応しているとアナウンスされています。一部開発者には賛否両論のあるPalm OS Ver.5ですが、そういう論争とはあまり無縁な開発環境にあるわけです。
 そのため、Palm OS Ver.5を登載した機種が発売されても、既にプログラムは使えるわけですし、新たに覚えることも少なく、今まで作ったものも無駄になることがないでしょう。たとえ本体のCPUがARM系に変わっても、NS Basicユーザーには大きな問題ではありません。

→ あまり時間の取れないお気楽プログラマにはウレシイお話ですね?
  クラッと来ましたか?

 「無駄にならない」と言えば、BASICという言語自体は、

 「処理が遅い」
 「構造化が難しい」
 「ポインタが扱えない」
 「オブジェクト指向からみれば」

などと、なぜか専門家の方からは酷評を受けてしまう立場にあります。また、日本では「プログラム作るなら、Cじゃないとねェ」というような暗黙の威圧感が漂っていて、ちょっと顔を出しにくいようなトコロがあります。
 しかし、そんな状況でも、パソコンが普及して以来、今までずっと生き続けています。それどころか、アプリケーションの簡単なマクロ機能としてBASIC風の言語を採用することが少なくありません。
 有名なところではMicrosoft Officeの一連の製品群があります。これには「Visual Basic for Application」、いわゆる「VBA」が登載されており、BASICの知識で(一応)マクロなどを作ることが可能です。この例が適当かどうかはよくわかりませんが、少なくともBASICの知識が、VBAにも使えるわけで、日曜お気楽プログラマな方々には、とっても魅力的ではないかと思います。
 逆を言えば、VBAが扱える人ならその知識の応用でNS Basicも扱うことができるわけですし、「実はちょっと昔BASICを」という方もとっつきやすいのではないでしょうか。
 もちろん、CodeWarriorの知識の方が、WindowsにもPalmにも有用であることは間違いがありませんが、それはOSに近い所のチョット深いお話です。もしあなたが、日常的にパソコンのアプリケーションを使っている程度の立場だとすれば、どうでしょう?

→ 覚えたことを無駄にしたくないお気楽プログラマにはオイシイ話でしょ?
  クラクラッと来ましたか?

 多少プログラミングの話からズレちゃいましたが、ズレたついでにNS Basicのサポートのお話をしてみましょう。使っていく上で、サポートは重要ですからね。
 まず、現在のNS Basicは、Ver.2.1.0ですが、国内で発売された当時は、Ver.1.06でした。この頃からのユーザーが多く集まるのが「NS Basic/Palmなかよし掲示板」(http://bbs1.parks.jp/04/nsbasic2/bbs.cgi)で、ここに集う皆さん、多くのバージョンアップを経験されています。
 しかし、この方々は1.06から1.12に至るまで、バージョンアップには一切料金を支払っていません。無断で使っているわけではなく、基本的に無料なのです。そして、1.12から2.0に上がる時に、さすがに若干のバージョンアップ料金が必要でしたが、続いての2.01から現在の2.10に至るまで無償バージョンアップが続いています。
 本格的にプログラミングで生計を立てている方なら、サポート料を払ってでも必要なバージョンアップなのですが、財布に負担をかけられない日曜プログラマには、このNS Basicのバージョンアップ料金はありがたいことです。その上、「バージョンアップの告知はサイトでするので、勝手に取っていってください」などという態度ではありません。必ずバージョンアップの連絡と、変更点を記載したメールが手元に届く親切さです。
 サポート体制については、NS Basic社の公式サポート掲示板というのがあります。英語なのですが、本社には日本人のサポート員の方がおりますので、日本語で気軽に問い合せることが可能です。そのため発生した問題のほとんどが、前述のなかよし掲示板とサポート員の方を使って解決できます。

→ Mic○osoftのサポートが標準だと思っている方、ステキなお話でしょ?
  クラクラッと来ましたか?

 このようにサポートの話を書くと、既存のユーザーの方から質問がくるかもしれないので、ここでもう少し詳しくサポートのお話をしておきましょう。
 まず、最初にパッケージで購入したらユーザー登録を行います。このユーザー登録は、英語でも日本語でもサイト上から登録することが可能です。登録が完了すると登録のメッセージが届きますが、この時点ではバージョンアップの連絡は届きません。
 これはユーザー登録とバージョンアップの連絡が別の連絡系統になるためで、この時点ではバージョンアップのお知らせが届かないわけです。ちょっと不親切のようですが、この場合でもサポートの方へ依頼すると早くて3時間、遅くても3日程度で、直近のバージョンアップの通知を送ってくれます。
 その後は基本的にバージョンアップ時に連絡が届きますが、若干遅れることもあるようです。なお、この体制については「なんらかの対策を取るように改善を予定している」という声も頂きました。
 ちなみに、NS Basic社はカナダにあるため、時差の関係上、いろいろなタイムラグを発生することがあります。ちょっと気長に待つのがコツですね。
 「本社がカナダ? では、買うのも大変かなぁ……」。そんなことはありません。まず、NSBasic社のサイトでも直接買うことができますが、日本国内の大手パソコンショップや代理店などで「日本語版」を販売しています。「日本語版」というのは、日本語のマニュアル(「ハンドブック」と呼んでいます)がついている製品で、名前の通り日本のユーザーに向けて発売されているパッケージです。
 直接購入すると約150US$なので、15,000〜20,000円といったところでしょうか。CodeWarriorの値段に比べると、ちょっと手が出しやすいお値段でしょう。
 実はちょっと裏技的な購入方法があります。一つ前のバージョンであるVer.1.xxは約100US$、日本では9,800円で販売されていました。もし、在庫でこのバージョンを扱っている店があれば、そこで購入して、ユーザー登録をします。そして、「2001年5月1日以降のVer.1.xxのユーザー登録者は、Ver.2.xxへの無償でバージョンアップできます」となっていますので、サポートの方などに連絡して無償でバージョンアップを受けることができます。Ver.2.xxのパッケージが発売されてからちょっと時間が経っていますので、Ver.1.xxのパッケージを見つけることは困難かもしれませんが、こういう手もある、ということを覚えておいて損はないかもしれません。

→ サポートや購入について、不安がちょっと減ったでしょう?クラりと来ましたか?

 さて、ここまで読んだだけで、「ちょっと触ってみようかなぁ」と思った方がいらっしゃるかもしれませんね。確かに、この手のソフトは使ってみないとわかりません。駅前留学の外国語学校などでも体験入学はありますからね。そもそもNS Basic自体、開発環境としてはそれほど高価ではありません。なので、買ってしまって、使わなくなっても、ぶら下がり健康器ほど惜しくはないでしょう。
 しかし、お金をかけてわざわざ無駄にするのはどうかと思います。そこで、同社はNS Basic/Palmのデモ版を用意してくれています。これはVer.2.xxベースになっていて、(当然ながら)サポートはされませんが、NS Basic製品版とほとんど同じことができます。
 実はNS Basicはユーザー登録がされていないと、作成したアプリケーションが5日しか使えなくなるのですが、このデモ版も同じように、作成したアプリケーションに使用期間の制限がつくようになっています。そして、嬉しいことに、作られたアプリケーション側に制限がかかるだけで、機能的な制限はありませんので「試してから買いたい」という方には嬉しい制度ですね。
 もちろん、インストールから環境整備まで、言葉で書けば数行で済んでしまうことは、前回のコラムで空魚屋さんが述べられていますので、そちらを参考にしてください。
 デモ版のURLはhttp://www.nsbasic.com/pub/Palm_files/updates/NsbasicDemo.exeです。デモ版ですのでサポートはありません。予め承知の上、お使いください。

→ これだけ試せて、タダなんですか?ちょっと試してみたくなるでしょう?

 では「NS Basicを使うと、どんな事ができるの?」ということですが、ちょっと視点を広くして、Palmデバイスについて考えてみましょう。
 Palmデバイス上で動作するアプリケーションを作るわけですから、明らかにその範囲を越えて作ることはできません。したがって、Palmデバイスに飲料を冷やさせたり、料理を作らせたり、掃除をさせたい場合は、冷蔵庫や、電子レンジ、掃除機などを買ったほうが賢明です。多分、これは、CodeWarriorをしても、不可能でしょう。
 ま、VISOR Treoのように電話ができるようなものはあるかもしれませんし、Springモジュールが肩揉みしてくれることもありますが、基本的に、そのデバイスの範囲を越えることは不可能です。

→ プログラミングに過度の期待を寄せてはいけません!

 さらに、NS Basicで作ったアプリケーションは、ランタイムがないと動作できません。このことは、ランタイムのできる範囲を越えたプログラムは作れないことを意味しています。つまり「Palm OS上で動いているランタイムの上で動いているアプリケーションしか作れない」と言うことになります(ややこしい言い方ですね)。
 これは、一方のCodeWarriorやGCCなどのPalm OSに直結しているような環境とは大きく異なります。こちらは、Palm OSに関する知識が必要である反面、Palm OSができる範囲、すなわちPalmデバイスができる範囲のことが全て可能で、さらにそれを超えて英語版のPalm OSを拡張して、日本語化することだって可能です。

 NS Basicで作成 ≦ ランタイムの機能 < Palm OSの機能
 CodeWarriorで作成 ≦ Palm OSの機能

 もちろん「できることが多い=覚えることも多い」ということで、下手をすると沖に流されてしまうわけです。
 このように比べてみると「できないことが多そう」なNS Basicですが、実際、どのようなことができるかは各ユーザーの方が作られたアプリケーションを参考にするのが一番でしょう。言語仕様などを見ていてもよくわかりませんので、これらのアプリケーションがとても参考になります。通常は「このアプリケーションは、NS Basic/Palmを使って作成されました」と書かれていますので、判断できますし「ランタイムが必要」と書かれていてもわかりますね。
 それが自分で作ってみたいアプリケーションにも応用できそうだったり、それで十分だったりしたら、何も最初から難しいことを覚えなくても「とりあえずBASIC」という選択肢もありなのではないでしょうか?
 一応、NS Basicでも、Palm OSに対して直接的に対話できる「API」というモノを取り扱ったり、今までにない機能を追加・拡張する「共有ライブラリ」と言うモノがリリースされていますので、標準のNS Basicの機能に不満を持っても、ある程度のステップアップは可能です(「ステップアップ=覚えることが多くなる」なんですけどね……)。

→ 重要なのは「NS Basicが何ができるか?」ではなく、「あなたが何を作りたいか?」です

 しかし、一番気になるのは、アプリケーションの実行速度ではないでしょうか。「BASICは遅い」と噂されますが、これはBASICそのものの宿命でもあります。これは、BASICプログラムの特徴、ランタイムの存在が大きな要因で、BASICで作成したアプリケーションは、このランタイムと二人三脚をしながら動作しています。そのため、どうしてもスピードが出ません。まぁ、ここまで読まれた方なら、その原因がある程度予想していた答えかもしれませんね。
 BASICでも、ある程度はプログラムの作り方で速度の改善はできるのですが、あまり何も考えないでCodeWarroirで作ったプログラムのほうがずっと高速に動作するでしょう。
 例えば、かなりの速度を要求されるアクションゲームなどは、画面の描画はもちろん、各種の計算も大量にあります。この手のゲームは、下手に作れば、CodeWarriorでも遊べないゲームができてしまうほどですので、BASICではお手上げです。画面の動きが派手ではないようなアプリケーションでも、大量のデータを高速に処理する必要のあるモノなどは、残念ですがNS Basicには不向きです。
 こうやって書くと「大丈夫か? BASIC」と思うかもしれませんが、少なくとも、人間が考える速度よりはNS Basicの方が遥に高速に処理できることは確かです。

→ あなたの得手不得手と同様、BASICにも得手不得手があります

 さて、BASICについて、本質とは無関係の部分ばかり断片的に述べてきました。これを読んで「BASICプログラムなら、できそうだ」と思えるような名文が書ければ良いのですが、どうも、アヤシいですね。しかし、少なくともBASICプログラミングを始めるための不安が少しでも減っているようなら嬉しいです。
 最後になりましたが、選択に悩んでいるようなら、どちらかを選択してください。

 1)もし、自作プログラムで稼いでみたいとか、大作を作って公開したいと思ったら、それなりの時間と努力と覚悟が必要です。
 2)もし、あなたが自分で使うためのアプリケーションを作る趣味のレベルであれば、NS Basicはオススメの選択肢です。

 一番重要なのは「覚えられるかな?」より、「とりあえず、やってみよう!」と思う気持ちであることに間違いはありません。無料で手に入るツールを活かすのも、高価なツールを殺すのも使う人の気持ち次第です。まずは、はじめてみませんか?



copyright(C)2002 Hacker Dude-san all rights reserved.