データファイルの作成

データファイルの作成

1.方針

ここでは、計算尺のメモリのイメージを作成するプログラムを作成して、計算尺を作成します。

あらかじめ、Excelを利用するの方法で、計算尺のメモリの情報となる.csvファイルを作成します。その後、Visual Basic.NET, Visual C#.NET, Java の各言語を利用して、その.csvファイルを基にして、計算尺のメモリのイメージを.gif/.pngファイルで作成します。作成したイメージファイルを印刷して工作することで、計算尺が完成します。

2..csvファイルとは

計算尺のメモリの情報となる数字を、.csvファイルとして作成します。「.csv」という拡張子をはじめて聞いたという人も多いかもしれません。「.csvファイル」はカンマで区切られたデータのファイルです。たとえば、次のWxcelファイルがあったとしましょう。

これを.csvファイルとして保存し、メモ帳で開くと次のようになります。

それぞれの対応関係は明らかでしょう。ただ、カンマの位置がそろっていないので見にくいかもしれません。

.csvファイルとして保存することはとても簡単です。Excel2003の場合、Excel で保存する際、「ファイル」→「名前を付けて保存」で出たダイアログで、「ファイルの種類」のところを「CSV (カンマ区切り) (*.csv)」に変更して保存すれば、.csvファイルとして保存されます。

この.csvファイルというのは、テキスト形式のファイルで、後にプログラムを作成する際に、「テキストとして読み取り、カンマで分割する」といった単純な作業で数字を読み取ることができるので、Excelのファイル.xlsとして保存するよりも作業が楽になります。

3.Excelによる.csvファイルの作成

ここでは、Windows XP + Microsoft Excel 2003 を例に話を進めていきますが、ほかのOS, 表計算ソフトでもかまいません。適宜読み替えてください。ただし、そのソフトで.csvファイルとして保存できることを確認してください。表計算ソフトの基本的な使い方はご存知のものとして説明します。

2.1.計算尺の目盛りとその位置

まずは、C尺とD尺の目盛りから考えて見ましょう。C尺とD尺はそれぞれ固定尺にあるか滑尺にあるかの違いと、目盛り線の伸びる方向(C尺は上に伸び、D尺は下に伸びる)が違うだけで、目盛りの間隔は同じです。

C尺とD尺は、xという目盛りが、左の基線から長さの比log(x)の位置に目盛りがあるのでした。そこで、計算尺の長さをaとすると、目盛りの位置はa×log(x)です。

前回では10インチの計算尺を考えて、尺の長さa=25cmとしましたが、今回は全体との比を知りたいので、a=1とします。

2.2.目盛りの間隔

今回は、イメージとして目盛りを作成します。あまり目盛りの間隔を狭すぎても、イメージの横幅が決まっていればメモリの間隔を表現することができません。そこで、5インチの計算尺の目盛りの間隔を採用しましょう。それは次のとおりです。

2.3.表の作成1, A列

それでは、Excelを起動してください。

ここでは、A列には目盛りとなる数値を、B列には目盛りの位置を表にすることにし、まずA列を作成します。

A1に「1」と入力してEnterキーを押してください。かぎ括弧は不要です(以下も同じ)。

A2には、「=A1+0.02」と入力してEnterキーを押してください。すると、A2の数字は1.02になります。

そして、A2を一度クリックした後、A2の右下にカーソルを合わせると十字「+」に変わりますので、そのまま下のほうへドラッグしてください。すると、A3=1.04, A4=1.06, …と自動的に計算されます。A51が2となりますから、そこでストップします。

今の状態は、A1=1, A2=1.02, A3=1.04, …, A50 = 1.98, A51=2となっています。

次に、A51=2のすぐ下、A52に「=A51+0.05」と入力してください。すると、A52=2.05となります。

先ほどと同様A52を一度クリックした後、A52の右下にカーソルを合わせると十字「+」に変わりますので、そのまま下のほうへドラッグしてください。A111=5となりますのでそこでストップしてください。

今度は、A111=5のすぐ下、A112に「=A111+0.1」と入力してください。すると、A112=5.1となります。

同様nにA112を一度クリックした後、A112の右下にカーソルを合わせると十字「+」に変わりますので、そのまま下のほうへドラッグしてください。A161=10となりますのでそこでストップしてください。

今は次のようになっています。

  A
1 1
2 1.02
50 1.98
51 2
52 2.05
110 4.95
111 5
112 5.1
160 9.9
161 10

これで、目盛りを振るxの値が決まりました。

2.4.表の作成2, B列

B列には目盛りの位置を入力します。

ここで、Excelの関数をひとつ紹介します。それは、「LOG(数値)」です。これは、底を10とした対数を取ります。

長さaの計算尺での、C尺の目盛りxは、左の基線から長さa×log(x)の位置にあるので、今回はこの関数を利用します。特に今回はa=1です。

それでは、B1に「=LOG(A1)」と入力して、Enterキーをクリックしてください。すると、B1=0と計算されます。

次に、先ほどと同様、B1を一度クリックした後、B1の右下にカーソルを合わせると十字「+」に変わりますので、そのまま下のほうへドラッグしてください。そして、B161まで目盛りの位置が計算され、B161=1となることを確認してください。

これで、次のようになります。

  A B
1 1 0
2 1.02 0.008600172
50 1.98 0.29666519
51 2 0.301029996
52 2.05 0.311753861
110 4.95 0.694605199
111 5 0.698970004
112 5.1 0.707570176
160 9.9 0.995635195
161 10 1

2.5.表の作成3, C列

最後に、メモリの長さを記しておきましょう。今回は5インチの計算尺をまねて次のようにしましょう。

値の範囲 目盛り線の長さ
1から2 1.5・2が上下15ピクセル
1.1・1.2・…・1.9が上下10ピクセル
その他が上下5ピクセル
2から5 2.5・3.0・…・5が上下15ピクセル
2.1・2.2・…・4.9が上下10ピクセル
その他が上下5ピクセル
5から10 6・7・…・9が上下15ピクセル
5.5・6.5・…・9.5が上下10ピクセル
その他が上下5ピクセル

これを次のように表記しましょう。

上下15ピクセル 3
上下10ピクセル 2
上下5ピクセル 1

これを先ほど作成した表のC列に追加していきます。

まず、C1=3, C2=1, C3=1, C4=1, C5=1, C6=2 を入力します。そして、C2~C6を選択して(C2でマウスの左ボタンを押し、マウスを動かし、C6の上でマウスの左ボタンを離します。)、その上で、右クリック→「コピー」をクリックします。

C7をクリックして、その場で右クリック→「貼り付け」でC7=1, C8=1, C9=1, C10=1, C11=2が自動的に入力されます。

この調子で、上の表にあうようにExcelファイルを作成していきます。

  A B C
1 1 0 3
2 1.02 0.008600172 1
 
50 1.98 0.29666519 1
51 2 0.301029996 3
52 2.05 0.311753861 1
 
110 4.95 0.694605199 1
111 5 0.698970004 3
112 5.1 0.707570176 1
 
160 9.9 0.995635195 1
161 10 1 3

完成したら、保存してください。.csvファイルとして保存することはとても簡単です。Excel2003の場合、「ファイル」→「名前を付けて保存」で出たダイアログで、「ファイルの種類」のところを「CSV (カンマ区切り) (*.csv)」に変更して保存すれば、.csvファイルとして保存されます。

その後に、次のようなダイアログが出ますが、「OK」「はい」を選択してください。

最終的に完成した.csvファイルを公開しておきます。