データー作り
データーは、データーだけでは意味がありません、
データーを処理するプログラムと一体となって、その価値を持ちます。
つまりデーターはプログラム処理がしやすいように作る必要があるわけです。
この配慮がなされていないデーターは、いたずらにプログラム側での処理の負担を増し、
処理速度の低下を招きます。

古書店のホームページではデーターが生命です。
先ずは、データーの作り方から始めましょう。

最初に、ネット上での表示を前提にしますから、
日本語入力の文字セットは、Shift-JIS、にしておきます。

データーの作り方は色々ありますが、
標準的で汎用性の高いデーター作りを考えておく必要があります。
標準的な作り方さえしてあれば、後々の変更や応用が非常に簡単に出来るからです。

データーの形式には色々なものがありますが、
標準的で基本となるのは、CSV形式と呼ばれる形式です。
これを基準にしておけば、まず間違いのないものができあがります。
CSVデーターの形式は、データーの各項目の区切りに半角のカンマ(,)を使うという形式です。
CSV=Commma Separated Value

データーは、文字と数値に大きく分かれます。
数値は、計算対象になります。
これを区別するために、文字は半角ダブルクオーテーションマーク(")でくくります。
たとえば、

"商品A",400,
"商品B",500,

これが最も簡単なCSVデーターです。
ここで、" "で囲まれたものは、文字であることを示し、囲まれていない半角数字は数値であることを示しています。
数値は、半角で入力することを忘れないでください。
数値ということは、別のプログラムを用いると、直接四則演算の対象に出来るということです。
\や円などの表示は、プログラムの側で付加していくもので、データそのものには基本的には付けません。
たとえば、

"商品A",\400,
"商品B",\500,

というデーターにしておくと、数値計算をする場合には、プログラムの側で、
1、数値であるはずの部分から、\を切り取る
2、切り取ったデーターを保存する。
3、新しいデーターで計算処理をする。
と云う手順を踏むことになります。

あるいは、数値を全角で入力している場合には、
1、数値であるはずの全角数字を半角数字に変換する。
2、変換したデーターを保存する
3、新しいデーターで計算処理をする。
と云うことになります。

CSV形式のデーターファイルというのは、基本的にはテキストファイルの一種ですから、
ワープロ、Editor、等、どんなソフトからでも作ることが出来ます。
ファイル保存の際に、拡張子として、csvを付けておけばいいわけです。

ネット上にupする場合には、当然、テキストファイルとしてupします。

《項目名》
項目名というのは、データー管理を解りやすくするために付けます。

項目名付きデーターと、項目名を独立させたデーターの作り方がありますが、
古書データーでは項目名付きを使う方が良いでしょう。

一行目に、項目の説明行を入れ、

"商品名","値段"
"商品A",400,
"商品B",500,

としておくわけです。この場合、
プログラムの側で、一行目は、データーではなく、項目行として処理するようにすれば良いわけです。
このそれぞれの項目名は、プログラムの側では、変数として処理するようになります。
《データーナンバー》
データーの入力順に番号をつけておく場合があります。
これは、データーの並べ替えなどを行った後、元に戻す必要がある際に便利だからです。
古書データーの場合は、この番号をつけておくと、データー入力後、売れるまでの期間の一つの目安として
利用できるでしょう。(この意味については別に記します)

"番号","商品名","値段"
1,"商品A",400,
2,"商品B",500,

《シーケンシャル処理とランダム処理》
データーの処理には、プログラム側からの呼び出し方によって、
シーケンシャル処理とランダム処理という2種類があります。

シーケンシャル処理は、先頭から順に読み出していく方法です
ランダム処理は、特定の項目を参考にして飛び飛びに読み出していく方法です。

古書データーはランダム処理するのが普通です。

上の段落のデーターが、次のようになっていたとします。

"番号","商品名","値段",1,"商品A",400,2,"商品B",500,

コンピューターはこの場合でも、全然問題なくデーターを読み込んでいきます。
シーケンシャル処理では、頭から読み込みますから、
"番号"→"商品名"→"値段”→1→"商品A"→400→2→"商品B"→500
と順に読み進めていきます。

データー数が多く、数万とか数十万になった場合、頭から順に読むシーケンシャル処理は
読み込みに時間が掛かってしまいます。

これに対処するのが、ランダム処理で、特定の項目に目次(Index)を付けておき、
このIndexを参考にしながら処理します。

例えば、
"番号","商品名","値段",1,"商品A",400,2,"商品B",500,〜〜,1000,"商品X",500,1001,"商品Y",
となっている場合、"番号"をIndexに設定しておくと、
「他を無視して番号が1000の位置に行け」、という命令を与えてやれば、そこにジャンプし、
そこからデーターを読み込むことが出来るわけです。

この場合、コンピューターは1000のある位置を判断するのに、一応先頭から読み始めますが、
実際には(,)の数だけ数えていくのです。

ランダム処理では、Indexを基準にデーターをひとまとまりずつに分けていきます。
「"番号","商品名","値段",」 「1,"商品A",400,」 「2,"商品B",500,」 「〜」
と云う風に、項目の数でひとまとまりにしてしまうのです。

一つの「 , , ,」のなかには、(,)が3個づつあります。
他の表示を無視して(,)だけ読み込んでいけば、1000のある位置は、
3×999=29997 番目のカンマの次の位置と云うことになります。
こういう計算をして読んでいく方が遙かに速度が速いわけです。

これを可能にする為には、「 」の中が同じ形式になっていなければなりません。

古書データーをランダム処理する為には、「 」の中の形式を同じにしておく必要があるわけです。
例えば、
「1,"漫画","鉄腕アトム","手塚治虫",500,」
「2,"文庫","史記列伝1","司馬遷",500,」
ならば、ランダム処理出来ますが、

「1,"漫画","鉄腕アトム","手塚治虫",500,」
「2,"文庫","史記列伝1","司馬遷","岩波書店",500,」
となっていると、
「 」の中の形式が違うため、ランダム処理は出来ないのです。

これは表組みしてみると解りやすいでしょう。

1 漫画 鉄腕アトム 手塚治虫 500
2 文庫 史記列伝1 司馬遷 500


1 漫画 鉄腕アトム 手塚治虫 500  
2 文庫 史記列伝1 司馬遷 岩波文庫 500

さて、古書店のデーターはWeb上で表示される事が前提ですから、少しこちらの話をしておきます。
Web上での表示にはHTML形式のファイルとして表示されるのが普通です。
HTMLと云うのは、Hyper Text Markup Language の略ですが、SFに詳しい古書店さんなら、
このアイデアがSF小説から生まれたことをご存じの方もいらっしゃるでしょう。

 HTMLというのは文書仕様の一種で、 タグ内に書式を記述することによって、文字の表現を変えたり、
画像やファイル等へのリンクが行えるように規格を定めたものです。
ファイル自体はTEXTファイルですから、これもeditorなどで読み書きが出来ます。

インターネット上では、このHTML仕様で書かれた文書を、Webブラウザーで表示するわけですが、
ここで、データー入力の際、多少気を付けなければならないことが出てきます。

それは、Web上では、様々な環境でアクセスしている人がいるわけで、自分の機械画面でうまく表示されていても、
他の人の機械画面ではうまく表示されないことがあると云うことを考慮しなければならないと云う点です。
他にも理由は色々ありますが、少なくとも次の点は最低限注意すべきです。

1.半角カタカナは使わない。
2.機種依存文字は使わない。(下記参照)
3.半角カンマ(,)は避ける。
4.不必要な空白を連続して入れない。
5.「−」(マイナス)、「ー」(全角伸ばし文字)、「一」(漢数字)を使い分ける。

各店の目録データーを見ていると、結構これらが配慮されていないようです。
【機種依存文字一覧】

the古書