Microsoft Compiled HTML Help

Microsoft Compiled HTML Helpは、マイクロソフトが1997年にMicrosoft WinHelp形式の後継として開発・リリースした独自のオンラインヘルプファイル形式である。Windows 98 のリリースで最初に導入され、Windows XPやWindows Vistaでもサポートされ続けている。ファイル拡張子は CHM (".chm")。

HTML Helpのファイルは、ヘルプ作成ツールで作成される。マイクロソフトはWindowsのバージョンアップに合わせてHTML Help Workshopもリリースし、フリーにダウンロード可能としている。他にもサードパーティーから様々なヘルプ作成ツールがリリースされている。

電子書籍ビューワMicrosoft Reader .LITファイル形式は、基本的に HTML HelpのCHM形式から派生したものである。

2002年、マイクロソフトはCHM形式に関連したセキュリティ問題を公表し、パッチを公開した。その後、マイクロソフトはCHM形式を止めて新たなヘルプ形式であるに移行する方針とし、Windows Vistaでそれを採用している。

歴史 
 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を汎用ヘルププラットフォームとしてはリリースしないことを決定

ファイル形式 
HTMLのサブセットで書かれたページ群とハイパーリンク化された目次で構成される。CHM形式は読むことに最適化されており、検索性能が強化されている。複数のファイルをまとめてLZXで圧縮する。多くのCHMブラウザは、ヘルプファイル本体を表示すると同時に目次を表示できるようになっている。

ファイルの先頭には "ITSF" という文字列がASCIIで入っている（"Info-Tech Storage Format" の略）。ファイル形式はリバースエンジニアリングによって一部が明らかになっており、container や internal files といった仕様が公開されている。

Windows上では、このヘルプファイルをhhc.exeでコンパイルできる。これは、HTML Help Workshopの一部として無料で入手可能。

オープンソースでCHMファイルを読めるツールもあるが（例えば xCHM, KchmViewer, GnoCHM, Chmox for OS X, Chamonix for OS X）、Windows自身の持つ機能を完備したものはなく、特にCHMファイルを作成する機能を持つものはない。

利点 
 通常のHTMLよりもファイルサイズが小さい
 HTMLのもつフォーマットオプションにより、テキスト表現が豊かである
 全文検索が可能
 複数の CHMファイルを共通の目次や索引を持つ1つのファイルに統合可能
 多言語文字を含む目次やトピックフォルダを生成できる

応用 
当初、ヘルプファイル向けに作られた形式だったが、その後他の用途にも使われている。HTMLの複数のページをコンパクトにまとめ、アーカイブ状態でブラウズ可能であることから、電子書籍に応用された。人によっては、個人的なメモをこの形式で残す場合もある。というのも、階層構造化された文書で検索も高速という利点があるためである。Firefoxの拡張でCHMファイルを見ることができるものもある。

HTMLの抽出 
Windowsでは、CHMファイルから HTML部分を以下のコマンドで抜き出すことができる。
 hh.exe -decompile extracted filename.chm
これにより、filename.chmに含まれている HTMLファイル群が extractedというディレクトリ配下に展開される。

APTをパッケージングツールとしているLinuxの場合、CHMからHTMLを抜き出すには、以下のようにすればよい（1つ目のコマンドはDebian向け）。
  # apt-get install libchm-bin
  $ extract_chmLib tero.chm tero/

Windows以外で使える同様のツールとして、CHM Tools Packageがある。

出典

外部リンク 
 GNU Savannah Unofficial HTML Help Specification
 HTML Help Web Page on MSDN
 Microsoft Help 2 Reference (part of Visual Studio SDK for VS7.1 and VS8.0)
 History of HTML Help
 chmview
 Typical solutions for problems with accessing and displaying CHM files
 A free, open CHM to PDF converter for Linux/Unix

ファイルフォーマット
ハイパーテキスト