ソフト(プログラム)を起動すると言うことはソフトが入ったフォルダ内には複数のファイルが並んでいて、この中で、ソフトの本体といえるのが拡張子拡張子「.EXE」の実行ファイルを起動させることである。デスクトップのショートカットアイコンやスタートメニュから起動の指示を出すと本体の実行ファイルがメモリに読み込まれる。プログラムは、ソフトを実行するのに必要なファイルを、自分の収められているフォルダから次々と探し出してして読み込み、そしてソフトが起ち上がる。言い換えれば各ソフトのフォルダにはいっているのは、ソフトが使うファイルである。
たとえば、各種の画像ファイルは、タスクアイコンなどを表示するために必要であるし、拡張子「.hlp」のヘルプファイルには、ヘルプの情報が入っている。といっても、フォルダ内のすべてのファイルがソフトを動かすために必要なわけではなく、中にはソフトに関する情報を知らせるために用意された文書ファイルや単なるサンプルなども収められている。こうしたファイルは、削除しても問題ない。
複数のソフトを同時に動かす「マルチタスク」機能と一つのアプリケーション上で複数の処理を同時に行う「マルチスレッド」機能がある。
マルチタスクを実現しているのが「仮想マシン(ヴァーチャルマシン)」。これにより、システム内に、あたかもパソコンが何台もあるような状態にして処理をしている。理論的には、各ソフトを別々のコンピュータで処理している状態なので、ソフトのひとつが不具合を起こしても、他には影響はない。トラブルが起きているソフトのみを強制終了させれば、他のソフトのデータを保護できる。
また、「仮想メモリ」も重要な機能である。パソコンはソフトを一度メモリに読み込んでから、メモリとCPUがやり取りをして処理を行うが、複数のソフトを起動すると、メモリはたちまち不足する。そこでハードディスクの空きスペースにファイルを作り、そこでデータをやりとりする仮のメモリとする。この仕組みを「仮想メモリ」、メモリの代わりをするファイルを「スワップファイル」そのファイルにアクセスすることを「スワップ」と呼ぶ。
スワップファイルは、「Windows」フォルダ内にあり、状況に応じてサイズが変わる。作業中にハードディスクからガリガリという音が聞こえたら、スワップしている。ハードディスクからとメモリからとでは、情報を取り出す速度が、ハードディスクからの方がはるかに遅い。そのため、頻繁なスワップは処理能力を極端に低下させる。そのうえ場合によっては、まったく動かなくなることもありうる。頻繁にスワップを起こすようなら、メモリを増設した方がいい。
「OLE(Object Linking and Embedding)」は、ソフトの連携機能で、大きく分けてオブジェクトの「埋め込み」と「リンク」がある。リンクは、複数のアプリケーションのデータを相互に結び付けて、元のファイルが修正されると、リンク先のデータも更新される。一方、埋め込みは、データを参照する機能で、元のデータの変更は反映されない。また、埋め込まれたデータは、埋め込んだファイルの一部になって、ひとつのファイルとして保存される。一方リンクでは、埋め込んだデータと、埋め込まれたファイルは、別のファイルとして保存される。この連携機能が使えると、ワープロに表計算ソフトで作ったデータをリンクさせるなど、使い勝手がぐんと向上する。
ファイル圧縮
一般的な圧縮・展開ソフトには、複数のファイルを1つにまとめる機能(アーカイブ)と、ファイルを圧縮する機能とがある。
まとめるほうのメカニズムは「頭から順にくっつけていくだけ」と単純である。その中に、取り出すときのための情報やファイルの付加情報などもー緒に入れておくわけである。もう一方の圧縮のメカニズムのほうは、これほど単純ではない。圧縮の方法を説明すると
●ラングレス法
もっとも簡単で理解しやすいのが、この圧縮方法である。食事に行ったおり、私たちはよく「ラーメン5つに餃子3つ」という注文のしかたをする。「ラーメン、ラーメン、ラーメン、ラーメン、ラーメン、餃子、餃子、餃子」でもいいが、このほうがずっと簡潔でスピーディーである。
ランレングスは、まさにこのスタイルでデータを簡潔にしていく。たとえば「A」が30個続く場合には、延々と「AAAAAA…」とはせずに、「Aが30個」で終わらせてしまう。運よく中身が「A」だけのファイルだったら、「1MバイトのA」で終わらせることもできるが、そこまで世の中は都合よくできていない。むしろほとんどの場合、圧縮効果はあまり期待できない。が、たとえば単純な色のイラストなどはこれで問題ない。身近なところでは、FAXがこのランレングスと次のハフマン法を使用している。
●ハフマン法
昼の人気メニューには、「揚豆腐の辛しソース煮込みと若鳥の中華サラダ、ザーサイ添え」の代わりに「A定食」という名前を付けておくと、忙しい昼休みにもスピーディーにオーダーをさばくことができ、無用な混乱を招かない。何から何までこのパターンでやってしまうと、逆に混乱してしまうので、頻繁にオーダーが入るものに、短い名前を付けておくのがポイントである。
これを応用したのが、このハフマン法という圧縮である。コードはどれもみな8ビットで表しているが、実際には必ずしもすべてのコードが均等に使われているわけではない。たとえば英文を例にとると、「A」や「E」などが頻繁に出てくるのに対し、「Q」や「Z」などはあまりでてこない。そこで、オーダーの多い「A」や「E」には、3ビットや4ビットなどの短いコードを割り当てて短く表せるようにし、あまりお呼びのかからない「Q」や「Z」には、10ビットとか11ビットというような、本来のコードよりも長いコードを割り当てておく。かくして1000文字=1000バイトの常識が覆り、偏りが顕著であればあるほど、データは効率よく圧縮されていく。
このハフマン法は、相手の偏り方を計測すれば、どのようにも対応することができるので、連続という限定条件下でしか圧縮が働かないランレングスよりも、ずっと応用範囲が広い。このハフマン法を応用した圧縮は、圧縮・展開ソフトでも使われている。
●LZW法
HTML、HTTP、SMTP…。いたるところでさまざまな略語が使われているが頻繁に出てくる単語を、いちいちHyper Text Markup Language、Hyper Text Transfer Protocolなどとやっていたら、面倒で、まして、言葉の説明までいちいちやっていれば、誌面がいくらあっても足りなくなってしまう。そこで、すでに相手が知っていることばを略したり、最初に出てきたときに説明してあとは説明を省いたりしながら、できるだけ簡潔にまとめていく。別のページや他の書籍、記憶、常識など、とりあえず参照できるものがあるのなら、同じことをくどくど書かずに、効率よく圧縮していくことができるわけである。
LZあるいはLZW(最初の開発者であるLempel氏、Ziv氏とそれを改良したWelch氏の頭文字)法と呼ばれる圧縮は、このような参照をたよりに行う技法で、一般に「辞書を使った圧縮」と言われている。さきほどのハフマン法は、出現率によってビット幅を変えたが、こちらは、繰り返し出現するパターンを辞書に登録し、辞書の索引番号で表してしまおうという趣向である(さきほどの「A定食」なども、どちらかというとこちらのイメージであろう)。
このLZ法は、非常に効率の良い高圧縮が期待できることから、圧縮・展開ツールやモデムの圧縮プロトコル(V.42bis)にも使われている。GIFやPDFのファイルなどもこの圧縮技法を使っているので、同じ内容でも、ほかのフォーマットよりもコンパクトなファイルになっている。別な見方をするなら、これらのファイルはすでにかなり効率よく圧縮されているので、圧縮・展開ツールを使ってさらに圧縮しようと思っても、あまり効果が期待できない。
圧縮形式の分類 型式 拡張子 プラットフォーム LHA lzh Winndows/Macintosh ZIP zip Windows Stufflt sit Macintosh CompactPro cpt Macintosh GZIP gz、z UNIX
エンコード(Encode)/デコード(Decode)
インターネットメールでは、画像やプログラムなどをそのまま送ることができない。そこで、画像やプログラムを送る際には、英数字や記号など限られた文字だけを使ったメッセージにいったん変換し、受け取った側がそれを元のデータに戻すという手順を踏んでいる。
このように、変換しなければメールで送れないデータを、「バイナリーデータ」といい、このバイナリーデータは、実はプログラムや画像だけではない。表計算ソフトやワープロソフトで作った日本語の文書ファイルもバイナリーデータの1つで、そのままではインターネットメールで送ることはできない。
このバイナリーデータを文字データに変換する作業を、一般にエンコードといい、その逆をデコードと呼んでいる。エンコードは、あるコードを別のコードに変換すること。デコードは、それを元のコードに戻すことで、圧縮/展開もやっていることはエンコード/デコードである。
が、ここでは、バイナリー変換を「エンコード/デコード」と呼び、「圧縮/展開」と区別することにする。
このエンコード/デコードのプロセスは、最近のメールソフトではたいていが自動的に行ってくれるので、私たちが意識することはないが、時として「なんだこれは?」というような、意味不明の文字列が画面に出てきてしまうことがある。メールソフトで書いたメッセージが文字化けした場合も意味不明になるが、英数字や記号だけの解読不能な文字列が妙に折り目正しくきちんと並んでいる場合には、たいていデコードの失敗である。圧縮/展開と同様、こちらにもいくつかの種類があり、ソフトの対応次第でうまくいかないことがある。
また、ニフティサーブなどのパソコン通信の電子メールとやりとりする場合や、メッセージ主体のネットニュースなどでもしばしば、エンコードされたデータが画面に現れることがある。メールソフトと違って、一般的な通信ソフトやニュースリーダーは、インターネット用のメールソフトのような、変換のしくみは持っていない。
インターネットは7ビットJISコードを前提に設計されている。バイナリーデータは8ビットコードなので、そのままでは送れない。しかし、日本語の文字セットでも、JISコードの場合には、7ビットコードだけで構成されているので、そのまま送ることができる。逆に、英文で使われるアクセント記号やウムラウト が付いた文字、いわゆる拡張文字セット(日本ではカタカナが割り当てられているように国によって異なる)の場合は、8ビットコードになるので、エンコードなしでは送れない。
ホストコンピュータによっては、サーバーがバイナリーメールの変換を行うところもある。
客商売をやっているところでは、お客さんのいるところで「トイレ行ってきます」とは言えないので、よく暗号を使ったりする。業種ごとに、まともには言えないけど伝えたいってことがあって、そんなときには、あらかじめ申し合わせておいた「まともに言えることば」に置き換えて伝える。エンコード/デコードのメカニズムは、簡単にいえば、この置き換え作業である。おおっぴらには通らないものを、いかに置き換えて通してしまうか…その微妙な違いが、あまたあるエンコード方法の違いである。
さまざまな通信経路や通信相手を想定した場合には、使用できる文字セットは7ビットにとどめ、改行コードなどの制御コードも避けるというのが妥当な考えである。加えて、1行を適度な長さにとどめておかないと、ちょん切られてしまう可能性もあると踏んでおいたほうがよい。これだけ条件が狭まると、とるべき手段は、それほど変わらなくなってくる。世の中にはいろいろなエンコーダーがあるが、基本的なやり方は、次の2種類のいずれかになる。
●コードを数字で記述する
もっとも原始的で単純な方法は、コードをそのまま数字で記述してしまう方法である。昔、パソコン通信で使われていた「HC」というコンバーターでは、「7F42B6174E」というように、すべてを16進数で記述する単純なエンコードを行っていた。これだと、1バイトが2倍になってしまうので、効率はすごく悪くなる。
現在もっとも標準的に使われている。インターネットメールの拡張機能であるMlME(MuItipurpose lnternet Mail Extensions ) では、2種類のエンコード方法を規定しており、(エンコード/デコードは、MlMEが持つ機能の1つで、MlMEそのものはもっと広範囲の拡張機能を提供している)そのひとつである「Quoted−Printable」もこの方法を使っている。ただし、こちらは、通らないコードだけを「=7F」というように16進数で表すようになっています。全編通らないコードのオンパレードだと、都合3倍に膨れあがってしまいますが、英文のメッセージの中に、たまに問題のあるコードが出てくるような場合なら、これを使うと冗長をわずかにとどめることができる。
●6ビットにコード化する
もう1の方法は、コードの幅を狭くしてしまう方法である。ファイルは8ビットで一塊のバイトコードが延々と続いているわけであるが、これを無視して、頭から6ビットずつに区切り、6ビットのコードとして使用する。別の言い方をするなら、3バイトを4等分にするわけである。こうすると、名バイトの示す値は、0から63までの64種類の数値に納まることになる。あとは、この64種類の数値に、問題のない適当な文字コードを割り当て直していけばよいわけである。
UNIXの標準ツ一ルとしてスタートし、インターネットでも古くから広く使われてきた「uuencord/uudecord」。これに相当するMacintoshのツールであるBinHex。(BinHexの場合には、テキスト化の前lこ、Mocintoshのデータに不可欠なリソースフォークとディレクトリー情報をワンパッケージにするという大切な働きもある)そして、前出のMIMEに規定されているもうひとつのエンコード方法であるBase64。これらは生まれも育ちも違うが、みなこの方法で、出てくるコードの幅を狭めている。そして、uuencordの場合には、制御コードを避けるために、単純に全体をシフトさせる。BinHexとBase64の場合には、それぞれに、使用する文字コードをもう少し違った形で割り当てている。発想は同じでも、このコードの割り当て方や、エンコードした後の1行の文字数、付加情報の付け方などが微妙に異なり、互換性は失われている。この辺りは、メッセージの個性みたいなものであるから、それぞれの書き方の特徴を押さえておけば、何を使ってエンコードしたかは簡単に判別できる。
MIDIファイル
音源のどの音をどのようにならすかという命令のデータファイルである。だから、MIDIファイルだけでは音をならすことはできない。音源が必要になる。
MIDI音源
MIDIは、音源があって初めて音を再生できる。ヤマハの製品でいうとMU80、MU50、MU10、MU5、などである。また、MIDPLUGが備えているSoftsynthesizerもMIDI音源になる。MIDI音源といった場合は主に音の波形データとそれを加工する機能を含む。音の波形データというのはピアノの音とかトランペットの音など様々な音をサンプリングしたものである。そして、それを加工する機能というのは、例えば、ピアノの音を特定の高さにしたり、音の強さや長さを変えたり、音を揺らしたりなどなど様々な仕事を意味する。
ソフトシンセサイザー
キーボードシンセとかDTM用のトーンジェネレーターあるいはコンピューター に増設するサウンドカードなど、今までのMIDI音源機器は内部に専用の 音源LSIを 搭載していた。この専用LSIが、ROMやメモリから波形デー タを読み取ってきて、様々な加工をした後に、再生がなされるのである。しかし、CPUの 速度 がどんどん向上してきて、いままで専用LSIでやって いたこうした仕事をソフトウェアのみでできるようになった。それが「ソフトシンセサイザー」である。ソフトシンセサイザーをコンピュー ターにインストールするという ことは、様々な音色波形データとそれを 加工するためのロジックをソフトウェアとして、コンピューター にインストールするということである。 これらのいろいろな音色はMIDIデータの命令を受けて自由自在に奏でられ、様々なタイプの曲として再生される。
MIDIのメリット
MIDIのいいところは音自体のデータを含んでいないので、au、wave、aiffなどのデジタルオーディオに比べてファイルのサイズが非常に小さいということである。au、wave、aiffは、音の波形そのもののデータであるが、これをダウンロードするにはどうしても短めのデータにするとか、音質を少し落としてデータを軽くしてやらないといけない。ところがMIDIとソフトシンセの組み合わせの場合、ダウンロードするのはMIDIという非常に軽いデータだけで、音色波形データはコンピュータの中にインストールされている。 だから複雑な曲のデータでもMIDIだったら1曲分を丸々ダウンロードしてもデジタルオーディオに比べればかなりの時間節約になる。また、音色波形が手元にあるので音質を落とすということはあり得ない。さらに、MIDIの場合、後から曲のピッチを変えたり速さを変えたりすることが簡単にできる。シーケンサーソフトを使えば各パートの音量を調節することはもちろん、自分なりに曲をアレンジしたり、さらには自分で曲をつくりあげることも可能である。
音は空気の振動によって発生、伝達する。今まではこの振動をマイクロフォンなどで電気信号に変換することで、アナログの波形として記録していた。アナログからデジタルへ変換する方法として最も普及しているのが、音楽CD(CD-DA)にも採用されているPCM(Pulse Code Modulation)という方式である。デジタル化することによりコピー時の音の劣化がなくなるなどの利点が出てくるが次に述べるサンプリングなどの条件により実際の音との差が出てくる。
PCMは、アナログの波形を時間経過と電気信号レベルという2つの要素を用いて数値化することでデジタル化する。時間経過を分割して数値化することをサンプリング(Sampling = 標本化)と言い、1秒間に何回サンプリングするかの頻度をサンプリング周波数(Sampling Rate )と言い、サンプリング周波数は、Hz(ヘルツ)という単位で表す。また、サンプリングしたそれぞれのデータの電気信号レベルを分割して数値化することを量子化(Quantization)と言い、ビット(bit)という単位で表す。アナログの電気信号レベル値は実数(小数点を伴う数)であるが、量子化したデジタルの値は整数(小数点を伴わない数)である必要があるため、値の近似値化を行なわれる。例えば、ある時点の電子信号レベル値が5.3であった場合は、5(2進数では0101)という値として扱う。
サンプリングや量子化の段階が多いほどアナログの波形に近くなり、原音に近い高音質な録音が可能になるが、その分、ファイルサイズは大きくなる。
音楽CDは、44.1kHz、16bitで録音されている。つまり、1秒間を44,100に分割して数値に変換し、それぞれの電気信号レベルを2^16=65,536段階で記録している。44.1kHzは、人間の普通に聞くことができる音(可聴音)は20Hz〜20kHz程度であり、原理的には再生周波数は録音周波数の約半分になることから決められた。しかし、人間は可聴域を超える音も音色や響きとして感じることができると言われているため、DVD-Audioでは96kHzまで記録できるようになっている。
音声の種類
音声の圧縮
音の波をデジタル化パソコンに取り込む
音楽CDからパソコンに取り込んだWAVEファイルをMP3変換するとき、ソフト上で「サンプリング周波数」や「ビットレート」を選択させられることがあると思う。これがサウンド圧縮のカギである。
音は、大小の揺れ幅を持った波、空気中を流れるアナログの信号である。よく波線のグラフを目にするが、WAVEのようなサウンドファイルは、あのグラフで示される音波の揺れ幅の大きさをデジタル値にして記録したもの。「アナログ信号を毎秒何回取り込むか」を示すのがサンプリング周波数で、「デジタル変換時に取り込む音の大きさの階調の細かさ」を示すのがビット幅。「音を表現するのに、一定の時間にどれだけの情報を使うか」を示すのがビットレートである。
サンプリング周波数の値が大きいほど高い音を、ビットレートが大きいほど元の音に忠実に再生できる。電話程度の音質でサンプリング周波数が8kHz、ビットレートは64kbps。CD並みの音質だとサンプリング周波数44.1kHz、ビットレートは705.6kbpsである。
しかしこれではファイル容量が非常に大きくなる。通常のWAVE形式は、取り込んだままの状態で圧縮していないから、1分で約10MB。70分のアルバム1枚なら約700MBで、650MBのCD−Rに記録し切れない。インターネットでの送受信にも不便である。
人間の耳に聴こえない波を分析して抜き取る
容量を小さくする「圧縮」方法で一般的なのは、人間の耳の性質を利用しで情報を省略する方法である。自然界の音は、単純な音が合成されて出来ている。ベースの1弦の音を例に取っても1つの波ではない。周波数や大きさの異なる複数の音で構成されている。WAVEなど圧縮されていないサウンドファイルは、これをそのまま記録している。
しかし、人間の耳は、近い周波数で大きさが異なる音を聞いた場合、大きな音しか感じ取れない性質があるから、記録されたサウンドファイルを分析、前述の「近い周波数」の組み合わせを探し(通常、必ず存在する)、抜き取っても音質に影響を与えない波を省く。さらにそのデータを数学的な処理で圧縮している。
この方式を取っている代表的なものがMP3である。ほかに、MDで使われるATRACや、BSデジタル放送で利用されるAACなどの圧縮方式がある。どれも「耳の性質を利用してデータを省略する」という基本原理は共通である。
オーディオ圧縮技術の研究は現在も続いている。例えば、新開発のmp3PRO方式を使うと、同じ音量でもデータ容量が従来のMP3の半分程度になる。もちろん、一般のMP3プレイヤーで再生できるし、専用ソフトの「mp3PRO Player」を使えば、よりよい音質で聴くことができる。
動画の種類
一般に動画データを、圧縮せずにそのまま使おうとすると、膨大なデータ量となり、通信回線やデータストレージの容量を圧迫するなどの障害が起きる。そのため、動画の送信時や、映像コンテンツをDVDに保存する際、さらに記録媒体の容量が少ないデジタルカメラや携帯電話での動画撮影などにはコーデックが欠かせない。コーデックには様々な種類があるが、DVD-Videoや地上デジタル放送などに使われるMPEG2、デジカメなどの動画撮影時に使われるMPEG4が代表的である。
- AVI(Audio Video Interleaved )
Microsoft社が開発した、Windowsで音声付きの動画を扱うためのフォーマット。Windows上でマルチメディアデータを格納する際に用いられるRIFFというフォーマットを応用し、連続した静止画からなるビデオストリーム画像データとWAV形式のオーディオストリーム音声データを交互に折り混ぜた構造になっているところから、この名前が付けられている。
一般的にオーディオやビデオデータを含むAVIファイルは、データ量が多くなるため専用のプログラム(コーデック)によって圧縮されている。
- MPEG1(Moving Picture Expers Group)
ビデオCDにも使われている規格。ビットレートは固定で、規格では1.5Mbps程度が想定されている(ビデオCDは1.15Mbps)。MPEG圧縮では動き補償といって差分情報も圧縮する。そのためフレーム単位で編集するのは難しい。非圧縮のAVlファイルに対して、約1/60程度まで圧縮できるが、圧縮をかけすぎるとノイズがかなり目立つ。画質はVHSなみ。拡張子は「mpg」
- MPEG2
DVDやBSデジタル放送の圧縮方法としても知られているコーデック。MPEG1よりも高画質、高音質を実現するため、ビットレートや解像度は可変方式が採用されている。解像度やサイズは720×480ドット、30fpsが標準的。普通のTVサイズのMPEG2の最大ビットレートは15Mbps(DVD−Videoは最大9.8Mbps)だが、より高画質なHDTV品質(25Mbps)にも対応している。
およその目安だが、4.6Mbps程度のビットレートがあれば、動きの少ないテレビ番組であれば、ほぼそのままの画質で保存できる。2.8Mbpsよりビットレートが低くなると、画質にノイズが目立つようになり、1.4MbpsではVHSの3倍モード以下となる。拡張子は「mpg又はm2p」
- MPEG4
携帯電話などの移動体通信やインターネットなどで利用されることを目的とした規格。数k〜数十kbps程度の転送レートでも画質をそこそこ保てるように、画面を部分ごとに符号化するなどの工夫をしている。高ビットレート化の仕組みも用意され、HDTVへの対応が予定されている。
MPEG4の仕様は「プロファイル」と「レベル」によって定義されている。簡単に言うと、プロファイルは圧縮の仕組みを規定したものであり、レベルは、どのサイズの映像をどれだけの比率で圧縮するかを示したものである。
現在のMPEG4に対応した製品群では、名称が同じMPEG4であっても、プロファイルが異なれば再生互換性はない。さらに、プロファイルがそろっていても、レベルが違えばこれまた再生互換性をとれない。
1998年に規定されたMPEG4バージョン1ではプロファイルだけでも10種類近くある。その後のバージョンも含め、いずれかのプロファイルに合致していればMPEG4準拠をうたうことができる。このため、MPEG4対応の機器間で再生互換性がとれない問題が生じる。
- MotionJPEG形式
アナログキャプチャでは一般的なコーデック。静止画で使われているJPEGを動画用に最適化したもので、編集用素材のキャプチャに適している。MotionJPEGという標準規格はなく、フレーム単位で圧縮をかける方式の総称として使われている。そのため画質や圧縮比は製品によりまちまちだ。Motion−JPEGで圧縮したデータを再生するには、専用のコーデックが必要になる。
- ストリーミンクメディア
ファイルの一部をバッファに読み込むだけで、再生できる形式のファイル。インターネットでの配信用に利用されている。ファイル全体をタウンロードせずに再生できるのがメリット。映像用のストリーミンクメディアには、マイクロソフトのWindows MediaVideo形式や、リアルネットワークスのRealMedia形式、アップルコンピュータのQuickTime形式などがある。圧縮率や画質は各形式により異なる。またエンコードには専用のコーデックが必要である。
- DivX5
Project Mayoによって開発されている、オープンソースのMPEG-4ビデオコーデック(圧縮伸張ソフトウェア)。通常のバージョンは無償で利用できる。当初のバージョンはMicrosoft社のMPEG-4コーデック「MS-MPEG4v3」のコードの一部を流用したものだった。その後、圧縮・展開プログラムを書き直し、現在のバージョンに至っている。2001年1月にはコードが公開され、オープンソースソフトウェアとなった。当初はWindowsでしか利用できなかったが、現在ではMac OS版やUNIX版も開発されている。DivXは無償で利用でき、圧縮効率に優れ、動作速度も速いことから人気を博している。
ビットレートは0.7〜1.5Mbpsと低めながらも、2〜3MbpsのMPEG1に匹敵する画質になっている。ただしデコードにはMPEG2と同等のCPUパワーが必要である。拡張子は「avi」。
動画の記録
●デジタルの場合
(1)映像のキャプチャ ↓ DVカメラの映像などをパソコンのハードディスクに取り込む作業 (2)MPEG-2形式に変換 ↓ 取り込んだ映像をタイトル、BGMなどの効果を付けて編集し直し、MPEG-2形式の動画ファイルに変換 (3)オーサリング ↓ 素材となるMPEG-2形式の動画ファイルを、DVD-Videoの規格に沿って再構成しディスクに書き込みできるようにする (4)ライティング DVD-RメディアなどにDVD-Video形式で書き込む
●アナログビデオの場合
アナログビデオの場合には、デジタル変換するための「ビデオキャプチャユニット」などと呼ばれる周辺機器が必要。
ビデオデッキまたはビデオカメラ → キャプチャユニット → PC
ビデオ映像の取り込みは、実際のビデオの長さと同じ時間がかかる。デジタルデータであれば、転送速度によって何倍速かで取り込むこともできるが、アナログビデオがソースの場合はアナログビデオの収録時間と同じ時間がかかる。 MPEG-2形式でDVDクオリティにした場合、おおまかな目安としては、10分間あたり400Mバイトくらいを使う。
録画:Movie Albumなど
オーサリング&ライティング:DVD MovieWriterなど
再生:Power DVDなど
動画処理では、1秒間に30コマあるいは60コマの画像を処理する。すなわち、約33.3msごとあるいは約16.7msごとに1コマのデータを処理することとなる。この1コマごとの時間枠をフレーム(正確には時間フレーム)と呼ぴ、その周期をフレームレートと呼ぶ。フレームごとに速読して処理が行われることから一連の処理はストリーム処理と呼ばれ、これと同様の特性を持った処理はストリーム型処理と呼ばれる。音声(音楽も同じ)処理もストリーム処理の一種である。
ストリーム処理では、全フレームに一定の処理をすることが事前に決まっている。このため、フレームに対応してプロセッサの利用を事前に予約しておき、確実にフレームごとの処理が実行されるようにスケジューリングする方法が用いられる。予約された時間になったら、予約した処理を実行する。これをフレーム間隔で繰り返すのである。定例会議のために定期的に会議室を予約しておくのと同じ考え方である。予約に従ってスケジューリングすることから、リザベーション方式のスケジューリングと呼ばれる。
処理がフレームからあふれるとストリーム処理で扱うデータは、動画にしろ、音声にしろ、比較的サイズが大きい場合が多い。何分間、何時間のデータとなるからである。このため、動画や音楽のデータをDVDやCDなどのメディアに格納したり、ネットワークで配信したりする場合には圧縮(エンコード)して、データ量を減らして取り扱う。圧縮されたデータは、再生するときに伸長(デコード)して使用するのである。
画像データや音声データを圧縮したり伸長したりする処理は元の画像データや音声データの内容によりその処理時間が異なるのが一般的である。元のデータ内容により圧縮率が異なり、結果として扱うべきデータ量も異なったり、圧縮や伸長の処理量も異なったりするからである。このため、ストリーム処理の処理時間はフレームごとに異なることになる。また、「割り込み」はストリーム処理中にも発生するため、割り込まれたストリーム処理の見掛け上の処理時間が変動する。
これら処理時間の揺らぎを考慮して、ストリーム処理とその他の処理がフレームに収まるようにプロセッサの性能を選択するのだが、コストを考えると理者的な最大値を想定して性能に余裕のあるプロセッサを選択することは通常はできない。このため最悪の場合には処理がフレームの時間枠に収まらずにはみ出してしまうことがある。一時的に処理があふれる状態であることから、トランジェント・オーバーロードと呼ばれる。
トランジェント・オーバーロードが発生すると一画像が乱れたり音がひずんだりする。さらに、トランジェント・オーバーロードの状態を放置しておくと、その状態が次のフレーム、その次のフレームへと連鎖してしまうこともある。
このため、処理がフレームに収まらないときには通常、収まらなかった処理を中断するなどして、次のフレームの処理に進めてしまう方法がとられる。乱れを1フレームに収めてしまう戦略である。 DVDプレーヤーなどで画面に時々四角いブロックがちらつくことがあるが、これはトランジュント・オーバーロードによってフレームの処理を中断したため、デコード途中でコマが表示されてしまったケースである(他の理由によって同様な症状が出る場合もある)。
複数のストリーム処理が同時に実行されることもある。動画と音声、ステレオ音声の右と左、録画と再生などである。 この場合も、同一のフレームレートを持つ処理は各フレームの中で、それぞれに対応した複数の処理を順番に実行させる。定例会議の議題が複数あるのに相当する。
複数の異なるフレームレートを持つ処理を同時に実行する場合もほぼ同じに扱える。毎週の定例会議、毎月の定例会議、5、10日の定例会議のための会議室を予約するのと同じだ。
通常のデジタル家電では、ストリーム以外の処理も同じプロセッサが担うことが多い。設定、予約、編集などの機能に対応した処理などである。フレ一ムよりも長い時間の時間制約しか持たない処理はストリーム処理が完了した後のフレームの残り時間でも処理することができるからである。当然、これらの処理は予約の時間になると、予約しているストリーム処理に追い出されることになる。
定例会議は会議室を予約して行い、それ以外の打ち合わせは会議室の空いているときに行うのと同じ使い方である。空いている会議室で打ち合わせを始めても、予約している会議が始まるときには、「すみません、この会議室予約しているんですが‥」と会議室を追い出されるのも同様である。
通常、リザベーション方式のスケジューリングでも、予約されない時間は優先度ペース・プリエンプティプ方式などのスケジューリングによって他の処理を実行する。予約した処理は最優先で実行され、それ以外の処理は優先度ベースでスケジューリングされることになるので、リザベーション方式は優先度ベース−プリエンプティプ方式に、最優先度の処理を開始する時間と最大の処理時間を保証したスケジューリング方式と見ることもできる。
フレームの残り時間はストリーム処理の内容によって大きく変動する。複数のストリーム処理を一つのフレームで実行する場合には、その変動幅も大きくなる。このため、残り時間に応じて、優先度の低い処理の実行を制御する方法が採られる。時間制約が緩い処理の実行を後回しにしたり、処理量の少ない処理に切り替えたりするなどして残り時間に合わせるのである。
システムの状況に応じて処理内容を変更する、すなわち、処理によって提供されるサービスの品質を制御することから、 このような処理はQoS(Quality of Service)制御と呼ばれる。装置の機能の一部の品質を低くすることで、装置全体としての品質を極力維持する戦略である。
リザベーション方式のスケジューリングでは、最優先の処理は事前に予約して実行されるため、QoS制御を実
行するのが容易である。装置で最低限維持したい機能の処理を予釣しておけばよいからである。
「トーン」や「彩度」とは色を表すための指標である。色の表現方法は何通りもあるが、その一つとして「色相」「彩度」「明度」という色の3属性で表す方法がある。「色相」は色の種類や色味、「彩度」は色の鮮やかさ、「明度」は色の明るさを示し、それぞれ数億化することで色を客観的に扱える。
一方「トーン」は、「明度」と「彩度」の組み合わせによって「色の調子」を表すものである。「やわらかい」「明るい」「ヴィヴイツド」「暗い」などにグループ分けされ、色彩の印象を左右する指標となる。
これらは色を組み合わせる際に基準とされることが多く、たとえば同じトーンの色を組み合わせて使用すれば、印象が一つにまとめられるので調和がとりやすくなる。また、同じ色相系で明度を変えたり、同じ彩度・明度で色相を変えるなど、一つの属性だけを変えた色を組み合わせると全体に統一感を持たせることができる。さらに一定のリズムで変化させると(これをグラデーションという)調和のとれたリズム感のある配色となる。
図形を書いたり、編集するためのフォーマット
ドロー系
直線、4角形。図などを組み合わせて書いていくベクトルタイプでデータが数値で表現されるので、ドットにくらべて正確な描画が可能。滑らかな曲線を描いたり、図形を変形するのに向いている。画像を拡大しても画像が荒れない。またデータ容量もペイント系に比べて少量で済む。拡張子は.wmf .aiなど
ペイント系
画面のドット単位で作図を行うため、1つ1つの点は、描いたり消したりできるので、細かな表現に適している。カラーでは、ピクセルごとに色のデータを保存する。画像を拡大すると縁がギザギザになり画像が荒れる。またデータ容量は大きくなる。デジタルカメラで撮った写真はこの方式で保存されている。拡張子は.bmp .jpg .gif .png .tif .icoなど
CAD系
ドロー系のグラフィック機能を上げて設計に使用する。拡張子は.DXFなど。
特徴
ドロー系 ペイント系 記録方式 絵を.点(ピクセル)の集まりとして記録 図形の基準となる点の座標、線、塗り色などを数値データで記録 特徴 鉛筆や筆などを模したツールで手書き風に描ける
ピクセル単位で自由な色に変更輪郭線と塗色を指定して図形を描く
拡大/縮小しても画像が荒くならない
図形単位での修正ができる弱点 漬けイ単位の変更、拡大/縮小が難しい
画像が大きいほどファイルサイズが大きくなる写真や細密画のような複雑な色合いの画像は扱いにくい
自由な曲線を描くには練習が必要適した用途 手書き風イラスト、写真の加工 線画、模式図、フローチャート 主な拡張子 BMP、JPEG、PNG、TIFF SVG、EPS、AI 代表的なアプリ ペイント、GIMP、Photoshop Inkscape、Illustrator
BMP(Bit Map Picture )形式
Windowsで標準的に使われている画像形式。無圧縮なために、ファイル容量が大きいのが難点。Windowsの壁紙などに使われている。
JPEG(Joint Photographic Experts Group)形式
静止画像データの圧縮方式の一つ。ISOにより設置された専門家組織の名称がそのまま使われている。圧縮の際に、若干の画質劣化を許容する(一部のデータを切り捨てる)方式と、まったく劣化のない方式を選ぶことができ、許容する場合はどの程度劣化させるかを指定することができる。データの圧縮は元の画像をブロックごとに分解し、人間が識別できない微妙な色の差を省略することでおこなっている。そのため、グラデーションやなめらかな色調の変化には比較的忠実で、写真に適していると言われている。方式によりばらつきはあるが、圧縮率はおおむね1/10〜1/100程度。写真などの自然画の圧縮には効果的だが、コンピュータグラフィックスには向かない。JPEG画像をつなぎ合わせて動画にした方式をMotion-JPEGという。
たくさんの色を表示しつつ、圧縮をかけて軽くすることができるので、写真画像にもっとも適している。ただ、圧縮率を高めるほど、画像の劣化が激しくなる。また圧縮して劣化したものは元には戻らない(不可逆圧縮)。また同じファイルに対して何回も保存を繰り返すと、徐々に画質が劣化するので気をつける。大きさを変えたりいろいろと試したい場合は、常にオリジナルのファイルから作業をして保存するか、JPEG画像をいったん画質の劣化がないBMP形式やTIFF形式に変換した方が無難である。補正や編集をすべて終えたあとにJPEG形式に戻せば、圧縮による無駄な劣化を防ぐことができる。デジカメ画像やWebでの写真画像に利用されている。
JPEGは、小さなサイズの画像を保存するのには適していない。JPEG形式は数KBのヘッダを含むため、圧縮効果が期待できない。
GIF(Graphic Interchange Format)形式
アメリカのパソコン通信ネットワークCompuServeで画像交換用に開発された画像形式。JPEGと共にインターネットで標準的に使われる画像形式である。256色までの画像を保存することができ、JPEGが苦手なイラストやアイコンなどの保存に向いている。GIF形式のファイルは、保存するときに表示できる色の数を選ぶことができる。 動画を保存できるアニメーションGIFや、透明色を指定して背景イメージと重ね合わせることができるトランスペアレントGIF、全体をダウンロードしなくてもイメージの確認ができるインターレースGIFなどの拡張仕様がある。
同じ色のかたまりが多いほど圧縮率が高いため、イラストやアイコンなど線や面の輪郭がはっきりしていて、比較的少ない色数の画像に適しておりファイルの容量もだいぶ軽くなる。とても小さい写真のサムネイルを作ったときなど、あまり色数を必要としない場合に、写真であっても意図的にGIF形式で保存する場合もある。
現在では、ボタンはCSSで装飾した方が手間が無い点やWebフォントの登場、後継として開発されたPNGの使い勝手の良さもあり、使い所が限定されてきた感のある画像形式でもある。
TIFF (Tagged Image File Format)
Aldus社とMicrosoft社によって開発された画像データのフォーマット。画質を劣化させることなく圧縮できる。1枚の画像データを、解像度や色数、符号化方式の異なるいろいろな形式で一つのファイルにまとめて格納できるため、比較的アプリケーションソフトに依存しない画像フォーマットである。 この画像形式にはさまざまなバリエーションがあるため、互換性にやや問題がある。Safari以外の主要ブラウザで表示できず、データ容量も大きい
何度もレタッチをチャレンジしたいような元の写真の保存や、これぞ傑作というような作品、大きなサイズでプリントをしたい場合の保存に適しているといえる。
PNG (Portable Network Graphics)
JPEGやGIFに代わってWWW上で広く使われることを目指して開発された。GIFと同じ256色を扱う規格(PNG8)とJPEGと同じフルカラーを扱える規格(PNG24)、さらにフルカラー+256色の透明色を扱える規格(PNG32)がある。Unisys社に特許料を払わなければ対応アプリケーションソフトを開発できないGIFの問題を避けるため、圧縮アルゴリズムにはライセンス料のいらないZipを採用している。また、フルカラーの自然画を劣化無しで圧縮できる、1ピクセルあたりの情報量(色深度)として48ビット(赤青緑それぞれ16ビットずつ。280兆色)まで扱える、各ピクセル毎に透明度を指定できる、ガンマ補正のパラメータを画像に持たせられる、などの特長がある。WWWに関する標準化団体W3Cによって推奨されている。
ファイル形式 | 拡張子 | 色数 | 圧縮 | 透過 | 用途 |
JPEG | jpg、jpeg | 1677万色 | 圧縮(不可逆) | 不可 | 写真 |
GIF | gif | 256色 | 圧縮(不可逆) | 一色のみ可 | イラスト、ロゴ、アニメーション |
PNG | png | 256色または1677万色 | 圧縮(可逆) | 一色又は256色の透明色 | イラスト、ロゴ |
TIFF | tif、tiff | 1677万色 | 非圧縮 | 印刷用画像 | |
BMP | bmp | 1677万色 | 非圧縮 | Windows標準 | |
HEIF | heif、heic | 約10億6433万色 | 圧縮(可逆) | 写真 | |
RAW | aw、cr2、ne | 約4兆3980億色 | 非圧縮 | 一眼カメラの撮影画像 |
ランタイムとは、ソフトを実行するときに必要なプログラムの集まりで、正式にはランタイムモジュールという。プログラムを実行するために必要な命令を集めたファイル一式のことを呼ぶ場合に使う。
ランタイムを使うのは、プログラム本体のサイズを小さくすることができるメリットがあるため。また、同じプログラムで開発したソフトであれば、一度作成したランタイムを使用することができるので、開発の手間なども省くことができる。
現在、プログラムを作るプログラム言語として「VisualBasic」やJAVA」などがある。これらのプログラム言語には、開発者の作業を手助けするための「ランタイム」が数多く用意されている。
例えば、VisualBasicを使ったオンラインソフトでは、ダウンロードの時間を短縮するためにランタイムが同梱されていないことがある。このようなプログラムを利用する場合は指定されたランタイムを用意する必要がある。通常は、ダウンロードするランタイムがヘルプなどに記されているので、それをメーカーなどのサイトからダウンロードすればよい。また、多くのランタイムはライセンスの範囲内であれば、無料で自由に使うことができるようになっている。