Electronics

2009.01.26

HOWTO – MP3デコーダーを作ろう

Text by kanai

mp3_2009015.jpg
数え切れないほどテクノロジーを駆使していながら、その仕組みに関する知識はゼロか、ほんのちょっとしか溜まってないっていうのもおかしなもんだよね。なんでも分解する精神と、みんなが大好きなメディア形式をもっと突っ込んで知りたいと思う気持ちから、Bjorn EdstromはMP3形式を分析して、独自のMP3デコーダーを一から作るための、最高の解説書を作り上げた。

地球上でもっとも有名なファイル形式でありコーデックであるMP3だけど、これをよく理解しているプログラマーは少ない。エンコーダーもデコーダーも、標準のライブラリーやOSのカーネルみたいに、”他の人”が作ったソフトウェアのクラスに存在している。この記事は、そんなデコーダーの神秘のベールを、必要に応じて、信号処理と情報理論の短い解説をしつつ、はがしていくものだ。加えて、小さくて機能は完全でないけれど、いじくりまわすには最適なデコーダーを作ることができる(Haskellを使用)。

この記事は、ボクがお世話になったCommodore 64のマニュアルを思い出させてくれた。これには、プリンターやモデムなどを買ったときに中に入ってくる6ぺージのユーザーガイドだ。そうしたガイドには、裏表紙にドライバーのコードが印刷されていた。それを自分のプログラムに組み込むことで、そのデバイスが動く仕組みを、使用開始時点にはすっかり理解できた。
今、ボクの机の上には300ボーのモデムよりもずーっとクールなデバイスが置かれているけど、ボクが80年代に遊んでいたデバイスについて知っていたのと同じぐらい深さで、それらについて知識を得ることは、まずあり得ない。とは言うものの、日常使っているテクノロジーの内部を、逐一、隅の隅まで解析して詳しく知ることができれば、さぞ楽しいだろうね。
Let’s build an MP3-decoder!(英語)
– Jason Striegel
原文