麗しの青林檎 -Marine & Silk-

AN OLD & A NEW MAC A NEW LEGEND ~だって俺、MACだもん~

ズブのド素人によるプログラミング挑戦記録(6) ~HSP編1~

2007年04月18日 | プログラミング
 さてさて、とりあえずXcodeをインストールして軽く使ってみたわけですが、プログラミングのプの半濁点並の知識すらない私には「適当にパーツをドラッグする」以上のことをしようとしてもその後がさっぱりわかりません。ここでふと脳裏に蘇る常套句、「基本に立ち返る」。つまり、私が今したいことは「『時代の旅人』というゲームの移植作業」なわけですから、じゃあとりあえずその『時代の旅人』はどういうプログラム言語で書かれているのかまず確かめて、それを理解することからはじめてみましょう、ということですね。その言語が理解できればあとは、オブジェクティブCだのジャバだのという言語ではどういう風に書けばいいのかを調べてXcodeを使って置き換えて行けばいいわけですよ、おそらくは、うん。やはり急がばまわれですよ、うん。たぶん、きっと。

 というわけで『時代の旅人』がどうやって(何を使って)作られたのかを配布ページでチェックしてみますと、そこには「HSP3」と書かれています。DLする際にもちろんこのページは一度見ていたはずなんですが、無知な私はその時この名前を一切知らず、ただ「びじゅあるなんとかだとかCなんちゃらだとかっていう(私の記憶におぼろげに記憶されている)奴じゃないんだ、ふーん」と思っただけで、特にそれについて深くは調べなかったんですね。今更ながら、じゃあHSPってなんなんだということで早速公式サイトへ飛んでみますと…


 なんとっ!!! そこにはちゃんとMac版もあるではありませぬかっ!!!

 こういうもんってWindows専用だろうとばかり考えていた私にとってはまさに寝耳に水、茫然自失、一瞬後には狂喜乱舞ですよ。よくよく見てみるとまだベータテスト版でバージョンは2.55で、しかもクラシックOS用ではありますが、もしこれがOSX用だった場合私の野望(『時代の旅人』をMac、出来ればOSXで遊べるようにする)はもうそこで終了してしまいます。せっかくXcodeをインストールしたんだし、まずMac版HSPで移植してクラシック環境で遊べるようにし、その後XcodeでOSXネイティブのCocoaアプリを作ればいいわけですよ。うん、そうだ、そうしよう。 

 『時代の旅人』はサンプルソースコードがサイトに公開されていますがメッセージ等は略されています。そこで開発者のNampoさんにお願いして完全なソースコードを送って頂きました。もしかしたらこのソースにちょっと(フォントをMS ゴシックからOsakaにするとか)手を加えてMacでコンパイル(?)とかいうことをするだけでもうオッケーなんじゃないでしょうか。そんな淡い(否、ドス黒い)期待に胸を膨らませつつ、早速HSPをインストールしてみました。

 まず、「index.html」をブラウザで開いてざっと目を通します。専用の(Windows版では同梱されている)テキストエディタはMacにはないからコンパイルは云々…実行の仕方…Windows版との互換性…改行コードやフォント…なんとなくわかった気になったら(オイ)、早速「初心者のためのHSP入門(biginer/index.htm)へ。

 うおぉおおお、凄い! こ、これは素晴らしい!!! これならわかる、わかるよっ!!!

 メッセージ表示は「mes」もしくは「print」、画像を呼び出すのは「picload」、でもそれだと一瞬で終わってしまうので「stop」を書いておく…こりゃ簡単だ。なんだかBASICっぽいなぁ(なんと言っても私は以前書いたように一応ベーシックならちょっとは齧ったことがあるんです。遠い遠い昔にですが)。実際にソースを書きながら一通りステップを進めるだけでかなり「わかった気に」なりました。因みにこの時はたしかMacOSX標準のテキストエディットを使用してソースを書き、拡張子を.asにして、エンコードはとりあえずUTF-8で保存して、それをクラシック環境下のHSPでコンパイル・実行(#)していました。あとでこれがややこしい問題に発展していくんですが(苦笑)、とりあえずこの時はこれで動いてしまいました。

# マニュアルHTMLに方法が書かれていますが(私には)少しわかりにくかったので、私のやっている方法を詳しく説明しておきます。まず、エディタ(なるべく多機能なもの)でソースを書いたら拡張子を「.as」にして保存。それを「hspcmp」と同じフォルダに置き、「hspcmp」をダブルクリックしますと下記のような窓が出ます。



 ここに「.as」で保存したファイル(例えば「tatoeba.as」の名前(tatoeba)を入力して「OK」をクリック。すると「tatoeba.ax」というファイルが出来ます。ここで私は「hspmp」を終了させてしまいます。この時保存するかどうか聞かれますが私は「Don't」を選択しています。下のConsoleとかなんとかはよくわかんないので触ってません。
 で、その「tatoeba.ax」を「HSPMacPPC」で開けばプログラムが実行されるんですが、クラシック環境下ではアイコンにドラッグしても上手く開きません。ファイルを右クリックして「このアプリケーションで開く」で選択するか、「tatoeba.ax」を「start.ax」にリネームして「HSPMacPPC」をダブルクリックすれば開けます…がもっと楽な方法があるのかも。ご存知の方教えて下さい。現在私は「start.ax」にリネームする方法を採用しています。もう慣れたので右手にマウスを持ったまま片手(左手)でstartとさっと打てるようになりました(苦笑)。


 最後に、このHSPについてちょっと雑感を。私がこの言語(開発環境)を「素晴らしい!」と判断した理由は、開発者が日本人であるとか日本語の解説サイトが多いとかそーいうことはありますが(苦笑)それよりもなによりも、とにかく「可能な限り多くの人に門戸を開く」という姿勢が見られることです。マニュアルのインストールガイドに、(以下引用)

(前略)

HSPが目指したものは、オールドスタイルなパソコンのシステムです。

(中略)

ここには、オブジェクト指向も構造化もありませんが、思った順番に書いてもいい気軽さがあります。そして、小規模なプログラム開発には、それもまた一つの道かなとも思います。

HSPは決して万能なシステムではありません。もっと高度なことや大規模な開発をインタプリタでするのであれば、VisualBasicやJavaといった言語の方が向いているでしょう。そんな高級な言語を使うまでもないちょっと した処理に、HSPが小回りをきかせられたらいいなぁ…と思うのです。 (引用終わり)



 という作者おにたまさんのメッセージがあります。まずこの文章に痺れました。
 また、たまたまHSPをインストールした直後に「HSPファンブックBlog」というブログを発見したんですが、ここの11月09日の記事にご注目。このブログを運営されているのはおにたまさんではなくHSP関連書籍を書かれているうすあじさんという方ですが、需要の有る無しに関わらずちゃんとMacユーザーのことも考えてくれていて、ここでも「万人に門戸を」という姿勢が感じられます。

 私が何より嫌なのは Windows ユーザー(←広義の意味での)が Windows 以外のことを全く気にしないことですが、同様に MacユーザーがMacのことしか考えたがらないのもうんざりします。とにかくこのHSPの関係者の頭には、「どうせMacユーザーなんてAppleScrptだとかHyperCardだとか、OSXならXcodeをみんな使うんだろ。Macユーザーなんてほっとけほっとけ、どうせHSPなんか使わないし興味ないよ」というような考えが微塵もなさそうなところが素晴らしい。曲がりなりにもMac版があり、OSX版の開発も進められています。残念ながら2003年以降新しいベータ版が配布されておらずOSX版もまだ完成してはいませんが、とにかくこの姿勢が嬉しいじゃありませんか!
 
 少し話が脱線しますが、日曜プログラマー(素人・初心者プログラマー)にとってそもそもプログラミングの意義・目的ってなんでしょう。必要に迫られて、つまり「こういうアプリケーションが欲しいんだけど無いから自分で作っちゃえ!」という人、あるいは知識をつけていずれはプロのプログラマーになりたいという人、さまざまだと思いますが、その他に単純にプログラミングそのものが好きって人もいます。プログラミングという行為で何かまだこの世に無いものを作ったり自分の考えたものが考えたとおりに動作したりするということに、創作意欲をかき立てられたりその欲が満たされたりするわけです。私はどうしてもプログラミングという行為自体にそれほどの魅力を感じることができないんですが、思うにこれは「創作・制作することへの欲望」を満たしてくれる趣味が私には他に色々と(模型製作・Mac弄り・作詞作曲・楽器演奏・HP制作・ブログ執筆・絵を描く、など)あるからなんじゃないかと。もちろんプログラミング自体の面白さや楽しさも、それを楽しいと思う人の気持ちも理解できるんですが、私の場合は厳密に言うと、「好きだからやっている」というわけではないんですね。また、ありがたいことに現在必要なオンラインフリーソフトは既に充分ネット上に溢れていますので、わざわざ自分でプログラミングしてオリジナルなアプリケーションを作りたい(作らねば)と思うようなこともありません。何度もくり返し書いてますが、私がプログラミングをする目的はあくまでも「Windows用のフリーゲームソフトのMacへの移植」であって、それ以上の崇高な目的や思想などは一切ありません。Cocoaによるアプリケーション開発やObjective-Cをもっと世に広めたいだとか、本格的に勉強してプロのプログラマになりたいだとか、そーいうことは全く持ってどうでもいいわけで、何より「MacOSXでしか動かせないCocoaアプリケーションを作ること」や、「現状MacOSXという狭い世界でしか将来性のなさそうに(私には)思えるObjective-Cを勉強する(Objective-C以外の言語では何もプログラミングできない人になる)」という行為は、先に述べた私の考え方と矛盾してしまいます。Xcodeを用いたObjective-CによるプログラミングというのはOSXに最適である反面、OSX以外のユーザーのことは一切考えなくなってしまう危険性が(私には)あるわけです。

 とは言うものの…例えば私が仮にOSXネイティブで動く(OSXでしか動かない)オリジナルなアプリケーションを作って配布するとします。すると当然私の信念に基づき、今度はWindowsやLinuxで動くようにそのアプリを移植しなければなりません。「Windowsユーザーのためにアプリを作ってやるようなことはしないもんね、けっ」という姿勢は嫌いです。それは嘘ではありません。ありません…が、じゃあWindowsに移植するというただそれだけのためにわざわざPC/AT互換機とOSを買って、開発環境を整えて、移植作業をするかというと、はっきり申し上げてそんなこと絶対にやりません(Windows用のアプリケーションを作っている人で「Mac版も作ってあげたいんだけど…」という人は少なからずいると思いますが、そのためにはわざわざMacを買わねばなりません。してあげたいけど流石にそこまでは…というのが日曜プログラマの本音でしょう)。…さて、じゃあXPインストールマシンを誰かが寄付してくれるとしたら? …でもまぁまずやりません。だってめんどくさいもの。これは本音です。「Windowsユーザーのことなんか知らんもんね、けっ」という考え方は嫌いではありますが、そしてこれはタテマエではなくホントに嫌いなんですが、しかし「わざわざWindowsに移植なんてする気はないね、けっ」というのもまた偽らざる本音だったりするわけです。MacでしかできないことがあるためにMacを買う人が増えて、それでMacのシェアがあがれば嬉しいんですもん。あぁこの自己矛盾。

 …お気づきになられた方もいらっしゃるでしょう。「Windows用のフリーゲームソフトのMacへの移植」のみを私がプログラミングの目的にしている理由がコレです。自分でオリジナルなアプリを作ったらMac以外のユーザーのことも考えねばならない、考えたくないのは本音だが無視するのは流儀に反する。OS間の垣根を取払い、架け橋となるのが理想である。クロスプラットフォーム万歳! 言うのは簡単ですがやるのは面倒。しかし、自己矛盾を起こすことなく理想を追求できる道があります。それが「WindowsのものをMacに移植」です。「Windowsでしか」遊べないゲームを無くしMacでも楽しめるようにする、そしてそのゲームは既にWindowsでは遊べるのだからWindowsユーザーを無視することにはならない。これが、「作りたいアプリが特にあるわけでもなく、そもそもプログラミングという行為自体もあまり好きではない私が、それでも強いてプログラミングという行為をやってみようと考えた時に、目的として掲げることになったもの」です。

 さて、話はHSPに戻ります。私の場合崇高な目的も思想も無いので、とにかくWindows用フリーゲームソフトがMacで動きさえすればどんな言語でもいいわけです(言語どころかダブルブートでもDarwineでもクロスオーバーMacでもパラレルズでもなんでもいいわけで、それが可能となった時点で私のプログラミング意欲はハイさようならです)。本格的にプログラミングを勉強してしっかりかっちりしたアプリケーションを作りたいならやはりCだのC++だのObjective-Cだのを学んだりオブジェクト指向の考え方を身につけたりだとかした方がいいんだろうと思いますが、「とっつきやすく初心者向き」で「簡単なゲームを作ったりするのに適している」、そして「(一応)Mac版もある」HSPは私にはぴったり、少なくともとりあえず一通り学んでみるのは充分意義深いことのように思えました。HSPでゲームを作っても現在はまだ「OS9ユーザーのことしか考えていない」ことになりますのでやはりOSXネイティブで動くようにXcodeで移植してみたいとは思いますが、もしHSPのOSX版が出来たら私にはもうXcodeは必要なくなってしまうと思います。また、HSPには「HSP Let」という関連ソフトがあり、コレを使うとなんとHSPで作成したプログラムをJavaアプレットにすることができるそうです。Javaであれば基本的にOSの心配は要りません。すばらしー! とにもかくにも「万人に門戸を開きまくり」な印象で私にとっていかにHSPの好感度が高かったか、おわかり頂いたところでいよいよその世界に足を踏み入れることになります…

<HSP編その2>へ続く。


 上の文章は「はじめてHSPを知った時の興奮っぷり」をできるだけ忠実に再現して書いているため、かなりベタ褒めな内容になっています。既に一月ばかりHSPと格闘していますが、Mac版HSPでプログラミングしていこうとするとやはり苦労が多いです(Mac版では実装されていない命令や機能があるため、一から作るのではなくWindows版のプログラムを移植なんてことをしたい私のような人には特にツライです)。しかし、今後Mac版HSPのバージョンがあがって使えない機能・命令がちゃんと使えるようになったり、OSX版が完成するのであれば、ほんのちょっとしたアプリやゲームを作ってみたいという初心者プログラマや日曜プログラマにとってはXcodeにもまさる魅力があるだろうとは今でも思います。










 余談ですが、「HSPファンブックBlog」の動画で一番真ん中に座っていらっしゃるおにたまさん、「アンタはドッペルゲンガーか!」と画面に向かって思わず突っ込んだほどワタシにそっくりでビビりました…(声は似てませんが)。これがHSPに好印象をもったもう一つの理由だったりして。