104.OSとは何をするもの?    目 次


PCの入門書を買って来て、その通りやればなんとかなっているが、今ひとつ何をしているのか理解できない、意味がしりたい、そうすれば後は推測で発展させていけるのに、と思っている人への入門編です。

そもそもPC(デジタル計算機一般を今後こう呼びます)とは、万能機械であって、ソフトが書けさえすれば、何でもできるわけです。マージャンで絶対に一番になるソフトというものを書けば(ここが問題で、書く事ができるかどうかはそのような数学理論があるかどうかに依存します。まあ、マージャンの場合、ありませんね^^;)、必ずそうなります。

さて、では、そのようなソフトをどのようにして、PCに実行させるのでしょうか。また、そのようなソフトはどうやってPCに供給されるのでしょうか?ここから、疑問の全てが始まります。

何を馬鹿なことを言っているんだ、CD−ROMやフロッピーに決まっているじゃないかと貴方が思ったとしたら、この文章は読む必要はありません。市販の入門書で充分でしょう。「本当だ、不思議だな」と思ったあなたはこの駄文を読むことで、一歩ステップを上がることが期待できます。

UnixやWindowsのようなOSが無かったら、PCの電源を入れても、真っ黒な画面のままです。そんなことは無い、メモリーカウントが始まり、多少なにか画面に表示されると思われるかもしれませんが、あれはBIOSというOSの一部と言っても良いソフトだけがROMの形でハードに作りつけにしてあるからで、BIOSを壊してしまえば、何にも表示されなくなります。BIOSを新しいバージョンに書き換えようとして、心ならずもそうしてしまった中級以上の方、いますね。話しがそれましたが、このような状況のPCでは、CD−ROMをドライブに入れても何も起きません。エクスプローラからCD−ROMのアイコンをクリックすればいい?いいえ、まだ、画面は真っ黒なまま。そもそもOSの一機能であるエクスプローラなど、まだPCにインストールされていないでしょ。

さて、このような訳で、PCを便利に使えるようにするには、買って来たソフトをPCに読み込ませ、ハードディスク(HDD)に蓄積し、それをいつでも主記憶(DRAMのことですね)に呼び出して実行できるように索引を作って、タグを付けることをしてくれる道具がいります。この道具もソフトですが、これのことをOSと呼ぶのです。Operating System。(PCを)操作するシステムです。今、上で「便利に使える」と書きましたが、不便でもよければ、別にOSなど入りません。自分で直接、HDDにソフトを書き込めばいいのです。目茶苦茶面倒ですが居候は昔、そうしていました。HDDにどうやって、かきこむのか?そういうソフトも自分で作るのです。

さて、メーカ製PCを買ってくると、Windowsのインストールということを最初にします。プレインストール(前もってインストールされている)なんて用語はあれは、詐欺で、インストールなどされていませんよね。ただ、CD−ROMではなく、HDDの上にWindowsが生のまま、書き込んであるだけです。御陰で、半時間から1時間はインストールの時間がかかり、訳のわからないプロダクトキーとかいう英数字を入れさせられます。

まあ、とにかくこうしてOSがインストールできました。さて、OSは、以下の事を実行してくれます。
 1.ソフトのインストール
 2.ハードのインストール
 3.ソフトの実行
本当は、もう少しいろいろありますが、とりあえず、以上を理解すれば、後は類推できます。

1.ソフトのインストール
あなたが買って来たソフトは、大抵はCD−ROMに入っています。これをドライブにいれると、インストールウィザードが立ち上がります。これはOSがやってくれていることなのです。インストールとは、ソフトをCD−ROMからHDDにコピーして、それをすぐ読みだせるように索引付けし、タグを付けることです。タグって、Windowsでは、ショートカットのアイコンですね。昔の(今も?)Linuxはこんなことをやってくれなかったので、インストールはしたけれど、どうやって実行するのか、Jvimなのか、viがエイリアスになっているのか??と悩んだものです。索引は、エクスプローラから見えるフォルダ群でしょうか。もし、インストール機能がなかったら、あなたは、CD−ROMの中にあるソフトのファイル群を、自分で、HDDの854796500236番地に入れた事を覚えていなければなりません。これは300ものソフトをHDDに書き込んだら、覚えていられないでしょう。ノートにでもメモをとっておきいちいち探さなくてはなりません。

「ソフト」と今まで読んできたものは、実はプログラムですが、その他、メールやテキスト、あるいはMP3の音楽などのデータもソフトです。PCの中では、これらは区別なくファイルという形で扱われます。花子さんから来たメールの文章を実行することだってできます。もっとも、エラーになってしまいますが。嘘だとおもうのなら、文章.txtの拡張子を.exeに換えてダブルクリックして見て下さい。

さて、PCの中では、あらゆるソフトはファイルとして、同等に扱われます。問題はそれらをHDDのどこに書き込んだかをどうやって管理するかです。ここで書類とフォルダの比喩(メタファー)が使われます。ファイルは日本語に直せば書類ですね。フォルダーはそのままです。その書類とフォルダを目で見て分かり易くしたものが、エクスプローラです。あれは、HDDの中に書き込まれているソフトを分類、整理してみせているのです。

ソフトのインストーラは、途中でどこにインストール(HDDへのコピー)するか聞いてきます。デフォールトでは、「c:\Program Files\そのソフト名」(エクスプローラでせっかくGUIになっているのに、なぜ、こんなところでDOSの書式を出すのでしょうね。初心者には分からないじゃないですか。このインストーラの設計者はアホですね)になっていますので、何もしなくていいのですが、うっかり何かキーに触ると、これが消えてしまい、あわてて訳もわからず適当にいれたりした結果、その適当な文字列をフォルダ名とする新しいフォルダが出来て、そこにインストールされるので、初心者のHDDの中はグチャグチャになっていることが良くあります。中にはフォルダを作らず、C:¥に全部入れているような人もいます。readme.txtなどはみな大体同じ名前なので、きっと上書きされて、最後にインストールした一つだけが残っているのでしょうね。

今、デフォールトdefaultという言葉を使いました。これは「不履行」という意味です。つまり「何もしない」という意味で、「デフォールトでは」と書かれていたら、「貴方が何もしなければ」と置き換えてかまいません。貴方が何もしなければ、ソフトの作者が決めたようにやります。その意味では、「デフォールト」という代わりに「規定値」ということもあります。ソフトの作者が既に定めてある値という意味です。

このデフォールトという言葉、銀行関係者には禁句で、これを聞くと、真っ青になって、頬が引きつり、唇の端がビリビリと痙攣を起こし、今にも卒倒せんばかりになります、と知り合いの銀行マンが言っていました。デフォールトとは、金融専門用語では、債務不履行のことで、ろくに担保もとらず貸した5000億円がデフォールトで返って来なくなっては、銀行も倒産するからです。

さて、話しが逸れてばかりいますが、1.番のソフトの管理という意味はわかりましたね。エクスプローラは、書類やフォルダを作ったり、消したり、コピーしたり、移動したりして、分類・整理する道具なのです。その使い方は、市販書を見て下さい。

2.ハードの管理
例えば、モデムやサウンドカードを買って来てインストールしてみましょう。ハードでも、ソフトでも「インストール」という用語を使います。「設置」、「導入」、いろいろな訳ができますが、ようするに、PCの上で使えるようにすることです。やる事はソフトのインストールとは全然違います。

 ・PCに物理的にとりつける
 ・ドライバをインストールする
 ・アプリからドライバを使ってハードを動かす
やっている事はこれだけの事です。ですが、具体的に考えた途端、頭がいたくなります。

物理的にとりつけるのは、易しいでしょう。ここにはOSは関係ありません。関係者はあなただけです。

OSが無い場合、ドライバをインストールするとはどういうことをいうのでしょうか? ソフトのインストールのところで述べたのと同じで、HDDのどこかにドライバを手でCD−ROMなり、フロッピからコピーするのです。エクスプローラなんてありませんよ。自分で、copyプログラムを作ってするのです。さて、そのドライバがサウンドドライバとします。次ぎにそのドライバをMP3プレーヤから読み出して、演奏しようとした場合、MP3プレイヤソフトはドライバがHDDの何番地から入っているのかを知らなければなりません。どうやって知るのでしょうか?決まっています。あなたがおしえてやるのです。アプリがドライバを使う方法は、3.ソフトの実行のところで、ロードということを説明する中でのべましょ。

サウンドカードはIRQとかIOポートのようなPCの資源(リソース)を使います。資源って、抽象的で分かり難いのですが、例えば、チャネルはテレビの資源です。VHFでは、12チャネルしかありません。資源には限りがあります。IRQは16個しかありません。IRQって、チャネルに似ています。というか、その一種なのです。シリアルポートは3、4、FDDは6というように大体きまっています。NHKは1というようなものです。そういう資源の管理をするのもOSです。自分でしてもいいのですが、全資源のハードウェアへの割り当て表を自分で作っておかないと、デタラメになって大変です。

これらを行うのがコントロールパネルの主として、「ハードウェア」です。また、「システム」の「デバイスマネージャ」や、「モデム」もそうです。

3.ソフトの実行
ソフトの実行は、簡単なようで、結構難しく、OSの基本的な機能です。もっとも簡単な所から考えましょう。プログラムは、HDDにインストールされています。ネットスケープコミュニケータを動かそうとおもえば、それがHDDの何番地に入っているか調べなくてはなりません。123654番地からの20MBがそうだとしたら、何とかして、123654番地からの20MBをメモリ−の適当な番地、例えば、987456番地に読み込みます。こういう役目のプログラムを「ローダ:Loader」といいます。メモリーにプログラムを「登載する」という感じです。もちろん、ローダはOSの一部分です。次ぎに、987456番地から実行します。これで、ネスケが立ち上がります。

以上が、DOSのようなシングルタスクのソフトがやっていることです。DOSでは、MP3の音楽を聞きながらネスケでネットサーフィンをするというように2つ以上のソフトを同時に動かすことはできません。タスク、taskって、仕事ですね。実行されているプログラムのことをタスクといいます。上の場合、MP3とネスケの2つのタスクが走っている、と言います。一つのタスクしか実行できないことをシングル・タスク、2つ以上のタスクを同時実行できることをマルチタスクといいます。

Windows9x/NTは一応マルチタスクです。こうなると、プログラムを実行するということが、簡単ではないという意味が分かりますね。もうOSが無ければ不可能です。マルチタスクは簡単に言えば、MP3のプログラムを1ミリ秒だけ実行したら、今度はネスケの命令を1ミリ秒だけ実行するというように、交互に実行しているのです。周辺機器や人間の速度はCPU(Athlon,Pentium,Celeron などのMPUと思って下さい)に比べたら圧倒的に遅いので、交互にやってもまにあってしまうのです。

もっとも分かり易い例を挙げましょう。あなたは1秒間にキーをいくつ叩けますか?プロは継続的に5タッチ/秒です。1タッチで1文字が読み込まれます。これに必要な命令が100命令としましょう。5タッチで500命令です。Pentium4/2GHzやAthlon1.5GHzでは、多分、1秒間に20億命令程度はこなすでしょう。人間がPCに比べていかに桁違いに遅いかこれでわかります。プリンタにしても同じようなものです。5文字が200文字程度になるだけですから。あなたがワープロで必死にキーを叩いていてもMPUはほとんどやることがなく、遊んでいるわけです。

例えば、1ミリ秒でMP3の音楽の1秒分をデコードして、サウンドカードに送り込み、サウンドカードのメモリーがそれを記憶して、スピーカから音楽をならせばCPUは1秒の内999ミリ秒は遊んでいることになります。1GHzや、2GHzのMPUを使った場合、それらは、ほとんど遊んでいるのですね。電気だけは食べていますが。丁度、4000ccのアメ車を500m離れたスーパへの買物用に使っているようなもので、ガソリンを撒き散らして地球環境を汚し、地球資源を無駄に使っている成り金のおばさんのようなものです。

ベンチマークを更新したり、MPEG1やMPEG2の動画処理をしたり、3D−CGのレンダリングが趣味という変な人でなければ、一般家庭用には、MMXPentium 200MHzで御釣りがきます。居候の常用マシンはただのPentium/200MHzです。動画処理をやる時だけ、Celeron/450MHzを使いますが、これはさすがに2GHzにしたいと思っています。P4/2GHzがジャンクで1000円になった頃買う予定です ^^;

さて、本題に戻って、主記憶の中に2つのプログラムをHDDからloadすることは手動でもできますが、1/1000秒毎に実行するアドレスを交互に切替えながら遅滞なく(音楽がとぎれることなく)進めるなんて、人間にはできません。ここはOSの独擅場です。

OSにはもう一つ大切な仕事があります。あなたのPCの主記憶が64MBとしましょう。マルチタスクですから、たくさんのプログラムを同時実行できます。例えば、130MB分のプログラムを現在のOSは同時に実行できます。130MBのプログラムがどうして、64MBに入るのか不思議ですね。OSは、DRAMとHDDを区別せず、DRAMが一杯になったらHDDをDRAMと同じだと思って、そこに書き込んでいるのです。??だったら、もともとHDDにはプログラムがインストールされているからそれを使えばいいじゃない?どこが違うの?って思うでしょうが、主記憶にloadした場合は、即実行可能になっているのです。loadって、ただプログラムを主記憶にコピーするだけではなく、例えば、ドライバの番地を書き込まなければならなかったですね、そんな仕事を一杯やっているのです。

上のほうで書きましたが、MP3プレイヤプログラムのどこかにサウンドドライバをロードした番地をかくのは、インストールした時ではなく、主記憶にロードした時なのです。だって、どこにロードするかは、その時にならないとわからないでしょ。特にマルチタスクの時は、そうですね。たまたま、空いている番地にロードするのですから。

ということで、主記憶にあるプログラムは戦場で戦っている兵士、loadされてからHDDに書き出されているプログラムは戦線後方の基地にいて控えている兵士、HDDにあってloadされていないプログラムは、まだ徴兵されていない未訓練の一般市民、と思えばいいでしょう。このように、HDDをDRAMと同様に取り扱う方式を仮想記憶とよびます。HDDを仮想的に主記憶(DRAM)とみなす、という意味です。こんなことも手動ではできませんね。







105.JAVAとは何か?     目 次


簡単に言えばcという言語をベースにしたプログラミング言語です。プログラミング言語って、WindowsユーザならVBと言えば分かるかな。JAVAは、良くc++--とも表現される、というか、悪口を言われます。cをオブジェクト言語にしたものがc++。そこから、いくつかの機能を取り去ったという意味でc++--なんです。

だったら、どんな意味があるのだと言う事になりますが、これも一言で言えば、
 ・ネットワークに関するプログラミングをスマートにした
 ・プラットフォームを選ばない
ということでしょう。前者はそのままです。言語仕様を拡張すればできるのはあたりまえですね。問題は後者でしょう。プラットフォームとは抽象的で意味不明の言葉です。これは、あなたが素人だからわからないのではなく、専門家の間でも、文脈で意味するものが違います。「そこのあれ取って」という「そこ」や「あれ」と同じようなものです。ですから、おまえさんのいう、そのプラットフォームとはなんの事だい?って確認しないと、御互いに勝手な物を思い描いて話しに齟齬を来すことはままあります。

JAVAの話しの文脈では、まあ、普通はハード、PC/ATとか、9801とか、Macとかを意味します。その上に載っているOS、Windows98とか、2000とか、Soralisも含みますね。まあ、プラットフォームって、大抵は、アプリがその上で動く「土台」という意味ですから、ハード+OSと思っておけばほぼ正しいでしょう。

さて、アプリは、普通、OSに依存して書かれます。おまけにコンパイルしてバイナリ、つまりある特定のハードの使っている機械語に翻訳されています。ということは、アプリというものは、プラットフォーム依存するということです。cのような高級言語のソースで、つまり、プログラミング言語で書いたテキストのままで配布すれば、ハードを選びません(ハードは選びませんが、OSは選びます。それで、実はちょっと手直しが必要ということがあります。どうしても、OSに依存するというか、OSの機能を使っているところがありますから)。コンパイラ(機械語への翻訳ソフト)がそのハードにあった機械語に翻訳してくれるからです。Unixの世界では今でも、結構、ソースで配布しています。Linuxなどでは、最初からコンパイラが入っているので、自分でコンパイルできるのです。DOSでdirのようなコマンドを使うのと同じ感覚で、make(compileのコマンド)とするだけで、別に難しいことではありません。

とはいえ、Windowsのような一般人向けOSでコンパイルさせるのはトラブルの元ですから、Windowsにはコンパイラは付いていません。それで、アプリは最初からコンパイルしたバイナリで売られているのです。ということで、同じ、Excelでも、Windowsのものは、Macでは使えません。でも、JAVAで書いてあれば、それが出来るということです。それで、プラットフォーム・フリーというのですね。

なぜそんなことができるのか?この世には、インチキは別として、奇跡も魔法もありませんから、JAVA(で書いたプログラム)はコンパイルしてないということです。つまり、高級言語のままということですね。とはいえ、それでは余りに芸がないので、多少の工夫がしてあります(後で述べるバイトコードという奴です)。

その前にインタープリタ言語というものに触れておきましょう。高級言語にはコンパイラ言語と、インタープリタ言語があります。余談ですが、高級って、良いという意味では有りません。機械語のように特定のコンピュータ向けの言語ではなく、プラットフォームに縛られないというような意味です。高級言語ではない言語に、アセンブラ言語、機械語があります。これを低級言語とは呼びません。機能から言えば、アセンブラや、機械語の方が万能です。書き難いですけどね。さて、インタプリタ言語とは、そのままコンパイルなしに実行できる言語です。なぜ?奇跡はありませんよ。インタープリタと呼ぶ、翻訳ソフトを実行しておき、そのデータとして、インタプリタ言語で書いたプログラムを読ませ、実行させるのです。何の事はない、スクリプトですね。ああ、HTMLもインタープリタ言語の一種ですね。ブラウザがHTMLのインタープリタで、マークアップをインタープリートして、表示しているでしょ。そんなイメージでいいのです。ブラウザさえ作っておけば、HTMLで書いた文書はどんなプラットフォームの上でも実行して、表示されます。似たようなものです。

コンパイルもインタープリートもやることは同じで、高級言語から機械語への「翻訳」です。コンパイラはバッチ処理、インタプリタはリアルタイム処理といえば、分かりますか?あるいは、コンパイラは本の翻訳者、インタプリタは、同時通訳者といえばいいでしょうか。インタープリタ言語は昔からあり、典型的なものがLISPです。人工知能のプログラムを書く時によく用いられます。

さて、我等がJAVAもこのインタープリタ言語ですが、なぜ、インタープリタ言語はプラットフォーム・フリーなのでしょか?魔法はありません。そのプラットフォーム用のインタープリタを作っておかなければ、全然プラットフォーム・フリーではありません。例えば、コンパイルしてあるバイナリというものは、英語本を翻訳した日本語本のようなものです。この場合、英語本がコンパイラ言語で書かれたプログラム、日本語本がバイナリのプログラムです。で、この翻訳本は日本人にしか読めません。

インタープリタ言語で書いたプログラムは、あらかじめ翻訳しません。目的のハードの上で動くインタープリタと「一緒」にして配布されるのです(あるいは、あらかじめOSかブラウザの中に組み込まれています)。ですから、上の英語の本は、インタプリタ方式では、通訳者と一緒にして売られるというわけです。この通訳が奇麗なお姉さんならいうことなしです。日本人には、日本語への翻訳者(インタープリタ)、バスク人には、バスク語への翻訳者が組みになってうられるというわけです。これなら、どの言語(プラットフォーム)にだって、翻訳できる、って、あたりまえの事です。

さて、すぐ分かるように、インタープリタ付きの本を読むのは面倒です。なにしろ、その場で翻訳してもらいながら読むわけですから、速読なんて無理です。というわけで、インタープリタ言語はどんなに頑張っても、「原理的に」コンパイラ言語より実行速度は遅いのです。

JAVAの場合、このインタープリタは、奇麗なお姉さんではなく、JAVA Virtual Machineというソフトです。ですから、もし、あなたが、ファミコンをもっていて、これでもJAVAが動くかな、JAVAって、どんなコンピュータの上でも動くとかいうからな、と思っても動きません。誰かが、ファミコンのMPU用のインタープリタ(JavaVM)を作ってくれれば別ですが。

なんだ、JAVAなんて、たいしたこと無いじゃないかとおもったでしょ。その通り、技術的には、なんてことはないのです。問題は、商売、ビジネスですね、こちらの話しなのです。世界中のメーカが自分のMPU用にJavaVMをつくれば、一つプログラムを書くだけで、本当にどこでも動きますね。write once run anywhereでしたっけ?他の言語は、大体、方言が多くて、皆微妙に違うので、なかなかこうは行きません。SUN社が勧進元になって、ビジネス的にJAVA仕様を統一してこそできる快挙なのです。

コンパイラだって、理想的には、write once , run anywhereですが、実際には、微妙に方言があり、OSに依存するのです。機械語が違う部分は、コンパイラが吸収しますが、OSのAPIなどの違いはコンパイラで吸収することはできないのです。同じUnix系でも、LinuxはSystemV系、FreeBSDはその名の示す通りBSD系で、どちらか一つのソースをそれぞれのコンパイラでコンパイルしても、一般にはどちらかは動きません。ちょっとですが、ソースを書き換えなければなりません。ソースって、コンパイルする前のプログラムの事です。ではJavaはそういう違いをどこで吸収しているのかといえば、JavaVMで吸収しているのです。JavaVMがOSを覆って隠しているのですね。で、JavaVMはプラットフォームによって一つ一つ違うわけです。魔法はないのです。どこで苦労するかが違うだけです。

後一つ、バイトコードの話しをしておきましょう。高級言語というものは、人間に理解しやすいように、英語もどきになっています。単語は英語、例えば、readとかを使います。A2というような16進の機械語では覚えきれませんから。ところが、英語もどきは、機械がインタープリートするには複雑で、時間がかかる。ただでさえ、インタープリタは遅い、と悪口を言われているのです。それで、どのMPUの機械語命令でもないが、どのMPUの機械語命令にも変換し易い架空の機械語命令を作ったのです。その命令語のことをバイトコードというのです。これの御陰で、JAVAは、正確に言えば、JAVAで書いたプログラムは、コンパイラの1/7程度の「速い」速度で動くのだそうです。

さて、あなたのブラウザには、JavaVMが組み込まれているので、どこかのHPへ行き、そのHPにJavaアプレットが張りつけられていると、Javaがダウンロードされ、インタープリタ=JavaVMによって実行されます。Javaが張りつけられているとは、画像や音楽が張りつけられている事と何も変わりません。画像ならダウンロードされ、画像のインタープリタによって、画像として表示されます。Wavや、MIDIの音楽なら、ダウンロードされ音楽インタープリタによって演奏されます。Javaも同じですね。100項に張りつけたMP3はそのインタープリタがブラウザに用意されていないので演奏できず、普通はファイルとしてダウンロードされるだけです。(WAVやMIDIは、HTMLのBGSOUNDというタグで制御されて演奏できますが、MP3はタグではできません。アプリが自動起動するかどうかはエクスプローラで関連つけられているかどうかによります。たとえば。MP3という拡張子がSCMPXと関連つけられていれば、エクスプローラ→表示→フォルダ オプション→ファイルの種類→MP3ファイルを選択→編集→ダウンロード時に開く確認をするのチェックが外れていれば、scmpxが自動起動し、演奏してくれます。ですが、これは、Javaや、ブラウザとは関係のない領域で行われている話です)

ところで、Javaアプレット、appletとは、Javaで書かれたプログラムのことです。アプリケーションですからアプ。レット、letとは小さいことをあらわす接尾辞です。booklet、leaflet、などです。小さなアプリケーションという意味です。

所で、皆さんは缶コーヒは、好きですか?缶コーヒって、どうしてあんなにまずいのでしょう。インスタントコーヒもそうです。さんまが、いくら「xxの缶コーヒはうまい」と言おうと、違いの分かる男が、うまそうに飲もうと、まずいものはまずい!!!の一言に尽きます。缶コーヒやインスタントコーヒは、コーヒではない、あれは全然別の飲み物である、という人もいます。「女」と、「小女(こうなご;魚)」は違う。文字列の部分列が同じだからといって、同一種とは限らない、という論理です。白馬は馬にあらず、とかいう高尚な論理学的論証ではありませんので、聞き流して下さい。白馬の論理は、面白いですよ。

ところで、このJAVAはコーヒの種類名なのです。普通、日本で売られているコーヒ、つまり、モカマタリ、コロンビアメデリン、ハワイコナ、ブルーマウンテン、キリマンジャロ、ブラジルサントス、などはアラビカ種という種類です。これらは、マタリに代表される幽かな酸味、マンデリンのようなほのかな苦みが微妙にブレンドされていて、実に美味しいのですが、ジャバは、ロブスタ種に属し、私の舌には泥のようで、何にも味が感じられません。昔は、アラビカに比べて、半値位だったのですが、最近は(どうせ)売れないからか、同じ値で売られています。

ロブスタとは、伊勢海老のことではなく、英語のRobust(英語なら、ロバストが近い発音ですが)です。つまり、頑健--ンンン、Java言語はそれにあやかったのかな?--ということです。アラビカ種は病気に弱く、ジャワ(日本では、こう呼ぶ方が多いでしょう)の地に移植された時、枯れてしまったので、代わりにロブスタを植えて栽培に成功したのです。ジャワって、プランテーションで有名じゃなかったでしょうか?

缶コーヒやインスタントコーヒは、なぜかジャワを使っているのですね。ひょっとして、アラビカの微妙な味は、缶に入れたり、フリーズドライしたりの荒っぽいことをすると、壊れてしまうのかもしれません。あるいは、ただ単に安いからかもしれません。

SUNがなぜ、彼らのインタープリタ言語にJavaという名をつけたのか、本当のところは、命名者にしかわかりませんが、Javaは、その昔、oakという名で別の用途に開発していたのです。これが、全然売れなかった。ところが、時代の流れの中で、インターネットが一般化してきた、そこで、ふと、oakをネットワーク・ローダブルなソフト開発に使えないかと思いついた知恵者がいて、急遽方針転換、現在にいたったわけです。ところで、SUNのあるシリコンヴァレーには、oakという道路があり、その先が二手に別れていれ一方の道路の名がJavaなのです。





106.IRQ(アイリクって読む人が多い)とは何? 何なぜ競合してはだめなのか?     目 次

コンピュータは分からない、難しいと、一般には思われていますが、実際には簡単です。全て人工物、IRQだって、貴方と同じような人が必要に駆られて作った、それもかなりやっつけでろくに考えもせず作ったものにすぎないからです。コンピュータに関しては、人類に分からないことは何もないのです。しかし、本物の人工知能などは、これは分からない。人間がどうやって物事を考えているか、どうやって、文字をよんでいるのかは、神様のみぞ知る領域--つまり知る存在は無いということですね--で人間には未だわかっていません。しかし、コンピュータは、どこかにそれを設計した人間がいるのです。あなたが、たまたま勉強していなくてしらないだけで、人類という総体には分かっているのですね。つまり、簡単なものです。

さて、IRQです。これは、Interrupt ReQuestで、割り込み要求というそのままの訳語があります。これを説明する前にPCの中で、プログラムがどんな風にして実行されているか、それをまず、見てみましょう。といっても、難しいことは何もありません。プログラムって、すべきこと(命令)を順に並べただけのものです。プログラム、式次第ですね。結婚式、卒業式などの段取りです。コンピュータプログラムも段取りなので、そう呼ばれるわけです。従って、PCの中のMPUは、順に1命令づつ主記憶(DRAM)から取ってきて実行しているのです。

さて、DOSプロンプトやインストールなどで、プログラムから何かオプションなどを聞いてきて、「y]か「n」を入力して下さい、と時々言われますね。あの時、プログラムはメッセージを出した後、キーボードからの入力を待っているのです。「待つ」とは、どういうことでしょうか?こんなイメージです(アセンブラと高級言語のあいのこのような^^;;);

099 print "「y」、「n」のどちらかを入れて下さい"
100 キーボードの状態チェック
101 もし、キーボードが叩かれていなかったら、Go to 100
102 read byte
103 ...

(099,100...は番地だと思って下さい)

つまり、「待つ」とは、PCが止まっているのではなく、100番地と101番地の間をぐるぐる回っているのです。止まる命令はありますが、本当に止まってしまうので、次ぎに何かあっても動きません。

99でメッセージを出したあとで、すぐ、read byteをすれば良いのにと思うかもしれませんが、それはできません。MPUは、遅くても100MHz、P4なんて、2GHzで動いています。read byteなどは機械語の1命令ですので、遅くても1億分の1秒で終り、次ぎに進んでしまいます。あなたが、yを押す暇などありません。それで、キーが叩かれたかどうかをチェックしながら待っているのです。

PCというものは、キーボードからMPU(本当はCPUですが)へのデータ線だけではなく、制御線、状態(ステータス)を知らせるステータス線をもっています(自動車だって、エンジンだけではなく、制御な為のステアリング、ブレーキ、状態チェックのための速度メータなどをもっています)。キーボードは、キーが叩かれますと、そのキー、yとかnです、に相当するデータをデータ線に載せます。具体的には8bit(32bitだって、64bitだって良いですよ。簡単の為8bitとしましょう)を表わす、8本の線を1、0に従って、0v(ボルト)、5vにするのです。これを一定時間、例えば、1マイクロ秒間保持するのです--時間の絶対値は適当です^^;--。ステータスラインは、これに合せて、0vから5vにするなどして、今、データ線にデータが載っているよと、いうことをMPUに知らせるのです。データ線を見ていても0も1も有り得ますからデータが出ているのかどうかわかりませんね。例えば、オール0のデータは、データがのっているのか、初期状態なのかわからないでしょ。それでステータス線がいるのです。

上のようにプログラムを書いておけば、MPUは、ステータスラインを見ていて、これが立ったら(例えば、0vから5vになったら)「おお、データが来ている」と思って、read byteするわけです。100MHzのMPUなら、1億分の1秒でこれができるので、百万分の1秒もの長い間データが立っていれば、随分ゆっくりデータを取りにいってもまにあうのです。実際には、状態チェックの後、判断命令1命令があるだけですから余裕です。逆にいいますと、こんなに長い間データラインを立てっぱなしでは、次ぎのデータがなかなか送れず、データ転送が遅くなりますから、もう少し短いのではないでしょうか。DRAMから読む時などですね。FSB133MHzでは、こんな悠長な訳にはいかないでしょう。

さて、これで、データを読むハード機構と、プログラミングの関係は分かったわけです。で、こういうプログラムを書きますと、MP3プレイヤで音楽を聞きながら、エディタでレポートを書くなんてことはできないのです。MP3プレイヤは、1命令ずつ実行して、音楽を奏でているわけで、上の100番地のところのように、キーボードが叩かれるのを、ループして待っている訳にはいきません。それでは、MP3が動きません。それならと、MP3プログラムの中に、例えば、1万命令置きに1回だけキーボードの状態チェックする命令をかくのも一つの手です。どうせ、人間は1キー叩くのに10分の1秒より速くは叩けません(継続的に意味あるようにですよ)。MPUは100MHzペンティアムでも、1億分の1秒で1命令実行します。1万回と言わず、1千万回に一度、チェックすればいいじゃないですか。 こんな風にです;

100 キーボードの状態チェック (PCB:PeripheralCondition/Branchなんて命令があります/した?)
101 もし、キーボードが叩かれていなかったら、Go to 203
102 read byte
   ...
203 ...

101の命令に気を付けて下さい。go to 203です。ここで、100に行っては、ループになってしまい、音楽が止まってしまいます。その度にキーボードを叩くと鳴りますが ^^;;

これでは使えません。どこでI/O(Input/Output;read/writeとほぼ同義です)が起きるか分かっている時は、上の様に書けますが、普通は、分かりません。あなたが、エクスプローラのアイコンをダブルクリックしたら、これは、エクスプローラのプログラムをHDDから読み込んで、メモリーに書き込めということですが、OSのプログラムの中のどこで、貴方がエクスプローラをダブルクリックするかなんて、書いておけません。こういう場合、割り込みというプログラムの書き方を使います。

プログラムって、原義は式次第。物事の順の取り決めです。卒業式の式次第なら、校長挨拶から始まって、蛍の光だか、贈る言葉だかで終わるまで、きちんと順が取り決められています。ところで、どこかの代議士が、わしにも一言しゃべらせろと、シャシャリ出てきて、プログラムに無い演説を始めたら、これは割り込みですね。ただPCの割り込みはちょっとこれとは違います。代議士に演説を御願いした。ところが、売れっ子の先生、時間のやりくりが難しく、何時何分から演説をするとプログラムに書けない。都合が付き次第とにかく飛んでいくから、適当な所に割り込ませてくれ、と、こういう割り込みです。式次第の中には書けませんが、注のところにでも、だれだれ先生による演説が別途あります、と書く訳です。PCでは、割り込み処理も、もちろんこの注と同じで、プログラムとして別途書かれます。

代議士はいつ到着するか分からないので、見張り番(割り込みライン)をたて、到着し次第、見張りは司会(MPU)に到着をしらせます。司会は、じゃあ、今、話している方が終わったら、次ぎに割り込んで話してもらう事にしようなどとします。こんな手順なのです。割り込みなんて、要するに我々の日常生活の知恵でしかないわけで、簡単なものです。

I/Oにはもう少し仕掛けがあります。それがDMA;Direct Memory Accessです。割り込み処理は一般にすばやく終わらなければなりません。割り込み処理中に、他の機器からの割り込みが入ると、ちょっと嫌でしょ。割り込み処理の最中に割り込みが来て、そのの最中に又割り込みが来て。。。グュッチョングッチョンになりますね。エクスプローラを開いて、1GBのデータをC:ドライブからD:ドライブにコピーを始めたとしましょう。ところが、1GBのコピーは速やかには終わりません。割り込み処理の中で、プログラムのread byte命令でC:ドライブを読み込むのはプログラムでの読み込みですからプログラムドI/O(PIO)です。これをすると、コピーの間、マウスは動かないは、キーボードのCtrl-Alt-Delも効かないは、という事態になります。割り込み処理の中では、次の割り込みはdisable にされていますから。

ここで、DMAの出番です。割り込み処理は、1GBのデータの、HDDとDRAM上の開始番地と終了番地をDMAというハードに通知し、転送命令をだすと、さっさと終わってしまうのです。DMAはMPUから独立したハードですから、read-writeをプログラムする必要はなく、ハードだけでHDDとメモリー間でデータ転送してくれるのです。CPU無しに直接メモリーにアクセスするのでダイレクトメモリーアクセスというわけです。なんのことはない、デュアルMPUみたいなものです。但し、MPUではないDMAチップはメモリーアクセスしかできませんが。DMAでなく、PIOの場合の、トラブルの例は、ここにあります。

DMAの方が、プログラムドI/Oより速いかどうかはこのDMAチップがMPUより速いか否かできまります。10年も昔は速かったのですが、Pentiumが出てきたので、遅くなり、UltraDMAが出てきたので、また速くなりました。

さて、上で、イメージ的I/Oプログラムを書きましたが、割り込みによるI/Oは、ハード的にもう少し工夫が入ります。もう1本、割り込みラインというものが入ります。卒業式の比喩のところで話した見張り役ですね。MP3を演奏している時、キーボードを叩いても、I/O命令が上のようにプログラムされていないと、キーは無視されます。readされないのです。だって、read命令が書かれて無いのですから。しかし、MP3プログラムの中にキーボードの状態チェック/read命令を入れるって、不細工でしょ。HDDを読むにはどうするの?やっぱり同じ様にしなくてはなりません。MP3プレイヤの作者が考えもしていなかった周辺機器が取り付けられたら、その状態チェックはどうするのなどいろいろな問題が出てきます。

それで、I/Oは割り込ませた方がいいだろうということになるわけです。MP3を演奏中にキーボードを叩いたら、キーボードはデータ、状態ラインに信号を出すだけでなく、割り込みラインにも出すようにします。MPUは、割り込みラインに信号がたったら、今実行中の1命令だけ済ませると、無条件で今のプログラムの処理を中断し、あらかじめOSが決めておいた割り込み処理プログラムのある番地に飛んでいきます。もちろん、どこで前の処理を中断したか、割り込みラインをenable/disable切替えられるかなど、あなたが疑問に感じた処理はしていますよ。割り込みを常にenableにしておくと、困るでしょ。割り込み処理中に、今度は別の機器が割り込みなんて、どこから再開するかまだ記録している途中でわりこまれては、グチャグチャになります。一般に、割り込み処理の頭では、割り込み機能をdisableにします。従って、割り込み処理ルーチンは、ぐずぐずしていてはいけません。サッサと終了し、割り込みをenableに戻さないと次の割り込みができません。って、データの取りこぼしって事です。CD−Rなら、バッファアンダーランが起きて書き損ないます。

そんなわけで、アプリは、割り込んでも安心せず、書けたか、読めたかを確認して、できていなければ、リトライしなければいけないのは常識です。初期のCD−Rを設計した人はそんなことも知らなかったのでしょう。CD屋さんて、電子工学屋で、情報工学屋ではないので、こういうことが起こります。CD−Rでは書き込み損なう事があるって、聞いた時、なんじゃ、そりゃって、ビックリしました。Sanyoは、情報屋さんにCD−Rを設計させたみたいです。それでBurn-proofが出来たとか。

さて、ハードには以上の工夫をします。こんどはこれを使うソフトの工夫がいります。これは、別段難しいことはありません。IRQというのは、どの機器から割り込んできたかのID(出席番号)ですね。キーボードなのか、マウスなのか、HDDなのかは、プログラムがIRQを見て判断します。キーボードなら、キーボードの処理をする番地にとんでいきます。その番地は誰が決めたのか、そりゃ、OSでしょう。私は身に覚えがありませんから。機器によって、どこに飛んで行くか決めたアドレスを割り込みベクターと呼ぶようです。そんなにもったいを付けるほどのもんじゃないと思います。大抵の人は、ベクタなんていうと尻込みしてしまうじゃないですか。

IBM PC/ATでは、このIRQは16個しかありません。16本しか物理的な線がないからです。1機器が1個の線を使うと言う贅沢な作りになっています。でも、他のアーキテクチャのコンピュータでは、割り込みラインは1本しかないというものもあります。その代わり、データラインに機器IDを立てておけば、1本の物理的割り込みラインでデータラインの許す限りの機器の区別がつきます。32bitなら、40億台です。そんなにスロットがつくれません。最近は、PCIバスがこの機能を持っているので、IRQ共用なんてことができるのです。PCIバスって、そもそもIRQなんてなくって、INTと呼ぶラインを使って、IRQ制御チップとの間でIRQとINTを変換しているのです。INTもINTerruptです。意味もやっている事も同じですが、方法が違うのです。難しい言葉では、アーキテクチャが違うといいます。

INTは4本しか有りませんから、PCIスロットは4本しか昔はなかったのですが、OSが共用をサポートするようになったので、スロット5、6本なんてのもありますが、物理的には4本のINTを共用しています。で、どうも上に書いたようなスマートな方法(1本)ではないのではないかと思います。分かりませんけどね。M/Bによっては、IRQの使えないPCIスロットなんてのもありますしね。共用すると遅くなるからグラフィックは共用させるなとか?なんか変です。

割り込み線って、ステータスに似ているから、ステータス線で代用したら?と思った方、頭いいですね。ただ、ステータス線は、プログラムが自分の都合が良い所で命令出して、MPUの方からわざわざ機器を調べにいく、割り込み線は、機器の方からMPUの都合など聞かずに割り込む。MPUは、現在の仕事をほったらかして割り込み処理に行くという重大な違いがあるのです。ハードの作りが違ってしまいます。

じゃあ、Windowsなどで、OSが立ち上がって、何もしていないところでは、プログラムはどうなっているのだろうと思うでしょう。一番簡単なプログラムは次ぎのようになります。

 100 go to 100

これで無限ループしています。割り込みが入ると、ループを中断して、割り込み処理ルーチンに飛んでいきます。

さて、IRQが競合すると機器が動かないという理由はこれでわかります。例えばIRQ3で割り込んできたら、普通、シリアルポート処理プログラムに飛びます。これはハード的に飛んでいきます。OSは、そのように初期設定するだけで、IRQ3だからシリアルへというようにソフト的な判断はしていません。で、もしグラフィックもIRQ3を使っていたら、そして、3にはシリアルポート処理ドライバを使った割り込み処理プログラムが割り当てられていたら、あなたのPCの画面はグチャグチャになります。というか、ロックするでしょう。だって、グラフィックカードにシリアルのコマンドやデータが飛んでいくのですから。逆の場合、つまり、3にグラフィックスドライバが割り当てられていたら、モデムがグッチャグチャになり、Webもメールも見られません。

そういうわけで、競合は絶対に困るので、Windowsでは、IRQを見張っていて、ハードをインストールする時、そういう初期設定にならないように、競合が起きると、機器(ドライバ)が動かないようにしているのです。PnPでチャンと調停して、競合しないようにしてくれるのが本当は一番いいのですけどね。そんな管理をせずに自由放任、レッセ・フェールで行くと機器が動かないよりもっと困るPC本体のロックが起きたりするのです。ま、ロックが起きてしまったら、最低限だけのドライバで起動して、まずいドライバを消すのですね。それがSafeモードというやつです。起動しないのが一番困るでしょ。





107.究極の暗号化;デジタルあぶりだし;音楽の中に画像を隠す(ステガノグラフィ,steganography)     目 次

あぶり出しとは、ミョウバンの水溶液を筆に付けて、普通の紙に手紙を書いたりするものです。乾くと唯の白い紙ですが、これを下から炭火やガス火、電気コンロ(さすがに電子レンジではだめ)などであぶると、ミョウバンがこげて字が現れるというものです。ミョウバンの代わりにミカンの汁(100%オレンジジュース)を絞って書いても良いけど、黄色くなるから子供の遊びネ。

さて、これをIT技術を使ってやるものがデジタル ステガノグラフィ。画像ファイル(.bmp、.jpg、.gif)の中に、テキストファイルを隠しこみます。音楽ファイルの中に、画像を隠し込みます。エトセトラ。

暗号だと字化けしているので、余計怪しげで、解読してみようという気にならせてしまうけれど、ステガノグラフィでは、唯の風景画だったり、BGMだったりするので、まさかその中に何かが隠されているとは普通、思いません。あなたが、これはデジタルあぶりだしだって、わざわざ言わなければですが。

結構、ソフトはあります。どの拡張子のファイルに、どの拡張子のファイルを隠すかでソフトが違います。MP3にtxtを隠す、jpgにtxtを隠すなどです。これらのソフト、フリーなのですが、皆、学者が作った物なので、多分、元はUnix用、しかもC系で書いて有るらしい。それをWindows用に手直ししてあるのだけれど、基本的にコマンドライン用。GUIではないのです。Unixって、そもそもコマンドラインですし、KDEになっても、GNOMEになってもterm開きますよね。

それで、とっても使い難いのです。GUIにしたものもありますが、D&Dができそうな画面が現れるけど、D&D機能なんてない。

stegano.jpg

-- http://linux01.gwdg.de/~alatham/stego.html よりdown loadしたソフトを起動した所

上の図のソフトは、jpgの中にtxtを隠します。

起動すると、承認条項がお定まりで出てきますので、よく読んで、納得したら、Yes...を押します。

1.メニューの open jpg を押す
  一応、GUIっぽくファイル選択の窓が開くので、どの画像ファイルに隠すかを指定。

2.Hideで、隠すtxtファイルを指定。
  まず、パスワードを聞いてくるので、お定まりの2回入力。

3.次ぎは隠すtxtファイルを聞いて来るので、それを入力

4.save jpg で、そのファイルを書き出す

上から3つ目のsaved jpeg fileの欄に、どのフォルダーにsaveしたか表示されている。元のjpgファイルに上書きされるので、重要なjpgファイルなら、あらかじめコピーして、作業用tempフォルダで作業しましょう。

以上で、隠し終わりました。当然ながら、5KBのjpgファイルに10KBのtxtファイルは隠せません。そういう時はエラーが出ます。

5.txtをjpgから取り出す

上記1〜4と基本的には同じ。ただ、2.のところで、Hideではなく、Seekを選ぶだけ。

このソフトは、MP3の中にtxtを隠します。

このソフトを入れたフォルダの中に、隠すtxtと、それを入れるwav(MP3ではなく)を置いて起動。txtとwavを選択して、Encode。すると、password入力のDOSプロンプトになります。2回入れるとWav→MP3のEncodeが始まります。wavにtxtを混ぜ込んでMP3に変換してくれます。Celeron450MHzで、wav演奏の実時間程度でした。 ただし、無愛想なソフトで、エラーがおきると、黙って、終了してしまう。何にもいってくれないんですね。wavに比して、txtが大きすぎると、そうなります。試しに、30MB位のwavに1KB位のtxtを入れてうまく行くかどうかで調べてみるしか確認方はないでしょう。それで、だめなら本当にだめ。30MBのwavに1MBのtxtをいれてみると、何も言わずに終了します。

あとは、やれば分かると思うけど。

もっといろいろのソフトがほしいと思ったら、ここに一覧表があります。Free、Shareware、商品色々あります。ただ、英語版で、しかも元がコマンドラインようだったりするので、起動するよな、しないよなで動かない物もあります。

http://members.tripod.com/steganography/stego/software.html






109.Webブラウザのダウンロード/表示構造    目 次

ブラウザは、HTTPと言うプロトコルで、URLで指定されたコンピュータのフォルダからファイルをget命令でダウンロードしてくる。それが、htm/htmlファイルなら、ブラウザは、タグを解釈して、表示する。txtファイルなら、そのまま表示する。jpgやgifなどの画像なら、それを画像として解釈して、表示する。ブラウザでhtmlファイルや画像が表示されることを何の不思議とも思わず、見ているかもしれないが、これらのファイルも手元のHDDにダウンロードされている。普通、c:\Windows\Temporary Internet Filesに書き込まれている。

zip、lzhなどの、ブラウザが予め処理ソフトを組み込んでいないファイルの場合、処理しようにもどうしたらいいのか分からないので、単なるダウンロードになり、HDDのどこかのフォルダーにおかれる。普通、ダウンロードの窓が出て、どこにダウンロードするか聞いてくる。pdfファイルなどのように、そのファイルの責任者であるAcrobatが、pdfの解釈/表示ソフトをプラグインとして提供する場合、それをIEなどブラウザに組み入れれば、ファイルの単なるダウンロードにならずに、ブラウザの中に表示される。単に、ダウンロードしたい時には、アンカーを左クリックではなく、右クリックして、「対象をファイルとしてダウンロード」をメニューから選ぶ必要がある。

ファイルが、mp3のような拡張子の場合、IEには、プラグインはないが、さりとて、ファイルとしてダウンロードされずにMP3プレイヤが起動して演奏が始まる場合がある。この場合、ファイルは、c:\Windows\Temporary Internet Filesに、独特のファイル名で入っているので、探し出すのがたいへんである。同様に、zipやlzhでも、単純なダウンロードではなく、ダウンロードして、解凍してしまう。解凍する必要がない場合でも、勝手にそうなり困ることもある。

こんな時も、pdfの場合のように右クリックでダウンロードすればよいが、根本的には、下記のようにして直す。

エクスプローラのメニューバー→表示→フォルダーオプション→ファイルの種類→LHAファイル(.lzhの場合)を選択→編集→「ダウンロード時に開く確認をする」にチェックを入れる

拡張子が、どんな名前で登録されているかは、アプリによるらしく、決まっていない。下記のように、関連を自分で推測する必要がある。

  .lzh;LHAファイル
  .mp3;MP3形式サウンド
  .pdf;Adobe Acrobat文書

これで、ダウンロード時に、格納フォルダーを確認するようになり、勝手に解凍したり、演奏したり、表示したりせず、単純ダウンロードになる(逆に、そういうことはできなくなる)。

この関連付けは、拡張子とアプリケーションの関連付けなのであるが、IEのダウンロード時にも、拡張子と関連付けられているアプリが起動してしまうという、面倒なものである。




110.Windows9xでfaxをプリンタ/スキャナ代わりに使う方    目 次

これがなかなか面倒である。PCとFaxの間に、簡易内線交換機のようなものを入れて使う。
マッチ箱大のものから、電話機大のものまでいろいろある。

PC/モデム2台(PC−モデム−モデム−PC、PC−モデム−Faxなど)を直結しても、極性の関係からか何かしらないが、通信できないので(ということになっているが、モデムによるのかどうか、PC−モデム−Faxでできた事もある。やってみる価値はある)こういう機器が必要なのである。

普通は、こうする;

PC−モデム−内線交換機−Fax

内線交換機は、マッチ箱大なら100円(投げ売り)〜1000円
比較的きちんとしたものなら、1000円(投げ売り)〜2万円

あとは、簡単で、テキストなら、メモ帳、Wordなど、画像ならペイントなどで普通に印刷すれば良い。メニュー→印刷、この時、プリンタとして、MicrosoftFaxを選択するのである。Faxに送るとは、ネットワークプリンタに印刷することと思えば良い。

ただ幾つか小技が必要である。この小技を知らないと、現象としては、Faxに全然電話をかけられず、呆然とするしかない。極めて大技的困難を引き起こす。

 ・相手の内線電話番号をかけられない!! 国番号がついてしまう。

マッチ箱内線交換機では、たいてい電話番号など関係ないので、相手の電話番号として何をいれてもよい。1でよいし、国番号(日本(81)というやつ)があっても、市外局番があっても全部無視されるので構わない。

問題は、まともな内線交換機の場合である。この場合、たとえば、居候のものは、こうなっている。


                   内線1−−−Fax/電話機  .
    NTT−−−−外線==
                   内線2−−−モデム/PC   .

              内線交換機



内線機器同士の通話は、この交換機の場合、「2」をダイアルするだけである。どちらからかける時も、「2」で相手の内線にかかる。因みに外線は、一人前に0発信である。

ところで、MicrosoftのFaxダイアラーは相当なアホが作ったらしく、殺人的に使い勝手が悪い。一見、どうやっても国番号が入ってしまって、これを避ける手段がないようにしか見えない。ダイアルアップアダプタの場合、プロパティに「国番号と市外局番を使う」という項目があり、このチェックをはずせば、市内番号だけ、つまり自分で入力した番号だけで発信ができる。




ところが、Faxの場合、それができない。大体、ダイアルアップアダプタに相当するアイコンさえ存在しない(まあ、デスクトップの受信トレーがそれではあるが)。ではどうするか、国番号を選択する場面で、国のなかに、「なし」という国があるのである。

下図の場面である。ここの国の一覧の先頭にある。あるいは、もう一個所、ここから、アドレス帳を押して、アドレス帳を作る場面でもそれを選択できる。




当然、上記の図の一つ前の段階、下図のダイアルのプロパティから入る、同様の国番号選択場面からできると、通常の、IQ100以上の人間は、思うのだが、このIQ80のMSが作ったソフトでは、それができない。




さて、こうして難関を乗り越え、純粋に「2」だけをダイアルできるようにした。

次の難関である。

 ・ダイアルしてもFaxが応答しない ; ダイアルトーンが聞こえない場合の発信の仕方 である。

内線交換機の場合、NTTの交換機のような発信音(受話器をあげた時、聞こえるツーという音)をまともに出さないらしく、モデムがダイアルしない。この現象、本当は、ちょっと、題目と違うのである。ダイアルしても。。。ではなく、まだ、モデムはダイアルしていないのである。しかし、人間にとっては、ダイアルしているのに、Faxが動かない様に見える。モデムが内線交換機からの発信音が聞こえず、ダイアルしない。こういう時の為に、発信音があろうが、なかろうが、モデムが強制的にダイアルしてしまう設定が普通はある。

ダイアルアップアダプタの場合、プロパティ→接続の方法→設定に「Wait for dial tone before dialing;ダイアルする前に、ダイアルトーンがするのを待つ」というような項目があり(モデムにより表現は多少異なる)、このチェックを外しておけば強制的にダイアルして発信できる。




ところが、Faxの場合、国番号と同様そんな事を設定する場所が無いように見える。これを行うためには、一度、Fax通信を行う状態にして、つまりFaxに印刷して、下図から設定する。あるいは、受信トレーを起動してタスクトレーに現れるアイコンを叩いても良い。下図で、「17」の左にあるアイコンがそれである。

←タスクトレー

MicrosoftFaxの状態画面のオプション→FAXモデムのプロパティ→電話の設定→発信音が聞こえたらダイアルのチェックを外す




以上で多分、内線Faxができるようになる。
なお、家庭での内線だから、送付状もタイトルもメッセージも要らない

Faxをスキャナとして使う

これがまた、不可思議千万の構造で、

  スタート→アクセサリ→Fax

からでは、送信しかできない。

デスクトップの受信トレイをたたいてやると、タスクトレーにFaxのアイコンが現れる。(現れない? PC再起動ですね)下図で、「17」の左にあるアイコンがそれである。




このアイコンをクリックすると下図の画面が開くから、オプション から下図の「応答モード」を「手動」にする。勿論、自動応答にしたければ、応答までのコール数にチェックを入れれば良い。数は、好きなだけ。2が速くて良い。




以上でPC側準備は終了。

Faxにスキャンしたい紙をセットし、内線をまわす。PC側で受信したら、上の図で、「回線を切る」と出ている部分が、「今すぐ応答」になっているから、これを押すと受信が始まる。自動応答にしてあれば、何もしなくてよい。。はずが。。。そうでもなく、今すぐ応答しなければならなかった。

しばらくすると(MMX200MHzで、20秒以上)、受信トレーの受信トレーフォルダに(間抜けた構造だ)Faxが入る。これは、他の画像ソフトでは、たいていは扱えない変な形式なので、bmp形式で保存する。




111.WindowsMediaPlayerで再生中のmpeg1映像のスナップショットを撮る    目 次

どういう理由か分からないが、WindowsMediaPlayerでmpeg1映像を出して、一場面のスナップショットを取りたいと思って、PrintScreenを押しても、真っ黒な画面しか取れない場合がある。なぜか、必ず、2度目はうまく行く。つまり一回置きにしかとれない(但し、NTではうまく行く)。こんな時は、タスクバーのWindowsMediaPlayerをクリックしてやると、ちゃんとできるようになる。もっとも、1枚撮る毎に、このおまじないをしなければならないが。

ついでに少し説明すると、モニター画面をファイルとして撮りたい時は、右上の方にある(F12の右辺り)PrintScreenを押す。これで、全画面がクリップボードにコピーされる。Alt+PrintScreenで、アクティブウィンドウがクリップボードにコピーされる。あとは、ペイントのような画像処理アプリを立ち上げて、

ファイル→新規作成→編集→貼り付け

bmpでも、jpg(ペイントではできない)でも、好きなフォーマットで保存。

WinShotを使えば、いきなりファイルにして保存してくれるので超便利である。だが、 WindowsMediaPlayerで再生しているMpeg1の画像は、上の理由で取れない(但し、NTではうまく行く)。







112.CD-Rの書き方の意味;ディスク・アット・ワンス、トラック・アット・ワンス、セッション・アット・ワンス    目 次

ディスクアットワンス、トラックアットワンス、セッションアットワンスについて

CD−Rを初めて買ってきて、さあ、ファイルを書き込むぞと思った人達は、皆、その使い勝手の劣悪さに驚き、途方に暮れた事と思う  -_-#まあ、ようわからんから、2、3枚無駄にするつもりで焼いてみようという気分になる。用語もCD業界のきつ〜い方言を、共通語に直そうともせずに使っている。また、HDDのように、エクスプローラやDOS窓から、コピーと言うわけにはいかないのだ(パケットライトは、これはこれで特殊なので、置いておこう)。ここでは、CD−R特有の概念と使い方を考えてみる。


使い方早分かり

結論;PCで使うだけなら、音楽だろうが、映像だろうが、とにかくあらゆるファイルは、PCのファイル(あるいは、ソフトによっては、データと表現している)として焼けば良いここで、データとか、ファイルとか異なる言葉で言っているものは、同じ物である。CD屋が訳の分からん用語を使うので仕方ない。

・焼き方は、Windowsで使うだけなら、Romeo
・イメージを作る (但し、スクリーンセーバは切っておく。バーンプルーフでもである)

で良いだろう。異論がある人は、自分で考えてネ。

音楽CD;ラジカセ、コンポ、ポータブルCDなどの普通の音楽機器、オーディオと言われている装置で聴くCDの事。これが元々のCD。その後、これと同じメディアを使ったPC用CD−ROMが出来たので、話しが面倒になった。

音楽CDとは、単純に、音楽が入ったCDのことではない。CD−DA(CompactDisc-DigitalAudio)という記録形式(フォーマットという)で記録されているCDの事である。

音楽CDをCD−Rで作る方法;

 ・音楽を「.wav」という拡張子が付く形式で作る
  但し、44.1kHz、16bit、ステレオという属性の.wavである必要がある。
  録音ソフトの標準は、普通こうなっているので気にしないで良い。
 ・CD−R焼きソフトを立ち上げ、「音楽CD」あるいは「CD−DA」形式で焼くメニュー
  を選ぶ(焼きソフト:B’sGold,WinCDRなどによって、メニューは異なる)
 ・ディスクアットワンスで焼く(追記できない!)

; .wav;Windows系OSの音声記録フォーマット。従って、Windows9x/Me/NT/2000/XPのサウンドレコーダを始めとする全ての製品/フリーソフトは、この形式で音声を録音できる。

ここを参照。

但し、この形式は、音声の1分の録音に約10MBも掛かるので、通常MP3などの別の形式に圧縮し、1/10位に小さくする。しかし、MP3形式から、直接、音楽CDに変換する機能は、CD−R焼きソフトは、通常、付けていない(できないのではなく、単にサボっているだけ)。それで、音楽CDをつくるには、.wav形式データが必要になる。

.wavデータは、SoundEngine、A−recorderのようなフリーの録音ソフトで、サウンドカードにマイクを付けたり、ラジカセのLine−outをサウンドカードのLine−inに入れたりして録音すれば出来る。

また、音楽CDから、cd2wavのようなリッピングソフトで読み出しても良い。あるいは、MP3ファイルから、scmpxのようなMP3プレイヤのmp3→wav変換機能を利用して、変換しても良い。

ビデオCD;音楽CDと異なり、専用の再生機器は殆ど普及していない。これも、音楽CDと同じように、単にビデオが記録されているCDという意味ではなく、ある特定のビデオ形式(mpeg1)で記録されているCDの事である。

専用再生機器は高いからPCで再生した方がいいだろう。今時、専用機を買うなら、mpeg2のDVDの方が良い。画像品質が、月とスッポンほども違う。但し、mpeg1とmpeg2に互換性はない。mpeg1は徐々に消え行こう。mpeg1(.mpg)は、PCのメディアプレイアなどのソフトでの再生が便利だろう。だから、ビデオCD形式で焼く必要はほとんどない。単にファイルで焼けば良い

Windows系OSの標準映像フォーマットは無圧縮の.AVIフォーマットである。これは、1分の録画に、約60MB食うので、mpeg1に圧縮するのが普通である。エンコーダとしては、TMPGEncがフリーである。mpeg1は約1Mbpsなので、1分で、60Mbit=約7MByte程度に圧縮できる。そして、上記のようにPCのファイルとして焼いておく。

まず、この音楽CD、ビデオCDという一般的に見える用語を、これは特殊なものであると認識しておく必要がある。名前から想像するような、単純なものではない。

MP3やMpeg1をCD−Rにする方法
.wavや、.mpgでなく、.mp3や.aviなどの形式のファイルをCD−Rで焼いて、PCで再生する場合は、通常のファイルを焼くのと同じである。上記の、音楽CD再生専用装置(ラジカセ、コンポーネントステレオなどの通用のオーディオ機器)、ビデオCD再生専用装置で再生するのでなく、PCで再生するのであれば、CD−R焼きソフトにより表現が違うが、「データ」として、あるいは、ファイルとして、焼けば良い。PCは専用機器と異なり、あらゆるフォーマットを再生する為のソフトを持っているからである。勿論、.wavや、.mpgを、音楽CDや、ビデオCDとしてでなく、通常のファイルとして焼いても良い。PCでなら、普通に再生できる。

逆に、できるのなら、.mp3を「音楽CD」として焼いても構わない。もっとも、CD−R焼きソフトは、.mp3をCD−DAに変換する機能を入れていないから、焼いてくれないだろう。無理矢理、メニューから焼こうとしても、フォーマットが違う、といって、拒否されるだけである。

ディスク・アット・ワンス、トラック・アット・ワンス、セッション・アット・ワンス

アット・ワンスat onceは1回の操作でとか、一気にとかいう意味。
ディスク・アット・ワンスは、CD1枚を一気に焼く。従って、追記はできない。
トラック・アット・ワンスは、トラックを一気に焼く。PCのファイルを焼く場合に使う。この場合、トラックはセッションとほぼ同義なので、これはセッション・アット・ワンスでもあるのであるが、そうは呼ばない事になっている。トラックアット・ワンスは、追記ができる。
セッション・アット・ワンスは、CDエクストラというデータセッションと、音楽CDセッション混在のCDの音楽CD部分を一気に焼く方式に使う約束になっている。

デジタル外部記憶装置は、セクター単位で読み書きする。

PCのようなデジタル機器では、HDD、CD(以後、CDといったときには、単なる直径12cmのポリカーボネイトというプラステックのメディアのことで、CD,CD−ROM,CD−R,CD−RWなど全てを指す)などの円盤(テープでも同じだが)の形をした記録メディアへのデータの記録法は、通常のアナログのカセットテープや、昔のレコード、あるいは、VHSビデオテープと違って、ダラダラと連続的にデータを書いている訳ではない。

かならず、データはある一定の大きさに梱包されて記録される。例えば、タンスに引き出しがなく、一つの大きな箱で、蓋が上にあるだけだったら、着物を取り出したり、入れたりするのに苦労する。アナログ機器は、そのため、かならず、順にデータを取り出す。だから、音楽やビデオはアナログでもそれほど不便はなかった。デジタル記録は、引き出しが付いたタンスである。引き出し単位なら、そこから直接、着物を取り出すことができる。

この引き出しの事を、セクターとよぶ。この大きさは、フォーマット毎に決められている。今のPCのHDDでは512byteである。CD系では、2352byteである。記録は、書き込み、読みだしどちらも、全てこの単位で一括して行われる。引き出しの右隅に入れてある手袋を取り出すにも、引き出し全体を開けなければならないのと同じである。

ついでながら、あるセクターの300byte目の1byteだけ読みたい場合でも、そのセクター全体をDRAMに読み出し、そこから300byte目だけを取り出す。そうしないと、HDDやCDのコントローラと呼ぶ回路が面倒になって、高く付くからでもある。

トラック

HDDでは、このセクターが円周上に複数並んでいる。そして、1周すると元の位置に戻る。つまり円になっている。HDDでは、この円が、内側から外側まで、何千と書かれて、同心円となっている。各同心円をトラックとかシリンダとかよぶ(学校の運動場のトラックも、円ではないけれど、一周すると元にもどるよね)。1枚のメディア(円盤)の一面だけに着目した場合、トラックと呼ぶ。HDDでは、表、裏の両面に記録され、さらにそれが、何枚も重ねられているから、一つの同心円を1枚目の表、1毎目の裏、2毎目の表、2毎目の裏、3毎目の表...というように纏めてみると、筒に見える(隙間はあろうが)。筒は、英語ではシリンダーである。特に、この筒全体を呼ぶときには、シリンダーと呼ばれる。が、まあ、あまり気にする必要はない。この使い分けは、かなり、いい加減に使われているのだから。

ところが、音楽CDでは、このように同心円にはなっておらず、内側から出発し、外側に向かって、渦巻き型にセクターがダラダラと連続して記録される。まるでアナログみたいである。従って、トラックの意味が、HDDとCDでは異なっている。CDでは、トラックは、1つ以上のセクターを纏めた一つのデータの単位に過ぎず、大きさが決まっていない。データの大きさ次第である。HDDでもトラックの大きさは内周と外周では異なるが、データに聞いてくれ、と言う事はない。

PCに多少馴染んだ者には、これは凄く気持ち悪い。トラックの定義は、CDでは、目茶苦茶である、と思って良い。音楽CDの場合、1曲を1トラックと呼ぶ。交響曲の場合は、じゃあCD1枚で1トラックかといえば、そうではなくて(良く知らないが、常識的に)、1楽章が1トラックだろう。

PCのファイルやフォルダーを焼けば、1回の操作で焼いた分(セッション)が、1トラックである。1回の操作って、何か?が問題になる。焼くというボタンを押して、それが終了する事である。

次に、この問題を取り上げよう。

CDでは、その先頭からいきなり焼いたデータが書かれるわけではない。そこがアナログの音楽カセットテープと違うところで、勝手に目次を付けてくれる。この目次をリードイン(lead-in)と呼ぶ。

音楽CDをドライブに入れると、格納されている曲目一覧が見られるのは、この為である。そして、最後にリードアウトが書き込まれ、全体の終了を意味している。このリードインからリードアウトまでをセッションと呼ぶ

音楽CDでは、以下の構造になっている;

  |リードイン|トラック1|トラック2|・・・・|トラックn|リードアウト|

曲は、すべてセクターという箱(引き出し)の中に書かれ、それが幾つか集まって、トラックを形成している。セクターは先頭から、最後まで連番が付いている。3曲目は、第xxセクターというように、全ての曲=トラックの先頭セクターの番号が、リードインに書き込まれているので、例えば、いきなり、8曲目から再生できるのである。アナログのようにダラダラではなかなかそうはいかない(長い無音部分を付けたり、別トラックに並行してアドレスをつけたりしての努力はなされていたが)。

さて、ここで問題がある。音楽CDは、74分ぶんの音楽を一気にディスクアットワンスでCDに書き込むのが良いとされる。1曲を書き込んで、一旦、書き込みを止めると、次に書き込む時には、前に書き込み終わった最終の物理的場所を探さなくてはならない。そして、その後ろから、次の曲を焼き始める。その時に、どうしても、繋ぎ目が連続しないのだそうである(このそうであるには、若干軽蔑が込められている)。計算機屋に言わせると、そんなアホな設計をするな、HDDやFDを見てみよ、そうはならないように作ってあるゾ、と言いたくなるが、CDはオーディオ屋が作ったので、そういうことは知らなかったらしい。

別に、HDDだって、繋ぎ目が連続しているわけではないが、連続しているように見せるコントローラを内蔵しているのである。ところが、CDでは、そうはなっていないので、ここに継ぎ目ができると、オーディオのCDプレーヤーの中にはエラーを起こすものがでるそうである。そんな訳で、トラックの間にリンクブロックと呼ばれる数KB分の継ぎ目(というか、隙間)ができることを音楽CDは嫌うので、CD−Rを何回にも別けて、曲を継ぎ足していく、トラックアットワンス(ファイルを書くメニューの場合、、トラック毎にセッションを閉じて書くのであるが、音楽CDのメニューではトラックアットワンスはセッションを最後に追記するまで閉じない;track at once)は使わず、CD1枚を一回で書いてしまうdisk at once(音楽用円盤をdisc、計算機用円盤をdiskと書く風習が、この業界にはある。元々の英語にそんな意味は無い)で書くのが良い。

音楽CDでは、トラック間に、プリギャップ(pregap)、ポストギャップ(postgap)という無音部分を入れるが、これは、焼いているレーザを止めて、焼き終わり、次にまたレーザを入れて焼きはじめるという物理的にできてしまう隙間=リンクブロックではなく、単にヴォリュームレベル0の音を書いているだけなのだろう。それで、リンクブロックとは性格が異なる。。。のではなかろうか。

ファイル、フォルダを焼く;

ファイルを焼く場合、これとは多少、様相が異なる。

  |リードイン|PVD|ファイル、フォルダ群|リードアウト|...

       ...に注意!

複数のファイル、フォルダを焼くと、それらは、纏めて1トラックに書かれる。音楽CDでは、リードインに各トラックの先頭アドレスが書かれるが、今の場合、トラックは1つしかない。各ファイルの先頭アドレスは、ではどこに書かれるのか?これは、トラックそのものの中に書かれる。PVD(の他にパステーブルと呼ばれるFATのようなものがあるが、ここでは一括して、PDVとしておく)と呼ばれる。HDDのファイルシステムの機能に似ている。音楽CDとは、PVDがある分、トラック内の構造が異なる。

セッション = |リードイン|トラック|リードアウト|

このリードインで始まり、リードアウトで終わる全体をセッションと呼ぶ。では、追記はどんな仕掛けで出来ているのか?上記で、1セッションを終え、書き込みが終了し、レーザは消え、ドライブの書き込みアクセスランプ(LED)が消燈する。

ここに、更に、次のセッションを始めると、以下の様になる。

    |リードイン|PVD|ファイル、フォルダ群|リードアウト||リードイン|PVD|ファイル、フォルダ群|リードアウト|...

  (トラック = |PVD|ファイル、フォルダ群|)

CDでは、円盤の内側から順にデータを読む。最初のリードインには、トラックの開始アドレスが書いてある。これは最初のセッションで書き込まれているので、2度目のセッションを書いた時に、最初のセッションのリードインを書き直す事はできない。CD−RはHDDやFDと異なり、書き直せないからである。とすれば、内側から呼んでくるCDでは、2つ目のセッションは存在しないものとして扱われる。エー、1つ目のセッションの後ろを呼んでみれば、あるかないか分かるじゃない、と思うかもしれない。確かにそのように作る事も可能であろうが、CDはそのようには設計されていない。それに、そういういい加減な読み方は、計算機的でもない。あるものはきちんと登録しておくのが、計算機である。

でも、実際には追記ができているリードインには、実際には、次のリードインが始まるべき場所のアドレスが書き込まれているのである。CD−Rを焼くと、最後の数十秒から数分間(倍速により異なる)、「セッション情報を書いています」のようなメッセージが出るが、これがリードインを書いているのである。追記の場合、リードインは、このように最後に書かれる。でないと、今、書いているセッションの最後がどこになるか分からないからである(これも、コンピュータ的にはおかしくて、本当は計算すれば分かるのであるが、オン・ザ・フライに見られるように、CDでは、完全に計算しきってから焼くわけではなく、走りながら考えている方式だから、そのようになるのだろう)

こうしておけば、内側から読んでも、次のリードインの位置は分かる。そこに何もかいてなければ、書いていないことも分かるので、別に差し障りはない。次のリードインが分かれば、そこに飛んで行き、その中のPVDを読んで、その中のファイルを読み出せる。推測であるが、「ディスクを閉じる」とは、次のリードインの位置を書かない行為だろう。

マルチセッション

ソフト的な仕掛けは、上記だけで追記はできるのであるが、実際にはもっと複雑にしてある。CDを読む時間の節約の為だろう。前のリードインには、次のリードインのアドレスが書いてあった。逆に、次のPVDには、前のPVDの情報が書いてある。こうすると、最後のPVDさえ読めば、CD全体のファイル/フォルダが読めるからである。こうしておかないと、エクスプローラにCDの中味全体を表示するには、リードインを辿り、各トラックの中のPVDを読み出すという結構時間がかかる処理が必要になる。そうしていてさえ、最内周のリードインから、最後のリードインまで辿ってからでないと、表示できないので、CDを読むには、トレーに入れてからかなり時間がかかっている。

実は、B’sGoldなどで、マルチセッションで追記すると、以前の情報を読み出すが、OSの入っているドライブの全体をバックアップしてあり、数千のファイルがあると、これがえらく時間がかかる。数十分かかることもある。これを、毎回エクスプローラでCDの中味を表示するためにやっていたのでは、使い物にならないので、焼く時に一回きりやって、新しいPVDにコピーしているらしいのである。キャシュcacheの考え方と同じである。

このように、以前のPVDを継承して、コピーしておくマルチセッションをLinkedMultiSessionという。Linked、つまり、連結されたということである。これとは違い、Linkedされないマルチセッションで焼く方法もある。マルチボリュームマルチセッションという。ボリュームとは定義が実にいい加減な言葉であるが、まあ、今、問題にしているひとまとまりのファイル/フォルダ群と思えばいい。ここでは、セッションの事である。複数のセッションが連結されず、ただ並んでいるだけの事と思えば良い。この場合、リードインを内側から辿って、最後のリードイン(つまり、セッション)にいたり、そのセッションにあるPVDを読み出す。そこには、前のPVDはコピーされていないので、最後のセッションの中にあるファイル/フォルダーしか見えないことになる。

何度もいうが、これは原理的に見えないのではなく、エクスプローラが対応していないだけのことである。セッション自体は、そのアドレスはリードインで連結されているので、それを使って読むソフトを作れば、読めるのである。でないと、CDエクストラのように、音楽CDと、データCDを、マルチボリューム・マルチセッションで書いたCDは内側のものが読めないことになる(というか、PCでは、最後のセッションしか読まないので、PCで読めば、CD−ROMとして、ファイルが読め、オーディオにかければ、オーディオ装置は、逆に最初のセッションしか読まないので、音楽が聞けるCDが作れるのであるが)。マルチボリューム・マルチセッションでもセッションセレクタsession selectorを使えば、各トラック毎に読む事ができる。フリーのセッションセレクタ;CDrollerはここ。但し、全て英語

どちらの焼きかたで焼くかは、選択できるのが真っ当な焼きソフトである。必ず、メニューバーかツールバーに指定する場所がある。以前のセッション情報を引き継ぐか?とか、リンクドマルチセッションにするかなどであろう。

さて、 トラックアットワンスという焼きかたが、このマルチセッション=追記の焼きかたである。データ(音楽CDのような特殊フォーマットではなく、単なるPC用ファイル)では、全ファイル/フォルダーを1トラックで焼いた事に注意。セッション=1トラック(+リードイン/アウト)を焼く事になる。ただし、「ディスクを閉じる」を行うと、もう追記できない。そのセッションのリードインの次のセッションの開始位置の項目には、FFFFFFか000000か知らないがとにかくエンドマーカーが書かれてしまうのだと思う。

この焼きかたでは、トラックの間のリンクブロックというものが出来ない。1セッションは1トラックになり、セッション内でトラック同士が隣接するという音楽CDのような事態は生じないからである。トラックは必ず、リードインに囲まれている。なお、リードイン+リードアウトは約13MBになることに注意。いくらマルチセッションで追記できるからといっても頻繁にはやらない方が良い。20回も追記すると、半分近くが、非データ領域に費やされる。

蛇足であるが、CD−Rの650MBは、あるフォーマットでの容量である。その他に、ヘッダーやエラー訂正用のデータが書き込まれるから、生CDの全容量は、800MB程度になる。イメージを作ると、650MBには納まらない事は知っておくと便利な時がある。また、音楽CDはPC用データと違って、少々間違っても、人間の耳には分からない。16ビット=約65000段階のボリュームで、40000段階の音が、1ビット間違って、39999になっても何の影響もない。従って、エラー訂正も軽いので、音楽データは650MBより多く入る。

簡単な計算では、音楽CDは、サンプリング周波数44.1kHzであるから、1秒間に44.1k回データを取る。量子化(音の大きさの四捨五入)は16bitで行い、これをステレオで行うので、

  44.1Kx2bytex2チャンネル= 176.4KB/秒
  CD1枚は、74分だから
  176.4KB/秒x60秒x74分=783MBである。
これに、ヘッダー、エラー訂正領域などを加えて、800MB程度となる。

B’sGoldを生まれて初めて起動した時、ファイルのウェルと、トラックのウェルというのが同時に表示されているので、何の事か分からず、実に気持ち悪かった。計算機屋にとっては、これは無意味なメッセージであるから(CD屋には、業界用語をしらんかい、と言われそうだが、そんなド田舎の方言はしらん)。音楽は、1曲が1トラックという変な定義になっているので、.wavファイルをトラックのウェルに放り込めば、音楽CDとなり、ファイルのウェルに放り込めば、通常のPCのファイル(.wav)となる。PCでは、どちらも通常の音楽として再生できる(注)。ラジカセで聴く音楽CDを作るときには、トラックのウェルに放り込まなければならない。変な用語法である。

注; とはいえ、音楽CD信号は、CD−ROMドライブからアナログ線で出てくる。40ピンのIDEコネクタからは出てこないで、3ピン位の小さなコネクタが別途あって、それをサウンドカードの、それ用のコネクタに細い線でつないでやる必要がある。尚、音楽CDをダイレクトに、IDEコネクタから呼び出して再生するフリーソフトも存在する。そりゃ、cd2wavのようにリッピングができるんだから、できるでしょう。この場合、上記の細い線は不要。 ついでにウェルとは、well、井戸の事。ドラッグ&ドロップで放り込む場所を井戸に見立てているのだろうが、普通の日本人はウェル=井戸などということは知らない。CD−Rの世界は、変な、気の利かないオッサン達がやっている業界である。そういえば、ちょっと大き目の分厚いマンションでは、内側の部屋に陽が入らないので、真ん中を抜いて吹き抜けにして作ってある。四角い竹輪みたいなつくりである。この真ん中の穴を、light well光の井戸と、彼の業界では呼んでいる。

セッションアットワンス

さて、ここからが、おかしな話しで、永らく理解出来なかった。PCではファイルをトラックアットワンスで焼けば、リードイン/リードアウトが付いてしまうので、それが1セッションとなる。これって、セッションアットワンスではないか?でも、セッションアットワンスって、別にある。では、そのセッションアットワンスって何か、が分からないのである。

    |リードイン|トラック1|トラック2|...|トラックn||リードアウト||リードイン|トラック1|トラック2|...|トラックn||リードアウト|...

ということだそうである。一見、音楽CDをマルチセッションにしている。従って、ディスクアットワンス(これは定義からもシングルセッションであるのだから) では焼いていない。リードインとリードアウトの間にはトラックが複数あるのでトラックアットワンスでもない。とにかく、マルチセッションなのに、リードインとリードアウトの間に複数のトラックがあり、それを一気に(アットワンス)焼く形式らしい。

こんなものは、データ/ファイルには要らない。何故かは、いままでの説明でわかるが、ファイルでは、トラック内の複数のファイルは、PVDにその先頭番地が書いてあるので、1セッションが、1トラックでも所在が分かるが、音楽CDにはPVDが無いので、曲の先頭アドレスは、リードインに書かないと頭出しができない。リードインに先頭アドレスを書いたら、それはトラックを登録したことになる。従って、複数の曲を焼けば、嫌でも1セッションは複数トラックになってしまう。

従って、セッションアットワンスは、音楽CD用である。このセッションをディスクを閉じずに、マルチセッションにして、尚かつ一気に焼く必要はなにか?CDエクストラである。一気に焼いているので、曲間=トラック間にリンクブロックが発生しない。かつ、マルチセッションで焼ける。トラックアットワンスのように、セッション内が、1トラックではない、という特徴を持つ。ただし、CDextra以外には、この焼きかたは全く不要であることは、ディスクアットワンス、トラックアットワンスの意味を考えれば分かる。

音楽CDをマルチセッションで焼ける!ようにできると考えるかもしれないが、現存のオーディオ機器が対応していないので、読み出せない。オーディオ機器は、内側のセッションだけしか認識しない(PCのCD-ROMは、逆に、マルチボリューム/マルチセッションのCDは、最も外側のセッションしか認識しない)。まあ、将来のオーディオ機器なら対応させる事は難しくないだろうが、標準化と、廉価化という意味では、難しい。そんなことをする位なら、音楽CD/MP3両用のドライブの方が、曲を何十〜百数十曲も聴けるので有り難い。既に6000円台で買えるようになってきたから、セッションアットワンス対応音楽CDドライブなんて言っても買う人は、居ないだろう。

物の本には、音楽CDもトラックアットワンスで焼けると書いてある。この場合、ディスクを閉じる操作をしないとリードインが書かれないとの事(当然、再生できない)。そして、最後にディスクを閉じると、リードインを書くのだそうである。この書き方なら、リードイン/アウトの間に複数トラックが追記で焼ける(但しリンクブロックは発生するので、読めないラジカセが出るかもしれない)。しかし、これは、明らかにファイルを焼いた時のトラックアットワンスとは、焼きかたが異なる。ファイルをトラックアットワンスで焼く時はPVDが出来るし、リードイン/アウトは勝手に書かれてしまう。明らかに同じ用語を、ファイルを焼く時と、音楽CDを焼くときとでは、異なる意味で使っている。これもCD−Rを分かり難くしている混乱の元凶である。

なお、ここに記した、トラック、セッションの関係は、10冊程度のCD−R完全制覇のような本を読んで、推測した結果である。なぜか、どの本も、このような原理的なことがあまり書いてないので、実に気持ち悪く、さっぱり、CD−Rの構造がわからない日々が続いていた。推定なので、正しいかどうかの確証はない。レッドブックとか、オレンジブックとかの無味乾燥な文書まで、読む元気がでないしね^^;。




このページの先頭    目 次