「猫の臨床」CD−ROMを改造する 現在、いろいろな出版物にCD−ROM

●「猫の臨床」CD−ROMを改造する
現在、いろいろな出版物にCD−ROM付録がついています。それらと当CD−ROMを比較しますと
「見た目がショボイ」という感想をお持ちになったことと思います。しかし、それには訳があります。当C
D−ROMの最大の特徴は「ユーザーが簡単に改造できる」ことです。現在のバージョンで不満な部分の訂
正・追加が容易に出来るばかりか、その気になれば表の中身をそっくり入れ替えて全く違うデータを管理す
る簡易データベースに応用することも可能でしょう。もちろんプログラムの知識がなくても大丈夫です。
以下、簡単なマニュアルを示します。疑問・意見等ありましたらデーリィマン社出版部・重堂恭介(email:[email protected])までメールでお問い合わせ下さい。
----------------------------------------------------------------●改造の準備について
1.当然のことながらCD−ROMそのものを書き換えることはできません。ただしこのCD−ROMはコ
ピープロテクトを採用しておりませんので、CD−ROM内の全ファイルをハードディスク等にコピーして
使用することができます。一旦コピーしたファイルには手を加えることができます。
注)コピーフリーではありますが、データについての著作権は放棄しておりません。有償・無償に関わらず、
複製もしくは改変して、他者へ配布することは認めておりませんので、ご理解お願いします。(本の監修者
や著者が著作権を有するのは写真や文章の部分です。無論、写真や文章を完全に入れ替えた場合は問題あり
ません)
2.CD−ROMからハードディスクへコピーされたファイルは、ファイル属性が読み取り専用となってい
るため、そのままでは書き換えができません。該当ファイルを選択しプロパティを表示(ウインドウの上バ
ーの「ファイル(F)」を選択した時に表示されるメニューの「プロパティ(R)」をクリックします)し、
「属性」欄の「読み取り専用」のチェックボックスにあるチェックを外して下さい。
3.CD−ROM内には以下の4種類のファイルが入っています。その中で、(a)および(b)は書き換
えることができます。それによってデータの追加や更新が可能です。
(a)「∼.htm」という名前のついたファイル・・・・HTMLファイルです。このソフトの本体ですが、
テキストファイルですので、ワープロソフトやワードパット、メモ帳などで書き換えできます。
(b)「DATA.csv」・・・コンマで区切られているテキストファイルです。(このソフトの最重要部分で
す)もちろん(a)同様にワードパット等で書き換えることも可能ですが、Excel やロータス等の表計算ソ
フトで開いた方が作業が簡単です。
(c)「∼.jpg」という名前のついたファイル・・・表示される写真です。
(d)「readme.txt」および「autorun.inf」・・・「CD−ROMの説明・注意書き」と「オート立ち上げ
のためのセットアップ情報ファイル」です。この2つは無くても問題ありません。
4.このCD−ROMの仕組み
上記の3.にもあるように、このCD−ROMには実行ファイル(「∼.exe」と表記されている、いわゆ
るプログラム)は入っておりません。写真以外は全てテキストファイルです。HTMLを
「InternetExplorer」で開く、要はインターネットのホームページとまったく同じ仕組みなのです。HTM
Lファイルもフレーム分けやチェックボックス等、全体構造は簡単なものがほとんどです。上記のワープロ
や表計算ソフトがあれば問題なく改造できます。プログラマーが仕事で使用しているような難しいソフト・
高価なソフトは必要ありません。
注)HTMLには、一部「JavaScript」が使用されています。その部分については本文の最後の方で説明し
ます。改造自体は「JavaScript」の部分にほとんど手をつけなくてもできます。
----------------------------------------------------------------●改造の方法
まずは表計算ソフト等で「DATA.csv」を開き、まず1行目をご覧下さい。ずらりと項目が並んでいます。
それぞれの項目の下に続いている列には以下のような文字データが記入されています。
(a)「章」,(b)「頁」:本書での掲載箇所が記載されています。病名の変更、並び替えをしない限り、
特に書き換えの必要はないでしょう。
(c)「PHOTO」:検索画面に表示される写真です。写真が表示されない病気については「WHITE.jpg」と記
入されています。写真を差し替える場合は3.を参照下さい。
(d)「解説」:検索画面に表示される「病気の簡単な概要」が書かれています。この部分を書き換えれば
検索画面に表示される文章が変わります。但し、文章の長さによっては途中までしか表示されない場合があ
りますので、できるだけ簡潔に記入願います。
(e)「cap」:写真の下に表示される文章が記入されています。写真が表示されない病気については空欄と
なっています。
(f)「test:int」:検索プログラムが使用します。この項目にはすべて「1」と記入されています。(この
部分は書き換え不可です。必ず「1」を入れてください)
(g)「病名」:病名が記載されています。ここを書き換えれば、検索画面に表示される病名が書き換えら
れます。(新たに病気を追加する場合は、ここの列に追加記入します。詳しくは2.を参照ください)
(h)それ以降は、「症状」:int が並んでいます。それぞれの列には「0」または「1」の数字が記入されて
います。「病名」と「症状」が合っていない場合、ここを書き換えることにより訂正することができます。
2.を参照ください。
以下、改造方法です。
1.「病名」「解説」を書き換える
→「DATA.csv」を書き換えます。書き換える箇所は、上記の通り、(d)(e)(g)の列です。
2.検索結果を訂正する、あるいは追加する
○新たな「病気」を追加する
→「DATA.csv」に新たな行を追加します。上記(h)のデータ記入方法は以下の通りです。
○「病名」と「症状」を合わせる
→(h)の列に記入されている「0」または「1」の数字の意味は、
「病名」に「症状」が対応している場合=「1」
「病名」と「症状」が無関係の場合=「0」
となっています。間違いを発見した際は書き換えて下さい。新たな病気を追加した場合も、症状の欄の数
字はすべて記入して下さい。(ここの数字は半角文字で記入しなければなりません。間違わないように)
○「症状」を書き換える、順序を替える、または追加する
→これらの場合は「DATA.csv」の書き換えだけでなく、「Left.htm」という名のファイルを書き換える必
要があります。Windows の「メモ帳」でも書き換えは可能ですが、書き換え箇所が多い場合は「一括変換」
コマンドで書き換える方法が簡単なので、ワープロソフトあるいはワードパッドを使った方が良いでしょう。
まず、これまでの改造手順同様に「DATA.csv」を開き、症状を書き換えたり、並べ替えたり、症状の項目
を追加(必ず列単位で削除・追加をして下さい。数字「0」「1」が並んでいる部分に空欄を空けないように
!)した後、「Left.htm」を開き、次の書き換えを行います。
①「DATA.csv」の症状名を書き換えた場合:
「Left.htm」も記載されている症状名を同様に全て書き換えます。
例えば「くしゃみ:int」を「あくび:int」と書き換えた場合、「Left.htm」の中に2箇所出てくる「くし
ゃみ」を「あくび」に書き換えます。
②順番を替えた場合:
「DATA.csv」の症状順を入れ替えた場合は、「Left.htm」の記載順も入れ替えます。「Left.htm」の中に
2箇所、症状名が縦列していますが、どちらの上→下の項目順は、「DATA.csv」の左→右の項目順と一致し
ています。
例えば「DATA.csv」の症状で一番左にある「くしゃみ:int」と、一番右にある「掻痒症:int」の列を入れ
替える場合、「Left.htm」の症状が並んでいる箇所の「くしゃみ」を一番下に、「掻痒症」を一番上に置き
ます。(要は「くしゃみ」と「掻痒症」を入れ替えればよいわけです)
③症状の項目を削る、あるいは新しい症状を追加する:
これらは、ここまでの改造手順と比較して若干難しいです。また「DATA.csv」を開いた時に気が付くこと
ですが、「症状」項目の追加可能数はそう多くはありません。
まず、症状項目を削る場合ですが、以下(1)→(2)→(3)→(4)の手順で書き換えます。
(1)「Left.htm」の 21 行目以降を見ますと:
function filterRec()
{
{count=0
for(i=0;i<=245;i++)
if(document.myform.elements[i].checked)count++;
}
if(count != 0) {
if(document.myform.CB1.checked)var cond1="くしゃみ=1";else {var cond1="test=1"};
以下、if(document ∼
="test=1"};という形の行がしばらく続いています。
→まず始め行の方にある
for(i=0;i<=245;i++)
の「245」という数字を書き換えます。入る数字は「症状の項目数−1」です。
(全く手を加えていなければ、全部で 246 項目あるわけです)
→続いて
if(document
∼
="test=1"};
という行の書き換えですが、各行の真ん中あたりを見ると
cond1="くしゃみ=1"
のように「症状名=1」という文字が入っていますので、削除する症状が書かれている行を探し、行全体を
削除します。
→削除作業の終了後に各行を見ると、削除前には行の順番通りに 1 から 245 まできれいに並んでいた
「if(document.myform.CB」の後に付いている数字
「cond」の後に付いている数字(各行に2箇所あります)
が飛び飛びになっているはずです。この数字を、また 1 から順にならぶよう書き換えて下さい。
例えば:
if(document.myform.CB1.checked)var
if(document.myform.CB2.checked)var
if(document.myform.CB3.checked)var
if(document.myform.CB4.checked)var
if(document.myform.CB5.checked)var
if(document.myform.CB6.checked)var
cond1="くしゃみ=1";else {var cond1="test=1"};
cond2="くる病念珠=1";else {var cond2="test=1"};
cond3="しぶり=1";else {var cond3="test=1"};
cond4="ショック症状=1";else {var cond4="test=1"};
cond5="シラミ寄生=1";else {var cond5="test=1"};
cond6="チアノーゼ=1";else {var cond6="test=1"};
のうち、3行目「しぶり」を削除した場合には
if(document.myform.CB1.checked)var
if(document.myform.CB2.checked)var
if(document.myform.CB3.checked)var
if(document.myform.CB4.checked)var
if(document.myform.CB5.checked)var
cond1="くしゃみ=1";else {var cond1="test=1"};
cond2="くる病念珠=1";else {var cond2="test=1"};
cond3="ショック症状=1";else {var cond3="test=1"};
cond4="シラミ寄生=1";else {var cond4="test=1"};
cond5="チアノーゼ=1";else {var cond5="test=1"};
のように続く行の数字を「詰めて」いけばOK!です。
(2)続いてずっと見ていきます。if(document ∼
="test=1"};という形の行がとぎれた後、
var cond_all = cond1 + "&" + cond2 + "&" + ・・・・・・ + "&" + cond246 ;
という、「長い足し算の式」のような文があります。この式にある「cond」という記号は(1)の作業をし
た行にも入っていました。そこで
→(1)で書き換えた
す。
if(document
∼
="test=1"};
の最終行の「cond」で終わるように式を切りま
例えば:
症状の項目を5つ減らした場合、最終行は
if(document.myform.CB241.checked)var cond241="●●●=1";else {var cond241="test=1"};
※注・・・●●●には症状名が入ります。
となっているはずです。したがって「長い足し算」は
var cond_all = cond1 + "&" + cond2 + "&" + ・・・・・・ + "&" + cond241 ;
で打ち止めにします。式の最後には「 ;」が付きます。半角スペースを忘れないように(書き換えの際に
最後の部分を消さなければ安心ですね)
(3)「長い足し算」の下、8行目に
function clearCB()
{
for(i=0;i<=245;i++)document.myform.elements[i].checked=false;
var cond_all="test=1"
と書いてあります。
→ここの for(i=0;i<=245;i++) の真ん中の数字「245」を「症状の項目数−1」に書き換えます。
(1)の一番最初にやった作業と同じ要領です。
(4)さらに 12 行ほど進むと:
<body>
<p>
<BUTTON onclick="filterRec() ;">診 断</BUTTON>
<BUTTON onclick="clearCB() ;">clear</BUTTON>
</p>
<form name="myform">
<input type="checkbox" name="CB1">くしゃみ<br>
以下
<input type="checkbox" name="CB ・・・・・・<br>という形の行が続いています。
→(1)で if(document ∼ ="test=1"}; の形の行を削った要領で
<input type="checkbox" name="CB ・・・・・・<br>の行も削除します。
例えば:
<input
<input
<input
<input
<input
<input
type="checkbox"
type="checkbox"
type="checkbox"
type="checkbox"
type="checkbox"
type="checkbox"
name="CB1">くしゃみ<br>
name="CB2">くる病念珠<br>
name="CB3">しぶり<br>
name="CB4">ショック症状<br>
name="CB5">シラミ寄生<br>
name="CB6">チアノーゼ<br>
の3行目「しぶり」を削除した場合は
<input
<input
<input
<input
<input
type="checkbox"
type="checkbox"
type="checkbox"
type="checkbox"
type="checkbox"
name="CB1">くしゃみ<br>
name="CB2">くる病念珠<br>
name="CB3">ショック症状<br>
name="CB4">シラミ寄生<br>
name="CB5">チアノーゼ<br>
のように「CB」の後ろの数字を「詰めて」いけばOK!です。
以上(1)∼(4)で「Left.htm」の書き換えは終了です。これで症状項目を減らすことができました。
項目を増やす場合は、これまでの作業の「減らす」部分を「増やす」に換えればOK!です。
要するに:
(1)’ 「Left.htm」の 21 行目以降から作業スタート。
→for(i=0;i<=245;i++)
の「245」という数字を「症状の項目数−1」に書き換える。
→if(document.myform.CB◎.checked)var cond◎="●●●=1";else {var cond◎="test=1"};
を追加する。尚、●●●には症状名、◎には項目の順番が入ります。
(2)’
→「長い足し算」に追加された項目数だけ「+ "&" + cond◎」を追加する。
var cond_all = cond1 + "&" + cond2 + "&" + ・・・・・・ + "&" + cond◎ ;
(3)’「長い足し算」の下、8行目に
→for(i=0;i<=245;i++)
の「245」という数字を「症状の項目数−1」に書き換える。
(4)’さらに 12 行ほど進み:
→ <input type="checkbox" name="CB◎">●●●<br>
を追加する。●●●には症状名、◎には項目の順番が入ります。
という作業をすれば完成です!
3.写真を差し替える、あるいは追加する。
→新たに使用する写真データ(J-peg 形式の画像データ、「∼.jpg」という名のついた写真データを使用
する)を他のファイルと同じフォルダに入れる。
→「DATA.csv」を開き、対応する病気の(c)「PHOTO」の列に記載されているファイル名を消し、新しい
写真データの名前を入れれば完了です。
以上、「症状」の項目に変更を加える場合以外は、「DATA.csv」の書き換えだけでOK!という、実にシ
ンプルな設計となっています。どんどん直しを入れ、より正確・便利なデータベースを完成させてください。
----------------------------------------------------------------●さらに手を加えるには(少々難しい話)
「立ち上げた時にタイトル画面が欲しい」「写真サイズを大きくしたい」「いちいち診断ボタンを押さな
くても検索できるようにしたい」「フレーム分けでなく、独立したウインドウが開くようにしたい」などな
ど、まだまだ改造したい部分があるかと思います。また、「Excel のデータさえあれば、検索やデータの部
分表示ができるとは!、じゃあ別のこと、例えば住所録なんかに応用できないだろうか?」と思った方もい
るでしょう。
これらを実現するには多少の勉強が必要でしょう。ただし、あくまでもHTMLですから、インターネッ
ト・ホームページを作る技術があれば、かなりのソフトが作れるはずです。市販のホームページ入門書籍等
を参考に、いろいろチャレンジしてみてください。以下、参考資料です。
(1)JavaScript
「Left.htm」を見ますと、
<script language="JavaScript"><!--
function filterRec()
{
{count=0
for(i=0;i<=245;i++)
if(document.myform.elements[i].checked)count++;
}
if(count != 0) {
if(document.myform.CB1.checked)var cond1="くしゃみ=1";else {var cond1="test=1"};
・・・・・・・・
上記のような行が見つかります。これが「JavaScript」というもので、「ホームページの標準機能に表現力
を追加するためのプログラム」と言う程度に思って頂ければ結構です。「JavaScript」について解説してい
る入門書もたくさんありますのでいろいろ研究してみてください。
(ヒント)このソフトの基本構造は、
「Left.htm」にチェックを入れる →
「Right.htm」の一覧表データを書き換える
同時に「Rright.htm」上で写真や説明が見れる
と、言うものです。ちょっと考えると、とても複雑なことを行っているようですが、「Right.htm」
「Rright.htm」をメモ帳で開いてみると、書かれている行数が意外と少ないことが分かるでしょう。
このソフトでの JavaScript のミソは、「異なるホームページ間で数字データをやり取りする」ことです。
この「データのやり取り」について書かれている参考書を探し、参考にしてみてください。
(2)データバインド
「Right.htm」や「Rright.htm」をメモ帳で開いてみると、ホンの数行しか書かれていない。なぜかという
と、「InternetExplorer には、表のデータさえあれば、簡易データベースに早変わりする」機能がもともと
備わっているからです。これを「データバインド」と言います。
「Rright.htm」HTMLの一番下の方に書かれている、
<OBJECT ID="testData" CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83">
<PARAM NAME="DataURL" VALUE="DATA.csv">
<PARAM NAME="UseHeader" VALUE="true">
この3行を入れることによりデータベースとなってしまう、実に驚きの「隠し機能」です。
でも、なぜかMac版の InternetExplorer は、データバインドに対応していないのです。いずれは対応す
ると信じていますが・・・。
この「データバインド」についての詳細な参考書は、おそらく日本に1冊しかありません。
カットシステム社刊/井上健語著「データバインド入門」です。また著者の井上健語さんのホームページに
も詳細な解説が載っています。「猫の臨床」付録 CD-ROM を見て、データバインドに興味を持った方は、これ
らを一読することをお薦めいたします。