Linux向けのCHMファイルビューア

 たとえLinuxしか使っていなくても、一度や二度はMicrosoftのCHM(Microsoft Compiled HTML Help)ファイルを参照しなければならなくことがあるだろう。Apache, MySQL、PostgreSQL、PythonPHPといった数々のオープンソースプロジェクトでも、一般的なこのフォーマットが利用されている。
 たとえLinuxしか使っていなくても、一度や二度はMicrosoftのCHM(Microsoft Compiled HTML Help)ファイルを参照しなければならなくことがあるだろう。Apache, MySQL、PostgreSQL、PythonPHPといった数々のオープンソースプロジェクトでも、一般的なこのフォーマットが利用されている。

 CHMは、MicrosoftがそれまでのWinHelp(HLP)フォーマットに対する活動を中止し、Windows 98用の独自フォーマットとして開発したものだ。一部のアプリケーションではMicrosoft Help 2という新しいフォーマットが使われているが、CHMは今なお健在でXPやVistaで大いにもてはやされている。

 CHMファイルは一連のWebページ、ハイパーリンク化された目次、索引で構成され、LZXによって圧縮されている。CHMの売りは、サイズの小ささ(圧縮されているため)と全文検索、それに複数のCHMファイルをまとめて共通の目次と索引を付けた1つのファイルにできる機能だ。

 CHMはMicrosoftの独自フォーマットではあるが、Linux用のビューアがいくつかのプロジェクトで開発されている。

KchmViewer

 KchmViewerはCHMファイルを扱うKDE標準のビューアだ。今年6月にプロダクション環境向けの現行バージョンである3.1がリリースされ、バージョン4.0のベータ版も入手できる。今回試したのはバージョン3.1のほうだ。リリースはGNU一般公衆利用許諾契約書(GPL:General Public License)の下で行われており、一部のコードには別のビューアであるxCHMのものが使われている。

 KchmViewerは、ほとんどのディストリビューションのリポジトリに収録されている。また、Webからダウンロードしてお決まりのconfigureとmakeの各コマンドでインストールすることも可能だ(ただしqt3-develパッケージの存在を確認すること)。具体的な手順についてはダウンロードページを参照してほしい。

 KDE環境ではデフォルトでCHMファイルへの関連付けが行われているので、該当するファイルをクリックすると自動的にKchmViewerが立ち上がる。テキストの表示には、Trolltech QtウィジェットまたはKDEのKHTMLウィジェットが使える(どちらを使うかは「Settings」メニューで変更可能)。私が試したCHMファイルのなかには正しく表示されないものが1つあったが、この問題はウィジェットを切り替えることで解決できた。

chm_thumb.png
kchmviewerとhelpexplorer

 KchmViewerはタブブラウジングに対応しており、「Contents」、「Index」、「Search」というビューに分かれている。また、英語以外の言語やマルチバイト文字セットも正しく表示される。ブックマークを作成してドキュメント内にマーク付けをしたり、それらを編集/削除したりすることもできる。さらに、元のHTMLコードを表示することができ、そのために使用するエディタを「Settings」メニューから指定することも可能だ。

Help Explorer Viewer

 Kama Softwareによって開発されたHelp Explorer Viewerは、無償ではあるがソースは公開されていない。Windows版とLinux版の双方が用意されているので、デュアルブートシステムや両方のOSが動作する環境に向いている。Help Explorer Viewerは、CHMファイルだけでなく(CHMより古い)HLPおよび(CHMより新しい)HXMの各ヘルプファイルフォーマットにも対応している。Webサイトによると、Help Explorer ViewerのAPIを利用すればこのビューアを別のアプリケーションに組み込むこともできるという。

 インストールは簡単だ。まず、ダウンロードページからLinux版(現行版は3.0)を入手する。続いて、ダウンロード先のディレクトリに移動し、以下のコマンドをrootで実行する。

tar zxf HelpExplorer3.0_LINUX.tar.gz
cd Setup/
./setup.sh

 エンドユーザ使用許諾契約(EULA:End-User License Agreement)の確認を行うと、「/usr/local/HelpExplorer」にHelp Explorer Viewerがインストールされる。ちなみに、アンインストールするにはこのディレクトリ内の「uninstall.sh」というスクリプトを使えばよい。インストールの途中、KDE/GNOME用のメニューを追加するかどうかを訊かれたので「yes」と答えたが、Konquerorのメインメニューや、CHMファイルの右クリック時に現れるコンテキストメニューにさえこのビューアを開く項目は表示されなかった。結局、そのメニューがどこに追加されたのかはわからずしまいだ。

 Help Explorer Viewerに備わっている検索の仕組みはどれも定番のもので、目次(ツリー状の階層構造)、索引(キーワードの一覧)、通常の検索の3つがある。今回テストに使ったヘルプファイルはすべて正しく表示されたが、ピクセル化して表示されるのでフォントを変えられないのが残念だった。また、「Contents」、「Index」、「Search」、「Favorites」(ほかのビューアでブックマークと呼ばれているもの)の4つの表示を切り替えることができる。

ChmSee

 ChmSeeはオープンソースのGNOME向けGTK2+パッケージだが、Webサイトのほとんどは中国語で書かれている。一部に英語の記述があるので、それほど苦労せずにインストールして使うことができるはずだ。GPLの下で配布されているフリーソフトウェアで、今年の8月にバージョン1.0がリリースされている。

 ChmSeeのインストールは場合によっては面倒な作業になるが、openSUSEの標準リポジトリに入っているので、これを使えば非常に簡単に済ませられる。また、ソースからビルドする場合にはGTK2+、libglade-2.0、gecko、chmlib、OpensSSLが必要になる。これらのライブラリの確認が済んだら、ChmSeeのソースパッケージを入手し、以下のコマンドを実行する。

tar xzf chmsee-1.0.0.tar.gz
cd chmsee-1.0.0
./configure
make
sudo make install

chm2_thumb.png
CHM Reader(Firefoxアドオン)とChmsee

 configureコマンドがchmlibを見つけてくれない場合は、パラメータ(–with-chmlib=/path/to/chmlib)を追加するとよい。インストール終了後、openSUSEのメニューにはChmSeeの項目が加わったものの、Konquerorのメニューやコンテキストメニューには追加されなかった。

 表示用のフォント設定(KchmViewerにもHelp Explorer Viewerにもなかった機能)は「Edit」→「Setup」から行える。ただし、「Clear」機能には注意が必要だ。これを使うと、このプログラムの全作業ファイルが削除され、ビューアがクラッシュしてしまう。この状況になった場合は、CHMファイルを開き直す必要がある。ChmSeeには索引や検索の画面が見当たらない。それもそのはず、検索の機能がまったくないのだ。また、私が試した際には(本来のテキストは表示されずに)不正なメッセージが表示されるCHMファイルがいくつかあった。また、一部の画像はまったく表示されなかった。

 今後に期待はできるものの、ChmSeeはKchmViewerやHelp Explorer Viewerのレベルにはまだ至っていない。

その他のCHMビューア

 Firefoxユーザであれば、CHM Readerというアドオン(現在のバージョンは0.2.1.1)がダウンロードできる。インストールはいたって簡単だ。インストールが済むと、Firefoxの「File」メニューに「Open CHM File」という項目が追加される。CHMファイルを開いたときにはデフォルトで目次が非表示になっているが、Ctrl-Eキーを押すと表示される。CHMファイルの表示は問題なく行えるが、CHM Readerにはファイル全体に対する検索機能がない。また、Firefox自体の検索機能は表示しているページ内でしか機能しない。

 そのほか、GnoCHMやxCHM、それにKCHM(これは開発中止になっているようだ ― 最後のバージョンが出たのは2003年)も試そうとしたのだが、依存関係地獄(dependency hell)に陥ってしまった。ディストリビューション向けに用意されたパッケージが見つからず、ソースからのインストールにも行き詰まり、これらについては評価できなかった。

まとめ

 KchmViewerはインストールが最も簡単で、デスクトップ環境との統合という面でも卓越している。また、Help Explorer ViewerはLinuxとWindowsを併用する開発者やユーザにとって便利なツールだ。ChmSeeには解決すべき不具合がいくつかあり、日常的な利用するツールとしてはお勧めできない。CHM Readerは優れたアドオンだが、検索機能がないのが難点だ。

Federico Kerekiはウルグアイ在住のシステムエンジニア。20年以上にわたり、システムの開発、コンサルティング活動、大学での教育指導を続けている。

Linux.com 原文