麗しの青林檎 -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に好印象をもったもう一つの理由だったりして。

最新の画像もっと見る

8 コメント

コメント日が  古い順  |   新しい順
クロスプラットフォームなら (mit)
2007-04-19 01:58:09
WinでもMacでも(Linuxでも!)ってことなら、Flashなら如何でしょう?
AT互換機(Celeron2GHz)ウチに余ってるのがあるので良かったら使ってくれますか?
電源切断時にやや問題のあるMSIのM/Bなんですが。
それでも良ければ、WinXPのProも持ってきます。
Flashの開発用ソフト(体験版で1ヶ月期限付きだけど)もあるよぉ。
返信する
ほうほう (みぃにゃ)
2007-04-20 02:03:55
HSPの入門編読んでみたよ。

ほうほう、入門編に書かれている内容ぐらいなら、すぐにでもobjective-Cで同じことが出来ますね。
インタプリンタ言語で、割とわかりやすいやつだなHSPって。

ただ、入門編を読む限りではループ処理が「旗」(つまりこれはサブルーチン、Objective-CやJava風に言うならメソッドですな)に依存してるのがちょっとどうかなーって思ったけど。

順次、分岐、ループは、プログラミングの3大要素ですからね。
がんがってHSPの文法勉強して、その「時代の旅人」がどういう動きをしているのか解読してくれたら、Objective-Cに移植する手助けはできるかも新米。

返信する
>mit氏 (SeireiK)
2007-04-20 02:38:03
さっき電話で話したから書かなくてもいいんだけど一応(笑)。
だからね、この文章の主旨は

・プログラミングが大好きというわけではない
・それでもやるのは、WindowsゲームをMacで遊ぶため
・その目的を達成出来る最も簡単で効率の良い(無料の)方法を選ぶ(それさえ出来ればよい)
・自前のアプリは作る気がない

ということであって、「自前でクロスプラットフォームなソフトを(金出して開発環境を整えてでも)作りたい」なんてこととは全く対局の話なのよ。ゲームの移植に最適で簡単で金がかからなくて最も効率がよい方法がFlashだって言うならFlashでやるけどどう考えても最も遠い道な気が…。

でもXPマシンはディアゴのマイロボットにOS入れるためにどうしても必要なのでありがたく頂きます^^;。LinuxOSをインストールするためにXP or 2000(+シリアルポート)が絶対必要っていうのもなんだかなぁ…。

http://www.de-club.net/myr/
返信する
>みーさん (SeireiK)
2007-04-20 02:59:57
どもども。

>割とわかりやすいやつだな
でしょでしょ、私でもこれならわかります^^。
更に「Hello World ウィキペディア」で色んな言語の記述を見比べてみて、HSPの

print "Hello World"

の前後にごちゃごちゃと小難しい部分をくっつけてprintにfをつけたのが「本格的な」言語なんだなということが薄ぼんやりとわかってきた今日この頃です。

ループ処理が旗だとちょっと…ですか。確かに「時代の旅人」でもあっちいったりこっちいったりしますけど、その辺が(Ob-Cとかだと)もっとスマートに書けるようになるんでしょうね。などと今は想像するしかできないんですが。

それはそうともっと表の方にも顔だしてくださいよぅ(笑)。
返信する
Flash! (mit)
2007-04-20 06:29:12
読み違えてたみたいで あいとぅいまてーん。。。(ですよ。風)
たぶん土曜あたりに、そっちに持ってきますね。

ちなみにPHPは興味ない?BASIC的世界の延長で分かり易いよ。
http://php.s3.to/tt/

FlashやVisualStudio2005とかは、そういう世界とちょっと違うみたいで(まだ触りかけなのでわかってないんだけど)入りづらいです。インストールした開発環境内で、メニューを操作して・・・みたいなのは昔プログラムしたことなかったころは希望だったけど、いまは逆につらくて。AdobeのPremireで映像編集するのに近い感じというか。

エディタでコチョコチョ作れるほうが逆に入りやすくなってるいまの自分。
返信する
だぁ~かぁ~らぁ~ (SeireiK)
2007-04-21 01:51:05
なんど言えばわかってもらえるのよ~。
プログラミングは目的達成のための手段であってプログラミングという行為自体に興味が無いんだから当然PHPに興味を持つわけないでしょ~が~。目的と手段をすり替えるつもりも無きゃ手段を趣味にするつもりも全く無いよって散々書いてますやん。
PHPを学ぶのが「時代の旅人」を移植する一番簡単で手っ取り早い方法っていうんならやるけどって話。
返信する
りょーかーい (mit)
2007-04-22 07:18:03
生音と打ち込みの音楽製作には刺激を受けました。
スゴイ。あんなの作れるんだ!?

ブツはブジ届けられホッ。
ウチに転がってたアレなので、要らなくなったら捨てるなりしてねぃ。
返信する
あ、いけね… (SeireiK)
2007-05-28 00:56:48
レスころっと忘れてた(汗)。
生音と打ち込みというのは別に注目に値するところではなくて、Garegebandの分かりやすさとかそっちの方に注目してほしいところだったんだけど^^;。

生音と打ち込み、Logicを使ったプロのお仕事は以前紹介した豊橋が産んだカリスマギタリスト大橋隆志の動画を見るべし。

http://musicmaster.jp/specials/archives/2007/02/16-000001.php
返信する

コメントを投稿