|
@@ -1,5 +1,139 @@
|
|
|
+2002.2 update
|
|
|
+
|
|
|
この文書は,おまけ,ていうか,暇なときに気が向いたまま書き貯めたものです.
|
|
|
|
|
|
+■■ XFireworks 開発秘話
|
|
|
+
|
|
|
+XFireworks は X 上で動作する花火プログラムである.そもそもなんで XFireworks を
|
|
|
+作ったかというと,単なる思いつきである.nadar-b05 を作り上げ,しばらく
|
|
|
+ぼーっとしていた時期に,なにかまた作りたいなーと思っているとき,
|
|
|
+電車の中で思いついた.
|
|
|
+XFireworks を作りはじめたのは 2000 年の7月初旬だったのだが,nadar-b05 を
|
|
|
+作ったときの教訓で,
|
|
|
+
|
|
|
+ とりあえず動くものを作って公開しちまえ
|
|
|
+
|
|
|
+というのがあったので,かなり早い段階でβ版を公開して linux-users-ML などで
|
|
|
+広報し,あとは3日に1回ほど最新版をアップデートしながら作成していった.
|
|
|
+
|
|
|
+結局それから1ヵ月くらいで書き上げ,8月のはじめに最終版をリリースしたので,
|
|
|
+XFireworks は
|
|
|
+
|
|
|
+ まさに季節もの
|
|
|
+
|
|
|
+となり,なかなか評判がよかったようだ.雑誌にもいくつか取り上げられた.
|
|
|
+XFireworks ができたのはちょうど花火大会まっさかりの時期だったので,
|
|
|
+忙しくて花火大会に行かなかった友人に紹介したりしたのだが,
|
|
|
+
|
|
|
+ 夜に見てるとさみしい気分になる
|
|
|
+
|
|
|
+と言われてしまったのがかなしいところだ.作者自身,よく電車の中や昼休みに
|
|
|
+ぼーっと見ていたりしたのだが,はたから見たら,
|
|
|
+
|
|
|
+ ちょっとノイローゼ気味なのだろうか
|
|
|
+
|
|
|
+などと心配されてしまいそうである.単に作者自身は自分で作ったものを見て,
|
|
|
+
|
|
|
+ 悦に入っているだけ
|
|
|
+
|
|
|
+だったのだが.
|
|
|
+
|
|
|
+この文書はあまり技術的なことは書いてないのだけれど,たまには技術的なことでも
|
|
|
+書こう.
|
|
|
+
|
|
|
+XFireworks はC言語でのオブジェクト指向な書き方が自分なりに身についてきた頃に
|
|
|
+書いた作品なので,ソースはとても(不満な点もいくつか残ってはいるが,
|
|
|
+それはそれとして,他のぼくのプログラムに比べたらはるかに)すっきりしている.
|
|
|
+X でのプログラミングがだいたいわかってきたころに書いたというのも
|
|
|
+よかったのだろう.おかげで他のぼくのプログラムにはありがちな,
|
|
|
+
|
|
|
+ 「これはいつか直さなきゃならんなあ」
|
|
|
+
|
|
|
+とかならまだましだが,
|
|
|
+
|
|
|
+ 「これはひどい,ひどすぎる」
|
|
|
+
|
|
|
+とか,とんでもないのになると,
|
|
|
+
|
|
|
+ 「ちょっとこれは正視に耐えない」
|
|
|
+
|
|
|
+といったようなところもあまりないのがお気に入りの1作である.ちなみに正視に
|
|
|
+耐えないのは xstarroll である.次が xmangekyou かな.
|
|
|
+
|
|
|
+XFireworks は作りはじめて,1週間くらいでとりあえず動作するプロトタイプが
|
|
|
+できあがった.が,とにかく遅かった.花火が爆発するのが,
|
|
|
+
|
|
|
+ しゅわしゅわしゅわ...
|
|
|
+
|
|
|
+というように見えてしまうくらい遅かったのである.そこで,考えつく限りの
|
|
|
+チューニングを行なっていくことになる.
|
|
|
+
|
|
|
+原因は花火のカケラをひとつひとつ描画していたために X サーバに出すリクエストが
|
|
|
+ボトルネックになっていたためだった.これを解決するために,描画をまとめて行なう
|
|
|
+ようにリクエストを変更した.しかしまだ遅い.どうやら描画のたびに色を
|
|
|
+確保していて,これもまた X サーバにリクエストを出すためにボトルネックに
|
|
|
+なっているらしい.そこで,起動時に前もって色をすべて確保するようにした.
|
|
|
+これでだいぶ速くなったのだが,今度は起動に時間がかかるようになってしまった.
|
|
|
+Libretto で起動すると,起動に1分以上かかってしまうのである.原因は起動時の
|
|
|
+色の確保で,毎回 X サーバに色を確保しにいってしまうことにあったので,
|
|
|
+独自の色のデータベースを作成し,一度確保した色は使いまわすようにした.これで
|
|
|
+まただいぶ速くなったがまだ遅い.データベース作成時に,すでに確保している
|
|
|
+色かどうかのデータベースの検索に時間がかかっていたのだ.そこで検索処理に
|
|
|
+キャッシュやハッシュを使うようにした.これで多少速くなったのだが
|
|
|
+まだ遅いのである.と,一気に書いてしまったが,ここまでたどり着くのに
|
|
|
+くりかえし何度も何度も試行錯誤した.
|
|
|
+
|
|
|
+実際のプログラミングはほとんど Libretto で行なっている.ぼくの使っている
|
|
|
+Libretto は Libretto SS1000 というやつで,片道1時間半の電車通勤中に
|
|
|
+
|
|
|
+ 電車の中でプログラムを書いて過ごすために
|
|
|
+
|
|
|
+入社直前に購入したものだ.しかし,買ったときに
|
|
|
+
|
|
|
+ すでにオールドモデルだった
|
|
|
+
|
|
|
+このため,XFireworks を書いていた時点ではかなり遅いマシンだったのだが,
|
|
|
+そのような遅いマシン(ちなみにこの文章を書いている2002年1月現在で,
|
|
|
+まだ現役まる3年である)でもちゃんと動作するようにしたかったため,可能な限り
|
|
|
+速くしたかったのだ.
|
|
|
+
|
|
|
+調べてみると,ハッシュ関数があまり乱数的でないために1部分に集中してしまい,
|
|
|
+
|
|
|
+ ぜんぜんハッシュになっていなかった
|
|
|
+
|
|
|
+という恥ずかしいバグがあったことがわかったので,ハッシュ関数を書き直した.
|
|
|
+さらに,ハッシュのチューニングを行なった.ハッシュの良いところは,サイズを
|
|
|
+自由に調整することによって,メモリサイズと速度のトレードオフを自由に調整
|
|
|
+できるところだ.これでだいぶ速くなった.
|
|
|
+
|
|
|
+この他にも,sin(), cos() をデータベース化してしまうとか,一度使った
|
|
|
+オブジェクトを削除せずにフリーリストにつないでおいて再利用することで
|
|
|
+malloc() の回数を減らすとか,配列はまとめて確保して malloc() の回数を減らす
|
|
|
+とか,など,考えつくかぎりのチューニングを行なった.
|
|
|
+このように考えつく高速化をすべて行なった結果,XFireworks はかなり速く
|
|
|
+動作するようになった.現在の速いマシンでは十分すぎるくらい速く動作するため,
|
|
|
+今となってはそれほどありがたみも無いのだが,やはり
|
|
|
+
|
|
|
+ 高速化は,男の夢
|
|
|
+
|
|
|
+とでもいうのだろうか.しかし,最近の速いマシンで動かすとさくさく動きすぎて,
|
|
|
+
|
|
|
+ 情緒もへったくれもない
|
|
|
+
|
|
|
+といったところがかなしいところではある.
|
|
|
+
|
|
|
+ただ,まだチューニングできる部分もある.そのうちのひとつとして,
|
|
|
+起動時の色確保で,色のデータベースはハッシュ&キャッシュ化しているために
|
|
|
+高速なのだが,色の名前の文字列のデータベースはふつうの線形検索になっている.
|
|
|
+ハッシュ&キャッシュ用のクラスをもっと一般化して,一般的なオブジェクトを
|
|
|
+扱えるようにして,色の名前もハッシュ&キャッシュ化すれば,起動がもうちょっと
|
|
|
+速くなるかもしれない.でもめんどくさいのでいいや.
|
|
|
+
|
|
|
+うーん,ひさびさに技術的なことを書いてしまった.
|
|
|
+
|
|
|
+2002/1
|
|
|
+(次回作の OMAKE.jpn に続く)
|
|
|
+
|
|
|
■■ WonX 開発秘話
|
|
|
|
|
|
そもそもなんで WonderWitch をはじめたかというと,会社の先輩に紹介されたのだ.
|
|
@@ -31,10 +165,12 @@ WonderSwan
|
|
|
ものではない.画面まわりやキー入力用の独自のサービス関数がいっぱい用意
|
|
|
されていて,それを使って書くことになるのだが,WonderSwan のハードウエアは
|
|
|
さすがゲーム機,というか,スプライト機能やパレット機能を持っているので,
|
|
|
-昔のMSXの時代は普通だったのだが,今となっては特殊なハードウエアである.
|
|
|
-つまり,スプライトとかパレットとかをちゃんと理解できてないと,
|
|
|
-プログラムは書けないし,メモリの制限もあるし,プログラムサイズの制限もあるし,
|
|
|
-言語がCになったというだけで,実はその中身は,
|
|
|
+
|
|
|
+ 昔のMSXの時代は普通だったが,今となっては特殊な
|
|
|
+
|
|
|
+ハードウエアである.つまり,スプライトとかパレットとかをちゃんと理解
|
|
|
+できてないと,プログラムは書けないし,メモリの制限もあるし,
|
|
|
+プログラムサイズの制限もあるし,言語がCになったというだけで,実はその中身は,
|
|
|
|
|
|
昔の MSX とかでの BASIC プログラミングによく似てる
|
|
|
|
|
@@ -72,6 +208,36 @@ FreeBSD
|
|
|
|
|
|
で,WonX 作るのが目的になってしまった.
|
|
|
|
|
|
+WonX 作っていて一番困ったのはなにかというと,技術的にどうとか
|
|
|
+MS-DOS と UNIX の差がどうとかではない.ホントに一番困ったのは,
|
|
|
+WonXってどんなものなのかを
|
|
|
+
|
|
|
+ 人に説明すること
|
|
|
+
|
|
|
+である.
|
|
|
+わかる人には,
|
|
|
+
|
|
|
+ WonderWitch 用のプログラムを UNIX 上でコンパイル・リンクして,
|
|
|
+ X 上で実行できる実行形式を作成するための互換ライブラリ
|
|
|
+
|
|
|
+といっただけで,どんなものかだいたい理解してもらえる.しかし,わからない
|
|
|
+人には,いくら説明してもわからないものだ.
|
|
|
+
|
|
|
+2000年末から2001年初頭にかけて開催された,WonderWitch プログラミング
|
|
|
+コンテスト(WWGP)に出品して,見事予選を通過して,本選に出場してきたのだが,
|
|
|
+友人にそのことを説明(自慢)しようにも,
|
|
|
+
|
|
|
+「こんど,プログラムコンテストで予選通過したので,発表してくるんよ」
|
|
|
+「へー.なにを作ったの?」
|
|
|
+「えーと,WonderSwan のプログラムを作るための WonderWitch っていうキットが
|
|
|
+ あって,WonderWitch用のプログラムを...」(以下,必死に説明)
|
|
|
+「???」
|
|
|
+「うーん,つまり,プログラムを書くのを手伝うプログラム」
|
|
|
+
|
|
|
+こんな説明しかできないのは,うーん,残念である.
|
|
|
+
|
|
|
+(次回作の OMAKE.jpn に続く)
|
|
|
+
|
|
|
■■ N.A.D.A.R. 開発秘話
|
|
|
|
|
|
N.A.D.A.R. は,そもそもは中学生のときに,「TANK」という名前で作った,
|
|
@@ -161,7 +327,7 @@ String
|
|
|
|
|
|
というようにはまってしまい,あげくのはてには,
|
|
|
|
|
|
- 整数までも,Integer クラスで管理しそうな勢い
|
|
|
+ 単なる整数までも,Integer クラスで管理しそうな勢い
|
|
|
|
|
|
になって,収拾がつかなくなってしまう.
|
|
|
また,クライアントが複数になったときには,サーバ側では fork() して通信の
|
|
@@ -225,6 +391,10 @@ N.A.D.A.R.
|
|
|
|
|
|
「TANK」はやめよう
|
|
|
|
|
|
+ということになった.また,
|
|
|
+
|
|
|
+ 「エックスなんちゃら」という名前もやめよう
|
|
|
+
|
|
|
ということになった.
|
|
|
|
|
|
戦車の重みを表現したいので,「グロブダー」のように,濁音のある名前にしたい.
|
|
@@ -248,7 +418,7 @@ N.A.D.A.R.
|
|
|
|
|
|
このときは,あまり深く考えてなくって,けっきょくこの日には決まらなかった
|
|
|
のだが,このときにしっかり決めなかったのがよくなかった.
|
|
|
-そのうち開発を進めるうちに,ファイル名とかも整理しだして,
|
|
|
+そのうち開発を進めるうちに,ファイル名とかドキュメントとかも整理しだして,
|
|
|
|
|
|
ほんとにもういいかげん名前を決めたい
|
|
|
|
|
@@ -265,6 +435,8 @@ N.A.D.A.R.
|
|
|
|
|
|
だめだ,Dのあたりでなんにもおもいつかん.
|
|
|
|
|
|
+(次回作の OMAKE.jpn に続く)
|
|
|
+
|
|
|
■■ EyeClock 開発秘話
|
|
|
|
|
|
そもそもなんで EyeClock を作り出したかってはなし.
|
|
@@ -528,13 +700,20 @@ EmiClock
|
|
|
|
|
|
のために,家計簿だとか,社員の定期券の期限の計算用プログラムとかの
|
|
|
プログラミングをしていく,という内容だった.
|
|
|
+しかし,なんというか,今思うと,
|
|
|
+
|
|
|
+ すごい名前だ
|
|
|
+
|
|
|
ちなみにアイコさんはマイコさんの妹で,アイコさんはショートカットの OL で,
|
|
|
ロムさんはマイコさんが好きで,ラムさんはアイコさんが好き,という設定だった.
|
|
|
-しかし,
|
|
|
+ぼくは,長女系のマイコさんより,次女系のアイコさんのほうが好きだったなあ.
|
|
|
+
|
|
|
+この本で気になったのは,キーボードを叩くときの効果音が,
|
|
|
|
|
|
- 今思うと,すごい名前だ
|
|
|
+ ピッピッ
|
|
|
|
|
|
-ちなみにぼくは,長女系のマイコさんより,次女系のアイコさんのほうが好きだった.
|
|
|
+なのである.キーボードを叩いたときに,ピッピッなんて音がするパソコンなんて
|
|
|
+ないよなあ,と子供ながらに思ったことを記憶している.
|
|
|
|
|
|
この本は BASIC をあるていど知っていることを前提にしていて,
|
|
|
実際にプログラムを書いていく,という内容だったので,まったくの初心者の
|
|
@@ -550,6 +729,12 @@ EmiClock
|
|
|
|
|
|
が,名機 PC-8001 を使って,「先生」と「ネコちゃん」といっしょに,
|
|
|
コンピュータの仕組みや,プログラムの書き方を勉強していく,という内容だった.
|
|
|
+しかし,なんというか,この本の登場人物も,
|
|
|
+
|
|
|
+ コテコテの名前
|
|
|
+
|
|
|
+で,苦笑してしまう(だって「マイちゃん」と「コンちゃん」だよ).
|
|
|
+昔はこういうのが多かったもんだ.
|
|
|
この本はとてもわかりやすくて,
|
|
|
|
|
|
データバスやアドレスバスやコントロールバスや ROM や RAM や
|
|
@@ -622,7 +807,7 @@ Syntax Error
|
|
|
この苦労(?)のおかげで,いま思えば,フリーソフトウエアプログラマにとって
|
|
|
もっとも重要な力である,
|
|
|
|
|
|
- どんなエラーが出ても,自力でなんとかする気力
|
|
|
+ どんな問題が起きても,自力でなんとかする気力
|
|
|
|
|
|
が身についたと思う.
|
|
|
|
|
@@ -633,11 +818,8 @@ Syntax Error
|
|
|
|
|
|
という本だった.この本は残念ながら,どこかへいってしまった.
|
|
|
うーん,もう一度,読んでみたいものである.
|
|
|
-「あるけあるけゲーム」(tron のようなゲーム)とか,
|
|
|
-「スクロールジャンプ」とか,
|
|
|
-「ビルディングクラッシュ」とか,
|
|
|
-「地底探検ゲーム」とか,
|
|
|
-ペンゴもどきとか,
|
|
|
+「あるけあるけゲーム」(tron のようなゲーム)とか,「スクロールジャンプ」とか,
|
|
|
+「ビルディングクラッシュ」とか,「地底探検ゲーム」とか,ペンゴもどきとか,
|
|
|
月面着陸とかを打ち込んでは遊んでた.
|
|
|
この本は当時はやりの,
|
|
|
|
|
@@ -660,7 +842,7 @@ Syntax Error
|
|
|
そのうち打ち込んだゲームを適当に改良したりするようになる.
|
|
|
|
|
|
やがて,自分でもゲームを作り出すようになる.
|
|
|
-はじめて作ったゲームは,いまでも覚えているが,
|
|
|
+はじめて作った記念すべき1作目のゲームは,いまでも覚えているが,
|
|
|
|
|
|
「レーザーパックマン」
|
|
|
|
|
@@ -701,7 +883,8 @@ Syntax Error
|
|
|
170 LOCATE 10,0:PRINT S
|
|
|
180 GOTO 20
|
|
|
|
|
|
-たしか,こんなんだったとおもう.(なにしろ,はじめて書いたプログラムですから)
|
|
|
+なにしろはじめて書いたプログラムなので,相当無駄な書き方がされていたはずで
|
|
|
+ある.そのへんも極力再現してみたが,こんなんだっただろうか.
|
|
|
確率的に,敵が左上のほうに行きやすくなってしまったというのをおぼえている.
|
|
|
|
|
|
こんなんおもしろいのか?
|
|
@@ -748,7 +931,7 @@ Syntax Error
|
|
|
|
|
|
円周率を10万桁まで計算するプログラム
|
|
|
|
|
|
-を作った記憶がある.しかも,
|
|
|
+を作って提出した記憶がある.しかも,
|
|
|
|
|
|
計算の途中経過をセーブすることができる
|
|
|
|
|
@@ -847,7 +1030,16 @@ X
|
|
|
|
|
|
に,すっごく影響を受けている.
|
|
|
|
|
|
-■ そのほか
|
|
|
+■ プログラミング
|
|
|
+
|
|
|
+「GNU ソフトウエアプログラミング」
|
|
|
+
|
|
|
+プログラミングに emacs, gcc, make, gdb を使うときの一連の流れが
|
|
|
+わかるので,とってもいい本だと思う.
|
|
|
+個々のアプリケーションをひとつひとつ詳しく解説してある本はたくさん
|
|
|
+あるのだが,開発の一連の流れとして解説してある本は,なかなか少ない.
|
|
|
+
|
|
|
+■ システム管理
|
|
|
|
|
|
「スーパーユーザの日々」
|
|
|
「UNIX ネットワークの日々」
|
|
@@ -871,20 +1063,20 @@ X
|
|
|
|
|
|
セリフ付
|
|
|
|
|
|
-ということをしていて,朝,研究室に入ってくる卒研生とかが,
|
|
|
+ということをしていた.
|
|
|
|
|
|
- スーパーユーザーが,学芸会のセリフの練習でもしているかのような姿
|
|
|
+ 「え,こうすればいいんじゃないんですか? 中村さん」
|
|
|
+ 「それは違うよ,K君.これはこれこれこうだから,こうするんだよ」
|
|
|
+ 「なーんだ,同じUNIXでも,HPとSUNではずいぶん違うんですね」
|
|
|
|
|
|
-をまのあたりにして,ギョッとしていた.
|
|
|
+というようなセリフを言い合うわけである.(実話)
|
|
|
+て,朝,研究室に入ってくる卒研生とかが,
|
|
|
|
|
|
-「セキュリティの日々」とかも,出してほしいもんだ.
|
|
|
+ スーパーユーザーが,学芸会のセリフの練習でもしているかのような姿
|
|
|
|
|
|
-「GNU ソフトウエアプログラミング」
|
|
|
+をまのあたりにして,ギョッとしていた.(これも実話)
|
|
|
|
|
|
-プログラミングに emacs, gcc, make, gdb を使うときの一連の流れが
|
|
|
-わかるので,とってもいい本だと思う.
|
|
|
-個々のアプリケーションをひとつひとつ詳しく解説してある本はたくさん
|
|
|
-あるのだが,開発の一連の流れとして解説してある本は,なかなか少ない.
|
|
|
+「セキュリティの日々」とかも,出してほしいもんだ.
|
|
|
|
|
|
「よしだともこのルート訪問記」
|
|
|
|
|
@@ -898,8 +1090,10 @@ X
|
|
|
非常に幅広く紹介されていて,とてもためになる.
|
|
|
というのは,コンピュータやネットワークのシステムの構成など
|
|
|
(こういったことも非常にためになるが)が書いてあるだけでなく,
|
|
|
-「管理者の人材確保」や「管理者の育成・教育態勢」がどのようになって
|
|
|
-いるかなどが書かれているからだ.
|
|
|
+
|
|
|
+ 「管理者の人材確保」や「管理者の育成・教育態勢」
|
|
|
+
|
|
|
+がどのようになっているかなどが書かれているからだ.
|
|
|
やはり,「人材の確保」と「教育」がいちばん大変で重要なことであって,
|
|
|
こういったことが,システム管理の実態だと思う.
|
|
|
|
|
@@ -994,4 +1188,732 @@ X
|
|
|
書き出してしまうような人間はともかく,普通の人は,やはり人目は気になる
|
|
|
(のだと思う)からだ.
|
|
|
|
|
|
+(次回作の OMAKE.jpn に続く)
|
|
|
+
|
|
|
+■■ 電車で書くプログラム
|
|
|
+
|
|
|
+ぼくは通勤に片道1時間半かかるのだが,この時間は貴重なプログラミングの
|
|
|
+時間になっている.もともと就職するときに,ずいぶん遠くにある会社だけど,
|
|
|
+まあ,混まない方向だし,ずっとプログラム書いてればいいか,とおもって就職を
|
|
|
+決め,就職前の2月に Libretto SS1000 を購入し,ほんとに車内で書くようになった.
|
|
|
+
|
|
|
+東急田園都市線の反対方向に乗っているので,行きも帰りも必ず座れる.天気の
|
|
|
+いい日は通勤中にもかかわらず,
|
|
|
+
|
|
|
+ 玉川でついつい降りたくなってしまう
|
|
|
+
|
|
|
+一応,降りたことはないけどね.
|
|
|
+
|
|
|
+帰りは渋谷乗り換えなのだが,調子に乗って書いてると,ノリにノッてきて
|
|
|
+
|
|
|
+ 渋谷をそのまま乗り過ごした
|
|
|
+
|
|
|
+ということが何度かある.また,あまりにノッていると,渋谷で乗り換えた後も,
|
|
|
+続きを書きたいという欲求を抑えることができずに,
|
|
|
+
|
|
|
+ 山手線の中で,立ってプログラムを書いた
|
|
|
+
|
|
|
+ということも何度かある.XFireworks の一部分のコードは,山手線で立って書かれた.
|
|
|
+
|
|
|
+EyeClock や N.A.D.A.R. や XFireworks や WonX のコードの大部分は,こうやって
|
|
|
+電車の中で書かれた.今思えば,
|
|
|
+
|
|
|
+ ずいぶん書いたものだ
|
|
|
+
|
|
|
+田園都市線の車両は,何種類かある.その中でも旧式なのだろうか,車両の端の席に,
|
|
|
+肘をかけられるくらいの出っぱりがある車両がある.これは,いい.出っぱりの
|
|
|
+上に Libretto と飲物を置いて,優雅に書くことができる.出っぱりがない車両だと,
|
|
|
+膝の上に Libretto を乗せて書くことになる.
|
|
|
+
|
|
|
+(次回作の OMAKE.jpn に続く)
|
|
|
+
|
|
|
+■■ モバイルについて
|
|
|
+
|
|
|
+ノートパソコンやモバイルについて思うことなんだけど,もしもモバイルと
|
|
|
+いうならば,やはり,
|
|
|
+
|
|
|
+ 本当に持ち歩けること
|
|
|
+
|
|
|
+というのが,絶対条件だと思う.のだが,
|
|
|
+
|
|
|
+ 本当に持ち歩けるの?
|
|
|
+
|
|
|
+と疑問になってしまうような製品が多々あると思う.
|
|
|
+たとえば,いくら軽くて小さくて高性能だとしても,22万円もするようなノートPCを
|
|
|
+そのまま,
|
|
|
+
|
|
|
+ 無造作にバッグにぽんと入れて
|
|
|
+
|
|
|
+気軽に持ち歩くことができるだろうか.(ぼくはできない)
|
|
|
+だから,高価な製品は,それだけで(モバイルとしては)ダメだと思う.
|
|
|
+もっと安っちくて,落としても無くしても置き忘れても,(それほど)ショックが
|
|
|
+少なくて,古くてぼろくて傷だらけで,
|
|
|
+
|
|
|
+ だれも盗もうなどと思わないくらいのマシン
|
|
|
+
|
|
|
+が,モバイルとしては最適だと思う.
|
|
|
+
|
|
|
+重量は,可能な限り軽いほうがいい.1kgを超えると常に持ち運ぶのが苦痛になる.
|
|
|
+また,電源アダプタも小さいほうがよい.実際に持ち歩くと,大きさよりも
|
|
|
+重さのほうが気になるので,小さいことよりも軽いことのほうが重要た.
|
|
|
+
|
|
|
+インターフェースは,PCカードスロットが1つあれば十分である.データのやりとりを
|
|
|
+するのは,LANカードかコンパクトフラッシュが現実的である.USBはあるにこした
|
|
|
+ことはないが,それによって高価になったり重くなったりするくらいなら,
|
|
|
+無くてよい.そもそもUSBがあったとしても,どうせつなぐのは
|
|
|
+
|
|
|
+ キーボードかマウス
|
|
|
+
|
|
|
+くらいのものである.そもそもモバイルでマウスを使いたいなんて欲張っても
|
|
|
+しょうがない.
|
|
|
+もしかしたら,
|
|
|
+
|
|
|
+ フロッピードライブか CD-ROM ドライブ
|
|
|
+
|
|
|
+をつなぎたいかもしれない.
|
|
|
+しかし,モバイルの場合には,このような,
|
|
|
+
|
|
|
+ ふだん絶対に持ち歩かないもの
|
|
|
+
|
|
|
+のことを考えてはいけない.機能を限定して,軽く,持ち運びやすく,
|
|
|
+いつでもどこでもがモバイルのウリなのだから,あれも使いたいこれも使いたいと
|
|
|
+言い出したら,なんのためにモバイルを使うのか,本末転倒になってしまう.
|
|
|
+だから,
|
|
|
+
|
|
|
+ PCカードスロットだけで十分
|
|
|
+
|
|
|
+なのである.
|
|
|
+
|
|
|
+モバイルでいちばん気になるのは,結局のところ,
|
|
|
+
|
|
|
+ 1に値段,2に重量,3にバッテリのもつ時間
|
|
|
+
|
|
|
+である.値段というのは買うときに高い安いということではなく,
|
|
|
+前述したように,高価なものは気軽に持ち歩けないという意味である.
|
|
|
+
|
|
|
+OS に関しては,(ひいき目なしで)FreeBSD か Linux が最適だと思う.
|
|
|
+
|
|
|
+たとえば Windows だと,出先でちょっと PC カードタイプの LAN カードを
|
|
|
+借りて使いたいというときに,ドライバが入っていないとどうしようもない
|
|
|
+ということにおちいりがちである.たぶんインターネットに接続できるパソコンを
|
|
|
+借りて,ドライバをダウンロードして,コンパクトフラッシュ経由でモバイル側に
|
|
|
+もってってインストール,という,まあ,あまり考えたくないような,
|
|
|
+
|
|
|
+ とても面倒なこと
|
|
|
+
|
|
|
+になる.
|
|
|
+インターネットにつながってるPCやコンパクトフラッシュやコンパクトフラッシュが
|
|
|
+使えるノートパソコンがなかったときのことなど,もう,
|
|
|
+
|
|
|
+ 想像もしたくない
|
|
|
+
|
|
|
+出先で借りものの LAN カードを使うこともできないなんて,これでモバイルと
|
|
|
+言えるのか? ぜんぜん実用的じゃないじゃん,と思う.
|
|
|
+
|
|
|
+FreeBSD や Linux なら,はじめから GENERIC なカーネルを作っておけば,
|
|
|
+たいていのPCカードは指しただけでそのまま使える.指しただけで使えなかったと
|
|
|
+しても,カーネルをコンパイルしなおせば,ほとんどのカードがまず使える.
|
|
|
+
|
|
|
+モバイルでは,出先にもっていって使うことが多いので,出先でPCカードを
|
|
|
+ちょっと借りる,ということはとても多い.逆にいえば,もしも出先で借りることが
|
|
|
+できるなら,余分な PC カードを常に持ち歩かなくてもよい,ということになる.
|
|
|
+
|
|
|
+また,FreeBSD や Linux では,X のデスクトップ環境をカスタマイズすることで,
|
|
|
+マウスをほとんど使わないようにカスタマイズすることができる.
|
|
|
+Libretto では,液晶ディスプレイのとなりについてるぐりぐりしたやつで
|
|
|
+マウスを操作することになる.しかしぼくの場合,Window Manager をカスタマイズ
|
|
|
+することによって,ほとんどマウスを使わずに作業できている.
|
|
|
+Windows で使用することなど,想像もしたくないものである.
|
|
|
+
|
|
|
+さらに,OS やアプリケーションの軽さの問題がある.前述したように,
|
|
|
+モバイルはできる限り安っちくてロースペックなマシンのほうがよい.
|
|
|
+だから,マシンは,Pentium MMX 166MHz の RAM 32MB とかでもいいし,
|
|
|
+もっとロースペックでもいい.しかし,たとえこれでも,アプリケーションは
|
|
|
+あまり問題なく動いてくれないと困る.(モバイルなので,サクサクと動けとは
|
|
|
+言わないけど,不安定で落ちまくったりするのは困る)
|
|
|
+あるアプリケーションを動かすためだけに,高価なメモリを32MBも追加増設する
|
|
|
+なんて,非常に無駄なことである.こんなことをしていたら,けっきょくどんどん
|
|
|
+高価になっていってしまう.とにかく高価なものは持ち歩きたくないというのが
|
|
|
+ぼくの信条だ.値段が高いものを買うのが嫌というよりも,持ち歩くのが嫌なのだ.
|
|
|
+
|
|
|
+あとは,インストールのしやすさの問題だ.モバイルだとCD-ROMドライブが無い
|
|
|
+(あっても別売り)とか,フロッピードライブが無いということが多いので,
|
|
|
+インストールが困難な場合が多い.FreeBSD や Linux ならば,ネットワーク
|
|
|
+インストールや Windows 側にファイルを置いておいてインストールなど,
|
|
|
+多彩な方法をとることができる.
|
|
|
+
|
|
|
+最後に意外に重要なのが安定性の問題だ.というのは,プレゼンに使用することが
|
|
|
+あるからだ.(プレゼンをやらないならばあまり関係ないけど)
|
|
|
+いざプレゼンをやろうとしたら真っ青な画面になってしまい,結局資料無しで
|
|
|
+プレゼンを進める,というのを何度か見たことがある.
|
|
|
+なんというか,悲しいというか,せっかく昨日徹夜して資料作ったのだろうに,
|
|
|
+と思う.
|
|
|
+(プレゼンに資料をまったく作って来なかったのと同じだと個人的には思っている)
|
|
|
+こんなことで10分間のプレゼン中に,再起動に(ロースペックだし,ファイルシステムの
|
|
|
+チェックもするので)3分間もかかっていてはかなわない.
|
|
|
+UNIX には満足のいくプレゼンツールが無いと言われるかもしれないが,
|
|
|
+きれいな画面でちょこまかした(たいていあまり意味の無い)アニメーションを
|
|
|
+見せたり,プレゼン画面にきれいな背景があったりすることのほうが,
|
|
|
+いざプレゼンというときに,OSがまったく動かないことがあるということよりも
|
|
|
+重要なのだろうか,と思う.説明したいことをテキストファイルに書いておいて,
|
|
|
+less でテキストファイル見せながらしゃべればいいんじゃないの? と思う.
|
|
|
+X を起動する必要すらあまり無いと思う.
|
|
|
+図を見せたいならばXの仮想画面を何枚か用意しておいて,別の仮想画面に
|
|
|
+適当な画像ビューワで画像を開いておいて,仮想画面を切替えるのがいちばん確実だ.
|
|
|
+字が小さければ,でかいフォントを使えばいい.
|
|
|
+ブラウザの不安定さがちょっと心配だが,HTML で書いておいてブラウザで見る,
|
|
|
+という方法もある.これだと資料をそのままホームページに張り付けることも
|
|
|
+できるし,画像も使えるし,フォントのサイズも自由に選べる.
|
|
|
+
|
|
|
+ぼくの経験だと,いっしょうけんめい文字をスライドさせたりフェードインさせたり
|
|
|
+箇条書の項目が順番に出てきたり,意味もなく凝ったアニメーションとかやっている
|
|
|
+プレゼンほど,あまり内容が無かったりするものだ.(これは,ほんとうにそうだと
|
|
|
+思うね)
|
|
|
+シミュレーションの結果の発表とかで,ほんとに動くものを見せようとして,
|
|
|
+アニメーションをやっているのならいい(そういうアニメーションは,むしろ歓迎)
|
|
|
+のだけれど.まったく意味の無いアニメーションってホント,多い.(しかもそれを
|
|
|
+見てプレゼンがうまいとかきれいとか,(たとえ社交辞令にしても)褒める人が
|
|
|
+いるのだから困ったものだ.内容はどうだったんじゃいと突っ込みたくなる)
|
|
|
+ほんとにプレゼンのうまい人や経験のある人は,でかい字でキーワードだけ
|
|
|
+箇条書にして映し出させて,あとはそのキーワードを見て思い出しながら
|
|
|
+しゃべったりする.プレゼンって,自分が今までやってきた,自分が一番よくわかって
|
|
|
+いることを発表するのであるから,これがあたりまえであるとも思う.
|
|
|
+(長々とした文章が小さい字で画面いっぱいに映し出されたと思ったら,発表者は
|
|
|
+ その文章を読むだけ,というプレゼンがたまにあるけど,なんというか,経験を
|
|
|
+ つんでくれ,と思う)
|
|
|
+だから,プレゼンなんて,less と xv が使えれば十分である.なんかプレゼンの
|
|
|
+話,というか,愚痴になってしまったなあ.
|
|
|
+でもせっかく書いたのを消すのももったいないし,まあいいか.
|
|
|
+
|
|
|
+(次回作の OMAKE.jpn に続く)
|
|
|
+
|
|
|
+■■ ゼビウスについて
|
|
|
+
|
|
|
+いきなりだが,ゲームの話である.
|
|
|
+
|
|
|
+むかしむかし大昔,ゲームセンターのゲーム(いわゆるアーケードゲーム)の黎明期に,
|
|
|
+
|
|
|
+ XEVIOUS
|
|
|
+
|
|
|
+というゲームがあった.「ゼビウス」と読む.
|
|
|
+縦スクロールタイプのシューティングゲーム,というと説明は簡単なのだが,
|
|
|
+その斬新な構図と演出で,一世を風靡したゲームである.レバーで自機を操作して,
|
|
|
+空中攻撃弾(ザッパー)と地上攻撃弾(ブラスター)で敵を攻撃しつつ,エリアをクリア
|
|
|
+していく,というゲームである.エリアは16エリアまであって,16エリアをクリア
|
|
|
+すると,7エリアに戻る.全機がやられない限りは,延々とループするわけだ.つまり,
|
|
|
+
|
|
|
+ ゲームクリアというものが無い
|
|
|
+
|
|
|
+というゲームである.
|
|
|
+
|
|
|
+XEVIOUS には,カウンターストップというひとつのステータスがある.
|
|
|
+カウンターストップ,通称「カンスト」とは,
|
|
|
+
|
|
|
+ 9999990点
|
|
|
+
|
|
|
+のことである.ここまでいくと,これ以上点数が上がらなくなるのだ.これが
|
|
|
+「カンスト」である.これができるプレイヤーのことを,「カンストプレイヤー」
|
|
|
+とか,「1000万点プレイヤー」とか言ったりする.
|
|
|
+と,口で言うのは簡単だが,カウンターストッププレイヤーがどれくらいの
|
|
|
+ものかというと,
|
|
|
+
|
|
|
+ ゲームをしている後ろに人だかりができてしまう
|
|
|
+
|
|
|
+というくらいのものすごい実力なのである.(ちょっと言いすぎ)
|
|
|
+
|
|
|
+XEVIOUS は標準の設定だと,60000点で1機増える.カウンターストップさせるくらいの
|
|
|
+実力になると,画面最下に,
|
|
|
+
|
|
|
+ 自機の残りがずら~~~っと並んでいる
|
|
|
+
|
|
|
+ということになる.そういえば,むかしそんな状態になっていたときに,
|
|
|
+後ろを通り過ぎていった人が,「すげえうまいよこの人」と言ったあと,
|
|
|
+
|
|
|
+ 「あんなにボムが残ってる」
|
|
|
+
|
|
|
+と言ってたことがある.ボムではなくて自機なんだけどなあ.
|
|
|
+
|
|
|
+1000万点までいくのにどれくらい時間がかかるかというと,
|
|
|
+ぼくがはじめてカウンターストップさせたときは,午後の1時半から始めて,
|
|
|
+
|
|
|
+ 7時間半かかった
|
|
|
+
|
|
|
+夜の9時までやっていたわけである.目安としてははじめのうちは1時間で
|
|
|
+100万点なのだが,だんだんステージを過ぎていくと,点数が上がってくる
|
|
|
+ようなので,少しずつ効率がよくなってくるのである.
|
|
|
+XEVIOUS は昔のゲームなので,当然,continue などは無いわけである.だから,
|
|
|
+
|
|
|
+ 100円玉一枚で
|
|
|
+
|
|
|
+これだけ粘らなければならない.
|
|
|
+このあいだ,食事もとらず,トイレにもいかず,である.昼間のゲームセンターは
|
|
|
+学生が多いのだが,だんだん社会人が増えてきて,
|
|
|
+
|
|
|
+ 客層が移り変わっていくのがわかってしまう
|
|
|
+
|
|
|
+1時間くらいの時間がちょっとできたとき,暇つぶしにプレイすることがたまにある.
|
|
|
+こんなときはカウンターストップさせるほどの時間は無いわけであるから,
|
|
|
+適当な時間でわざとやられて GAME OVER にするわけであるが,このようなときは
|
|
|
+そのまま GAME OVER にしてはいけない.そこで力尽きたと思われてしまうからである.
|
|
|
+必ず,
|
|
|
+
|
|
|
+ 100万点
|
|
|
+
|
|
|
+とか,
|
|
|
+
|
|
|
+ 99万9990点
|
|
|
+
|
|
|
+にそろえなければならない.これもカウンターストッププレイヤーのひとつの
|
|
|
+プライドである.このように点数をそろえることによって,ネームエントリーに,
|
|
|
+
|
|
|
+ おれはほんとはもっと先までいけたんだけど,わざとここでやめたんだぞ
|
|
|
+
|
|
|
+というメッセージを残しておくわけだ.
|
|
|
+このためには,トーロイドは30点,ゾルバグは100点,テラジは600点,
|
|
|
+ギドスパリオは10点,ザガートは150点,流れザガートは100点,などというように,
|
|
|
+敵機や地上物の点数まで正確に把握しておいて,
|
|
|
+
|
|
|
+ 点数を調整しながらプレイする
|
|
|
+
|
|
|
+というくらいの実力が必要である.
|
|
|
+だから,XEVIOUS のハイスコアランキングを見たときに,
|
|
|
+
|
|
|
+ 1234560点
|
|
|
+
|
|
|
+とかになっていたとしたら,ああ,さっきまですごいプレイヤーがプレイして
|
|
|
+いたんだな,と理解しなければいけないのである.
|
|
|
+
|
|
|
+慣れてくると,1000万点いくのにかかる時間もだんだん短縮されてくる.
|
|
|
+機数に余裕があれば,
|
|
|
+
|
|
|
+ 得点の高いエリアでわざとなんどもやられる
|
|
|
+
|
|
|
+(9エリアとかだ)とか,ジェミニ誘導という高等技術を使って,短時間で得点を
|
|
|
+かせぐことができるようになるからだ.エリアの途中でやられると,エリアの先頭に
|
|
|
+戻るので,同じエリアをなんども繰り返せるのだ.
|
|
|
+
|
|
|
+しかし,それでも最低4時間くらいはかかる.そこで,XEVIOUS をやるとき,
|
|
|
+100円玉を入れる前には,
|
|
|
+
|
|
|
+ それなりの心構えが必要になる
|
|
|
+
|
|
|
+ここでその心構えについて書こう.
|
|
|
+
|
|
|
+まず,重要なのは椅子だ.ゲームセンターの椅子は座りごごちがあまりよくない
|
|
|
+ものが多いが,2種類の椅子があるゲームセンターは多い.できるだけ座りごごちの
|
|
|
+良い椅子を持ってきて使う.背もたれつきのものがあれば,なるべくそれを使う.
|
|
|
+ここで,
|
|
|
+
|
|
|
+ 椅子を持ってくるのなんて恥ずかしい
|
|
|
+
|
|
|
+とか,
|
|
|
+
|
|
|
+ 椅子なんてなんでもいいや
|
|
|
+
|
|
|
+などと思ってはいけない.これからその椅子に何時間も座るわけであるから,
|
|
|
+椅子は重要な要素なのだ.
|
|
|
+
|
|
|
+飲物は,必ず用意したほうがよい.プレイ前にどんなに喉が渇いていなくても,
|
|
|
+
|
|
|
+ 3時間もやっていれば必ずなにか飲みたくなってくる
|
|
|
+
|
|
|
+しかし,飲物は大量に飲んではいけない.トイレが近くなるからだ.
|
|
|
+
|
|
|
+ ちょっと唇を濡らす程度に
|
|
|
+
|
|
|
+ちびりちびりと飲むようにする.
|
|
|
+プレイ中には甘いものが欲しくなってくるので,オレンジジュースなど,なるべく
|
|
|
+あまったるい飲物を選んだほうがよい.コーラなどの炭酸飲料は
|
|
|
+
|
|
|
+ 気が抜けてしまうことも考えなければならない
|
|
|
+
|
|
|
+のである.
|
|
|
+
|
|
|
+食糧も準備したほうがよい.プレイ中は甘いものが欲しくなってくるので,
|
|
|
+ひと粒チョコやキャンディーのように,簡単に口に入れられるものをポケットに
|
|
|
+大量に用意しておくようにする.ゲームセンターに灰皿があれば,持ってきておく.
|
|
|
+これは,チョコレートの包み紙をまとめておくためだ.
|
|
|
+
|
|
|
+問題は,トイレだ.
|
|
|
+プレイ前には,どんなにトイレに行く必要は無く感じても,必ず行くようにする.
|
|
|
+これは行かないと,ほんとうに絶対に後悔する.
|
|
|
+
|
|
|
+しかし,上級プレイヤーになってくると,
|
|
|
+
|
|
|
+ プレイ中にトイレに行くことができる
|
|
|
+
|
|
|
+ようになる(実話).機数が半減してしまうのを承知の上で,ゲーム中にトイレに行って
|
|
|
+しまうわけだ.
|
|
|
+7エリアは,はじめにバキュラの応酬があるので,ほっておいてもやられにくい.
|
|
|
+後ろに人だかりができているとき,プレイの合間に,悠々と
|
|
|
+
|
|
|
+ 缶ジュースなどをちょっと買ってこれる
|
|
|
+
|
|
|
+ようになれば,上級プレイヤーといえるだろう.(これも実話)
|
|
|
+
|
|
|
+だれも信じてくれないのだが,両腕を交差させてプレイしたことがある.
|
|
|
+XEVIOUS はあまり点数をとりすぎると,それ以上プレイできなくするように,
|
|
|
+レバーやボタンが突然入れ替わったりすることがある.(そういう設定ができるらしい)
|
|
|
+以前,あるゲームセンターでやっていたところ,400万点ほどのところで,
|
|
|
+
|
|
|
+ いきなり操作不能になった
|
|
|
+
|
|
|
+これは噂のボタン入れ替わりかとおもっていろいろいじってみると,
|
|
|
+
|
|
|
+ レバーが1プレイヤーと2プレイヤーで入れ替わり,
|
|
|
+ 空中弾(ザッパー)が撃てなくなっていた
|
|
|
+
|
|
|
+昔のテーブルタイプの匡体だったら,プレイを続行するのは難しかっただろう.
|
|
|
+たとえ反対側に行って2プレイヤー用のレバーで操作したとしても,
|
|
|
+画面は1プレイヤーのほうを向いているわけだから,動きが逆向きになるからである.
|
|
|
+ところが,この時代の匡体は,ストリートファイター2が既にあった時代で,
|
|
|
+2人が並んで対戦プレイできるタイプの匡体であった.
|
|
|
+匡体の操作パネルは,こんなかんじだ.
|
|
|
+
|
|
|
+ 1Pレバー 1P START 2Pレバー
|
|
|
+ ● 1P地上攻撃ボタン ○ ● 2P地上攻撃ボタン
|
|
|
+ \ ○ ○ \ ○
|
|
|
+ ○ 2P START ○
|
|
|
+ 1P空中攻撃ボタン 2P空中攻撃ボタン
|
|
|
+
|
|
|
+つまり,2プレイヤー用のレバーはすぐとなりにあるわけだ.しかし,地上攻撃
|
|
|
+(ブラスター)の発射ボタンは1プレイヤーのままで変わっていない.
|
|
|
+そこで,
|
|
|
+
|
|
|
+ 左右の腕を交差させて,左手で2Pレバーを操作して,右手で1P用の
|
|
|
+ 地上攻撃ボタンを押す
|
|
|
+
|
|
|
+ということになった.しかも,ザッパーが発射できないので,
|
|
|
+
|
|
|
+ 空中の敵は,撃てない
|
|
|
+
|
|
|
+という苛酷な状況である.
|
|
|
+しかし,こんな状況でも,なんとか1時間くらい粘って,最終的には600万点くらい
|
|
|
+までいった.しかしこれを後輩に話したら,
|
|
|
+
|
|
|
+ 話作んないでくださいよ
|
|
|
+
|
|
|
+とつっこまれてしまった.実話なんだけどなあ.
|
|
|
+
|
|
|
+うーん,マニアックなネタになってしまった.
|
|
|
+
|
|
|
+(次回作の OMAKE.jpn に続く)
|
|
|
+
|
|
|
+■■ テトリスについて
|
|
|
+
|
|
|
+テトリスにもカウンターストップがある.レベル99,ライン999,スコア999990点,
|
|
|
+というのが,それである.ぼくは,1度だけ,テトリスをカウンターストップ
|
|
|
+させたことがある.もちろん,
|
|
|
+
|
|
|
+ 100円玉1枚
|
|
|
+
|
|
|
+でだ.
|
|
|
+テトリスのカウンターストップは,だいたい1時間半くらいでできる.しかし,
|
|
|
+XEVIOUSに比べて,はるかに難しいと思う.というのは,テトリスというのは
|
|
|
+いちばん上まで積まれたらそれで終わりなわけであるから,プレイ中にちょっとでも
|
|
|
+気を抜こうものなら,
|
|
|
+
|
|
|
+ その瞬間にゲームオーバーになってしまう
|
|
|
+
|
|
|
+つまり,1時間半という時間の間,集中力を切らさずに持続させる必要があるのだ.
|
|
|
+XEVIOUS では,7エリアのバキュラの応酬や,9エリアのシオナイト,
|
|
|
+11エリアの先頭付近など,気を抜ける場所が何箇所かある.ちょっと息抜きに
|
|
|
+なにか食べようかとも思うものである.しかし,テトリスでは,
|
|
|
+
|
|
|
+ プレイ中にキャンディーの包みをほどく,なんて暇はない
|
|
|
+
|
|
|
+まあそこまでいうと大げさで,実際にはチョコレートの包みをほどいたり,
|
|
|
+飲物をちょっと飲むくらいできるが,基本的には腹が空こうが喉が渇こうが,
|
|
|
+
|
|
|
+ 1時間半我慢する
|
|
|
+
|
|
|
+というプレイを要求されるわけである.
|
|
|
+
|
|
|
+テトリスも,上級レベルになるといろいろな技を使えるようになってくる.
|
|
|
+階段状になっている一番高いところにブロックをいったん置いて,徐々に落として
|
|
|
+時間を稼ぐ「階段落とし」とか,一見スキマができてしまうような置きかたに
|
|
|
+見えるのだが,実はラインがうまく消えてくれて,スキマは無くなる「入れ消し」,
|
|
|
+などというのがよく使われるテクニックである.しかし,これぞ上級者のテクニックと
|
|
|
+いうならば,それはやはり「回転入れ」だ.
|
|
|
+
|
|
|
+ □□□
|
|
|
+ □
|
|
|
+
|
|
|
+ ■■■■ ■■■■
|
|
|
+ ■■■■ ■■■■
|
|
|
+ ■■■ ■■■■
|
|
|
+ ■ ■■■■■■■■
|
|
|
+
|
|
|
+とか,
|
|
|
+
|
|
|
+ □□
|
|
|
+ □□
|
|
|
+
|
|
|
+ ■■■ ■■■■■
|
|
|
+ ■■■ ■■■■
|
|
|
+ ■■■ ■■■■■
|
|
|
+ ■■■■■■■ ■■
|
|
|
+
|
|
|
+とか,
|
|
|
+
|
|
|
+ □
|
|
|
+ □
|
|
|
+ □□
|
|
|
+
|
|
|
+ ■■■■ ■■■■
|
|
|
+ ■■■■ ■■■
|
|
|
+ ■■■■ ■■■
|
|
|
+ ■■ ■■■■■■■
|
|
|
+
|
|
|
+とかを入れてしまうテクニックだ.
|
|
|
+レベル99でブロックがガンガン落ちてきている状態で,
|
|
|
+
|
|
|
+ □□□□
|
|
|
+
|
|
|
+ ■■■■ ■■■■
|
|
|
+ ■■■ ■■■
|
|
|
+ ■■■■ ■■■■
|
|
|
+ ■■■■■ ■■■■
|
|
|
+ ■ ■■■■■■■■
|
|
|
+
|
|
|
+のようなのを「回転入れ」と「入れ消し」でうまく入れたりすると,
|
|
|
+
|
|
|
+ ギャラリーが寄ってくる
|
|
|
+
|
|
|
+かもしれない.
|
|
|
+
|
|
|
+うーん,これもマニアックなネタになってしまった.
|
|
|
+
|
|
|
+(次回作の OMAKE.jpn に続く)
|
|
|
+
|
|
|
+■■ ソースコードを公開することについて
|
|
|
+
|
|
|
+Windows のフリーソフトとかで思うことなのだが,ソースが添付されてないものが
|
|
|
+多い.というか,添付されてないのが普通である.これがぼくには不思議で
|
|
|
+たまらない.なぜソースコードを添付しないのだろうか,と,ついつい理由を聞きたく
|
|
|
+なってしまう.
|
|
|
+もしもそれが,「どうせソースコードを添付したって,だれも見ないだろう」とか,
|
|
|
+「普通の人はコンパイラなんてもってないから,ソースを添付する意味は無い」
|
|
|
+などという理由なのだとしたら,それは大きな間違いだ.
|
|
|
+
|
|
|
+まず,ソースが添付されていた場合に,それを見るか見ないかという話であるが,
|
|
|
+実際のところ,見る人は少ないだろう.しかし,見る人は見る.見る人は必ずいる.
|
|
|
+
|
|
|
+(次回作の OMAKE.jpn に続く)
|
|
|
+
|
|
|
+■■ FreeBSD について
|
|
|
+
|
|
|
+ぼくのいままでのコンピュータ歴の中で一番大きかったことは,FreeBSD との出会い
|
|
|
+だったと思う.FreeBSD のなにが素晴らしいかと言うと,一言で言うならばそれは,
|
|
|
+
|
|
|
+ 開発環境がある
|
|
|
+
|
|
|
+ということだ.これは
|
|
|
+
|
|
|
+ 作ることができるOS
|
|
|
+
|
|
|
+ということである.いろいろな意味で,である.
|
|
|
+
|
|
|
+Cコンパイラは標準で(正確には GNU の成果物である)ついてくる.emacs や make,
|
|
|
+gdb などの素晴らしい開発環境もついてくる.動作するアプリケーションは,
|
|
|
+たいていソースコードフリー(自由,という意味のフリーである)のものである.
|
|
|
+これはぼくのような,
|
|
|
+
|
|
|
+ まさに作ることがだいすきな人間
|
|
|
+
|
|
|
+には,たまらない素材だ.「作る」ための材料や道具,資料がそこらじゅうに
|
|
|
+いっぱいなのである.
|
|
|
+いちばんうれしいのは,作るためのネタというか,「きっかけ」に満ちあふれて
|
|
|
+いることだ.だから,目の前に FreeBSD マシンが1台あるだけで,まったく飽きない.
|
|
|
+ネタはいくらでもあるので,1日中ずっと調べ,試して,作ることができる.
|
|
|
+(ちょっといいすぎか?)
|
|
|
+
|
|
|
+とはいっても,はじめからそこまでわかってて使いはじめたわけではない.
|
|
|
+使っているうちに,そういったことがだんだんとわかるようになり,それが自分に
|
|
|
+マッチしていたためにさらに深く使うという好循環(悪循環?)で,どんどん深みに
|
|
|
+はまっていったわけである.自分がモノ作りが好きだということをわからせてくれた
|
|
|
+OS でもある.(それまでもいろいろと作っていたが,無意識で作っていたと思う)
|
|
|
+
|
|
|
+FreeBSD が無かったら,今こんなにコードを書いてはいないだろう.カーネルや
|
|
|
+デバイスドライバに興味を持つことも無かったかもしれない.しかし,FreeBSD なら
|
|
|
+いくらでも自分で作ることができるわけだから,モノ作り大好き人間にとって,
|
|
|
+こんなに興味をそそり,刺激を受ける素材はない.
|
|
|
+
|
|
|
+実際のところ,FreeBSD はいい OS であり,いい開発環境である.そして僕自身にも
|
|
|
+合っている.今後もずっと使い続けていくだろう.
|
|
|
+
|
|
|
+しかし最近,ぼくの中ではその対抗馬が出てきている.それは NetBSD だ.
|
|
|
+
|
|
|
+FreeBSD と比べて NetBSD は何が違うのかというと,ぼくにとっては,
|
|
|
+
|
|
|
+ おもしろいOSである
|
|
|
+
|
|
|
+ということである.それは NetBSD のソースの sys/arch の下で ls をするとわかる.
|
|
|
+NetBSD が移植されたマシンのディレクトリが延々と出てくるのだ.
|
|
|
+
|
|
|
+NetBSD が面白いと思いはじめたきっかけは,カーネルを見たりいじったりするように
|
|
|
+なってからだ.パームコンピュータやモバイルなどを見たとき,FreeBSD は
|
|
|
+(移植すれば別であるが,今のところはまだ)動かないだろうと思う.しかし,
|
|
|
+NetBSD は動くことが多い.たとえ動かなくても,誰かが移植するかもしれない.
|
|
|
+たとえ誰も移植しなくとも,自分ももっと勉強して力をつければ,将来は自分で移植
|
|
|
+できるかもしれないという夢がある.携帯電話やカーナビだってそうだ.
|
|
|
+だから,ぼくにとって NetBSD は「夢のあるOS」だ.
|
|
|
+
|
|
|
+そういう意味で,Linux も夢がある.ぼくが Linux をあまり使わない(カーネルの
|
|
|
+ソースを読むことはあるが)のは,単にはじめに FreeBSD から入って,その流れで
|
|
|
+NetBSD を読んでいるからだが,あまり使ってないのはちょっと残念な気もする.
|
|
|
+
|
|
|
+NetBSD にも弱点はある.NetBSD の場合だと,使う人 = 作る人 という意味あいが
|
|
|
+強いので,ユーザ環境は FreeBSD や Linux ほどには整備されていないように感じる.
|
|
|
+そんなわけで,使うには FreeBSD,作るには NetBSD が自分にとっては最適だと
|
|
|
+思っている.
|
|
|
+
|
|
|
+ぼくがはじめて FreeBSD と出会ったのは,大学4年で研究室に配属されたときだ.
|
|
|
+当時研究室には HP-UX のマシンが数台と,FreeBSD の入った AT 互換機が数台,
|
|
|
+MS-DOS の入った PC-9801 が数台あった.以前は HP-UX のマシンをメインとして,
|
|
|
+PC-9801 から telnet して計算を走らせるみたいな使いかたをしていたようだ.
|
|
|
+ぼくがいた部屋には FreeBSD マシンは2台しかなく,HP-UX よりも高速で軽かった
|
|
|
+ため人気があり,ぼく自身あまり使うことはなかった.そもそも大学4年のときは,
|
|
|
+C言語の勉強に注力していたため,UNIX というものをあまりしらなかった.login
|
|
|
+しても,
|
|
|
+
|
|
|
+ 自分のホームディレクトリ以外の部分は見たことが無かった
|
|
|
+
|
|
|
+というくらいである.自宅に PC-9801 があり,当時はそちらをメインで使っていた
|
|
|
+ために,UNIX も C 言語を書くためのプラットホームとしてしか使っていなかった
|
|
|
+のだ.
|
|
|
+
|
|
|
+そんなわけで UNIX についてほとんど知らないまま修士1年となった4月のこと,
|
|
|
+当時の研究室のシステム管理者だった N さんに言われた.
|
|
|
+
|
|
|
+ 坂井君,スーパーユーザーをやってくれない?
|
|
|
+
|
|
|
+UNIX をまったく使えない人間としては「スーパーユーザー」なんていう,
|
|
|
+
|
|
|
+ いかにも特権階級のような
|
|
|
+
|
|
|
+言葉の響きは魅力的であり,なにも考えずに引き受けた.そして初めての仕事が,
|
|
|
+
|
|
|
+ とりあえずこのマシン好きにしていいから,
|
|
|
+ FreeBSD を入れてみてくれない?
|
|
|
+
|
|
|
+である.UNIX のことは login の仕方しか知らず,AT 互換機のことはほとんど知らず,
|
|
|
+ネットワークのことは ftp と telnet と rlogin の使いかたしか知らない,という
|
|
|
+状態のぼくに,http://www.jp.freebsd.org のアドレスだけ教えて,
|
|
|
+
|
|
|
+ インストールからネットワークの設定まで
|
|
|
+
|
|
|
+いきなりすべてやらせようというのであるから,今思うと,
|
|
|
+
|
|
|
+ なんて無茶な方法だ
|
|
|
+
|
|
|
+と思ってしまう.
|
|
|
+
|
|
|
+こうして初めての FreeBSD との取っ組み合いが始まったわけである.
|
|
|
+
|
|
|
+2002/1
|
|
|
+(次回作の OMAKE.jpn に続く)
|
|
|
+
|
|
|
+■■ カーネルについて
|
|
|
+
|
|
|
+カーネルのソースを読むことは楽しい.最近は PowerPC のアセンブラが(少しだけ)
|
|
|
+わかるようになってきたので,さらに楽しくなった.
|
|
|
+
|
|
|
+カーネルの勉強をしてみたいんだけど,
|
|
|
+
|
|
|
+ なにから手をつければ良いかわからない
|
|
|
+
|
|
|
+という人は多いと思う.実際,ぼく自身もそういう時期があった.ここで,ぼくなりの
|
|
|
+カーネルの読みかたを,無謀にも書いてみようと思う.とはいってもぼく自身,
|
|
|
+それほどよく読んでいるというわけでもないし,まだまだ入門者の域を出ていない.
|
|
|
+しかもぼくの場合,読むのはブートローダー,ブートストラップ(それも一番はじめの
|
|
|
+ほう)とデバイスドライバが主(ていうかそれ以外はあまり読んだことが無い)で
|
|
|
+あるので,偏った話になると思う.参考までに読んでもらえればと思う.
|
|
|
+
|
|
|
+カーネルにしてもブートローダーにしても,まず,どこからはじまるのかを
|
|
|
+知りたい人は多いだろう.カーネルやブートローダーの場合には,main() 関数から
|
|
|
+始まるというわけではない.だから,
|
|
|
+
|
|
|
+ grep main *
|
|
|
+
|
|
|
+とかしても無駄である.多くのばあい,アセンブラのコードのどこかに
|
|
|
+startup: のようなラベルがあり,そこから始まるようになっているのである.
|
|
|
+これは NetBSD だと sys/arch/[アーキ名]/[アーキ名]/locore.s にあるのだが,
|
|
|
+これを探すにはどうするか.それは,Makefile を読むのだ.
|
|
|
+
|
|
|
+Makefile を読むと,リンカを使ってカーネルモジュールの最終リンクを行ない,
|
|
|
+最終的なカーネルオブジェクトを作成する部分が必ずあるはずだ.このとき,
|
|
|
+ELF などのオブジェクト形式で作成するためには,スタート地点の指定が必要なので,
|
|
|
+スタート地点を指定している部分が必ず存在する.リンカは多くの場合 GNU の ld を
|
|
|
+使用しているであろうから,Makefile 中で,ld を使用している部分を探す.
|
|
|
+これはふつうのまっとうな Makefile なら,LD ?= ld というように変数に置き換えて,
|
|
|
+$(LD) のようにして使用しているはずである.そのような場所を探す.
|
|
|
+(ひょっとしたら gcc からリンカを呼び出すことで,ld を直接使ってない場合が
|
|
|
+ あるかもしれないので注意である)
|
|
|
+
|
|
|
+で,ld を使用している部分を見つけたら,以下のオプションに注意する.
|
|
|
+
|
|
|
+ -e [entry] スタート位置のラベルの指定
|
|
|
+ -Ttext [address] テキストセグメントのアドレスを指定
|
|
|
+ -c [commandfile] LD script ファイルを指定
|
|
|
+ -T [commandfile] -c と同じ
|
|
|
+
|
|
|
+-e でスタート位置を指定していたら,そのラベルの位置がテキストセグメントの
|
|
|
+先頭にくるということなので,まさにそのラベルの位置から実行が始まる.
|
|
|
+あとは grep でラベルを探すだけである.
|
|
|
+-c や -T で LD script ファイルを指定している場合には,その LD script ファイルの
|
|
|
+中で,セグメントの分割方法を細かに指定しているはずである.その中で
|
|
|
+テキストセグメントの先頭に配置されているラベル名を調べる.そこが,スタート地点
|
|
|
+である.
|
|
|
+
|
|
|
+実際には -e オプションは使われず,LD script によってセグメントが分割されて
|
|
|
+いることが多い.スタート位置のラベル名がわかったら,あとはおもむろに
|
|
|
+grep で探すだけだ.たいていは *start*.s のような名前のアセンブラファイルの
|
|
|
+中にある.NetBSD だと locore.s だが,Linux だと start なんちゃらとかいう
|
|
|
+ファイルにあるようである(と思ったたしか).また,スタート位置はアーキテクチャ
|
|
|
+依存なので,アーキテクチャごとにディレクトリがわかれているような場合には,
|
|
|
+アーキテクチャ依存の部分に入っているはずである.
|
|
|
+
|
|
|
+ブート部分を読む場合には,アセンブラの知識は必須である.C の知識だけでも
|
|
|
+読めなくはないが,何をやっているのか,プロセッサはどう動いているのかを
|
|
|
+知りたければ,アセンブラを読むしかない.しかし,アセンブラはアセンブラの
|
|
|
+文法だけ知っていれば読めるというわけではない.プロセッサに対する知識が絶対に
|
|
|
+必要だ.なぜなら,とくにブートストラップやデバイスドライバでは,CPU の
|
|
|
+レジスタの設定などを行なうため,
|
|
|
+
|
|
|
+ レジスタの意味がわからなければどうしようもない
|
|
|
+
|
|
|
+からである.
|
|
|
+
|
|
|
+アセンブラに関する資料は,C言語に関する資料に比べれば,残念ながら最近はあまり
|
|
|
+多くないように思う.これは,
|
|
|
+
|
|
|
+ 本屋に通って必死に探す
|
|
|
+ 雑誌記事をひたすら探す
|
|
|
+ Web 検索でひたすら探す
|
|
|
+
|
|
|
+などして勉強することになる.アセンブラは略語だらけなので,実際のソースだけ
|
|
|
+見て勉強するのは辛いと思う.ここで,ひとついい方法がある.クロスコンパイル
|
|
|
+環境を作成して,クロスコンパイラで -S オプションでサンプルプログラムを
|
|
|
+コンパイルしてみるのだ.このようにすると as を呼び出す直前で中止して,
|
|
|
+アセンブラ出力を出してくれる.これを眺めるのだ.Cでやりたいことをアセンブラで
|
|
|
+書くとどうなるのか教えてくれるので,実際のところこれはけっこう参考になる.
|
|
|
+
|
|
|
+と,まあ,ここまでいろいろ書いてしまって,まるでここに書いたことが
|
|
|
+全部できないとカーネルは読めないみたいになってしまったが,ただ思いつくままに,
|
|
|
+
|
|
|
+ そういえば,あんなこともやったなあ
|
|
|
+
|
|
|
+というレベルで書いただけなので,あまり気にしないでほしい.一番重要なことは,
|
|
|
+本人のやる気だ.アセンブラの勉強も含め,カーネルの勉強は短期間でできるものでは
|
|
|
+なく,長期的な展望が必要だとおもう.だから,
|
|
|
+
|
|
|
+ 来年の今ごろには,読めるようになっているといいなあ
|
|
|
+
|
|
|
+というくらいの余裕を持って,あまり負担をかけずにちまちまとやっていくことが
|
|
|
+大事であると思う.
|
|
|
+
|
|
|
+2002/2
|
|
|
+(次回作の OMAKE.jpn に続く)
|
|
|
+
|
|
|
このファイルはここまで.
|