Java2C++。
Javaで書いたクラスを一つ一つC++に移植していくとなかなか興味深い。
thisがポインタ扱いだったり、superが無かったり、constはほぼfinalと考えてよさそうだったり、中身は整数のようだけど一応bool型のtrueもfalseもあったり、Javaでのabstractってのもかなり得体が知れなかったけどC++ではvirtualで負けず劣らず得体が知れない名前である上に実装が美しくなかったり、色々あるものの、基本的には今のところJavaで使ってる機能はC++にも揃ってて、JavaってC++をベースにしてるんだなぁと再認識したりする。
でも、コンストラクタからコンストラクタを呼ぶと、コンパイルは通るけどJavaとは別の動きをする、という罠にしばらく引っ掛かった。C言語と思えば確かに納得できる動きではあるけど…。
C++でしばらく遊んでみる。
試しに今までJavaで書いたクラスをC++に移植してみたりする。C++って、限りなくC言語に近いようなので色々と落とし穴にははまったものの、それなりに少ない労力で移植できるみたい。
Javaの予約語のほとんどはC++から持ってきてるから当然といえば当然かもしれないけど。
関数追加するたびにヘッダファイルに追加するというスタイルも、慣れてしまえばこれはこれで見晴らしがよくていいのかも。
C言語になくてC++で追加された参照型引数のおかげで、JavaでMethodの引数にクラスを書いてるような部分の移植も最低限の修正で済むというのもありがたい。まぁ、Javaもポインタ演算ができないってだけで、ポインタ(というかアドレス)の概念は当然持ってるから結局やってることは同じなんだろうけど。
そんなこんなで、気をつけるのは、関数記述の時にクラス名を忘れない、さすがにfinal修飾子は無いので削除したり#defineに置き換える、ってくらいで、後は割とすんなりと移植できそうな感じ。
C++って、言語仕様としてはかなり汚いけど、そのぶんC言語ライクにmemcpyとかなんでもありあり、ってことを考えると、このバランスは落とし所としては妥当なのかも。
週末に久々に大須へ。
シグマリオンIIの実物を初めて見る。なかなかいい感じ。1年前にこれが出てたら考えたかも。
でも、Palmに比べて値段がかなり高いのよね。
GAME CUBEのWAVE RACEなんとか、も初めて見る。うーん、あんまりインパクトが無い。まぁ別にグラフィックの綺麗さでゲームを評価する気もないけど、新ハードの同時発売ソフトにしては「さすが最新マシン!!」っていう印象もない。
ゲーム機のグラフィック性能も行くとこまで行っちゃったから、見た目ではそんなにハード間に差が出ないような状況になったんだろうけど…。
個人的には、たかがゲーム機のスペックとしてはDream Cast程度の性能があれば必要充分と思うのだがなぁ。
で、とりあえず今回の主目的であるVC++の書籍を物色して買う。近所の小さい本屋ではさすがに品揃えが貧弱なので。
新しい言語に手を出してそれに関する書籍を物色する、というのはなかなか楽しいもので、こーゆう感覚はJavaで遊び始めたとき以来である。
とはいえ、さすがにJavaを始めたときみたいに「はやり始めなので有象無象の本が出て、何を読めばいいかさっぱりわからない」っていう状況は今のVC++にはないので楽といえば楽、つまらないといえばつまらない。
仕事でVC++を使うって話がちらっと出たので、試しにVC++を使ってみる。マイクロソフト製の開発環境を使うのは、MS-C Ver6.0以来だ。
なんだかんだで今まで避けて通ってきたC++の世界だが、実際に触ってみると「あー、C言語ベースだと確かにこうなるよねぇ」って思うことしきり。やっぱりJavaのシンプルで簡単な世界がいいよう。マイクロソフトもとっととC#に移行してくれよう。
まぁ、言語仕様がつぎはぎだらけでどうしようもないのは仕方ないとしても、オンラインドキュメントの質の低さも気になるところ。
部分ごとに記述レベルが全然違ったりリンクが乏しくて欲しい情報にさっぱり飛べなかったり。SunがHTML形式で無料で提供してるJavaのドキュメントのほうが遥かに読みやすいし、情報が探しやすい。
Javaのドキュメントも今までさほど便利とは思ってはなかったけど、このドキュメントを見てしまったら、Javaのドキュメントの質がいかに高いかと言うことを思い知る。
で、しばらくプログラムを書いて遊んでみた感想は、「マイクロソフトの手のひら(MFC)の上で遊ぶぶんには非常に楽だけど、そこから1歩でも出ようとするととたんに厳しくなる」という事前の予想通りのものであった。
MFCでできることって限られてるみたいだから、真面目に遊ぼうと思ったらWin32 SDKとかDirect Xとかを使わないと駄目なんだろうなぁ、きっと。
JavaのAWTって必要最低限のものしか用意されてないけど、逆に言うと必要最低限のものは揃ってたんだけどなぁ。
そういえば、ThinkPadを修理に出して帰ってきてからそろそろ1ヶ月が経過する。
修理から戻ってからはさすがに順調に動いていて、不具合は一度も再現しないのでよかったのだが、今回の件でIBMのハードウェアに対する信頼度は少し下がったなぁ。
ファミ通を立ち読みした感じだと、もうそろそろ『鉄拳4』にジュリアが出そうだったので、近所の店に行ってみる。
で、確かに出ていた。いい加減こーゆう時限式キャラ出現システムはやめて欲しいなー。自分の使用キャラがいないとさっぱりやる気にならないものなー。
というわけで、使い慣れたCHANシリーズの最新型、さっそく使ってみる。
今回、ステージに"壁"が存在するってことはなんとなく知ってたが、実際にやってみるとなかなか面白い。CHANシリーズは昔から敵の背後に廻り込むというコマンドがあるのだが、今までのだだっ広い平面で闘うぶんには"敵の背後をとる"以上の意味は無かった。しかし、今回は積極的に使う意味があるのは嬉しい。
久しぶりにプレイする鉄拳、懐かしくてよかった。
でも、壁が存在する以外、今までのシリーズと何も変わってない、っていうのはいいんだか悪いんだか。ステージに傾斜が存在するのもあんまり意味が無いというか、単なる足かせにしかなってない気がするし。"壁"とか"傾斜"とか、どうも小手先の追加要素にしか見えなくて、もうネタ切れなのかなーと感じたり。
ハードウェアが世代交代しても、ゲームの内容そのものはそれほど変えられないのかなぁ。グラフィックがいくら綺麗になってもプレイする側からすると何も嬉しくないのだがなぁ。
とりあえず、ここしばらくプレイする機会が無かった鉄拳シリーズをプレイできたということに満足して終わる。
さて、スーパーロボット大戦なんてものをプレイしてるとしきりに"ザクII"というモビルスーツが出てくるけど、見た目がザクと変わらず「確かザクIIってもうちょっと違う形だったような…」とか思っていた。が、PS2関連の雑誌を立ち読みしてるとどうやら昔"旧ザク"と呼んでたものが"ザクI"という名称になってて"ザク"と呼んでいたものが"ザクII"になっているように見える。
現在のオフィシャルな名称はそうなってるのかー。ずいぶん昔に"ザクIII"のプラモデル作ったような気がするが、あれの名称も(もし今も存在するなら)変わってるのかなぁ。
現場で作業中に、OPダウンロード待ちで暇だったのでPC-8801エミュレータを起動して、大昔の自分の作業ディスクを起動したりする(^^;。
で、Magical DOSって今見てもよくできてるなー、って感心することしきり。overlay module(今風に言うとDLL)とかcacheとかディレクトリ構造概念の存在とか、N-88 DISK BASICベースのくせに非常に高機能である。にもかかわらず、DOS Kernelの大きさが8KB足らずってところも素晴らしい。
でもって、Magical DOSの使い方というかコマンドは、頭は忘れてても手が覚えてるので、これまたびっくり。
しかし、10年前に自分の書いたプログラムの逆アセンブルコードなんか眺めると、何をやってるかさっぱりわからんな(^^;。逆アセンブル結果でコメントが無いから、余計に。アセンブラ(PASS 88)の作業ディスクもイメージ化しとくべきだったか。
まぁ、当時書いたBASICのリスト眺めてもコメント文が当然ながら半角カタカナだったりして、ほほえましいというか、ノスタルジーにひたるばかりなのだが。
で、試しにBASICで簡単なプログラムを書いてみると、これまたN-88 BASICの文法は体が覚えてるので笑っちゃったり。
でも、今、BASICのリストを眺めると、よく昔はこの環境でプログラム書いてたなーと思う。行番号があって引数もローカル変数も無くてブロックif文も無くて、うーんがんばってたなぁ。
最近、どっぷりとはまってしまっているのは、『スーパーロボット大戦A』。例によってGBAのソフト。
実はこのシリーズに手を出すのはこれが初めてだが、思いっきりのめりこんでしまって、今まで手を出さなかったことに対するちょっとだけの後悔と、今までこんな危険なソフトに手を出してなくてよかったという安堵感があったりする。
Gガンダムとか、ナデシコとか、内容をさっぱり知らないタイトルや、出典すらわからないキャラクターも出てくるけど、ガンダム0083が入ってるのが嬉しい。
ゲーム内容については今さら書くことも無いんだけど、一見シミュレーションゲームに見えるけど実はそうじゃないというのが実際にプレイして初めてわかった。今まで外見にだまされてきたんだなぁ。
ROMカートリッジ媒体ってことで、非常にテンポよくさくさくと進むし、BGMのメロディーはPSG音源でリズム音(ドラムや掛け声(笑))はPCM音源というまっとう(というか安易)な構成だけど結構良くできてて、気持ちよくプレイできる。これで、GBAのヘッドフォン出力の電気ノイズがもっと小さければなぁ…、いつも思うことだが。
で、こんなのやってると久々に0083を観たくなる。手元にもう無いんだけど。
0083といえば、劇中に出てきたC言語ソースファイルを見て、「こんな時代(っていつ?)にまでfarとかnearとか残ってるんかい!」って当時笑った覚えがあるが、Windows全盛の現在でも既にfarポインタなんて過去の遺物でしかないよな。
でも、ワークステーションで書いたソースを現行バージョンのVisual C++に食わせるとfarとかnearって名前が予約語としてはじかれるらしいから、未だにMS-DOSの亡霊のごとく存在してるらしい。さすがマイクロソフト、過去の資産への互換性に対する意地はNECなみだな。
まぁ、MS-DOS時代のPC-9801は言うに及ばず、パンチカードや紙テープ、磁気コアメモリ(coreファイルの実物)なんてものが未だに現役で動いてるところもあるくらいだから、マイクロソフトある限り予約語"near"も残り続けるのかな?
ニナさんが月面のアナハイム社でMS-DOS時代のC言語ソースをメンテナンスしてた、ってのもあながちありえない話じゃないかも。
っていうか、世間的には過去の遺物となったAda言語を使って現在もがりがりと新規にプログラムを書いてる私がここにいるし。
Adaコンパイラも、昔のCPUだと例外処理なんかは物凄いアセンブルコードを吐き出してたらしいけど、今のCPUだとtwとかtwi命令一発で実現できてるから、やっとCPUのアーキテクチャがAdaの言語仕様に追いついてきたんだ、って感じがする。あんな大昔にこんな言語を作ったアメリカにはやっぱり勝てん。
しかし、仕事が忙しくなると、現実逃避日記の更新レートが上がるんだよな(^^;。
抜けるような秋の青空の一日。
朝早くから現場入りして疲れたのと、悲しいくらい爽やかな天気だったので、昼休みにそこら辺の芝生に寝っころがって雲を眺める。風が強いので上空の雲の流れも速い。
雲の上をゆっくりと動く小型機の機影や、ちょっと向こうの滑走路から民間のジャンボジェット機が飛び立ったり、自衛隊のヘリが飛び立ったりするのをぼーっと眺めてると、どこからともなくF15が飛んできて滑走路に着陸して目の前までタキシングしてくる。
で、エンジン止まってキャノピーが開くと、後部座席から降りてきたのは若い女性パイロットだ。
そこで、「わー、笹本祐一の小説の1シーンみたいだー」と思った自分がちょっと情けない(^^;。
今まで個人的には「どーでもいいハード」と思っていたPlayStation2。
いきなり、キラーソフトが発表されてびっくり。ここで、『SWITCH』を移植しますか…。
PS2買う予定ないのは変わらないけど、「どーでもいいハード」から「ちょっと気になるハード」に昇格。
確かに、今のゲームの風潮に『SWITCH』は結構マッチするかも。
でも懐かしいなー。こーゆうところを押さえるとは、セガもなかなかやるなー。いいぞ、もっとやれ。
やっぱり売れ筋路線だけじゃなくてこーゆう変なソフトが出る、というのもちゃんとした(?)プラットフォームの条件だと思うなぁ。
#でも、フルポリゴンでリアルな『SWITCH』だったら嫌だな。