CHM ファイルを HTML に変換してキーワード一覧を取り出す
Windows のヘルプファイルである CHM ファイルには「キーワード」を一覧表示する機能がある。ここに表示されてるキーワードを全部取り出したい。
- 結論
- 1: HTML Help Workshop をインストールする
- 2: CHM ファイルを HTML ファイルに変換する
- 3: キーワード一覧を取り出す
- 4: 取り出したキーワード一覧から不要なキーワードを除く
結論
取り出せる。
ただし後半で Grep や正規表現の知識が必要になると思われる(無くても取り出せるが手作業地獄で大変だと思う)。
以下手順を示す。
1: HTML Help Workshop をインストールする
Download HTML Help Workshop and Documentation from Official Microsoft Download Center からインストーラーをダウンロードする。
ダウンロード後、インストーラーを叩いてインストール。
2: CHM ファイルを HTML ファイルに変換する
HTML Help Workshop を実行する。たぶん "C:\Program Files\HTML Help Workshop\hhw.exe" のはず。
実行したら以下手順で変換を実施。
- File メニュー > Decompile を選ぶ
- Destination folder に HTML 生成先フォルダを、Compiled help file に変換したい CHM ファイルを指定
- OK ボタンを押す
すると、Destination folder で指定したフォルダ内に、変換された HTML ファイル等がずらりと保存されているはず。
3: キーワード一覧を取り出す
ここから大変。
hhk ファイルがあるはずなので、それをテキストエディタで開く。中身は XML でずらりと書いてあり、ここにキーワードもあるので Grep やら正規表現やらを駆使して頑張って抽出する。
hhkファイル例1: AutoHotkey
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <html> <body> <ul> <li><object type="text/sitemap"><param name="Name" value="#AllowSameLineComments"><param name="Local" value="docs/commands/_AllowSameLineComments.htm"></object> <li><object type="text/sitemap"><param name="Name" value="#ClipboardTimeout"><param name="Local" value="docs/commands/_ClipboardTimeout.htm"></object> <li><object type="text/sitemap"><param name="Name" value="#CommentFlag"><param name="Local" value="docs/commands/_CommentFlag.htm"></object> ...
キーワードは <param name="Name" value="#AllowSameLineComments">
の #AllowSameLineComments
の部分である。ここを取り出せばよい。
hhkファイル例2: 秀丸エディタ
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <HTML> <HEAD> <meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1"> <!-- Sitemap 1.0 --> </HEAD><BODY> <UL> <LI> <OBJECT type="text/sitemap"> <param name="Keyword" value="ascii"> <param name="Name" value="ascii( s1 ) 関数"> <param name="Local" value="html/070_Function_ascii.html"> </OBJECT> <LI> <OBJECT type="text/sitemap"> <param name="Keyword" value="beep"> <param name="Name" value="beep文"> <param name="Local" value="html/090_MessageStatement_beep.html"> </OBJECT> ...
キーワードは <param name="Keyword" value="beep">
の beep
の部分である。ここを取り出せばよい。
4: 取り出したキーワード一覧から不要なキーワードを除く
この手順は不要ならしなくてもいい。
そもそもキーワード一覧を取り出す目的は「シンタックスハイライトしたいキーワードを取り出したい」だと思う。となれば、シンタックスハイライトしなくてもいいワードについては一覧から除外してやる必要がある。
例: 秀丸エディタのヘルプからキーワード一覧を取り出した場合
取り出しただけだと以下のようになった。この中にはシンタックスハイライトしなくてもいいワード(★をつけてみた)があり、これを除外する必要がある、というのが本手順だ。
ascii beep 音 ★要らない(日本語) サウンド ★要らない(日本語) break char columntox restoredesktop savedesktop split compfile COMPFILE ★要らない(重複) 比較 ★要らない(日本語) ...
さて、除外方法だが 目視しながら一つずつ頑張って消していくしかない と思う。