とりあえず、作ってみよう (バイナリモード編)


ここでは、バイナリデータの識別データ作成について、説明します。

バイナリデータとは、一般にテキストとして全部、もしくは一部が表示
出来ないものです。

具体的には、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の説明と同様の方法で、作成できますが、次のページ では先ほど触れなかったことについても紹介しています。)
作成したデータセットを使ってみよう! 次のページ