(99/03/01〜99/03/31)


99/03/01

・ログを分離しました。

「Windows Undocumented ファイルフォーマット」
 バグなのか、誤訳なのか、筆者の解析が甘いのか?こんなん参考にしてたんじゃSHGエディタなんて作れないって。

・SHG(Segmented Hyper Graphic)ファイルフォーマット
 DEKOの解析結果を交えて解説する。私の奴よりまともなSHGエディタを作ろうと思っているヒトはぜひとも参考にして頂きたい。ただし、メタファイルやマクロについての解説は今回は除いてある。

 ※Delphi4でコーディングする際にはフィールドタイプに注意すること(int=SmallInt等)。

 [構造]

  SHGファイルはMRB(マルチレゾリューションビットマップ)ファイルを拡張したフォーマットになっている。

SHGFILEHEADER
SHGIMAGEHEADER
SHGBITMAPHEADER
RGBQUADS
BITMAP
(ピクセルデータ)
HOTSPOTHEADER
HOTSPOTRECORD
マクロ文字列(オプション)
コンテキストID
コンテキスト文字列

 [SHGFILEHEADER]

フィールド名 タイプ 注釈 備考
sfType[2] char 'lp'(0x706c) 但しデータがLZ77圧縮されている場合には'lP'(0x506c)となる。
sfNumObjects int ファイル中のイメージの数  
sfObjectOff[] DWORD SHGIMAGEHEADERまでのオフセット SizeOf(SHGFILEHEADER)

 

 [SHGIMAGEHEADER]

フィールド名 タイプ 注釈 備考
siImageType BYTE 0x06=BMP
0x08=WMF
 
siCompression BYTE 0x00=非圧縮
0x01=RLE圧縮
0x02=LZ77圧縮
 
siDPI BYTE or
WORD
DPI×2 通常のBitmapは96DPI

 

 [SHGBITMAPHEADER]

フィールド名 タイプ 注釈 備考
sbIsZero BYTE 常に0x00  
sbDPI BYTE or
WORD
DPI×2 通常のBitmapは96DPI
sbTwoHund WORD 常に0x0200  
sbNumBits BYTE or
WORD
BPP×2 =BitmapInfoHeader.biBitCount×2
sbWidth WORD or
DWORD
Bitmapの幅×2 =BitmapInfoHeader.biWidth×2
sbHeight WORD or
DWORD
Bitmapの高さ×2 =BitmapInfoHeader.biHeight×2
sbNumQuads WORD or
DWORD
RGBQUADSの数×2 =BitmapInfoHeader.biClrUsed×2
sbNumImp WORD or
DWORD
重要なRGBQUADSの数×2 0で構わない
sbCDataSize WORD or
DWORD
BITMAPのサイズ×2 BITMAPFILEHEADERやBITMAPINFOHEADER、RGBQUADSを含まない。BITMAPが圧縮されているのならば圧縮後のサイズ。
sbSizeHS WORD or
DWORD
HotSpotデータのサイズ×2 (HOTSPOTHEADER + HOTSPOTRECORD + マクロ文字列 + コンテキストIDとコンテキスト文字列)×2
sbUnk1 DWORD 未知 (SHGIMAGEHEADER + SHGBITMAPHEADER + RGBQUADS)
×2ではない事に注意。
sbSizeImage DWORD sbCDataSize(2倍する前の値) + sbUnk1 ×2ではない事に注意。

 

 [HOTSPOTHEADER]

フィールド名 タイプ 注釈 備考
hhVersion BYTE 常に0x01  
hhNumHS WORD ホットスポットの数  
hhConTextOffset DWORD コンテキストIDとコンテキスト文字列までのオフセット マクロデータのサイズ。

 

 [HOTSPOTRECORD]

フィールド名 タイプ 注釈 備考
hrType WORD 0x00E2=可視ポップアップ
0x00E3=可視ジャンプ
0x00C8=可視マクロ
0x04E6=不可視ポップアップ
0x04E7=不可視ジャンプ
0x04CC=不可視マクロ
コンテキスト文字列に'>'か'@'が含まれるとマクロ扱いとなり、第4ビットがセットされる。
hrZero BYTE ホットスポットの数  
hrBox RECT ホットスポットの領域 Left,Top,Width,Height(BMP)
Left,Top,Right,Bottom(WMF)
hrMacOffset DWORD マクロデータへのオフセット hrTypeの第4ビットがセットされていなければコンテキスト文字列のHash。

 

 [マクロ文字列(オプション)]

  Null終端でマクロ文字列が繰り返される。

 

 [コンテキストIDとコンテキスト文字列]

  Null終端で(コンテキストIDとコンテキスト文字列)が繰り返される。

 

 ついでにBitmapの構造も示しておく。この構造さえ知っていればSHGビュワーはなんなく作れる。

 

 [構造]

  いわゆるDIB(デバイス独立ビットマップ)の構造は以下のようになる。必ずしもRGBQUADSが存在する訳ではない事に注意。

BITMAPFILEHEADER
BITMAPINFOHEADER
RGBQUADS
BITMAP
(ピクセルデータ)

 [BITMAPFILEHEADER]

  ※Delphi4ではTBitmapFileHeaderとして定義されています。

フィールド名       タイプ     注釈                備考                  
byType WORD 'BM'(0x4D42)  
bfSize DWORD ファイルサイズ  
bfReserved1 WORD 予約。常に0x00  
bfReserved2 WORD 予約。常に0x00  
bfOffBits DWORD BITMAP(ピクセルデータ)までのオフセット  

 

 [BITMAPINFOHEADER]

  ※Delphi4ではTBitmapInfoHeaderとして定義されています。

フィールド名       タイプ     注釈                備考                  
biSize DWORD BitmapInfoHeaderのサイズ SizeOf(BitmapInfoHeader)
biWidth DWORD Bitmapの幅 =SHGBitmapHeader.sbWidth
biHeight DWORD Bitmapの高さ =SHGBitmapHeader.sbHeight
biBitCount WORD 1ピクセルあたりのカラービットの数 =SHGBitmapHeader.sbNumBits
biCompression WORD BI_RGB=非圧縮
BI_RLE8=1Pixel 8Bit RLE
BI_RLE4=1Pixel 4Bit RLE
通常はBI_RGBを指定。
biSizeImage DWORD イメージの全バイト数  
biXPelsPerMeter DWORD 水平解像度 通常は0
biYPelsPerMeter DWORD 垂直解像度 通常は0
biClrUsed DWORD 使用するRGBQUADSの数 通常は0(すべて)
biClrImportant DWORD 重要なRGBQUADSの数 通常は0(すべて)

 

 [RGBQUAD]

  ※Delphi4ではTRGBQUADとして定義されています。

フィールド名       タイプ     注釈                備考                  
rgbBlue BYTE 青の輝度  
rgbGreen BYTE 緑の輝度  
rgbRed BYTE 赤の輝度  
rgbReserved BYTE 予約。常に0x00  

 

・「SHG Editor
 とりあえず完成。仕様は以下の通り。

 1.RLE圧縮/LZ77圧縮されたSHGファイルに対応。
 2.読込/書込共にSHGのサブセットを使用。
 3.保存時にはRLE圧縮(圧縮した方がファイルサイズが小さくなる場合のみ)。

 どの辺が「サブセット」なのかと申しますと...

 1.MRBに対応していない(複数のイメージがあっても最初の一つしか読み書きしません)。
 2.マクロに対応していない。
 3.WMFに対応していない。

 まぁ、普通に使う分には問題ないんですけどね。これで作ったSHGファイルはもちろんSHED.EXEでも読めますよ(^^;

・Next Jobs
 VBの前にACCESSがあるらしい。どっちでも同じだが('嫌'という事)。

・今月はしょっぱなから重い話題だなぁ(SHGフォーマット解説といい...)。
 そろそろ普通の話に戻さなきゃ。でもこんなん書いてもすぐ変な話題になっちゃうんだよなぁ。

・>私の奴よりまともなSHGエディタを作ろうと思っているヒトは...
 いないだろうなぁ(^^;

・松本孝弘のソロシングル(「The Change」)
 既にCMで流れているが、以前ツアーで演った曲のようだ。確かVIDEO「"BUZZ!!" THE MOVIE」でも確認できたと思う。03/25発売予定。


99/03/02

・お見舞い
 大学の時の先輩の嫁さんで、某コンビニのバイトの時に一緒だった某嬢のお見舞いに行った。お見舞いとは言っても出産なんだけどね。とりあえず元気そうでなにより。

・書き忘れ
 最近日記を更新していないやなちゃんがPSを改造した。件のFF8対策で切り替えSWを付けた(加工をちょっとお手伝いした)。

SHG Editor ver0.20
 HotSpot領域のカット&ペーストに対応。これはKoji27氏の要望(?)でもあった。プログラムの構造上カット&ペーストはちょっと難儀したが、なんとかなったようだ。

・あ。
 Help書いてないや。Koji27氏の話題出しときながら...(^^;


99/03/03

・今日は
 楽しい「ひなまつり」。

SHG Editor
 yashima氏よりMailを頂く。

>SHGファイルとして保存しようとしたところ
>3回中3回アプリケーションが落ちました。
>何か保存のところでしてたりするのでしょうか?
>でもまだ出来立てなので
>このぐらいは仕方がないとは思うのですが・・・
>でもせっかく作った後に固まるのは・・・

 氏には「RLE圧縮やってるからで'固まる'訳ではない」と弁明しましたが、ちょっと次のバージョンで修正を加えたいと思っています。

 1.保存時にRLE圧縮する/しないを選択できるようにする。
 2.RLE圧縮時には進行状況ゲージを付ける(できるものなら)。

確かに「256色Bitmap,HotSpot8個」だと保存時に時間がかかりますものね。

>ホットスポットの編集をするときに、
>すべての項目が書き終わってEnterキーを押すと
>編集完了となると使いやすいです。

 これは既にver0.20で実装してあります。ちなみにESCキーだとキャンセルできます。

 そうそう、'固まる'で思い出しましたが、「保存(or上書)中」にさらに「保存(or上書)」を行うと「~TMP_001.BMPが作成できません」(または「開けません」)とエラーが表示される事があります。これは次のバージョンで直しておきます。

SHG Editor ver0.30
 アップロード。「レジストリ初期化スイッチ」ってのは「SHG_EDIT /I」だの「SHG_EDIT -Init」だのやると使用しているレジストリをキレイに削除してくれるというもの(GT32.EXEにもあったけど)。


99/03/04

SHG Editor ver0.40
 アップロード。見た目も機能も前のバージョンと大差はない。...にもかかわらず、バージョンが上がったのは何故か?某所でいろいろやっているので、解るヒトには解るでしょう。解らないヒトもじきにわかります。で、変更点。

 1.外部起動用のスイッチを追加(非公開)
 2.履歴にショートカットを付けた。

アヤしいですねぇ、1番が(^^; 実はこのスイッチが有効だと...。


99/03/05

SHG Editor ver0.50
 アップロード。ありゃ、気がつきゃ毎日更新してるよ。

・Delphi4のParamCount,ParamStr
 Delphi4で作ったプログラムをCreateProcessで実行するとParamCount,ParamStrが正しく返ってこない。これは「仕様」らしい。Win32APIのHelpを読むとCreateProcessの引数は「GetCommandLine」APIで取得しなければならないようだ。詳しくはこちら

・GetCommandLine
 引数が単一の文字列で返されるので引数をバラすのが大変。WhiteSpace区切りなのはいいとして、ダブルクォーテーションで括られた文字列中のWhiteSpaceの処理とか...("C:\PROGRAM FILES\DUMMY.DAT"とか)。

・もひとつ補足(GetCommandLine)
 OSから直接起動した場合には、

argv[0] argv[1] argv[2] argv[3] ・・・
自分のEXEファイル名 パラメータ1 パラメータ2 パラメータ3 パラメータn

 なのだが、CreateProcess等、他のプロセスから起動された場合には、

argv[0] argv[1] argv[2] argv[3] ・・・
パラメータ1 パラメータ2 パラメータ3 パラメータ4 パラメータn

 となる。実際には単一の文字列で渡されるので

 「自分のEXEファイル名 パラメータ1 パラメータ2 パラメータ3 ・・・」
 「パラメータ1 パラメータ2 パラメータ3 パラメータ4 ・・・」

となってしまう。私が作った関数「ParamStr2,ParamCount2」では、ここらへんの差違は吸収されるようになっている。


・復刻マンガ
 何か最近ブームらしい。社内では前からだったが...。「長編ドラえもん」や「リンかけ」等...。

・復刻
 そーいやCDもだよね。SONYの「STAR BOX」なんか。最近またTM(N)を聴いたりしてます。

 コーラスが「渡辺美里」なアレとか...
 Guitarが「松本孝弘」なアレとか...
 シンセが「朝倉大介」なアレとか...
 もひとつシンセが「久保こーじ」なアレとか...
 笑い声(^^;が「伊集院光」なアレとか...

SHG Editor ver0.60
 アップロード。1日2回も...。

SHG Editor ver0.70
 アップロード。1日3回も...(^^;

SHG Editor ver0.80
 アップロード。1日4回も...(ToT)


99/03/06

SHG Editor
 さて、肝心のEncode/Decodeルーチンの改良に取っ掛かる。今度はWMF(Windows Meta File)だ。Bitmap程の手間ではないようなので、あっさりできるかも知れない。現在使われているMetaFileはEMF(Enhanced Meta File)なのだが、SHGファイルはWMFしか対応してないらしい。

SHG Editor
 ちょっと前までは対応していた「-」で始まるオプションスイッチを廃止した(「/」で始まるオプションのみ)。何故かと言うと、ファイル名に「-」が使われる事が多くなってきたからだ。誤作動する可能性がないわけではないので安全策として廃止することにした。

・MetaFile
 耳慣れないかも知れないが、身近な所(?)では「Microsoft PowerPoint」なんかの挿し絵に使われていたりする。ハードディスクの中を「*.WMF」で検索すると一つや二つはあるんじゃないかな?

・サブセットとフルセット
 「MetaFile」終わったら次は「マクロ」だが、これらを実装してもまだSHGのフルセットではない。厳密にはLZ77圧縮もサポートしなくてはならないし...。それと「絶対にSHGフルセットを作れない」理由がある。03/01にも書いたが、

「SHGファイルはMRB(マルチレゾリューションビットマップ)ファイルを拡張したフォーマットになっている。」

 ...MRBの意味を考えると解ると思うが、つまりMRBファイル(SHG含む)は、

「一つのファイル中に複数の画像イメージを格納する事が可能」

 なのだ。SDIアプリであるSHG Editorではまず実現できない(MDIにする気がないので)。...と言うより、初めから「複数の画像イメージ」は想定していない。何故なら「SHED.EXE」がMRBを作成できないからだ。MRBファイルを作るには「MRBC(Multi Resolution Bitmap Compiler)」というプログラムが必要なのだが(SHG Editorいじればできるか^^;)、そんなん見掛けた事もない。そんな訳でSHG Editorは永遠に「フルセット」にはなり得ないと思っている。

・納車
 やなちゃんの車が納車された。前に書いていなかったかも知れないが、先代の「Escude」は事故のために御亡くなりになったのだった。車は「WAGON R/RR」である。DEKOの「ALTO WORKS RS/Z」も大きいと思っていたが、「WAGON R/RR」は輪をかけて「デカイ」。リアシートのヘッドレストを外して、シートを倒せばフルフラットにもなる使い勝手のいい車だ。エンジンも「K6(K-6A)を積んでいるのでよく走る。敢えて欠点を言うならば「車重がある」という事か?「JIMMNY」よりは100Kg強軽いが、「ALTO」より100Kg弱重い。

こまちゃん
 引っ越したらしい。いやHPが。

・SHG
 Webで文献を探していたらヤバい奴に遭遇。Koji27氏ヤバいっス(^^; アプリの性格上、直接競合する訳ではないですが...。


99/03/07

「Windows Undocumented ファイルフォーマット」
 うーん、MetaFileでも苦労するとは...

 [SHGMETAFILEHEADER(Placeable Metafile header)]

フィールド名       タイプ     注釈                備考                  
smXWidth WORD メタファイル単位でのイメージの幅 単位は0.01mm。2倍されない。
smYHeight WORD メタファイル単位でのイメージの高さ 単位は0.01mm。2倍されない。
smUDataSize WORD or
DWORD
メタファイルデータのサイズ×2
(圧縮せず)
 
smCDataSize WORD or
DWORD
メタファイルデータのサイズ×2
(圧縮済み)
 
smSizeHS WORD or
DWORD
HotSpotデータのサイズ×2 (HOTSPOTHEADER + HOTSPOTRECORD + マクロ文字列 + コンテキストIDとコンテキスト文字列)×2
smUnk1 DWORD 未知 (SHGIMAGEHEADER + SHGMETAFILEHEADER)
×2ではない事に注意。
smSizeImage DWORD smCDataSize(2倍する前の値) + smUnk1 ×2ではない事に注意。

 

 [METAFILEHEADER]

フィールド名       タイプ     注釈                備考                  
key DWORD 0x9AC6CDD7  
hmf HANDLE 未使用 通常は0
bbox RECT イメージの境界BOX矩形 単位はTwips。
inch WORD インチ当たりのメタファイル単位 通常576。
正確にはTwips/Inch(TPI)。
reserved DWORD 未使用 通常は0
checksum WORD 構造体の最初の10ワードをXORした合計 $9AC6 xor
$CDD7 xor
MetaFileHeader.bbox.Top xor MetaFileHeader.bbox.Left xor MetaFileHeader.bbox.Bottom xor MetaFileHeader.bbox.Right xor
MetaFileHeader.inch

 ここまではいいとしよう。しかし、

「bboxフィールドには、イメージの境界ボックス矩形が入っている。値はメタファイル単位である。」

 と記述があるのだが、実際にはそうではないらしい。本当にそうであるならば、「bbox.Top=0,bbox.Left=0」の場合には「SHGMetaFileHeader.smXWidth=MetaFileHeader.bbox.Right」、「SHGMetaFileHeader.smYHeight=MetaFileHeader.bbox.Bottom」になるハズだからだ。SHGMetaFileHeader.smXWidthとSHGMetaFileHeader.smYHeightにはちゃんと(DelphiのTMetaFileで言う所の)mmWidthとmmHeightがセットされている。メタファイルの単位は0.01mmなので、どう考えても辻褄が合わない。

 何故これが重要なのかというと、このMETAFILEHEADER構造体はSHGファイルには含まれないのである(SHGにした時点で失われる)。つまり、縦横のサイズはSHGMETAFILEHEADERのsmXWidthとsmYHeight(ともに0.01mm単位)から算出しなければならないのだ。

・単位
 では、単位のお勉強をしてみよう。

1inch = 96 Pixel DPI。通常は96DPI。
1inch = 576 twips TPI。通常は1440twips。
1Pixel = 6 twips DPI=96,TPI=576の場合。
1inch = 25.4 mm  

 これから導かれる結果は、

 SHGMetaFileHeader.smXWidth = (MetaFileHeader.bbox.Right - MetaFileHeader.bbox.Left) / MetaFileHeader.inch * 25.4 * 100
 SHGMetaFileHeader.smYHeight = (MetaFileHeader.bbox.Bottom - MetaFileHeader.bbox.Top) / MetaFileHeader.inch * 25.4 * 100

 と、いう事になる。つまり、MetaFileHeader.bboxのメンバーはTwips単位で表されている。こんな事をしなくても「GetDeviceCaps」をダマくらかして使えばよかったのかも知れないが...。

・HotSpot矩形(MetaFile)
 なんかTwips単位のような気がする。


99/03/08

・Jリーガー
 ...に同姓同名の奴がいるなぁ。いや、DEKOって名前じゃないんだけどね(^^;

・駐車場
 家に帰って駐車場を見たら「ゲロ」が...。

・サイキックフォース(DC)
 うーん、美しい。

・マジックナンバー「26.5」
 HotSpot矩形(MetaFile)は矩形RECT(Pixel座標)のそれぞれのメンバーに26.5を掛けたもので構成されている。この「26.5」って数字は一体どこから沸いてきたんだ?ひょっとして「ビルお兄さん」の靴のサイズか(^^; なんてのは冗談で、「2540(=25.4*100)/DPI」のようだ。つまりこれはDPM(Dot Per Meter)を表している(Meterと言っても0.01mm単位だけど)。やっぱりか、あーめんどくさ。WMFって左右の座標も反転してるし(原点が違う)。

SHG Editor
 とりあえずWMFを格納したSHGファイルを表示することはできるようになった。書き込みができるようになったらver0.90をアップします。


99/03/09

SHG Editor
 書き込みのロジック(WMF)がうまく動作しないので少々煮詰まってしまった。ちょっと気分転換に「選択ウィンドウ」をこさえる。Zオーダー実現の為の足掛かりだ。

SHG Editor
 書き込みのロジックをちょっと考えてみる...。

SHG Editor
 書き込みのロジック(WMF)がうまく動作しないので少々煮詰まってしまった(^^;。ちょっと気分転換に「環境設定ウインドウ」をこさえる。「Shed.exe」でいう所の「プレファレンス」にあたるが、オートナンバリングの有無、オートナンバーの0詰め/桁数、オフセット値、種類、属性の初期値を設定できる。

・開発予定(SHG Editor)
 [ver0.90]
  ・WMF(Placeable Metafile)に対応。
  ・「選択ウィンドウ」の追加。
  ・「環境設定ウインドウ」の追加。
  ・不具合の修正。
 [ver1.00]
  ・マクロに対応。
  ・Zオーダーに対応。


99/03/10

SHG Editor ver0.90
 朝っぱちからアップロード。あーバグだらけだったぁ〜。ひょっとしたらまだまだあるかも(^^; 辻褄を合わせるためにかなり無理なプログラムになってしまったので、次のバージョンで最適化する事にしよーっと。

・ダンゴ3兄弟
 一番上は、一番最後に刺されるから「三男」なのではないだろうか...。なーんて邪推して「小さなお友達」の夢を壊すのはやめよう。

・DVD-ROM
 こんどうくんが買ってきた。「攻殻機動隊」もついでに。「SB Live!」もついでに...(^^;

SHG Editor
 Zオーダーはなんなく実装できた。プロパティで設定するのではなく、「前面に移動(F)/背面に移動(B)」で設定する。「タブオーダーを設定できるように」との要望もあったが、Hotspot矩形のコントロールはフォーカスを持たないので「TAB/BackTAB」では移動できない(KeyPreviewで捕まえられないから)。「前面に移動(F)/背面に移動(B)」を使えば、「SHED.EXE」のように「マウスで指定できないHotspot領域」は存在しないので、これでいいと思っている。

・Zオーダー
 Hotspot矩形のZオーダーの逆順(背面->前面)でSHGファイルに書き込めばZオーダーは保持されるようだ。実装中、Hotspot矩形が画像の裏に入り込んでしまった(「背面に移動(B)で」)のには焦ったが...(^^;

・複数選択
 これもよくある要望。しかしタブオーダー同様「Hotspot矩形のコントロールはフォーカスを持たない」事がネックとなり、実装は非常に難しい。


99/03/11

SHG Editor
 マクロも実装し、Version1.00をリリースしようとした矢先に、最低にして最悪のバグが発覚。

 「Windows Undocumented ファイルフォーマット」のP.46に以下のような「HOTSPOTRECORD.hrMacOffset」に関する記載がある。

 「(前略)これがマクロでなければ、この値は無視される。」

 ところがどっこい、無視してくれないんだな。「SHED.EXE」で読み込めるので正常かに見えるが、いざHelpコンパイラを通すとちゃんと動作しない。試しにこの領域にデタラメな値を書き込んでみるとHelpコンパイラが止まってしまうので、ここはチェックされてると思ってまず間違いない。

 「Rick Segal,Microsoft SHED.ZIP」によると、

 「The binding data follows at the end of the MBHS structures. Certain hotspots will have binding data (ie. macro, sound). Others will simply contain a hashed context string in the lBinding field.」

 とある。つまりここは一種のチェックサムなのだ。しかもそのロジックは全く見当も付かない(コンテキスト文字列から算出するという事以外は...)。

・つまり...
 今現在では「SHED.EXE」に一旦通さないと正しく認識してくれない訳だ、とほほ...(ToT)

普通ごく簡単な「Hash」と言ったら...

 for i:=1 to Length(Src) do
  begin
   Value := Value + Ord(Src[i]);
  end;
 Value := Value mod $100;

 この程度なんだけど。もちろんこんなんじゃない。

・調査の結果
 「コンテキスト文字列ではジャンプ/ポップアップしない」事が判明した。実際には「HOTSPOTRECORD.hrMacOffset」でジャンプ/ポップアップしている。ここのロジックも解った(ちょっと意地悪だった)のでちゃんとしたVer1.00を近々アップする。

SHG Editor ver1.00
 Help書いてからアップしようとも思ったが、いつになるかわからないのでとりあえず本体をアップ。上で長々と書いている問題はクリアしているのでご安心を。

・T.M.Revolution「The Force」
 CD-Extraになっている。なかなかいい、相変わらずの「朝倉大介テイスト」だ。「ダイスケ的にも'おーるおっけー'」(^o^)/


99/03/12

SHG Editor
 Help書いた。でもGeocitiesの容量が足りなくてアップできないでやんの(ToT)。まぁ、Help読まないと操作できないってアプリでもないしな。欲しいヒトはMailね。

・自身のHelp
 なんか変な気分。でもこれでバグチェックができたのでよしとしよう。「HelpDesigner」と連携できるっていうのは非常に便利。使ってて身にしみた。

・CD
 そーいえば、「宇多田ヒカル」の奴も買ったんだ。しかしウマいよねぇ、あのメロディに日本語がちゃんと乗ってるし(辛いトコもあるが...)。いかんせんDEKO好みのジャンルじゃないのが痛いケド。あと「UA」と「Misia」と交互に歌われたら誰が歌ってるのか判断できないかも知れない(^^;

・Segmented File Format
 一通り解析したので、資料にまとめたいと思っている。

SHG Editor
 「HelpDesigner」と組み合わせて使うとあまりにも貧相なので(インタフェイスの見た目が)、こんなんしてみた。

 Geocitiesの容量の問題が解決したらアップしたいと思う。若干のバグFixと最適化が行われている。


99/03/13

・エンバグ
 しまくり。

SHG Editor ver1.10
 アップしてみた。ハッキリ言って見た目が変わっただけ。だからHelpもver1.00ベースのまま。

SHG Editor ver1.11
 アップしてみた。デバッグリリースなのでver1.10と殆ど変更はない。


99/03/14

SHG Editor ver1.20
 またまた機能追加。CTRL/SHIFT+カーソルキーでの移動/サイズ変更が可能になったり、色々。でも、もうだんだんやる事がなくなってきた。あとはエラーチェックや範囲チェック位しか残っていない。高速化はしんどそうだし、思っている方法でいい結果が得られる確証はないし。あぁ、なんか「HelpDesigner」のバージョン番号を追い越してしまいそうだ。リリースバージョン(小数点2桁目)はデバッグした時しか使ってないから(なにかしら機能が上がった時にはマイナーバージョンを上げている)。だってこんなに頻繁に更新するとは思わなかったんだもの...。あぁ、GT32の二の舞。

・何かに特化したアプリは、やる事もできる事もある程度決まっている。

・ウルトラマンガイア
 ほぼ毎週観ている。設定が今までの「ウルトラマンシリーズ」とはちょっと違うのがいい。しかしOP/ED曲は頂けないなぁ(今週からED変わったけど)、「ウルトラマンが欲しい」はねぇだろ、いくらなんでも(日本語になってないぞ)。あとゴムガムくんは演技が...。ここ3作では「つるのくん」が一番よかったかな、アツくて。

・80
 「ヤクルト」じゃない。まだ「ウルトラマン」の話ひっぱってるからね(^^; あれも良かった。「光の巨人」って言葉が初めて出てきたのは「80」からだったと思う。ED/OPもタケカワユキヒデだったし。しかし、しょっちゅう居なくなる先生を担任に持ちたくはないなぁ(^^; 主人公の矢的猛(だったよね)を演じてたのは「長谷川初範」さんだった。

・...?...!!
 「仮面ライダー(SKY RIDER)」は「村上弘明さん」だったな。

・...???...!!!!
 「知念里奈」が誰かに似ているとずーっと思っていたが、やっと解った。「キンキンの奥さん(ろんぱーるーむ)」にそっくりなんだぁ。

・容量不足
 結局SHG EditorだけはNiftyに置いてある。


99/03/15

SHG Editor
 やる事がないといいながら、まだ改良を続けている。

 1.Jpegのサポート
  あまり意味はない。一旦Bitmapに変換するのですごく大きなSHGファイルになってしまうし。「できるよ」って程度。

 2.リロードボタン
  コンテキストリストが更新された場合にこのボタンを押すと内容をリロードする。

 3.コマンドラインオプション「/D」を追加。
  LOAD/SAVEダイアログの初期ディレクトリを設定する。
 「SHG_EDIT 画像ファイル /D:C:\TEST」は意味がない、画像ファイルのパスを初期ディレクトリとするから。

 等々...。コマンドラインオプションの取得方法も変更した(参照)し、あっちもこっちも。高速化とRLE圧縮の見直しをやったらアップしようかな。

・会社のモニタ
 TOTOKUのCV711R(DEKOのモニタと同じ)が2台きた。やなちゃんTERA氏が使うことになった。やっぱ、いいね。

・AceessのJob
 第一弾は終了。やっぱAccessでアプリは作るもんじゃない。実は昨日が締切りだった。


99/03/18

SHG Editor
 まだまだ。

 1.Tabオーダー設定ウインドウを追加。
  Tabオーダーと言っても「疑似」。先日実装したZオーダーと本質は変わらない。一番手前にあるホットスポットのTabオーダーは一番若い。
 逆に言ってしまえばTabオーダーの一番若い一番手前にあるホットスポットは作れないという事。

 2.高速化
  シャレにならない位に高速。Load/Saveは一瞬で終了する。

 3.RLE圧縮の見直し。
  見直したが、同じ現象が出る。Decodeルーチンを逆に考えればこのEncodeルーチンは「完全に正しい」のだが、実はDecodeルーチンの逆をやればEncodeルーチンになる訳ではない事が判明。要は最適化なのだが、あーめんどくさい。

SHG Editor ver1.30
 RLE圧縮ルーチンを「殺した」バージョンをアップ。「高速化」の恩恵は(RLE圧縮と)相殺してもオツリがくるハズ。

やなちゃん
 Geocities.comにHPを確保した。

SHG Editor ver1.31
 結局「最適化」は無視しても構わなかった。原因は他の所にあった(^^; お詫びもかねてアップロード。RLE圧縮しても高速なので、何が変わったか判らないかも...。


99/03/19

SHG Editor
 とりあえず、これにて打ち止め。

・我が母校
 実家のある地元の4つの小学校が統廃合され、一つになることになった。過疎化&少児化によるものだ。でも田舎の小学校って結構離れているし、交通の便も悪いからたいへんだろうなぁ。

・RLE(Run Length Encoding)圧縮(SHGファイル)
 とりあえず調べた事を書いてみる。

 1.連続したデータは頭にその長さ(Length)を付けて1バイト格納する。

0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40

  この場合には「0A 40」となる。

 2.連続していないデータは頭に(長さ+0x80)を付けてそのまま格納する。

0x40 0x41 0x42 0x43 0x44 0x45 0x46 0x47 0x48 0x49

  この場合には「8A 40 41 42 43 44 45 46 47 48 49」となる。

 3.但し連続/非連続データの長さは最大0x7fとなる。

 4.連続しているデータの長さが短い場合(圧縮されない場合)には非連続データとして扱う。

0x40 0x41 0x41 0x42

  普通にやると「81 40 02 41 81 42」だが、「84 40 41 41 42」とするということ。但しこれはオプションなので実装しなくても実害はない。

 ※Lengthの最大長が0x7fなのは8bit目を連続/非連続フラグとして使っているためである。
  「0x40」が200byte連続していた場合には「7f 40 49 40」となる。

・理屈は頭でわかってても、実装すると意外に難しかったりする。特にEncodeは。


99/03/20

・RLE(Run Length Encoding)圧縮(BMPファイル)
 03/01でもちょっと触れているが、BitmapにもRLE圧縮が存在する。しかもSHGとは互換性がない。「SHG Editor」でBitmapを扱う場合には基本的にDelphiのTImageを仲介しているのでこの圧縮部分は関係なかった(処理が複雑になるし、RLEを2回やった所で大した効果は得られないと踏んだ為)。まぁ、時間もできてBitmapのRLEも調べる事ができたので(Webから漁っただけ)、ちょっと説明。

 1.8bit-RLE(BI_RLE8)
  ・連続したデータは頭にその長さ(Length)を付けて1バイト格納する。
  ・非連続データは頭に長さを付けてそのまま格納し、前後を0x00で括る。
  ・「00 00」はラインの終わりを示す。
  ・「00 01」はBitmapの終わりを示す。
  ・「00 02」に続く2Byteで現在位置を移動する(X,Y)。

 なんか、ランレングス符号化とチェーン符号化をごっちゃにしたような感じだなぁ...。

 2.4bit-RLE(BI_RLE4)
  8bit-RLE(BI_RLE8)同様だが、これを4bit単位で行う。

 これに境界の問題(偶数バイトで始めなきゃいけない...etc)も絡んでくるので、オーバーヘッドと圧縮によるメリットを天秤にかけるとやっぱりメリットは少ない。「Bitmap=非圧縮」のイメージもあるので(^^;Bitmapは素直に圧縮しないで使うのが一番では?

・とっくに誕生日過ぎてるし...

・岡田有希子
 そういえばCDが発売されたようだが、新曲もあるらしいね。

・Webの情報
 なんだか日本にはロクなのがないなぁ。どこもかしこも「触り」だけだったりする。公的機関でさえそうなのだからお話にならない。

・「HelpDesigner
 ver1.48がリリースされた。「SHG Editor」正式対応版だ。Koji27氏のHPで「SHG Editor」が紹介されているが、誉めてばっかりで嬉しいやら、恥ずかしいやら(いや、本当は嬉しいのだけれども...)。「SHG Editor」のHelpは「HelpDesigner」のベータ2で作成されている。

SHG Editor ver1.32
 ひっそりとアップデートしている。でもver1.31で正常に動作しているのなら無理してダウンロードする必要はないと思う。

・DOS/V USER
 「GT32.EXE」が掲載されている。なんか場違いなような気もするんだが...。

・BIOS
 MSIのMS-5169のBIOSをアップデートした。これで「K6-3 Ready」だ。でも何故か「RIVA 128ZX」がNT上で動作しなくなった。仕方ないので今はWin98をメインで使っている。


99/03/21

・ターボタイマー
 やっとこさ設置。これで遠出も安心だ。

・ZX
 Delphi4なんかでツールバー上のボタンが化けてしまう。TNT用のリファレンスドライバである「デトネイタ」の128/ZX版があったようだが、これだとこの不具合は解消されたらしい。しかしそのドライバ、今は影も形もない。仕方ないので「HelpDesigner」のHelpにもあるように、

 >コントロールパネル-システムを起動、[パフォーマンス]のタブ内の[グラフィックス...]ボタンを
 >押して[ハードウェア アクセラレータ]のスライダバーを1つ右(注:多分左の間違い)に設定して下さい。
 >こうすることでも(応急処置にすぎないのですが... )不具合を解消できるようです。

 ...とやってみた。でも駄目だったのでさらに左にスライダバーを移動したらなんとか良くなった。Win98使うなんて思わないから、ZXのドライバなんて全然チェックしてなかったよ(ToT)。CanopusのZXカード(ZXR)だったら同社のドライバで解決できる問題なんだけど。

・デトネイタ(ZX)
 お持ちの方で、配布可能なものでしたら、どなたか下さいm(_ _)m

・K6-3
 うーん、どの雑誌もK6-3(III)特集やってるなぁ。ついこないだまでCeleronばっかやってたクセに。なーんか日和見だよねー、どこも。Socket370のCeleron出たら今度はそっちをベタ誉めするんだろうな、「コストパフォーマンスが最高にいい」とか言ってさ。

IE5
 正式版が03/18付けでリリースされていた。FTPもサポート(変な言い回しだが)されているので便利かも知れない。ただ、巷で言われているように「重い」んだろうなぁ。とりあえずダウンロードしてみる。


99/03/22

IE5
 ダウンロード中止。やっぱり雑誌の付録を待とう...。と、思ったらTERA氏がダウンロードしている。

・PEPSI MAN
 マスコット第2弾。みんなでせっせと集めている。

・洗車
 今日は天気がいいので久々に洗車する事にした。あーピカピカ。すっきりした。

・「ドキンちゃん」
 うまく描けたと思います。「ドキンちゃん」の特徴をよく捉えていると思います。

どきんちゃん

・私の車は「土禁」でも「禁煙」でもない。

・四駆
 ピカピカの四駆は「ナニカチガウ」と思う。傷が付くのが嫌なら街乗りの車を買えばいいと思う。山道を走ってナンボでしょ、四駆は。大概、四駆はデカいので駐車場も入れないトコ多いし(3ナンバーダメとか、車高でひっかかるとか)。ま、考え方は人それぞれか...。


99/03/23

リンク
 あちこち修正。

やなちゃん
 「WAGON R RR」にターボタイマーを付けた。

・MRBC(Multiple Resolution Bitmap Compiler)
 ヘルプコンパイラセットの中にあったのね。ヘルプコンパイラはDelphi付属の物を、SHED.EXEはVB付属の日本語版を使っていたもので...。暇があったらちょっといじってみたいと思う。

・某所にて...
 「Aはできますか?」って質問に対して「AもできるけどBの方がいいよ」ってコメントが付き、それ以後のレスは「Bならこうすれば...」とか「Bをするのにソフトは???使ってます」とか...

「何か違うだろ?」

 まともなレスを付けてからだったら構わないと思うんだけど、「Aはできるとは思う」、「Aは面倒だと思う」とか、

「やった事ねーなら、推測で物を言うなよ」

 某所で書きこみをした当事者が、この文面を読んでどう思おうが勝手だが。

SHG Editor
 まだバグがあるらしい。こば氏よりMailを頂く。

 >1.属性を可視にしているが領域を囲む線が見えない。
 >2.種類をポップアップにして、コンテキスト文字列を指定したけど、ポップアップしなかった。
 >3.マウスカーソルは変わるようです。
 >4.SHED.EXEでこのSHGファイルを読みこむと、TYPEの部分だけ空白になっている。
 >5.コマンドプロンプトから起動すると、「ファイルが存在しません」ダイアログが出た後で、SHG Editorが起動されます。

 1と4に関しては同じ原因によるものです。2と5に関しては現象を確認できませんでした。

・調べてみたら...
 最初は「可視/不可視」でハッシュの値が違うんではないかと思いましたが、バイナリダンプして確認してもハッシュの値は同じでした。ちょっと煮詰まってしまってさらにバイナリダンプを眺めると意外な事実が...。

「Windows Undocumented ファイルフォーマット」
 [3.1 ホットスポット(P.45)]

 有効なhrTypeの値は次の通りである。

0x0042 可視ポップアップ
0x0043 可視ジャンプ
0x00C8 可視マクロ
0x04E6 不可視ポップアップ
0x04E7 不可視ジャンプ
0x04CC 不可視マクロ

 そもそもこれが間違っているらしい。

0x00E2 可視ポップアップ
0x00E3 可視ジャンプ

 実際のSHGファイルをバイナリダンプしたものは上のようになっていた。ただ、ここの値自体がちょっと腑に落ちない。ひょっとしてここも何かのハッシュとごちゃ混ぜになってるのではなかろうか?現実にはこれで正しく動作するのだが...。

・ごめんなさい。
 ...お詫びばっかりだな。SHG Editor ver1.33をアップロード。

・K6-2 333MHz
 ちょっと仕入れた。350MHzで動作し、400MHzでも動作した。「シリコングリスを塗ってない」のがマズイのだろうとは思うが、熱暴走と思われる現象を引き起こす。


99/03/24

・Windows2000
 そうか、10/26か。IE5のダウンロードの時に「Windows98またはWindows2000」と表示されていたのはこういう事だったんだろう。>参照

SUPC
 04/01付けでお引越しするようだ。しかも産業道路沿い(熊本ローカルですみません)なので、ちゃぷに氏の居る会社の周辺はすごい事になってしまう。

ちゃぷに氏
 そういえば、元気っスか?...ってココに書くことじゃないわな。

Oh!X
 復刊第2号は04/10前後らしい。

・松本孝弘
 「The Changing」は明日発売。まぁ、今日店頭に並んでる所の方が多いだろうけれど。

・K6-2 333MHz
 350MHzにしてしばらく様子を見ていたが、やっぱりダメな時はダメだった。仕方ないので電圧を0.1V上げてみたら(2.3V)、400MHzでも安定動作しているようだ。念の為にシリコングリスを今日のうちに買って塗っておこう。

SHG Editor
 昨日の件ですが、

 >5.コマンドプロンプトから起動すると、「ファイルが存在しません」ダイアログが出た後で、SHG Editorが起動されます。
 確かに画像ファイルを指定した時はエラーダイアログが出るようです。...という事は

 1.Explorer(or「ファイル名を指定して実行」)で起動された時
 2.CreateProcessで他のアプリから起動された時
 3.DOS窓から起動された時

 この3つのケースでコマンドライン引数が異なるという事で、ちょっと面倒な事になりました。つまり状況に応じてParamStr/ParamCountと、先日作成した対CreateProcess用の関数であるParamStr2/ParamCount2を使い分けなければならないようです。「HelpDesigner」との連動機能を削る訳にはいかないので最悪の場合、このバグ(?)は無視する事になるかもしれません。

SHG Editor
 あ、Help呼び出しがエンバグしてる(^^; DOS窓の問題も解決したSHG Editor ver1.34をアップロード。


99/03/27

・03/25,26,27
 3連発でインスト(ールの方)のお仕事。ま、色々大変だった。

・3DAYS-1
 日立のFLORAが不調との事で、OSから再インストール。後、FMVを二台ネットワークに接続。それと設置場所の変更。FLORAにWin95を入れると「不明なデバイス」を連発するのでどうしようもなくなって会社に持ち帰るハメになる。続きは27日という事にした。持ち帰ってAM03:00までWin98とOffice97をインストールしていた。

・3DAYS-2
 会社で作ったアプリ(私の担当ではない)を別のパソコンにインストールする事に。それだけだったらよかったのだが、そのアプリがクリーンな環境で動作するようにDOS/V機に「複数のOSをインストール」しなければならなかった。なんでこんな事をしなきゃならなかったのかって?そりゃ、

「そのアプリがVB4で書かれていたからだよ」

 複数のOSをブートさせる為に、PowerQuest社の「PartitionMagic(FDISKを使わずパーティションを切り直せるソフト)」を使う事になった。元々の話では、Win98がインストールされてるマシンのHDのパーティションを切り直して、そこへ別のOS(Win95)をインストールするって事になっていた。しかし...

 ここもFLORAだったのだが、PentiumIIマシンでAGPバス搭載だった。

「OSR2.5なんてないっつーの」

 仕方ないのでWindows98を用意してあった外付けHDDにインストールする事にした。「OSしか入っていない環境ならVB4で作ったアプリも動く」と判断したからだ。外付けHDDへのインストだったので「PartitionMagic」は使わず、付属の「BootMagic(ブートセレクタ)」だけ使用する事にした。散々苦労したがなんとか当初の目的は達成できた。

 ※VB4はWindows98での動作を保証されていません(本当だよ)。

・3DAYS-3
 25日の続き。とりあえずネットワークが繋がらない。IPX/SPXを諦め、TCP/IPにしたらすんなり繋がった。色々やってたら大体なんとかなった。
 そういえばココの「PC-9801 DA(下駄付きでWin95が走っている)」の5inchFDDが調子悪いとの事で、会社のジャンクのドライブを持っていったのだが、バラして確認したらヘッドのカバーが外れて引っかかっていただけだった(二基とも)。この頃のFDDはヘッドのカバーが両面スポンジテープで固定してあるのだが、スポンジが腐食してカバーが引っ掛かる(最悪FDが挿入できなくなる)という現象があることは知っていた。しかしまさか二基ともとは...。ヘッドカバーを取っ払ったら正常に動作した(当然だけれど)。

・事故
 そういえば「3DAYS-1」に行く途中で事故を起こした。そこはT字路(正確にはイ字路なのだが)になっている下り坂で信号はない。前に車がおり、右折待ちで止まっていた。その後ろで足ブレーキのまま待っていた。前を横切る車が来なくなって、前の車のストップランプが消えたので踏んでいた右足を離した(この時目線は左にあり、左から車が来ないか見ていた)。すると、

「ガシャン」

 ...嫌な音が。一瞬何が起きたか判断できなかったが、状況を再度確認したら理由が解った。

「ちきしょ、フェィントかけやがったな」

 が、ぶつけたのはこちらで、しかも前方不注意だったので怒る訳にもいかずひたすら謝った。向こうの方も「いいですよ」と言ってくれたのでとりあえずその場はおさまった。ちょっと車がヘコんだけど、言わなきゃわかんない程度なのでよしとするか。でもちょっとブルーだった。

・渋滞
 今日はインストの為にお客さんトコへ向かったのだが、なぜか大渋滞。「この道こんなに混んだっけ?」と思いつつ先に進むと理由が判明。TKU(テレビ熊本)のイベントをやっていたのだ。

・遠回り
 帰りは帰りで遠回りを余儀なくされた。お客さんトコから帰るには熊本城を通り抜けるのが一番近道(多分)なのだが、26日からしばらくの間、花見のため熊本城は夜間開園になり通行止めとなってしまうのだ(PM06:00〜)。この「熊本城突っ切りコース」が使えないと右折禁止(06:00〜23:00)のトコを通らなくてはならず(これを回避するのもさらに遠回り)、かなりの遠回りをしなくてはならなかった。あーあ。


99/03/28

・松本孝弘「THE CHANGING」
 サビしか知らなかったが("BUZZ!!" THE MOVIE)、全体で聴くと「あぁ、こんな曲だったんだぁ」って思った。サビの他はあまりインパクトないかな。

・TMN
 久しぶりに新曲出すらしい。そーいや、一つ前の新曲は「NIGHTS OF THE KNIFE」でない事をどれだけのヒトが知っているだろうか?

・荒らし
 よく行く(殆ど「みーてーるだーけー」)掲示板が荒らされている(個人攻撃なのだけれど)。暇人め。

・メニュー
 Windowsアプリのメニューで「About...」とかなってますよね。この「...」は「選択すると別フォームを開きますよ」って意味だと思いますが、コレの正式名称って誰か知ってます?

SHG Editor
 立澤氏よりMailを頂く。

 >ただ、画像が大きい物を編集する場合、下の方が編集できません。
 >縦スクロールバー等が可能でしょうか?

 すみません、そんなに大きな画像をHelpで使うとは思ってもみませんでしたのでチェックしていませんでした(言い訳)。

 修正版のver1.35をアップロードしておきました。


99/03/29

お引越し
 Niftyへ引っ越しました。ほら、04/01から「.or」ドメインがこぞって「.ne」ドメインになるじゃないですか。DEKOもドサクサで引っ越そうと思って...(^^;

・これでうざったいCGI(あーんどJAVAアプレット)ともオサラバだ。

祝30000Hit
 これも兼ねるつもりのお引越しでした(ちょっとフライングでしたが)。ただ、NiftyのアクセスカウンタはGeoの「インチキカウンタ」と違ってページ間の移動ではカウントアップしませんからね。次の10000Hitは時間がかかるでしょうね。

・リンクが切れてるページや画像があったら(またはGeocities.comの方に行ってしまうモノ)教えて下さいね。

・松本孝弘「THE CHANGING」
 散々「パクリだ!!」って言われたからかな、あんな歌詞にしたの。

変わりたい 変われない オリジナルじゃない

最新のテクニック 何もない
反省は時々する
ごめんなさい もうしないつもり
なんで なんで繰り返す またひとつ傷つく

変わらない これきっとオリジナルじゃない

 ちょっと自虐的。

・Nifty
 あのー、もう既に容量が1MBきってるんですけれど...。いよいよ危なくなったら考えるか。


99/03/30

・松本孝弘
 あれ?CMでまた違う曲歌ってないか?

・RIVA 128/ZX「デトネイタ」
 やっとみつけた。「RIVA RAVE」にまだあったのね。

RIVA 128/ZX(AGP) 95/98 128agp.zip
RIVA 128/ZX(PCI) 95/98 128pci.zip
RIVA 128/ZX NT4.0 128nt40.zip

 使用したことによる不具合に関して、私は責任を持ちませんのであしからず。

・デトネイタ
 とりあえずWindows98でDelphi4でのツールバー表示がおかしくなる現象は解消された。もちろんハードウェアアクセラレータは最大にしてある。ただこのドライバ、すぐに姿を消した事でも解るように少なからず問題を抱えていることは確かなようだ。

・MS-5169
 先日BIOSをアップデートしたが、バージョン3.xのBIOSが近日出そうだ。なにやらver3.0はすぐに姿を消したとか...。

・DVD
 こんどうくんTERA氏のDVD-ROMドライブは同じ物だが(DVS Korea)、二人ともファームウェアのバージョンを上げた。Win95/98のDOS窓で実行すると痛い目に遭うので注意。「Command Prompt Only」か「DOS」でアップデートすべし。

・教訓
 「ReadMeはちゃんと読め」

DVS Korea
 アクセスカウントがDEKOのHPより少ないのはどういう事だ(^^;

・今日はドライブ行くので会社休みます(代休なんだけどね)。今日のHP更新はこれまでかな。


99/03/31

・昨日のドライブ
 いや、大変だった。熊本市内から57号線を波野村(聞いた事があるって?気のせい、気のせい)を通って犬飼方面に抜けようと思ったのだが、何故か

「雪」

 あと二日で四月なんですけど...。とりあえずスリップ等は無かったが「路面凍結注意」が出ていた。その後大分、別府経由で湯布院へ。腹ごしらえ等して帰ろうと思った。ただ波野を通って帰るのはちょっと怖かったので、10号線を通る事にした。すると...

「チェーン規制」

 が...。「まぁなんとかなるだろ」とタカをくくってそのまま帰ることにした。しばらく行くとみるみる地面が白くなっていく。「ヤバいかな」と思いつつもエンジンブレーキを多用しながら進んで行った。さらに行くと

「ガードレールにクラッシュした車が(ToT)」

 「飛ばすからだよ」と思いつつさらに進む。なんか滑り出してる気が...。ふと対向車線を見ると二台がチェーンをつけているようだった。目を凝らしてよーく見ると、

「玉突き衝突だった(ToT)」

 もう道路は雪まみれ。チェーン付けずに走行するのは無謀以外の何者でもなかった。また対向車線の路肩に止まっている車を発見。チェーンをつけていなかったので「持ってるヒトはいいなぁ(今付けているんだろうな)」等と思っていたら

「自爆(ToT)」

 おいおいやめてくれよ。私の車にゃチェーンもスタッドレスタイヤも付いてないんだって。この道に入って出会った車の3割が事故を起こしている。さらに慎重に進むと進行方向左側の路肩を超えた林の中に

「自爆二号(ToT)」

 ここまでくると背中には嫌ーな汗が...。「頼むぅ早く帰らしてくれぇ」と心の中で叫びながら進む。この頃になると車は滑って滑って仕方がなかった。ちょっと急な下り坂に差し掛かったら、なんか対向車線の車の挙動がおかしい。

「ズリズリ滑ってこっちに来るなぁ〜(ToT)」

 タイヤがこっち向いてるんですけど(;_;)。この車はなんとかやり過ごした。が、その車のタイヤの跡をよーく見てみると...

「いっぺん対向車線でおもいっきり逆送してるじゃねーか(ToT)」

 キミの重いクルマじゃ登れないのね...。

 ま、なんとか無事にこの道を抜ける事ができた。せっかくなんで阿蘇の大観望に行ってみることに。途中にある店はことごとく閉まっていた。車もなくしばらく対向車もなかった。阿蘇の方は「野焼き」の後に雪が降ってるもんだから、チョコレートケーキに粉砂糖をかけたみたいになってキレイだった。

・教訓
 「チェーンは付けろ」

・カメラ
 買った。Canonの「IXY 310」。330もあったが、せっかくのAPS(ADVANCED PHOTO SYSTEM)カメラなら小さいに越したことはないなと思い、310に決めた。


[BACK] 古いのを読む 新しいのを読む