Foobar2000

foobar2000（フーバーにせん）は、Peter Pawlowskiが開発したフリーウェアのメディアプレーヤーである。ファイルの再生の他、タグ編集機能、Media Libraryと呼ばれるタグ情報のデータベース、ファイルの管理機能などを持つ。
概要.
foobar2000は再生のみの単なるオーディオプレイヤーではなく、ファイルやタグの管理、Media Libraryと呼ばれるデータベース機能、様々なコンポーネントによる拡張によって、非常に高機能になるソフトウェアである。サポートされるファイルはオーディオファイルのみで、ビデオファイルは一切サポートされていなかったが、サードパーティー製のコンポーネント開発によりビデオファイルの再生も可能となった。また、Winampのようなスキンに対応しない。略称はfb2kや、後半の"2000"を略してfoobarとされることが多い。
foobar2000はWindows XP（SP2以降）、Vista、7、8、8.1、10およびServer 2003、Server 2008、Server 2012で動作する。version 0.9からWindows 9x系のサポートが除外され、version 0.9.5からWindows XP以降の環境をサポートするようになり、そのためWindows 2000がサポートされなくなりインストールができなくなっている。
理念.
foobar2000の開発当初は、スキンをサポートせず、各機能をモジュール化し、高音質なデコード、Unicodeのフルサポート、全ホットキーを使用できグローバルホットキーも使用可能なキーカスタイマイズなどが第一として設計されていた。特にWinampとの差別化が徹底されており、スキンをサポートせずビジュアルより機能性を重視したことと各機能のモジュール化は、Peter Pawloskiの高い理念である。
開発とサポート.
歴史.
Peter PawlowskiはNullsoftで働いており、Winampのコア部、Ogg VorbisのデコードプラグインやDirectSoundやDiskwriterなどのプラグインを設計した。当時、Peter PawlowskiはWinamp3の開発にいた。しかし、Winamp3のモジュール化されていない肥大化した設計やスキンの設計に力を注ごうとする姿勢に疑問を持つようになり、Nullsoftで働く意欲を無くし、2002年の晩秋、同社を退社した。その後Peter Pawlowskiは、フリーランスでfoobar2000を開発することを決意する。
2002年12月20日、いくつかのバージョンを経てversion 0.3とSDK、およびHydrogenaudioのドメイン内に設置された公式サイトがアナウンスされた。
Hydrogenaudioとfoobar2000.
foobar2000はPCオーディオ全般を扱うHydrogenaudioと呼ばれるフォーラム内で開発が行われており、Peter Pawlowski以外にもfoobar2000の開発に携わっているメンバーがいる。Peter Pawlowskiはフォーラム内でPeterと名乗っている。フォーラムでは、foobar2000本体やサードパーティー製コンポーネントの開発、ユーザーサポートなどが行われている。フォーラムは非常に巨大で連日多くのユーザーが議論している。また、HydrogenaudioのWikiにfoobar2000専用のページも存在する。
日本では、foobar2000 wikiが存在し、foobar2000についての日本語の解説が掲載されている。またトップページでは、foobar2000本体やコンポーネントの更新状況の速報を見ることができる。
Hydrogenaudioとサードパーティー製コンポーネント.
foobar2000では、サードパーティーによるコンポーネントの開発が盛んである。
制作されたコンポーネントは製作者によってHydrogenaudio内のフォーラムでアナウンスされ、ユーザーによるバグ報告などやそれに伴う製作者のバージョンアップの報告がされる。また、サードパーティーによる新しいコンポーネントが製作者によってHydrogenaudioでアナウンスされなくても、ユーザーがフォーラム内にトピックを立て、そのコンポーネントについて議論されることもある。
特徴および長所.
豊富なコンポーネントと自由な拡張.
foobar2000はコンポーネント　(components)　と呼ばれるモジュールを本体に追加していくプラグイン形式のメディアプレイヤーである。機能の多くはコンポーネントで分担されており、ユーザーは必要なコンポーネントを取捨選択することで、foobar2000をシンプルにも高機能にもできる。
公式のインストーラの中には、そのまま便利にfoobar2000を使用することのできるコンポーネントが含まれているが、サードパーティーが開発し、公開しているコンポーネントにより、さらなるfoobar2000の拡張が可能である。コンポーネントは再生形式を追加するものから、foobar2000のインターフェイス部を全て入れ替えることができるものまで様々である。
コンポーネントに必要なSDKは公式サイトからダウンロード可能であり、SDKはBSDライセンスによって配布されている。
foobar2000のコンポーネントは主に以下のように分類される。
コンポーネントのBAN.
コンポーネントによる多くのクラッシュ報告や危険な動作や挙動の不審な動作がPeter Pawlowskiの元に寄せられた場合、問題のあるコンポーネントとしてHydrogenaudio内のフォーラムに掲載される。改善が見られない場合や、SDKのライセンスに違反していた場合は、コンポーネント自体が本体にロードされなくなる（Banned componentsとなる）。
Unicodeをフルサポート.
Unicodeが表示できるほとんどの国の言語に対応している。そのため、foobar2000では言語の違いによるトラブルが発生しない。
ただし、その言語を表示するためのフォントが必要となる。
Media Library.
Media Libraryとはfoobar2000が管理するデータベースである。
指定したフォルダのファイル(ワイルドカードを用いて拡張子で指定できる)のタグ情報を溜め込み、Media Library SearchやAlbum Listなど様々なコンポーネントから情報を利用できる。Media Libraryによって、foobar2000の様々なコンポーネントはタグ情報を高速に読み込み、そして利用ができ、また膨大な数のファイルも軽快に管理できる。
また、指定したフォルダを常にモニタリングしているため、ファイルが追加、削除されてもMedia Libraryは対応することができる。
Media Library Search.
Media Libraryに登録されたタグ情報を元に、インクリメンタルサーチで目的のファイルを検索する機能。
Media Libraryによって、膨大な数のファイルの中から瞬時に目的のファイルを探すことが可能。また、Query Syntaxと呼ばれる書式を使用し検索することによって、AND検索、OR検索、イコールや大なり、小なりを使った検索、特定のタグの値のみからの検索など、高度な検索も可能。
Album List.
Media Libraryに登録された全ファイルをツリービューにして表示できるコンポーネント。公式インストーラに含まれている。
Album Listのウインドウから使用するか、またはDefault User InterfaceではUI Elementにもなる。ツリーはTitle Formattingを使用して自由に組み変えることができる。また、Media Library SearchのようなQuery Syntaxが使用可能であるFilterと呼ばれる機能があり、これを使用することでツリーの内容をフィルタリングすることができる。
Title Formatting.
Title Formattingとはfoobar2000がサポートしているスクリプト形式である。
これを使用してインターフェイスに表示する情報を柔軟かつ自由に編集することができる。タグの値を表示することから、if文、計算、表示する色の指定、文字列の操作などができる。また、Title Formattingはユーザーインターフェイス以外にも他のコンポーネントからも使用できる。
ファイル操作.
公式インストーラに含まれるコンポーネントFile Operationsによって、ファイル操作を行うことができる。
機能は、ファイルの移動、コピー、名前の変更、削除がある。名前の変更の機能は、Title Formattingを使用した柔軟にファイル名を指定できる。また、ファイル移動、コピー、名前の変更の機能は、操作をプリセットとして保存することが可能。これによって、複数のよく使う機能を素早く呼び出すことができる。
タグとcueシート.
MP3ファイルのID3タグであるID3v2他、各フォーマットのタグに対応し読み書きができる。cueシートにも対応している。
タグは全てUnicodeで書かれる。
ネットワークのサポート.
foobar2000は本体でHTTPのサポートをしている。
また、サードパーティー製のコンポーネントmsliveを導入することでMMSプロトコルやReal Time Streaming Protocolに対応することができる。
また、再生中の曲情報をLast.fmやPlaylog（サービス終了）、Twitterなど、多くのウェブサービスに公開・送信できるサードパーティー製コンポーネントも存在する。
高機能なタグ編集.
多くのファイルのタグを高速かつ便利に編集できる。
標準では、カラムを使用したインターフェイスで編集でき、Media Libraryのデータベースから値を自動補完する機能を持つ。またトラック別の複数の値も処理できる。
公式サイトが提供しているMasstaggerを使用することによってさらに高機能になり、ファイル名からタグの値を指定したり、与えられたテキストを処理しタグの値を推測する機能などが追加される。Title Formattingも使用可能である。また、それらの処理を組み合せて同時に複数の処理を行ったり、それらをスクリプトとしてMasstaggerの設定に保存したり、外部ファイル (Masstagger Scripts) として保存、インポートをすることができる。
ギャップレス再生のサポート.
対応する全ての非圧縮・可逆コーデックとVorbis、Speex、Opus、Musepack、MP3（LAME方式およびiTunes方式）、AAC（iTunes方式およびNero Digital方式）のギャップレス再生に対応している。
MP3に関しては、Edit MP3 gapless playback informationでLAME MP3 Info tagのギャップレス情報を書き換えることが可能。
ReplayGainのサポート.
ファイルを再圧縮させることなく音量を変えることのできるReplayGainに対応している。
標準対応形式はもちろん、Inputコンポーネントで拡張したファイル形式にもほぼ対応しているので、ほぼ全てのファイル形式で利用できる。設定を変更することにより、1トラック用のタグ (Track-gain)、アルバム全体用のタグ(album-gain)、どちらのタグで音量を調節するか選択できる。また、公式インストーラに含まれているコンポーネントであるReplayGain Scannerをインストールし、使用することによって、ファイルの解析とタグ付けが可能になる。
Converter.
ファイルをWAVまたは他形式のファイルにエンコードしたい場合に使用するコンポーネント。
デフォルトでは、FLAC、MP3、AAC(MP4)、Musepack、Ogg Vorbis、WavPack、Opusのエンコーダがプリセットに含まれており、MP3はLAME、AACはNero AAC Encoderを、他は純正のエンコーダを設定すると使用できる。またコマンドライン経由でプリセットに登録されている以外のエンコーダを使うことも可能であり、非常に柔軟なエンコードが可能である。設定ではエンコードしたファイルにディザリングをかけたり、DSPコンポーネントを指定することもできる。量子化ビット数（ビット深度）を指定することも可能であり、量子化ビット数は8bit、16bit、24bit、32bitが選択可能である。
加えて、foobar2000のTitle Formattingを使用して、柔軟に指定できるファイル名をエンコードしたファイルに付けることができる。
どのような形でファイルをエンコードするかもユーザーが設定することができる。複数のファイルをエンコードする際、ファイルを一つずつ出力したり、複数のファイルを一つのコンテナにまとめたり、またファイルを全て1トラックにすることもできる。また、指定した長さの時間にファイルをエンコードすることも可能であり、ショートトラックを作成するのに便利である。最後にそれらのファイルをReplayGainで解析し、タグを付けることもできる。
マルチコアCPUへの対応.
ConverterでのエンコードやReplayGainの解析において、foobar2000はマルチコアCPUに対応しているため、複数のコアを使い高速に動作することができる。シングルコアにしか対応していないエンコーダであっても、foobar2000が自動的にコアを割り当て、複数のファイルを同時に処理する。
ただし、複数ファイルを同時に読み出しと書き出しを行うため、CPUの速度以上にストレージデバイスへの負荷が高くなる傾向がある。HDDに比べて高速なSSDを使用することや読み出しと書き出しをそれぞれ別のHDDとすることで改善されるものの、1基のHDDのみで処理を行う場合においては、CPUのコア数によらずストレージデバイスのI/O制限で処理速度の頭打ちが発生することがある。これは特に可逆圧縮のようなファイルサイズが相対的に大きなファイルを取り扱う際に顕著である。
オーディオCDのサポート.
公式インストーラに含まれるCD Audio Decoderによって、オーディオCDの再生、リッピングができる。
freedb Taggerをインストールしていれば、再生、リッピングの際にfreedbのサーバにアクセスし、オーディオCDの情報を取得できる。リッピングはConverterと連携することによって、リッピングと同時にエンコードが可能。設定でドライブごとの正確なオフセット値を指定することで、CDのデータと全く同じ、完全なリッピングをすることができる。
オーディオCDの作成.
公式サイトからダウンロードできるAudio CD Writerを導入し、使用することによってオーディオCDを作成できる。
Inputコンポーネントで対応しているファイルであれば、全てのファイルをfoobar2000で処理しオーディオCDにすることができる。
version 3.0以前はNero Burning ROMの機能を使いオーディオCDを作成していたためNero Burning ROMのインストールが必要であったが、version 3.0以降はNero Burning ROMがインストールされていなくても、Audio CD Writer単独でオーディオCDを作成できるようになった。
豊富なoutput.
foobar2000本体は、WASAPI共有モードおよび排他モードをサポートしているが（バージョン1.6から共有モードでの出力が既定。バージョン1.6.7からコンポーネントを必要とせず単体での排他モードでの出力に対応）、公式サイトからダウンロードできるコンポーネントにより、ASIOなどDTMなどで使われている先進的な出力を使用できる。これらによって、カーネルミキサーを通さない出力や低レイテンシーが期待できる。
また、出力ビット深度も選択できる（DirectSound出力の場合はWindows側の設定に応じて自動で決定される）。
freedbのサポート.
公式インストーラに含まれるコンポーネントのfreedb Taggerによって、freedbへアクセスができる。
設定により目的のfreedbサーバを選択することが可能。また、CDのみでなく、ハードディスクに保存されているファイルでもfreedbを使用することができる。
インストールと設定ファイルの保存場所の指定.
公式インストーラでのインストールの際、指定するフォルダにfoobar2000をインストール (Standard installation)、またはUSBメモリなどポータブルメディアからの利用に便利なインストール (Portable installation) のどちらかが選べる。Standard installationでは、シェル拡張機能、ファイル関連付けを行うことができる。
また設定により、設定ファイルをfoobar2000のインストールフォルダに置くか、Userフォルダ以下の各ユーザー毎に設定ファイルを保存するかを選択できる。基本的に、インストーラの情報以外レジストリは使用せず、foobar2000の設定は全て上記の指定したフォルダに独自のバイナリファイルにして保存される。
インターフェイス.
インターフェイスは公式インストーラに含まれているDefault User Interface、またはサードパーティーのコンポーネントであるColumns UIのどちらか主に使われている。
Default User Interface.
foobar2000のデフォルトのインターフェイス。
現在はカラムを使用したインターフェイスだが、foobar2000 version 0.9.5以前はカラムを使用せず、Title Formattingを使用して1トラックを一行ごと、全てテキストでファイルのタグなどの情報を表示していた。また、version 0.9.5以降、UI Elementと呼ばれるモジュール群をfoobar2000のウインドウ内に組み立てることにより、ユーザーが自由にインターフェイスを作成することができる。インターフェイスの設定はファイルに書き出すことができ、管理することができる。
UI Elementは各UI Elementを格納するContainer(タブによってUI Elementを切り替えることができたり、上下または左右にUI Elementを配置させるSplitterなどがある)や、プレイリスト部、再生中のファイルのアルバムアートが表示できるAlbum Art Viewer、またUI Elementに対応したコンポーネント(Album Listなど)を設置できる。
Columns UI.
サードパーティー製のインターフェイス部コンポーネント。
Default User Interfaceより以前からカラムを使用しており、UI extensionと呼ばれるUI Elementと同等の機能を持つ。ただし、UI extensionに対応しているコンポーネントはDefault User Interfaceより非常に豊富で、それらのコンポーネントを必要として Columns UIを使用するユーザーも多い。結果、Default User Interfaceを使用するよりグラフィカルなインターフェイスを構築することもできる。
ポータブル機器のサポート.
サードパーティー製のコンポーネントであるiPod managerやfoo-androidsync によって、foobar2000でiPod、iOS端末（Ver.4.3.5まで）やAndroid端末を管理することができる。
iPodシリーズのほとんどにおいて、転送にはiTunesのインストールを必要とする。
機能は、iPodへのファイルの転送・管理、iPod未対応の形式に対して転送時にエンコードする機能（MP3 (LAME)、AAC (Nero)、Apple Lossless (ffmpeg) のプリセットが用意されている）、リプレイゲインをサウンドチェックに変換、ギャップレス情報の転送（LAME MP3、Nero AAC、iTunes AACに対応）、アルバムアートの転送、プレイリストの管理などである。
フリーウェア.
foobar2000は完全なるフリーウェアである。
しかし、SDKを除いてオープンソースではない。Peter PawlowskiはHydrogenaudioのトピックでfoobar2000がオープンソースになることを明確に否定し、foobar2000がオープンソースになることのメリットは何もないと話している。
対応ファイル形式.
標準で対応している形式は以下である。なお、プレイリストファイル及びオーディオCDを除く全てをStandard Input Arrayのコンポーネントがデコードしている。
また、公開されているサードパーティー製のコンポーネントによって、対応ファイル形式を増やすことができる。
ファイルではないが、オーディオCDにも対応している。
サードパーティー製コンポーネントによって対応するコーデック.
サードパーティー製のコンポーネントによって対応する主なフォーマットは以下である。
備考.
多言語化について.
foobar2000の実行ファイルは有志が配布している日本語化パッチによってダイアログ等を日本語にすることができるが、一部メニューなどは翻訳できないなど、完全に実行ファイルを日本語にすることができない。
foobar2000の多言語化についてPeter Pawlowskiは「foobar2000の多言語化には対応しない。もし、英語以外の言語に対応するのであれば、ヘルプやFAQのページを作成して欲しい」と発言している。