ツールハウス  − 簡単ツール −

【ホーム】  【新着・履歴】  【覚え書き】  【技術メモ】  【WSメモ】  【簡単ツール】  【事業案内】  【その他】 

toolhouse-logo


 プログラム開発やシステム運用では、ちょっとしたツールを用意しておくことで、 開発を容易にしたり、システム運用を安全確実なものにすることができます。
 そのとき、スクリプト等のプログラム以外にテストデータも必要になってきます。 システムの動作をチェックするのに十分なテストデータを作成することは大切です。
 これらに関係するちょっとしたツール類をここでは紹介していきたいと考えています。 自分のために片手間に作成したものですので、汎用性は低く、また、 内容も洗練されたものになっていませんが、参考程度にはなるのではと思います。

1. XMLテストデータを作成するプログラム例
2. RCSでターゲットを構成している各ファイルのリビジョンを記録する
3. ファイルの内容を変数に埋め込む(bin2coff)
4. H8,SH2フラッシュROMへの書き込み(fw)
5. Mac で OpenGL
 
  ( 免責事項 )



1. XMLテストデータを作成するプログラム例

 ポータビリティに優れたデータ形式として XML が注目されていますが、 自社開発のパッケージで取り扱うデータ形式に XML を利用することで、 プログラムの機能拡張や他のプログラムとの連係に効果を発揮してくれそうです。

 ちょっと、自作プログラムのテストをしたくなり、 既存のデータからテスト用の XML データを生成する簡単なプログラムを作ってみました。
 このプログラム toxml は、 CQ出版社の月刊誌「インターフェース」に数ヶ月ごとに付属する CD-ROM に含まれる雑誌の目次データ(CSV 形式)を XML 形式に変換し、XSLT で清書してブラウザ上で見られるようにするものです。
 同じ出版社の月刊誌「トランジスタ技術」の付録データでは、 表紙の画像データが含まれていないので、 プログラムソースの該当部分をコメントアウトしてください。

   toxml csv-file インターフェース > if.xml

などとして実行すると、変換結果がファイル if.xml に生成されます。 インターネットイクスプローラなどの XML を XSL を使って表示できるブラウザで if.xml を表示してみてください。
 生成される XML ファイルの内容は以下のようになっています。

<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="cqmag.xsl" ?>
<catalog>
 <magazine>
   <mname>インターフェース</mname>
   <publish year="1974" month="01"/>
   <cover>IFDB7401.JPG</cover>
   <article>
     <title>ミニコンとインターフェース</title>
     <subtitle>全ページ特集</subtitle>
     <kind>特集名</kind>
     <pstart>0</pstart>
     <pend>0</pend>
     <authors></authors>
   </article>
〜 省略 〜


(Sep 5, 2002)



2. RCSでターゲットを構成している各ファイルのリビジョンを記録する

 プログラムやライブラリを複数のソースファイルで開発していると、 つい変更を加え過ぎて、せっかく動作していたプログラムを台無しにしてしまうことがあります。 このような苦い経験から、私はソースコードリビジョン管理システムRCSを利用しています。
 最近では CVS を使う人が多いようですが、コマンドのキー入力の文字数が少ないことと、 特に不満もないことから、しばらくは RCS を使い続けるつもりです。
 ファイルごとに以前のリビジョンが取り出せる便利な RCS ですが、 ターゲットとなるプログラムやライブラリを構成する各ファイルのリビジョンを記録しておかないと、 正常に動作するファイルの組合せを取り出せなくなってしまいます。
 解決策には、(1) リリースバージョンができた時に、rcs -nname: RCS/* で各ファイルのリビジョンにユニークな名称 name を付ける、 (2) ターゲットファイルに対して ident コマンドを実行し、 構成する各ファイルのリビジョンを取り出してファイルに記録しておく、等の方法が考えられますが、 (1) は外部に対してのリリースには適していても、個人的にこまめに記録を取るのには不向きです。 (2) の場合は、構成するファイルに Makefile やヘッダファイルを含めることができないという欠点があります。 ヘッダファイルは複数のファイルに取り込まれることが多く、その場合、 ヘッダファイルのリビジョンを1つの文字列定数としてターゲット中に埋め込んでおくことができません。

 今回紹介する UNIX 系OS用のツールは、ターゲットを構成する各ファイルのリビジョンとファイル名を SnapShot というファイルに保存しておき、そのファイルも RCS で管理することで、 任意リビジョンのターゲットを make するための各ソースファイルのリビジョンを記録・復元することを可能にするものです。

 リビジョンの記録とターゲットを構成するファイルの取り出しは Makefile とシェルスクリプトを用いて実現しています。 テンプレートとなるサンプルは、1個のヘッダファイル header.h を2個のC言語のソースファイル main.c と sub.c が参照している構成になっています。
 ソースファイルや Makefile がある程度完成して、スナップショットをとっておこうかな、 という状況になったら、以下のような操作を行ないます。チェックイン(ci)は変更を加えたファイルに行ないます。

  make
   … うまく動いた !
 
 ■ 記録 ■
  ci header.h
   ログのコメント入力
  ci main.c
   ログのコメント入力
  ci sub.c
   ログのコメント入力
  ci Makefile
   ログのコメント入力
  make snapshot
   スナップショットを記録する。各ファイルの名称とリビジョン番号が
   ファイル SnapShot に記録される。 SnapShot.log には、これまでの
   スナップショットのログが追加されていく。
   
 ■ 復元 ■
  less SnapShot.log
   戻したいターゲットに対応する SnapShot ファイルのリビジョンを調べる。
  rlog SnapShot
   RCS のログでも確認しておく。
  co -r1.1 SnapShot
   特定のリビジョン構成ファイル SnapShot を取り出す。
  make restore
   取り出した SnapShot ファイルを用いて構成ファイルを復元

 RCS が記録するヘッダの state は、通常 Exp になっていますが、SnapShot の時は Snap になります。たとえば、これを"ABCD" としたい時は、次のように入力します。 詳しくは、サンプルに含まれるドキュメントを参考にしてください。

  make STAT="ABCD" SnapShot


(Sep 17, 2002)



3. ファイルの内容を変数に埋め込む(bin2coff)

 bin2coff は、サウンドデータや画像データのファイルの内容を プログラムに埋め込み、変数として参照できるようなオブジェクトファイル (COFF形式)を生成するプログラムです。
 現在のところ、対応しているプロセッサは、モトローラ 68k、日立 H8 と SH です。 他のプロセッサでも、COFF のプロセッサのコードが分かれば、対応可能です。 (Update: Feb 4, 2002)
… 以前、他所で公開していたものの再公開です。

 使用例

bin2coff /usr/local/src/3.wav wavedata

 カレントディレクトリに作成されるオブジェクトファイル 3.wav.o には、変数 wavedata に入力ファイルのデータが入れられ、 変数 len_wavedata にデータ長が入れられる。 ユーザプログラムからデータを参照するときに、変数 wavedata を単純な配列ではなく構造体にすることも可能である。

Vector からダウンロード
     SPARC Solaris、FreeBSD4.x,Linux(Turbo Linux)用


(Apr 20, 2003)



4. H8,SH2フラッシュROMへの書き込み(fw)

 fw は日立製マイクロプロセッサ内蔵のフラッシュ ROM にプログラムやデータを書き込 むプログラムです。 H8/3048F 用の h8w と SH2/7044F/7045F 用の shw が含まれています。 これらのプログラムはブートモードでの書き込み専用で、 ユーザモードでの書き込みには対応していません。 Windows95 以降の MS-DOS プロンプト(コマンドプロンプト)と UNIX 系 OS で動作します。
 動作を確認したボードコンピュータ(SBC)は、秋月の AKI-H8/3048F と AKI SH-2/7045F、 アルファプロジェクトの AP-SH2F-2A(SH7044F) です。他のSBCでも、 これらとクロックが大幅に異ならなければ使えるはずです。
… 以前、他所で公開していたものの再公開です。

■ 特徴 ■
(1) サイズの小さいファイルを転送するときに要する時間が短い(TAT僅少)。
(2) シェアウェアですが、小さいファイル(10kB 以下)の転送には無料で使えます。

 Vector からダウンロード
Microsoft Windows95 以降用
SUN SPARC Solaris2.x 用
FreeBSD 4.x 用
Linux(TurboLinux)用


(May 14, 2002)



5. Mac で OpenGL

 MacOS X を搭載した iBookG4, PowerBook, MacintoshG4, G5 は3次元グラフィックスに優れていて、開発ツールをインストールしておけば、 OpenGL のプログラム開発を行なうことができるものです。本格的なアプリケーション作成とまではいかなくても、 手軽にアルゴリズムや動作の検証を行なってみることができ、大変助かっています。
 ヘッダファイル関連でシンボリックリンクを張っておく必要があります。

   sudo mkdir -p /usr/local/include/GL
   cd /usr/local/include/GL
   sudo ln -s /System/Library/Frameworks/OpenGL.framework/Headers/*
   sudo ln -s /System/Library/Frameworks/GLUT.framework/Headers/glut.h

 ちょっとプログラムを書いて、動作チェックするのに、次のような内容をMakefileに書いておき、

   CFLAGS = -framework OpenGL -framework GLUT -framework Foundation

作成したソースプログラムがgears.cならば、ファイル名の拡張子(.c)を除いた名称をプログラム名として、

  make gears

とターミナルウィンドウでコマンド入力すると、アプリケーション gears が作成されます。 gears.c はGLUTのサンプルプログラムで、PDSとして配布されているものです。
 単一のファイルから作られるアプリケーションならば Makefile の内容を変更せずに簡単に実行できるので便利です。 複数ファイルになったときに、Makefile にターゲットと依存ファイル、コマンドのペアで記述を追加すれば済みます。
 似た方法としては、このコンパイルオプションを含むコンパイルコマンドをシェルスクリプトにしておく方法がありますが、 私は Makefile の方を好んでいます。

(Aug 16, 2005)



免責事項

 当サイト toolhouse.jp の Web ページ上の内容に関しましては、万全を期しておりますが、 その内容の正確性および安全性を保証するものではありません。 当該情報、プログラムおよびデータに基づいて被ったいかなる損害についても、 情報提供者は一切の責任を負いかねます。


 当 Web ページの内容に関しまして、ご意見、お問い合わせなどは、電子メールで  info@toolhouse.jp まで お寄せください。

 ツールハウス ホーム   Copyright © 2002 - 2005 by Toolhouse Ltd.  All rights reserved.

Last updated: Aug 16, 2005