Microsoft Compiled HTML Help (CHM) は、
マイクロソフトが1997年に
Microsoft WinHelp形式の後継として開発した独自のオンラインヘルプファイル形式です。Windows 98 のリリースで初めて導入され、その後Windows XPやWindows Vistaでもサポートされ続けました。ファイル
拡張子は `.chm` です。
歴史
CHM形式は、1996年2月に
マイクロソフトがWinHelpの開発停止と新たなHTML Help標準の開発を発表したことから始まりました。
- - 1997年8月: HTML Help 1.0 (HH 1.0) がInternet Explorer 4の一部としてリリースされました。
- - 1998年2月: HTML Help 1.1aがWindows 98の一部としてリリースされました。
- - 2000年1月: HTML Help 1.3がWindows 2000の一部としてリリースされました。
- - 2000年7月: HTML Help 1.32がInternet Explorer 5.5とWindows MEの一部としてリリースされました。
- - 2001年10月: HTML Help 1.33がInternet Explorer 6とWindows XPの一部としてリリースされました。
- - 2001年3月: WritersUAにおいて、マイクロソフトが新たなプラットフォームとしてHelp 2 (HTMLベース)を発表しましたが、2003年1月にマイクロソフトがHelp 2を汎用ヘルププラットフォームとしてはリリースしないことを決定しました。
マイクロソフトは、CHM形式に関連するセキュリティ問題が
2002年に公表され、パッチが公開されました。その後、CHM形式から新たなヘルプ形式であるMicrosoft Assistance Markup Languageへの移行を決定し、Windows Vistaでそれを採用しています。
ファイル形式
CHMファイルは、HTMLのサブセットで書かれたページ群と、
ハイパーリンクされた目次で構成されています。CHM形式は閲覧に最適化されており、検索性能も強化されています。複数のファイルをまとめてLZXで圧縮することで、ファイルサイズを小さく抑えることが可能です。多くのCHMブラウザでは、ヘルプファイル本体を表示すると同時に目次を表示できるような設計になっています。
ファイルの先頭には `ITSF` という文字列がASCIIで含まれています (`Info-Tech Storage Format` の略)。ファイル形式は
リバースエンジニアリングによって一部が明らかになっており、container や internal files といった仕様が公開されています。
Windows上では、このヘルプファイルを `hhc.exe` でコンパイルできます。これは、HTML Help Workshopの一部として無料で入手可能です。オープンソースのCHMファイル閲覧ツールも存在しますが、Windows自身の持つ機能を完全に再現したものはなく、特にCHMファイルを作成する機能を持つものはありません。
利点
CHM形式には、以下のような利点があります。
通常のHTMLよりもファイルサイズが小さい。
HTMLの持つフォーマットオプションにより、テキスト表現が豊かである。
全文検索が可能である。
複数のCHMファイルを共通の目次や索引を持つ1つのファイルに統合できる。
* 多言語文字を含む目次やトピックフォルダを生成できる。
応用
当初、ヘルプファイル向けに作られた形式でしたが、その利便性から他の用途にも使われるようになりました。HTMLの複数のページをコンパクトにまとめ、アーカイブ状態でブラウズできるため、
電子書籍に応用されたり、階層構造化された文書と高速な検索機能を活かして個人的なメモをこの形式で残す人もいます。
Firefoxの拡張機能の中には、CHMファイルを表示できるものもあります。
HTMLの抽出
Windowsでは、コマンドラインツール `hh.exe` を使って、CHMファイルからHTML部分を抽出できます。
hh.exe -decompile extracted filename.chm
このコマンドを実行すると、`filename.chm` に含まれているHTMLファイル群が `extracted` というディレクトリ配下に展開されます。
APTをパッケージングツールとして利用している
Linux環境では、CHMからHTMLを抽出するために以下のコマンドを利用できます (最初のコマンドはDebian向けです)。
apt-get install libchm-bin
$ extract_chmLib tero.chm tero/
Windows以外の環境で利用できる同様のツールとして、CHM Tools Packageがあります。