とりあえず、作ってみよう (バイナリモード編)
ここでは、バイナリデータの識別データ作成について、説明します。
バイナリデータとは、一般にテキストとして全部、もしくは一部が表示
出来ないものです。
具体的には、LZH,ZIPなどのアーカイブファイル。BMP,JPGなどの画像ファイル
がこれにあたります。
バイナリデータはこれ以外にも沢山存在し、画像などの文字で表せない情報や高度な
文字情報を含むファイルはほぼバイナリデータであるといって間違いありません。
今回の例では、代表的なアーカイブ形式であるLZHと、画像形式であるbmpについて識別
データの作成を行います。
1.まずは、「Data Creater.exe」をダブルクリックしプログラムを起動してください。
2.メニューの「ファイル(F)」にある「データセットの新規作成(N)」をクリックしてください。
(infomation:作成途中のデータセットを編集する場合は、"データセットを開く"を選択します)
3.データセット名、作者名、保存先を任意に設定してください。
*編集機能の都合上、作者名は出来る限り毎回同じのものにしてください。異なる名前にした場合、
以前の名前で作成したデータは編集出来ない場合があります。作者名は1度入力済みであれば、
次回以降は自動で入力されます。
設定が終わったら、「OK」を押してダイアログを閉じましょう。
上手く行ってれば、設定した保存位置にデータセット名のフォルダが作成されているはず
です。
4.ダイアログを閉じると画面上に"識別ベースライン"というウィンドウが出たと思います。これは、
識別の流れを表したものです。ダイノロジカル(及びI Judge)はここで指定した順番で識別処理を実行
していきます。なので、「データNo0〜順に行いたい識別を追加していけば、OK」ということになります。
っで、これはとりあえず後回しにして(じゃあなんで説明したんだ・・)、先に識別結果として
表示させるメッセージから作成しましょう。
5.メニューの「編集(V)」から、「メッセージ編集(M)」を選択してください。選択すると下の様な
ウィンドウが出るはずです。

"新規"と書かれているボックスに、表示させたい拡張子を入力します。ここでは「BMP」と「LZH」
を追加させたいわけですが、とりあえず「BMP」から登録しましょう。
"メッセージを入力してください"と書かれているダイアログに、識別時に表示させるファイル説明
を入力します。
ここでは「ビットマップ (画像ファイル)」と入力することにします。
以上を設定すると以下のようになります。

6.BMPについての情報を入力したら、次は「LZH」について同じように入力しますが、その前に
ページを変えましょう。画面上部にある右矢印「>」をクリックしてください。画面右下のIDが
"00002"になり、ボックスが未入力の状態になりました。これで、新たに拡張子の情報を追加する
ことが出来ます。
先ほどと同じように、拡張子とメッセージを入力します。拡張子に「LZH」、メッセージには、
「LZH (圧縮ファイル)」と入力しましょう。
両方の入力が終わったら、閉じるを押してメッセージの編集を終了します。
7.次に、ファイルヘッダーに関する情報を登録します。
ファイルヘッダーとは同種類のファイルに必ず含まれる一意の情報です。一般的なプログラムは、
これを確認することによってファイルの種類を判断します。ダイノロジカルでも、このファイル
ヘッダーについての情報を登録することによって、ヘッダー判別が出来ます。
ここではまずバイナリエディタを用いてヘッダー情報を確認し、
それを識別データに登録することにします。
バイナリエディタ機能は、今後実装予定ですがまだ出来ていないので、ここでは(Stirling)という
高性能なバイナリエディタの恩恵を受けることとしました。(^^;
「Stirling」
http://www.vector.co.jp/soft/win95/util/se079072.html 後藤和重 様 作
まずは、「BMP」から行きましょう。ビットマップファイルを適当に1、2個開いてみます。
この際に、注意として(全てのファイル形式に言える事ですが)、出来るだけいろいろなソフトを使っ
て作った同形式のファイルを調査することにしましょう。また、色々細かに形式が分かれてるファイ
ルについても詳細に調べましょう。
まぁ、ともかく、ビットマップファイルのバイナリデータをStirlingでチェックすると
こんな感じになります。

2種類のビットマップファイルを開いた結果、どうやら「BMP」ファイルには"BM"というヘッダーが
先頭の1バイト目から2バイトでついているだろうということが推測できます。
では、これをどう登録するのでしょうか・・・
8.Stirlingはひとまずお休みです。画面を再び、Data Createrに戻しまして、
メニューの「編集(V)」から「ヘッダー定義作成(H)」を選択します。

「ウィンドウがデカ!」とまぁ、それは文字を大きくしたり説明を入れたりで・・・
(以下言い訳)
改善が必要とは思われますが、とりあえず、先ほどの"BM"というヘッダー情報を登録
してみます。
まず、今回対象となるデータは非テキスト(バイナリデータ)なので、
設定の一番上、"モード"は、「固定バイナリ」のままでOKです。
次に、ヘッダータイプ。HOFはファイルの先頭を、EOFはファイルの終端を表します。
BMPファイルのヘッダー"BM"はファイル先頭にありましたので、これも「HOF」でOKです。
ここでは、"基準点からのバイト"と"読み取りバイト"のみを設定します。
"基準点からのバイト"とはファイルの先頭から、ヘッダー(今回はBM)までのバイト数
のことを表します。「BMP」のヘッダーBMは先頭から0バイト目にあったので、ここは
"0"と入力します。
次に"読み取りバイト"。ここでは、さっき設定した基準点から何バイト読み込みかと
いうのを設定します。基準点はヘッダーから0バイト(つまりファイルの一番先頭)と
設定しましたので、BMはそこから2バイトの範囲ということになります。よって、
ここでは"2"と設定します。
その他、もろもろありますが、とりあえずこれで基本的な設定はOKです。
"基準点からのバイト"と"読み取りバイト"だけを設定したら、
ダイアログ右下の、「作成/更新」を押しましょう(^^
9.次にこのヘッダー情報と、拡張子の情報を関連付け、識別の順序に加えます。
「識別ベースライン」というウィンドウが出ていますか?
(閉じてしまったら、メニューの「編集(V)」から「識別ベースライン(B)」を選択して
開きましょう)
識別処理の1番目に、bmpの識別処理を追加します。
"データNo"と書かれている列(000000〜順に数字が入っている列)の
"000000"をダブルクリックしてみましょう。
「データ編集 (データNo.000000)」というウィンドウが出たと思います。

ここで、先ほど編集したヘッダー定義と拡張子の情報を関連付けることになります。
ヘッダー定義、拡張子情報とも、ここまでの手順では少ししか作成してないので、
画面上では、すでにあっていますね。
ヘッダー定義は、先ほどヘッダー情報を編集した際に表示されたIDが表示されています。
「IDなんか見てなかったよ!」という人は、データ編集ウィンドウの上方にある
「編集」ボタンを押してみましょう。さっき設定した"0","2"などの表示が再び出たと
思います。
そして、表示させる拡張子とメッセージのほうには、「BMP」と
「ビットマップ (画像ファイル)」が表示されていますね。
じゃあ、「これでOK!」と思いきやもう1つ作業があります。
画面中間にある、「IDキーの取得状態」がN/Aになっていると思います。
IDキーとは実際のヘッダー情報です。
今まででの設定では、ヘッダーの位置しか設定していませんね。
なので、ここで実際のビットマップファイルを用いてヘッダー情報を取得します。
「取得」ボタンを押し、ビットマップファイルを選びます。
今度は、「IDキーの取得状態」が"取得済み"になったと思います。
これで、BMPについてはすべて終了です。
「OK」ボタンを押して、"データ編集"ダイアログを閉じましょう
「イエーイ!ついに、識別ベースラインに文字が出た!」
こんな感じで出るんだと初めて見る瞬間ですね。(^^

あとは、「ファイル(F)」から「データセットの構築(S)」を選択し、現在の
識別処理を保存します。
これで、ビットマップを識別できるデータセットの出来上がりです。
とりあえず、現在作成したデータセットの動作を確認したい場合は、
「作成したデータセットを使ってみよう!」に進んでください。
このまま、「LZH」のデータ作成方法も見る場合は、次へをクリックしてください。
*LZHを含め、他の形式もBMPの説明と同様の方法で、作成できますが、次のページ
では先ほど触れなかったことについても紹介しています。)
作成したデータセットを使ってみよう!
次のページ