エントリー

カテゴリー「マニアックなおはなし」の検索結果は以下のとおりです。

転ばぬ先の杖

 新しい音楽メディアとしてCDが登場したのが1983年。今年で実に27年になります。生まれたときには既に身の回りにCDがあった人たちがすでに27歳になっているということも衝撃的ではありますが,ともあれお茶の間に「デジタル」という言葉とその先進性を持ち込んだ,記念すべきメディアであることは,改めて書く必要もありません。

 そのCDは,かつてのアナログメディアの欠点をことごとく克服したことでも「明るい未来」を印象づけたものであったのですが,その1つに寿命が半永久的,というものがありました。

 かつてのレコードは針が溝の上をなぞっていく仕組みなので,接触している以上寿命は有限であることは誰の目にもわかりやすかったのですが,CDはレーザーで信号を読み取る非接触型なので,接触することが原因で起こる劣化は,なるほど「ない」といえるわけです。

 しかし,子供でも分かることですが,形あるものはいつか壊れる,CDについても例外はありません。大事に保存しておいても,酸化,分解,という形で壊れていくものです。

 CDは誕生してまだわずか27年です。加速試験という方法で十分な長さの寿命を確認しているのは確かですが,どんなに古いCDでも27年以上の時間を経過したものは存在しないわけですから,これから先,一日一日が劣化との闘いになるように思います。

 実際に,すでに古いCDは大事に保管してあっても破損して読めなくなっていると言う話も耳にします。多くは反射層のアルミの蒸着の剥がれ,によるものだそうで,こうなるともう復活させる方法はありません。

 ついでにいうと,CDはそのアルミの蒸着が薄い保護膜で覆われているだけで,ほとんど露出に近い状態になっています。危なっかしいといつも思っているのですが,これがDVDだと貼り合わせという構造のおかげで,反射層が露出していません。反りにも強く,製造が大変というかつての欠点が克服された現在,なかなか理想的なメディアであると個人的には思います。

 話が逸れましたが,私が初めてのCDを購入したのが1987年。ですので今年で23年が経過しています。中古で買ったものを含めると,最古のものは25年が経過しているものもあるはずです。

 温度や湿度,光やガスなどの環境要因が多く懸念される私の住環境において,すでに劣化しているCDがあってもおかしくなく,それはもう刻一刻と現実のものになっているのではないか,という危機感がここ数年ありました。

 劣化したCDは工業製品ですので,また買い直せばいいように思うのですが,一方で著作物であるという性格上,廃盤になっているとお金の問題ではなくなります。私に限らず,大多数の方はCDという入れ物に入った中身に対してお金を払っているわけですから,器が壊れてしまう前に中身をきちんと保存しておく必要があります。

 そこでCDのバックアップを真面目に考えるようになりました。ディスクイメージで保存しておけば,オリジナルが劣化して失われても,CD-Rに復元することが可能になります。

 ところが,音楽CD(以後CD-DAと書きます)は,CD-ROMと違って完全なディスクイメージを作る事は難しいのです。

 1つには,CD-ROMに比べてエラーの発生率が高いこと。音楽のような連続したデータは仮にデータが訂正できずに誤っていても,前後のデータの平均を取ればそんなに外すことはありませんが,CD-ROMのような用途では1つ違っただけでもまずいわけで,元々強力だったエラー訂正能力をさらに高めてあります。

 もう1つは,これは実験するとわかった,という話で,理由は諸説あるし,私もなにが正解なのかよく分かりませんが,ディスクの先頭と末尾のデータの位置が,読み出すドライブによって異なる,というものです。

 これはオフセットという言葉で知られている話なのですが,正しい位置より前で読み出しても全体にずれるだけで問題なし,正しい位置より後ろで読み出してもほとんどの場合読めなかった部分は無音区間ですから,別に音楽として失われるものはありません。

 しかし,あるアドレスに入っている値を2つのドライブで比べてみると,全く異なる場合があるということになりますし,ごく希なケースとして先頭や末尾が無音でないようなCDの場合は,データがわずかとはいえ欠損してしまうわけですから,果たしてそれで正しく読み出せたことになるのかどうか,と聞かれればNoでしょう。

 もともとファイルシステムを持たず,連続したデータを実時間で取り出すことだけを考えて作られたCD-DAを,ファイルという形にパックして実時間に従わない形で扱おうというのですから,リッピングというのはいわばPCを使ってマイクで音を録音する行為と同じといってよく,アドレスがずれたり無音区間の長さが少し違ったりするのは当たり前で,気にすることなどないようにも思うのですが,やはり気持ち悪いのは確かです。

 余談ですが,このオフセットが発生する原因について,よく言われているのがCD-ROMにはアドレス情報があり,CD-DAにはアドレス情報がない,というのがあります。確かにCD-ROMの場合,セクタから読み出すデータの中にアドレスが書き込まれていて原理的には,データと同時にアドレスを読み出す事も可能です。

 しかし,CD-DAにアドレスがない,というのは誤りで,サブコードのQチャネルに書き込まれた1曲目の先頭位置からの経過時間がアドレスとなります。そしてCD-ROMのセクタに書き込まれたアドレスというのは,この経過時間と同じ値です。

 1曲目の先頭の位置をどこにするかがドライブごとに違う,と言う意見もあります。1曲目の先頭位置からの経過時間がすなわちアドレスなので,先頭位置がずれればずれた分だけアドレスもずれるというのがその根拠のようですが,残念ながらCD-DAの場合でもQチャネルに書かれた経過時間の値そのものは変化しませんので,そのアドレスに書かれたデータは1つしかありません。

 また,CD-ROMのセクタには同期用の情報が書き込まれているが,CD-DAにはこれがない,という意見もあります。確かにその通りで,なかなか説得力もあります。CD-ROMの仕様が策定される際に必要がなければ追加されることはなかっただろうと考えると,これはちょっと否定しにくいです。

 信号処理,特に複数ブロックの読み出しが必要なC2エラーの訂正にかかる時間だけデータの出力が遅れるのが原因という意見もありました。だからドライブのメカの違いではなく,使っている信号処理LSIによってオフセットの値が変わるのだ,と言う主張です。

 これも説得力があります。前述のようにオフセットには個体差はなく,同一型番のドライブなら同じオフセット値を取りますし,違う型番でも同じ信号処理LSIが使われているとまったく同じ値になりますから,少なくともオフセットはバラツキで偶然発生するのではなく,発生するべくして論理的に発生しているようです。

 そこで話を少し前に戻します。CD-ROMの場合,エラー訂正を行った後のデータの中にも,アドレス情報と同期用のデータが含まれています。CD-ROMデコーダLSIは,データと共にそのデータのアドレスも正確に把握出来るようになっています。

 しかし,CD-DAの場合,アドレス情報についてはサブコードに書かれていますし,同期もテラー訂正前に取られることになるので,含めてエラー訂正前のアドレスしか残っていません。

 ですから,もしもエラー訂正に時間がかかってしまうと,同期もずれるしアドレス情報も狂ってしまうことになるはずです。

 オフセットがゼロのドライブもあるので,これらは処理時間がゼロなのか,というとそういうことではなく,処理時間を含んだ形でデータを出力するようにすれば解決します。

 起きている状況から考えて,CD-ROMでは正確である必要はあっても,音楽再生ではオフセットをゼロにする必要はないということから,リッピングの場合も再生された音楽のデータがオフセットを持ったまま出てくるようになっている,という風に考えた方が良さそうです。そして,オフセットゼロのドライブは,特別なケアを施してデータの同期を取ることで,リッピングの性能にこだわっているということでしょう。

 つまり,CD-DAにおいてもオフセットゼロにすることは可能なのだが,多くのドライブは音楽用のCDプレイヤーがそうであるように,オフセットをゼロにすることは面倒なのでやってません,ということになるというのが,私の結論です。

 さて,リッピングのためのソフトはオフセットをきちんと管理できるExact Audio Copy,通称EACを使う事にします。

 ドライブは,安かったと言う理由で購入した日立LGのGH20NS10を試してみようと思ったのですが,これは+637サンプルのリードオフセットと,+30サンプルのライトオフセットがあります。

 ところが,EACにこれらを設定し,リッピングして読み出したデータをCD-RWに書き込みリッピングし,オリジナルのデータとCD-RWのデータを比較すると一致しないのです。

 悔しいので徹底的に調べて見ることにしました。

 まず,先頭と末尾がゼロではないPCMデータをつくります。そしてこのデータをCD-RWに焼き,CD-DAを作ります。

 これをリッピングして,バイナリエディタで調べてきます。検証はノートPCに内蔵されていたパナソニックのUJ-852Sで行いました。UJ-852Sは,リードオフセットが+72,ライトオフセットが+60です。

 結果,このドライブでリッピングすると,先頭は完全一致しますが,末尾は72サンプル分のゼロが追加されていました。データの欠損はありませんが,データのサイズが72サンプル分だけ大きくなってしまいました。

欠損がないので問題ないといえなくはないのですが,問題は書き込みです。このCDを作る際に,CDRDAOを経由すると,ライトオフセットである+60サンプル分だけ,先頭がゼロで上書きされてしまいました。

 先頭の60サンプルなど普通のCD-DAは無音部分ですので,別にゼロが上書きされても実害のないのがほとんどだと思いますが,実際に今回のCD-RWをリッピングすると,オリジナルとは異なるデータ列になる事がわかります。

 むしろこれが問題です。私の持っているドライブで一番新しいGH20NS10はCDRDAOを経由せねば書き込みが出来ません。だから,ドライブを使った場合に考えられるのは,リード時は末尾に637サンプル分のゼロが追加され,ライト時は先頭の30サンプルがゼロで上書きされるのです。

 そこで,数年前に購入してほとんど出番のなかった,プレクスターのPX-W5224Aを引っ張り出します。オーディオ性能が高く,1万円程度で買える廉価版であり,しかもCD-Rドライブの最終世代という事で買うことにしたものですが,ほとんど使わずにいました。

 このドライブは,リードもライトもオフセットはゼロです。本当かと思って先のPCMファイルで調べると,確かにオフセットはなく,このデータをライトしたCD-RWをリッピングしたデータと,オリジナルとを比較すると完全一致します。

 ということで,リッピングはPX-W5224Aを使う事にします。

 さて,あとは圧縮をどうするか,と言う話になりますが,ロスレスのコーデックから,最も標準的であり,オープンソースで,バージョン間の互換性も高いとされ,様々なプラットフォームで動作するFLACを使う事にしました。

 FLACは圧縮率も高くありませんし,エンコードも高速ではありませんが,ソースが非公開だったり使っている人が少ない,あるいは現在も開発中というソフトだったりすると,いざというときデコードできる環境がなくなっていて困り果てることもあるかも知れません。なんとかFLACを使いこなしてみましょう。

 まず,圧縮率と速度の関係です。FLACは-0から-8までのオプションで,圧縮率を選ぶことができます。最高圧縮率の8では速度が随分遅くなるのですが,ならいくらならいいかを調べる必要があります。

 そこで,ある音楽をリッピングしたファイルを用意し,これを実際にエンコードしてみます。結果は以下のようになりました。

-8   12.14秒  圧縮率0.652
-8 -V 13.56秒
-7   8.75秒  圧縮率0.655
-7 -V 10.04秒
-6   3.85秒  圧縮率0.655
-6 -V 5.01秒
-5   3.57秒  圧縮率0.655
-5 -V 4.76秒
-4   2.87秒  圧縮率0.660
-4 -V 4.15秒
-3   2.44秒  圧縮率0.673
-3 -V 3.48秒
-2   2.66秒  圧縮率0.695
-2 -V 3.71秒
-1   2.42秒  圧縮率0.700
-1 -V 3.41秒
-0   2.24秒  圧縮率0.709
-0 -V  3.26秒

 -Vというオプションはベリファイを行うオプションで,エンコード時にデコードも行い,データの一致を確認するオプションです。

 これを見ると,-7と-8の間でわずか0.2%しか違わないのに,時間は1.4倍も増えています。割が合いません。しかも-7から-5まで同じ圧縮率なのに,時間は1.8倍も差があります。こちらも割が合いません。

 -4になると0.5%の差がありますが,時間は1.3倍になり,随分状況が変わってきます。-3では1.3%の差が1.18倍に時間差になっています。実は-2では時間がかえって増えてしまうという結果が出てしまい,あまりあてにならない数字になってしまいました。ディスクキャッシュの関係ではないかと思っています。

 まあ,どのみち-2などは圧縮率の関係で使うつもりはありませんので無視させていただき,一番リーズナブルな感じがする-4を選ぼうかと思ったのですが,なにせファイルのサイズもあまり大きいもので試したわけではなく,圧縮率も出来るだけ小さい方がいいなあと思っているので,ここは-5あたりを選ぶことにします。

 実は-5というのはデフォルトの設定値であり,なるほどこのあたりが一番おいしいということなのでしょう。でももし,CD300枚をリッピングする時にファイルサイズが5%違ってくると,最終的には1.1GBも違ってきます。悩ましいところですが,
 
 あと,-Vオプションを使うかどうかですが,-5で1.3倍も時間がかかっています。ほとんどの場合,ベリファイをしなくても問題がないことを考えると,安心代として3割増しというのはちょっと高すぎる気がするので,やっぱり使わないことにします。

 あとは大きめのハードディスクを調達するだけで準備はOKです。

 しかし,多くのCDを全部リッピングするには,随分と時間がかかることでしょう。そこまでして価値がどのくらいあるのか疑問ではありますが,お金では解決しない問題ですので,辛抱してやり遂げようと思います。

VirtualBoxで手に入れるもう一台のPC

 AVRの開発環境を実現するために,MacBookProに仮想環境として,VitrualBoxを導入したことは先日書きました。このVirtualBox,実に良くできているので,簡単に紹介しておきたいと思います。

 VirtualBoxはSunMicrosystemsの製品で,無償かつオープンソースの仮想マシンソフトです。ライセンスはGPLv2に準拠していて,個人・商用を問わず利用出来ます。エンタープライズ用途向けに24時間対応のサポートが受けられるオプションもあります。

 個人的には,エンタープライズ用途向けをちゃんと目指していることを評価していて,その上きちんとアップデートを継続していることもよいと思います。現在のところ最新版はVer.3.1.0ですが,特にVer.3以降はかなりこなれてきたという印象があります。

 そもそも論ですが,昨今はやりの仮想マシンというのは,実機の上に複数のマシンを独立で構築する仕組みです。Windows上でX68000を再現するX68000エミュレータも一種の仮想マシンですし,Javaの実行環境はJavaVMといって,これも仮想マシンの一種です。

 これらは,ソフトウェアで別のマシンを実装するもので,実機のCPUが仮想マシンのCPU向けの命令をソフトウェアでいちいち翻訳しながら動作しています。だから動作が低速になることは想像が付くと思います。

 で,最近よく耳にする仮想マシンには,x86の上で,複数のx86を動作させる仮想マシンの話が多いようです。そういえば昔仮想86モードなんてのを耳にしましたね。あれは80386上で仮想8086を実現するものでしたが,言ってみれば仮想8086が仮想x86に昇格した,という感じかも知れません。

 1台の実機上で複数のマシンを稼働できると,古い機種でしか動作しないソフトウェアをそのまま動作させる事ができたり,それぞれで異なるOSを動作させることができたりしますし,またそれぞれのマシンを完全に独立させることが出来る事から,セキュリティや信頼性の向上が期待できます。

 さて,仮想マシンの実装には,元々1つしかないリソースを複数で共有し,互いに影響を与えないようにするために,仮想マシンモニタと呼ばれるソフトウェアがリソースの配分などを行う必要があります。

 ただ,この仮想マシンモニタはオーバーヘッドが大きく,処理速度の低下が深刻であったため,出来るだけオーバーヘッドが発生しないよう,機能の一部をハードウェアで支援できるような拡張が,近年のCPUには実装されつつあります。

 例えばx86(正確にはIA32プログラミングアーキテクチャ)の場合,リング0からリング3までの特権レベルがあり,OSの低レベルの部分などはハードウェアリソースのほぼすべてにアクセスが可能なリング0で実装されてきたのですが,仮想マシンを実装する上で,OSがリング0で動作していては他のOSへの影響が避けられないため,仮想マシンモニタをリング0で動作させ,OSはリング1から3で動作させることになります。まあ当然ですね。

 ところが,OSにはリング0のみ許される特権命令が含まれているため,リング1から3で動作している状態では例外が発生します。

 これを回避するため仮想マシンモニタが例外を監視し,例外が発生したら命令をエミュレートして,OSに結果を返すようにしていたのです。なんか,非常に重たそうなことをしないと,x86で仮想マシンを実現出来ないっぽいですね。

 もう1つ,x86で仮想マシンが面倒臭いというお話をしましょう。こっちはちょっと笑えます。

 popf命令などが例ですが,なんとユーザーモードと特権モードで動作の異なる命令がx86では存在しています。建て増しを繰り返してきたから,という意見もあるのですが,どっちにしても同じ命令で動きが違うなんて,ちょっとビックリです。

 これは仮想マシンモニタにすれば非常に迷惑な話で,この命令がリング1から3で動作しているOS上で見つかった場合,それは本来リング0での動作を期待されていて,リング1から3では動作させてはならないので,例外によって知らせて欲しいのに,実際にはどちらのリングにも存在する命令ゆえに,例外すら発生しないのです。

 ということは,リング1から3で動作しているOSが発行する命令を,常時監視しなければならないわけです。これはたまりません。

 VMwareなどは,こうした仕組みを実装し,もともと仮想マシンを考慮していないx86で仮想マシンを実現していました。これらの仮想マシンが高い評価を受けているのは,こうした重たい処理を必要としながらも,実用的な速度で動作する仮想マシンを実現したことにあると思います。

 ところが,こうした不細工な方法で無理矢理仮想マシンを実現するというのは,決して褒められたことではありません。そこで,x86にも仮想マシンをハードウェアで支援する機構が用意されるようになってきました。インテルではIntel VT,AMDではAMD-Vと呼ばれるものです。それぞれ異なるものではありますが,やってることは基本的には同じです。

 まず,リングプロテクションに関する支援です。リング0から3までをそれぞれ持つ,VMXrootとVMXnon-rootの2つのモードを用意しました。VMXrootでは仮想マシンモニタが動作しており,VMXnon-rootモードではOSを動作させます。

 もしOSが特権命令を発行した場合にはVMXrootモードに移行し,仮想マシンモニタに制御を移します。このように仮想マシンモニタが特権命令を監視しなくても良いので,オーベーヘッドは大幅に削減されることになります。

 また,仮想マシンごとにレジスタなどのコンテキストを保存する専用領域を用意してあり,これらの切り替えが自動化されるようになっています。このこともオーバーヘッドの削減に寄与しています。

 さらに,I/Oについても仮想マシンの実装支援が行われています。VT-dなどと呼ばれている機能です。

 仮想マシンでは,I/Oはそれぞれのデバイスのエミュレーションによって実装され,DMAを行う場合はアドレスのリマップが必要となります。

 このことは速度の低下に加えて,エミュレートされたデバイス用のデバイスドライバが必要になるため,従来のドライバをそのまま使用できなくなる場合があります。

 そこで,ハードウェアによってDMAのアドレスをリマップする機能を用意しておきます。こうすれば速度的にも有利な上,I/Oのエミュレートを行わないので従来のデバイスドライバがそのまま使えるようになります。

 こうした支援機構によって,従来に比べて2割ほど性能が向上するそうです。

 現在利用されているx86用の仮想マシンは,別にこれらの支援機構が必須になっている訳ではありません。しかし,多くがこれらの支援機構を利用出来るようにもなっており,対応したCPUを使えば,さらに速度や利便性の向上を期待できるというわけです。

 話をVirtualBoxに戻しますが,VirtualBoxも,Intel VTのうちVT-xとAMD-Vに対応しています。ただ,過去にはこれらを使うと速度が低下したケースもあったそうですし,他にもいろいろ問題が出ていたようですので,ちゃんと考えて使わないと失敗しそうです。


 さて,私のMacBookProにインストールしてみます。ホストOSはSnowLeopardで,64bitカーネルです。ここにVirtualBoxの最新版である3.1.0をインストールしますが,これはあっさりと終了。

 VirtualBoxを起動すると,最初にディスクのイメージファイルを作る事になります。仮想ドライブの容量と同じ大きさのイメージファイルを作る方法と,イメージファイルの大きさが可変するものの2つを選ぶことが出来ますが,後者はドライブの容量サイズを変更できるという意味ではなく,これは最初にしていした容量のまま変えることが出来ません。あくまで仮想ドライブにデータを書き込むと,イメージファイルの大きさも大きくなるという仕組みで,ホストOS上に無駄にでかいファイルを置かずに済むということを狙ったものです。

 ここにWindowsXPをインストールします。MacBookPro内蔵のDVDドライブもVirtualBoxの支配下にあり,ここにWindowsのCD-ROMを入れて置けば,インストーラが起動して,いつものようにWindowsXPがセットアップされます。

 なお,仮想マシンのメモリですが,あまり巨大なものを設定すると,ホストOSでスワップが発生し,パフォーマンスががた落ちになります,私の場合4GBを搭載しているので1GBくらいなら設定してもよいだろうと思いましたが,考えてみるとホストOSにとって1GBも占有するソフトが起動するというのは結構きついことで,スワップが発生すると大変なことになります。WindowsXPなら512MBもあれば十分です。

 インストールが終わればMacの画面上でWindowsが動くという見慣れない状況が起こりますが,それぞれちゃんと動いています。当たり前なのですが感動的です。

 デバイスドライバも普通のデフォルトでインストールされるので,特に問題はなく動くのですが,ここでGuestAdditionをインストールしておきます。VirtualBoxのメニューからGuestAdditionのインストールを選ぶと,Windows上でインストーラが動き出してさらに便利な仕組みが使えるようになります。

 特に便利なのが,マウスカーソルの移動です。デフォルトでは左のコマンドキーを押すごとにマウスカーソルがホストOSとゲストOSで切り替わるのですが,これが案外面倒です。ところがGuestAdditionをインストールすれば,VirtualBoxのウィンドウの上では自動的にゲストOSのものと判断され,そこから外れた領域ではホストOSのものとされます。つまり,通常のMacOSのソフトと同じようにマウスが動かせるということです。

 ネットワーク関連ですが,ここはなにも考えず,NATで設定すればOK。ホストOSとは異なるIPアドレスを割り振る必要があるだろうと思っていたのですが,NATを実装してあるので,ホストOSのネットワークを,ゲストOSが失敬するような仕組みになっているようです。

 グラフィック周りは期待しない方がよいのですが,一応2Dと3Dのアクセラレーションが有効に出来るようです。ただ,2Dのアクセラレーションはしない方がいいと警告されますし,3Dの方はチェックしても私の環境では有効にならないようでした。

 2Dのアクセラレーションが有効にならないという事はDirectXを使ったソフトは動作しないという事になるので,実は結構な数のソフトが動作しません。古いパソコンのエミュレータを動かそうと思っていましたが,ほとんどが無理でした。

 画面関係でいえば,最大解像度がXGAまでなので,これで狭いと思っても手がありません。MacBookProの画面の大きさを考えると,ホストOSの邪魔をしないようにするにはXGA位が適当だと思うので私はそれほど問題とは思っていませんが,確かに開発系の統合環境などは,窮屈な感じがします。

 USB周りは今回の目的,開発環境の動作のためには妥協できない部分です。そもそもハードウェアリソースとしてのUSBをホストOSとゲストOSで共有することになるのですから,排他使用になる事は当たり前です。

 どちらかでしか動作しないデバイスなら別にいいのですが,USBメモリのようなどちらでも使えるものはどうするか,です。

 なにも設定をしないと,まずホストOSでマウントします。この状態でゲストOSでマウントさせようとしても,グレイアウトしてマウントできません。

 そこでホストOSでアンマウントすると,ゲストOSでマウントします。しかし,いちいち面倒ですね。そこでVirtualBoxでは,USBのIDを登録しておき,どちらのOSで使用するかを設定することが出来るようになっています。

 この方法で,AVRライタやMSP430のデバッガ,USB-シリアル変換ケーブル,USBメモリを登録しておきました。それぞれ,Windows用のデバイスドライバでなんの問題もなく動作しています。これは本当に期待通りです。

 ファイル共有ですが,VirtualBoxの設定からホストOS上のフォルダを指定しておきます。例えばそのフォルダがhogehogeだったとすると,これがゲストOS上では\\vboxsvr\hogehogeとなりますので,これをネットワークドライブとしてマウントすればOKです。

 この程度の環境設定を行って実際に使ってみると,Macで動かしているという感覚を忘れてしまうほど,そのまんまWindowsです。速度も全く問題なく高速で動きますし,ホストOSに悪さをするようなこともありません。音もきちんと出ますし,光学ドライブもちゃんと共有出来るようになっています。

 VirtualBoxでWindowsを動かしつつ,iChatAVを使ってビデオチャットということも問題なく出来ていますので,メインはMacだが時々Windowsが欲しい,という程度の話であれば,それぞれに妥協をすることなく,両方のOSを同時に使用することが十分出来ると思います。

 本当に処理速度が欲しい,あるいはスタンバイや休止状態を確実に使用したい,グラフィック関係が動かないといけない,という場合にはBootcampで再起動をかけるしかありませんが,逆に言うとVirtualBoxでダメな場合にはBootcampという手があるという事ですから,MacBookを持っている人は無敵のパソコンを手に入れたに等しいと,私は感じました。

 以前からちゃんとした仮想マシンに興味があって,それは利便性だけではなく技術的な興味関心から,実際に使ってみたいと思っていたのですが,これだけ簡単に導入でき,しかも十分実用になるというのは,良くできているなあと感じました。


 私は以前PowerMac7600をPowerPCG3の500MHz程度で使っていた頃に,Connectixという会社のVirtualPCを使っていたことがありました。Windwos95を入れて,当時使っていたシャープのザウルスの母艦にしていたのですが,動作はあまりに遅く,忍耐なしで使う事は不可能でした。

 ほぼすべてのデバイスをエミュレーションするだけでななく,CPUでさえもエミュレーションしなければならなかったVirtualPCと比べるのはかわいそうですが,互換性においても速度においても,ただ動くというレベルから使えるレベルになっていることは,ユーザーにとって大きなメリットになっていると思います。

 ゲストOSが有償なら当然買う必要はありますが,VirtualBoxは無償で利用出来ますから,特にMacの人は便利だと思います。それまで一般のユーザーが使うことの出来なかった高度な技術がいとも簡単に利用出来るのが,PCの世界です。

 高速なクロック,膨大なメモリ,スーパースカラ,ベクトルプロセッサ,仮想メモリ,賢いコンパイラ,プリエンプティブカーネル,そして今回の仮想マシンと,すべて大型機のために開発された技術ばかりです。それがこうして安価に提供され,コンスーマ用に新しい活用方法が提案されて,より便利になっていきます。

 これから先,お手本とすべき大型機が不在になるなか,PCの進化はどちらを向くことになるのでしょうか。楽しみです。

StarTrek in Another World

 スタートレックには世界中にファンがいます。

 アメリカにはスタートレックがある,日本にはようやくガンダムが現れた,と私はよく言うのですが,先進国の向かう先には,大人も子供も夢中になるSF作品があるんじゃないかと,そんな風に思ったりします。そしてそれぞれに共通するのは,宇宙と未来とメカと,そして分厚い人間ドラマです。

 ガンダムと同じように,スタートレックもいくつものテレビシリーズが作られ,映画も公開されてきました。しかし,いずれも非常にマニアックで,ファン以外お断りが不文律になっているような気さえします。

 1つの大きな世界観があり,そこに緻密な設定が存在,すべての作品において矛盾が許されず,整合性を強く求められるのは,ある意味でガンダムと同じく国民的SFの宿命といえるかも知れませんが,その整合性が完璧であるほど,マニアや歓喜し,一般人は遠のいていくものです。

 さて,そこでシリーズ最新作の「スター・トレック」です。

 アメリカでは大ヒット,日本でもまさかのヒットを記録した今年の夏の映画でした。スタートレックでも,カークやスポックが出てくる作品は,国内では「宇宙大作戦」としてタイトルが付けられるのですが,本作品は「スター・トレック」とそのままです。

 本当なら映画館で見たかった私ですが,結局引き籠もってしまい,見る事が出来ませんでした。Blu-rayで出ることを心待ちにしていたのですが,それがようやく先日発売になり,今頃になって皆さんに追いついたというわけです。

 このお話,時代的にはTOS(The Original Series,要するに最初のスタートレック)の少し前,カークやスポックが若者であった頃を描いています。しかし,これが直接TOSに続くのかというとそういうわけではなく,別次元の物語として描くことでTOSに続く物語という役割から上手に逃れ,小さな矛盾や整合性の取れていない設定に対するマニアからの批判をうまくかわすことに成功しています。

 のみならず,マニアの視線におびえることなく,面白い事を遠慮せずにやっていこうという非常に前向きな力も加わって,自由にのびのびやってるなあという印象さえ感じます。

 スポックが感情をむき出しにカークを殴るシーンもおかしければ,マッコイが離婚して仕事を失ったから艦隊に入るという負け組根性丸出しなのもどうかと思います。チェコフが最初からいる(しかもかなりきもい)のも変だし,あの凄腕のスコットランド人エンジニアのスコッティが辺境に飛ばされているというのもおかしいでしょう。ちょっと仕草とかそっくりなので笑ってしまいますが・・・それに,カークとスポックでウフーラを取り合うのはいかがなものかと。よくあるバンドの解散の理由はバンド内恋愛であることを彼らは知らないのか!(そんなもの知りません)

 一番ひどいのはカークで,謹慎中に無断でエンタープライズに乗り込み,正式な辞令も無しに無茶な行動を起こし,何度も死にそうになりながら,最終的には大成功,表彰されて昇格するなんて,宇宙艦隊には規則はないんですか?

 そんな,バントのサインを無視して手当たり次第にバットを振り回したら,天性の才能に目覚めて外野に痛烈なゴロ,1塁で止まる気などさらさらなく躊躇せずに2塁を蹴り,3塁コーチが止まれというのにこれまた根拠のない直感だけでホームに突っ込み,砂煙が消えたらホームに指先1つで触れていて逆転満塁ランニングホームランにしちゃうような,そんでもってMVPまで持って行っちゃうような,そんな面倒臭いわがままな人がいきなり艦長になるなんて,私がクルーなら即刻船を下ります。命がいくつあっても足りません。

 なんか,傷物を集めてっていうあたり,なんか日本のスポーツマンガの典型のような気がするし,知恵と勇気と団結でどんな困難も乗り越える!みたいな流れになってしまいそうな気がして,ちょっと怖い気がします。かりにも人類の英知を結集した宇宙艦隊の旗艦エンタープライズですからね,愚連隊に任せるわけにはいかんのです。

 でも,いいんです。これは別次元のお話なのです。もはやなんでもありなのです。(だからといって好き放題しないところが,監督の腕の見せ所でもあります)

 そもそも娯楽至上主義のハリウッド映画で,監督自らも「マニアに向けて作ったわけではない」と公言してはばからないくらいですから,うるさいマニアがあきれて口をあんぐり開けている姿を期待しているんでしょうね。その分,何の知識もない人が,実に楽しく見る事の出来る映画になっています。スタートレックが理由も理屈もいらない映画になるなんて,私はちょっと驚いているくらいです。

 この映画の見所は,個人的にはテンポの良さと粋の良さ。はつらつとした若者が怖いモノ知らずで暴れ回る姿は実に爽快です。

 そしてキャストがまた素晴らしいです。カークのような生まれ持った直感の鋭いアウトローを描くと,どうしてもやんちゃなだけで終わってしまうのですが,思慮深さやリーダーシップ,そして時折見せる影の部分を見事に表現しています。

 スポックもそうです。ずばり,このスポックは男前の好青年です。おそらく,この映画でもっとも良い役者だったといえると思います。

 ウフーラもオリジナルをはるかに超越した美人で,もはやこれは反則です。

 カーデシア人の悪役ネロの演技も見事です。カーデシア人はTOSの世界ではTNGやDS9とは違った描き方をされていますが,TOSでの表現に比較的忠実で,実に陰鬱なイメージで描かれています。そもそもカーデシア人は遮蔽装置を持っていたり,小型のブラックホールを手なずけてエネルギー源にしているほどですから,ある意味最強の連中ですが,それがなぜ無鉄砲な地球人のカークに負けるのか,光と影によって表現された雰囲気が,それを説明しているかのようです。いやはや,Blu-ray万歳。

 キャストがみんな,まるで本当のクルーのように,仲良く結束して楽しく映画を作っていて,肩の力の抜け具合もよい塩梅で,スタートレックという大作に気負うことなく,自然に取り組んでいる姿が非常に好印象です。

 これだけヒットすれば,続編が出るのは間違いないんじゃないかと思っていますし,すでに家族や兄弟のような親しさで繋がったキャストの,強い結束感に基づく演技をもう一度みてみたいものだと思います。クルーの強い結束と信頼,これがスタートレック全シリーズに共通する背骨だと私は思うからです。

 外伝といいますか,スピンアウト作品といいますか,アナザーストーリといいますか,そんな雰囲気で,特に熱烈なトレッキーでもない人が,純粋に良質の娯楽を目指して作ったスタートレックは,鑑賞中のマニア的視点の維持も必要なく,作る方も見る方も楽しむ事に集中できる,大変に面白い作品でした。

安価な地デジブースターを考えてみる

 PCでテレビを見ることも板に付いてきた今日この頃ですが,多摩川沿いに住む私としては神奈川県の住民にもかかわらず,テレビ神奈川が安定しないという問題点にいまいちすっきりしていません。

 地方UHF局(テレビ放送からVHFが廃止された暁にはこの表現はどうなるのでしょうね)にそんなに躍起になるのもどうかと思うのですが,なにげにテレビ神奈川は面白い番組をやっているので,実は気に入っています。

 例えば「岡崎五郎のクルマでいこう」は全国枠でないのが惜しい良い番組だと思いますし,「天体戦士サンレッド」も楽しみにしています。実家にいた頃はずっと見ていた「探偵ナイトスクープ」もテレビ神奈川で放送されています。

 そんなわけで民放では最も見ているテレビ神奈川ですが,私の環境では少し受信レベルが低く,アンテナブースタなしではドロップがひどくて,満足に見ることが出来ません。

 そこで半信半疑で導入したのが,YAGIのDPW02というアンテナブースタです。ゲインは低く,その代わりノイズも小さいという「もうちょっと足りない」という用途に向けたアンテナブースタだそうですが,私が購入した6月時点のamazonの価格が約4300円とリーズナブルなわりに,私の環境では劇的な改善が見られました。

 ただ,安定受信ギリギリのところのようで,天候が悪いときなど,一瞬ですがドロップが起きているような感じです。別に実害もないのでほっときゃいいんですが,夜も眠れないくらい気になるのはやはり性格の問題でしょうか。

 アンテナブースタにもうちょっとゲインがあったら違うかも,そんな素人的な考えが浮かんで,少しamazonを散策してみました。すると,以前は見つからなかったユニデンのRB30Uというアンテナブースタが,非常に安価に出ているではありませんか。

 約3200円という値段ですが,ゲインは標準で30dB,NFは3.0dB以下というスペックです。ゲインは連続可変出来るようになっているので,安い割には使い道が広そうです。

 一方で私が今使っているDPW02ですが,ゲインは12から15dB,NFは2.0dB以下とローノイズが光るスペックです。価格は当時は4300円ですが,現在は3600円くらいまで値下がりしているようです。うむー。

 ノイズの差というのは実は結構大きいことが後々わかるわけですが,ゲインがこれだけ違ってくると,受信安定性も多少は良くなるんじゃないかと思いました。これも後々誤りであることがはっきりとします。

 そもそも,アンテナブースタというのは,テレビの手前に置いて使うものではなく,アンテナの直下に置いて,ケーブルや分配機による損失をカバーするために入れる一種のバッファと考えるべきものです。弱った電波を増幅する機能は確かにありますが,テレビの受信には電波の強さだけが重要なのではなく,ノイズの少なさ,平たく言うと電波の質こそ重要です。

 私のようなアパートでは,各部屋に分配するロスを補うためすでにブースタが入っているはずで,そこから何十メートルも同軸ケーブルで引き延ばされた後の電波を,室内のブースタで再び増幅したところで,一緒にノイズも増幅することになってしまい,電波そのものは強くなっても電波の質は改善しません。

 このあたり,なかなか直感的にモヤモヤするのですが,自分自身へのまとめとして書いておきます。同じくモヤモヤしている方は,辛抱して読んでスッキリしてください。

 まず,SN比についてです。信号とノイズの比率として馴染みのある数字ですが,通信分野ではSをキャリアの強さとしてCN比,もしくはCSNと書くことも多いようです。

 SN比は電力比で示され,信号レベルをS,ノイズレベルをNとした場合,

SN = 10*log(S/N) (dB)

 となります。ま,これはいいですね。

 次に雑音指数NFです。NFはある系における,入力と出力のSNの比を示します。つまり,その系を通ることで増える(もしくは減る)雑音がどれくらいあるのかを示すわけですね。入力の信号レベルをSin,ノイズレベルをNin,出力の信号レベルをSout,ノイズレベルをNoutとすると,

NF = (Sin/Nin) / (Sout/Nout)
= (Sin*Nout) / (Sout*Nin)

 となります。もちろん,それぞれの入力は電力です。

 もし,ある系が発生させるノイズがゼロだったとすると,ノイズの量は増えも減りもしませんから,入力と出力のSNが変化しない,つまりNF=1(=0dB)となります。

 さて,アンテナブースタ,同軸ケーブルや分配器など,チューナーまでのトータルのNFを考えてみます。なぜなら,結局のところ電波の品質,すなわち受信レベルというのは,系全体のNFが低いほどよいことになるからです。

 今,直列に繋がっている機器のそれぞれのゲインをG1,G2...とし,それぞれのNFをF1,F2...とします。全体のNFをFTとすれば,

FT = F1 + ((F2-1)/G1) + ((F3-1)/(G1*G2)) + ((F4-1)/(G1*G2*G3)) + ...
+ ((Fn-1)/(G1*G2*...G(n-1)))

 となります。(各値はdBではなく真数です)

 これを見て分かるように,NFに対する個々の機器のゲインの影響は後段になるほど小さくなります。また,初段のNFとゲインがもっとも系全体のNFに影響を与えることもわかります。

 ということはですね,同軸ケーブルのようにゲインは1以下,ノイズは増えるという装置を初段に置いてしまうと,後段でいくら高性能なブースタを入れてもほとんど効果がない,ということになるわけです。

 逆に,初段にブースタをいれてしまえば,後段に分配器や同軸ケーブルを入れても,あまり影響を受けなくなります。同軸ケーブルの長さを無視できる,分配する数を気にしなくてよい,というのが,アンテナブースタの本来の役割であることがおわかり頂けるでしょう。

 参考までに,いくつかのデータを紹介しましょう。

 まず,パッシブな機器のゲインとNFに対する考え方ですが,例えば分配器は2分配の場合に,4.0dBほどの損失があります。1つのエネルギーを2つにわけるのですから,損失が3.0dB以下つまり半分以下になることがないのは,ごく当たり前の話ですね。

 それで,この分配器のゲインはというと,-4.0dBとなります。ではNFはどうかというと,これは4.0dBとなります。結構なノイズ源になっていますね。

 同じように同軸ケーブルはどうかというと,BS用の5Cタイプ(直径5mmの太いやつですね)で,10mあたり約2dBの損失があります。安いケーブルは損失が大きく,高いケーブルは損失が小さいので,長く引き延ばすなら高価なケーブルを使わないとダメだとわかります。

 もし20mも伸ばすと,そのゲインは-4.0dBとなり,NFは4.0dBまで悪化します。これはなかなか強烈です。

 チューナーにも損失があります。空から飛んでくる電波のエネルギーを消費して信号を得ているわけですから,これも当たり前の話です。いわゆるゲルマラジオってやつは電池がいらないラジオですが,これは電波のエネルギーだけで音まで鳴らしてしまうゆえ,音も小さく感度も低いわけです。

 そのチューナーですが,損失は通常5.5dBと言われています。

 ここで分かるのですが,各部屋に分配されたその先で,複数のテレビやDVDレコーダを繋いで電波が弱った時に,各部屋でブースタを用いると効果がある場合があります。

 もちろん,チューナーの手前にブースタが入っていてもあまり効果がない,というセオリーが変わるわけではありませんが,それでも複数のチューナーを接続して電波が減衰してしまうような状況だと,室内のブースタでもそれを補う役割くらいは期待できるということです。

 さて,2分配器を入れ,同軸ケーブルを20m伸ばした先にチューナーを1つ繋げたケースで,トータルのNFをこれらの数字を使い,ちょっと計算してみると,さっと21.88となります。13.4dBというところでしょうか。

 ここでゲイン30dB,NFが3.0dBのブースタを用意します。最初にアンテナ直下にブースタをいれて,そこから2分配器と同軸ケーブルを経た場合のNFは,ざっと2.02です。ブースタのNFが3.0dB,つまり約2ですので,2分配しても20m伸ばしても,ほとんど悪化していないことがわかります。これはすごい。

 次に2分配器から20mの同軸ケーブルを経て,チューナーの手前でようやくブースタを入れた場合を計算します。すると12.52となります。ブースタなしより幾分良くなっていますが,やはりアンテナの直下が一番良いというのがよくわかります。

 では,今度はブースタをローゲイン・ローノイズのものに変えてみましょう。ゲインは12dB,NFは1.5dBとします。ゲインは先程のブースタの1000倍に対し,16倍まで低くなっています。これだけ低いとさすがに芳しくない結果が出るかと・・・

 まず,アンテナ直下に入れてみます。先程と同様に計算すると,2.70となります。このブースタのNFは1.5dB,つまり約1.4ですのでゲインが低い分,かなり悪化しているのがわかります。16倍程度のゲインだと,2分配とケーブルの損失を補うのは,けっこう重たい仕事だということになりますね。

 次に,このブースタをチューナーの手前に入れてみます。先程同様計算すると,9.73となります。

 比べてみましょう。

 ブースタの種類 アンテナ直下 チューナー手前

続きを読む

地デジPCその後

 地上デジタルテレビへの移行をPCベースで行ったのが6月ですから,もう4ヶ月ほど経過しています。大容量1TBで無尽蔵に録画可能,ダブルチューナーで裏番組もしっかりサポート,xxxがyyyしてzzzなので@@@という点も素晴らしく,残しておきたい番組はMacのturbo264HDでH.264にして保存しています。

 今のところ番組を取り逃したことは少なく,その点では信頼性も低いわけではありませんが,時に復帰に失敗していることがあり,完全に任せられないなあと言う気分があるのもまた事実です。

 当初復帰の速さと仕組みの簡単さからスタンバイを使っていましたが,これだと1週間に一度くらい復帰に失敗します。考えてみると2GBもDRAMがあるんですから,そのうち1bitくらいころっと化けてもおかしくないわけで,それがスタンバイ前の内部状態と食い違っていたら即暴走です。実に危ういです。

 ということで,サスペンドを使う事にしました。仕組みが複雑ですし,デバイスやドライバがちゃんと対応しないと不安定になりますが,休止前の状況をHDDに残す方法であり,復帰時にはすべてのデバイスが一度リセットされる点でも,信頼性としてはこちらが上のように思います。

 結果,復帰失敗は1ヶ月に一度くらいの割合に減りましたが,それでも起きてしまった事実は消えません。

 そこでさらに,復帰後再起動をかける設定を行いました。復帰はあくまで再起動を行うためのトリガに過ぎず,録画はあくまで再起動後の綺麗な体で行うわけです。

 今のところこの方法で問題は出ていません。

 それでも心配なのは確かです。かといって電源を入れっぱなしにするのは,機器の寿命の問題もあるし,それに停電があったら完全にアウトですので出来ませんしね。

 そう考えると,PCではなく,ちゃんと信頼性のある専用機を買うのが筋なのかも知れません。データの融通性の高さをとるか,信頼性を取るか,難しいところです。

 もう1つ心配なのは,故障や破損です。

 汎用品ばかりですので,壊れたら買い直せばいいだけのことですが,問題はチューナーです。xxxをyyyするのに,特殊なチューナーが必要なわけですが,現在私のつ買っている製品は対策が行われており,xxxをyyy出来なくなっています。

 「けいあん!」でその筋に知られるメーカーの製品が,今やxxxをyyy出来るチューナーになっているのですが,私は一応予備機としてこれを9月に1台だけ購入してあります。xxxをyyy出来る事も確認済みです。

 こうして考えてみると,家電品の値段と今回PCを用意するのにかかったお金とを,単純に金額だけで比較して損得を云々するのは間違っているなあと思ったりします。やっぱ信頼性という点で,専用機にはかないませんね。

ページ移動

ユーティリティ

2020年05月

- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 - - - - - -

検索

エントリー検索フォーム
キーワード

ユーザー

新着画像

新着エントリー

過去ログ

Feed