-1ParaGRAPH
前部報の駒祭反省に間に合わなかったので今回送りになりました。 実は分科会反省も書いていなかったという説があるので, まとめて書くことにします。 別に前編集長による巨大部報を作ろうという陰謀に手を貸しているわけでは ありません :D 1
現二年生にプログラマが実は少ないことが今さらながら判明し, 駒祭出展企画が足りなくなるのではないかという危機が迫る。 そこで突然日吉部隊三人が集まり,作戦会議が開かれる。 そして決まった Project 826 の仕様はこんな感じ (当時のMLログより):
Date:Sat, 11 Apr 1998 16:16:37 +0900 (JST) -------------- Project 826 の概要について: 二次元+高さ概念のフィールドにおいて複数対複数のチーム戦闘を行うゲーム。 基本的には AI 対 AI の戦闘であるが,人間が参加できるシステムを開発する ことで駒祭にも対応する。AI の作成は開発キットを提供し,プログラミング初 心者でも参加できるものとする(1年生の参加を促す)。 プログラムはサーバ・入力・モニタ・AI のモジュール別に分割し,当たり判定 や移動などは全てサーバが管理する。サーバとの交信はテキストベースであり, 例えば以下のようになる: (00:00:00)[A1] 右 0.125 4.2 (00:00:00)[A2] 左 0.201 3.0 (00:00:00)[B1] 後 0.000 5.0 (00:00:01)[A1] ほげー (00:00:01)[A2] ほげー (00:00:01)[B1] ぷはー (00:00:02)[B1] おわー ([B1] logged out @ 00:00:02) もちろん,このログを後でサーバに食わせると,戦闘再現モニターができる。 ただし肝心の戦闘システムについては,これから決定する。 -------------
プログラミング系分科会とタイアップして 駒祭プロジェクトを一つ作ってしまおうという計画だったわけです。
上の計画が発表されたわずか九日のち,
突如計画はお流れの道を歩みはじめることになります。 私とわいりー氏が突如忙しくなり, Direct3D に精進するどころではなくなってしまいました。 その後の経過はわいりー氏の記事を参照してください。
一部にはその存在すら知られていなかった C++ 分科会ですが, 実は一応やっていました。 TACT 氏の情報棟活用分科会と並行して C++ 分科会を行いましたが, もっとも求めていた 「プログラミングを多少(BASIC etc.)経験したことのある人で C++ をやりたい人」という人がおらず破綻する結果になりました。 完全な初心者に文法から教えても無理であることを今さらながら思い知りました。 情報科学科の SPARC アセンブラの授業で言われた 「C はほっといてもみんないつのまにかできるようになるので授業では教えない」と いう言葉の裏返しが身にしみて分かります。
何事もそうでしょうが,特にプログラミングというのは
自分で興味をもって実践していかないと上達しないものでしょう。
自分で実践している人はわざわざ分科会なんて来ませんし,
その気のない人は分科会に来たって
プログラミングができるようにはならないでしょう(きつい言い方ですが)。
その中間の人がいないということは,
プログラミング系分科会の存在意義そのものが
問題になっているのではないでしょうか。
中学・高校と「毎年学祭にプログラムを出展する」というクラブに所属し, いま TSG でも同じことをやっていますが, この「プログラムを出展する」というスタイルがそろそろ限界に 来ていることを感じます。
部報 214 号で前編集長の壱氏が書いていたような気がしますが, 今の二年生は「趣味でプログラミングをする」習慣があった時代を生きてきた, ほぼ最後の世代だと思います。 1995 頃からアプリケーションのみのユーザが急増したと記憶していますが, それ以後の「軟派な」世代と,それ以前の「硬派な」世代の, ちょうど境にあたるのではないでしょうか。
東京大学に本拠を置いているから TSG はなんとか 「趣味でプログラミングをする人」を確保できているのです。 現に全国の高校レベルの「パソコンクラブ」はみな 「軟派な」クラブに「成り下がって」しまいました 2 3。 趣味でプログラミングができる新入部員の率は, 今後確実に下がると思われます。
硬派なプログラム展示は正統だと思いますし,
それが続いてほしいとも思いますが,
しかし部員の技術力があと何年持ちこたえられるでしょうか
4。
今年はむらき君の大活躍がありましたが,
失礼ながら他に来年,
プログラムの展示をしそうな人はどれだけいたでしょうか ---
また,来年の新入部員にプログラマがいるでしょうか。
そういう意味で, 今年の「たま。」「もぐぴん」は駒祭企画の新しい姿の一つであるといえます。 5 プログラミングをしない人がデータ作成でデザイナとして 出展するという形を取れば, プログラマが一人でゲームを作るよりもはるかにデザインがよくなりますし 6, 何よりも「プログラマ以外の人も出展できる」ことになります。 企画数は減少しますが, 今年流行した「ネットワーク対戦型」にすれば なんとか台数を増やしてカバーできるでしょう。 この線が一つの生き残り策かなと思った今年の分科会/駒祭でした。
なんか偉そうなことを書いたくせに, 駒祭で出展が最終日になるわ「Visual わいたくん」まで手が及ばなかったわの ぱらぐらふです。 どうもすいません。来年にはもしかしたら
を出展できるかもしれません。 7 覚悟しておきましょう>わいたくん
……それはさておき,今年の駒祭ログです。 Visual Scheme Editor 開発についてのみ書くことにします。 ほかはわいりー氏が 書いてくれましたので \texttt{:-)}
冬学期になるともはや駒祭は目前に迫り, 3Dシューティングなんて作っている時間はないという状態になってきました。 それでもいろいろ人に意見を求めて仕様を練ってはいたのですが, 駒祭二週間前になってついに断念し, TACT 氏・わいりー氏と 共同戦線を張ることになりました。 そしてぶちあがったのが Visual Scheme だったというわけです。
駒祭前夜に Visual Scheme 統合環境を見せてみんなを驚かせ, 勢いで Visual わいたくんを作ろうという計画でした。
ちなみにみなさんお気づきのとおり,この企画の新機軸さは
という点にあります。わいた君は必ず Visual 化されてしまうのです。
しかしわいた君はこの新機軸さを知り, 独自の企画を始めてしまいました。 みなさんご存じのとおり「スピ魅」です(嘘)。
Visual Scheme Editor の開発がやっと本格的に始まる。 順調に進み,インデント・キーワードの二種類の色分け&太字化・ コメント色分け・アンダーライン・行番号表示まで完成する。 その後使われることはなかったが,選択領域色分け・ ブレークポイント色分けも実装しておく。 WFC コントロールとして開発していたが, いつの間にかフォームデザイナで貼り付けられなくなっていることに気づき, 何度か書き直す。 Visual J++ のコントロールまわりは怪しい気がするが, しょうがないので開発を強行する。 作ったプログラムをインストーラ付きで 他のマシンに持っていったところ動作しなかったが, 見なかったことにする。
徹夜開発あけでマシンを梱包し, TACT 氏運転のレンタカーに載せる。 風呂に入った後,駒場に出撃する。 昨年度と同じくかけもち先のサークルが目の前正面の教室なので肩身が狭い気がする。 8
駒祭のためにTSGで追加購入した電源ケーブルやLANケーブルが, 実は自分のマシンと同じくレンタカーに載せたことに気づく。 305 のケーブルを回収に行くが 106 の配線には全然足りない。 レンタカー到着を待つ。待つ。来ない。来ない。来ない。
夕方,ケーブルが到着し配線が完了する。 家庭用の 3m 延長コードを10本くらい数珠繋ぎしているので 末端の電圧は 90V を切っていることだろうが, 日本の電化製品は優秀だからきっと大丈夫にちがいない。 台湾も香港もきっと優秀にちがいない。だから大丈夫だろう。
タイマコントロールの使い方をわいりー氏に教えてもらい, カーソルが点滅するようになる。 そのわいりー氏はどはまりしている様子。 TACT 氏は帰ってしまった。
106 の様子はというと,LAN に繋がるマシンが増え, 先日追加購入してきたLANケーブルの一部が, 実はリバースケーブルだったことが判明する。 結果,ケーブルが不足する。
明らかに一日目の出展には間に合わないので, とりあえず日吉に戻って出直してくることにする。
家庭用電気延長コードを数珠繋ぎしていた 106 の配線が破綻する。 分岐コネクタの内部ブレーカーが飛ぶのでガムテープで固定するが, やはり飛ぶ。 SCANDISKしている時間のほうが開発時間より長くなってきた上に 数珠繋ぎのおおもとが溶けそうな温度になってきたので, やむを得ず ItaO 君がリールを買ってきてくれた。 これで電気容量の問題はひとまず解決する。
駒場に帰ってきて開発を続行する。
大方の Exception を潰し終わる。 あとはキー入力に応じてカーソルを移動させるだけになるが, キーを拾うことができない。 keyPress と keyDown に カーソルキーやPageUp/Downキーが飛んでこない様子。 えらい時間をかけてキーを拾うことを試みるものの拾えず 9。 キー入力ができないまま,夜が更けていく。
しかし,Editor ではなく Viewer としてなら動くので, コスプレ回避の見通しが立つ。
カーソルキーを拾うのはあきらめ, 懐かしのダイアモンドカーソルをサポートすることにする。 カーソルの横移動とキー入力(インサート/オーバーライト)を実装する。
再描画系の不具合を調べているうち, たとえ等幅フォントでもNormalとBoldで 幅が変わるという事実に三時間かけて気づき,愕然とする。 これでは太字での表示分けができない。 壱氏の助言を聞いて, MS-DOS時代のように「二度打ち」で太字を表現するように仕様を変更する。 ここまでできたところで日吉に帰ることにする。
駒場に帰ってくることができなかった。
TACT 氏からの PHS 呼び出しでやっと目が覚める。 朝の5時ではなく夜の5時なのであわてる。 日吉の地下食堂で夕食をとって駒場に出撃する。
表示系が重いので修正することにしたが,苦戦する。 そもそもこのエディタの仕様が間違っているのである。 このエディタは,表示までに以下の三段階を経る:
「描画」部分を色の続くかぎりまとめて drawString するように修正し,まともな速度になる。 それでも行評価・画面イメージ変換のオーバーヘッドはすさまじく, 時間計測の結果はこのエディタが100行以上を処理しえないことを物語っていた。 (1行のうちは毎秒30フレームでWindowsのキーリピートに追従するが, 100行になると毎秒15フレームに落ちる。)
しかし, 括弧を入力した瞬間に 画面全体のインデントがざくざく変わるのが妙に受けたので, このままの仕様にしておく :-)
TACT 氏の Visual Scheme Debugger との統合作業を始める。 エディタとして作ったのに Viewer として使うところが規模の縮小を示している。
WFCコントロールとして開発していたので, 簡単にフォームデザイナで貼り付けられるはずであった。しかし,
という,駒祭前日から予測していた非常事態が発生する。 WFCコントロールとしては認識してくれないらしいので, コメントを一行外して 10 むりやりActiveXコントロールにし, ついに貼り付けることに成功。
しかし変数の受け渡し絡みで ComFailException が発生している模様。 調べてみると String[] が Variant として引き渡されて いることが判明。String なら無事に渡せるらしいので, String[] を一つの String に繋げて引き渡し, 再び String[] に戻すためのラッパーを作る羽目になる。 せつなさ炸裂。
とりあえず出展して日吉へ逃げ帰る。
駒場に戻る。
1) 【前編註】さらに私の連載を入れれば一気に莫大になるんですけど,それをやると壱率上がりすぎだし,製本作業きつすぎるし。
2) 現三年・二年の「灘校閥」プログラマ部隊の祖である灘校パソコンクラブ(NPCA/TRLOCON)も滅びの運命にあります
3) 【壱註】プログラマが減っても,最近はやることがいろいろあるから大丈夫じゃないかなぁ。(とフォローしておく)
4) 技術力がなくなってもプログラム展示にこだわった場合の惨状を見たいかたは,灘校の文化祭を見に行きましょう :-)
5) 筋肉画像が新しい姿なのではなく :D 数人で企画を出すという点が新機軸です。
6) むらき君の R-Xs は別格
7) 【TACT註】駒場に帰ってきますか。(ひど
8) 本誌??ページ参照。
9)駒祭後,keyUpなら拾えることが判明した(x_x)
10) WFCコントロールをフォームデザイナで生成すると,ActiveXコントロールにするための行がコメントアウトされた状態で記述されています
今野 俊一 (こんの, knn) <toknn@ijk.com>, <knn@ebony.plala.or.jp>
東京大学 工学部 計数工学科(内定), TSG(理論科学グループ)