検索

Doxygen は、ソースコードをさまざまな方法でインデックス化し、ナビゲートしやすく、探しているものを見つけやすくします。ただし、キーワードで何かを検索したい場合もあれば、参照するのではなく、キーワードで検索したい場合もあります。

HTML ブラウザは、デフォルトでは複数のページにわたる検索機能を持たないため、この機能を容易にするためには、Doxygen または外部ツールが必要になります。

Doxygen は、HTML 出力に検索機能を追加するために 7 つの異なる方法を提供しており、それぞれに長所と短所があります。

1. クライアントサイド検索

検索を有効にする最も簡単な方法は、組み込みのクライアントサイド検索エンジンを有効にすることです。このエンジンは JavaScript と DHTML のみを使用して実装されており、完全にクライアントのブラウザ上で実行されます。したがって、動作させるために追加のツールは必要ありません。

有効にするには、設定ファイルで SEARCHENGINEYES に設定し、SERVER_BASED_SEARCHNO に設定されていることを確認してください。

この方法のもう 1 つの利点は、ライブ検索を提供することです。つまり、入力するにつれて検索結果が表示され、適応されます。

この方法には欠点もあります。検索はシンボルのみに限定されます。全文検索機能は提供されず、非常に大規模なプロジェクトにはうまくスケールしません(その場合、検索が非常に遅くなります)。さらに、検索はインデックス化されたアイテムの最初から行われるため、利用可能なアイテムに A_STRINGAA_STRINGSTRING があり、検索ボックスに A と入力すると、A_STRINGAA_STRING が見つかりますが、例えば STR と入力すると、STRING のみが見つかり、A_STRING は見つかりません。

2. サーバーサイド検索

HTML ドキュメントを Web サーバーに配置する予定があり、その Web サーバーが PHP コードを処理できる場合、Doxygen の組み込みサーバーサイド検索エンジンを使用することもできます。

これを有効にするには、設定ファイルで SEARCHENGINESERVER_BASED_SEARCH の両方を YES に設定し、EXTERNAL_SEARCHNO に設定します。

クライアントサイド検索エンジンに対する利点は、全文検索を提供し、中規模のプロジェクトにうまくスケールすることです。

欠点は、ローカルで動作しないこと(つまり、「file://」URLを使用すること)、およびライブ検索機能を提供しないことです。

将来的には、このオプションは次の検索オプションに置き換えられる可能性があります。

3. 外部インデックス作成によるサーバーサイド検索

Doxygen のリリース 1.8.3 で、別のサーバーベースの検索オプションが追加されました。このオプションでは、Doxygen は検索可能な生のデータを生成し、インデックス作成と検索を外部ツールに任せるため、独自のインデクサーと検索エンジンを使用できます。作業を簡単にするために、Doxygen は Xapian オープンソース検索エンジンライブラリに基づいたインデクサー (doxyindexer) と検索エンジン (doxysearch.cgi) の例を同梱しています。どちらのバイナリもディストリビューションに含まれていますが、デフォルトではインストールされません。必要に応じて、bin フォルダーから、例えば /usr/local/bin または /var/www/cgi-bin に手動でコピーできます。

この検索方法を有効にするには、SEARCHENGINESERVER_BASED_SEARCHEXTERNAL_SEARCH のすべてを YES に設定します。

設定の詳細については、外部インデックス作成と検索を参照してください。

オプション 2 に対する利点は、この方法が(潜在的に)非常に大規模なプロジェクトにスケールすることです。また、複数の Doxygen プロジェクトと外部データを 1 つの検索インデックスに結合することも可能です。検索エンジンとのやり取りの方法により、ローカルの HTML ページから検索することができます。また、検索結果はランキングが向上し、コンテキスト情報(利用可能な場合)が表示されます。

欠点は、CGI バイナリを実行できる Web サーバーが必要であり、Doxygen の実行後に追加のインデックス作成ステップが必要なことです。

4. Windows コンパイル済み HTML ヘルプ

Doxygen を Windows で実行している場合、Doxygen によって生成された HTML ファイルからコンパイル済み HTML ヘルプファイル (.chm) を作成できます。これは、すべての HTML ファイルを含む単一のファイルであり、検索インデックスも含まれています。この形式のビューアは多くのプラットフォームで利用可能であり、Windows はネイティブでサポートしています。

これを有効にするには、設定ファイルで GENERATE_HTMLHELPYES に設定します。Doxygen に HTML ヘルプファイルをコンパイルさせるには、HHC_LOCATION 設定オプションを使用して HTML コンパイラ (hhc.exe) へのパスを、CHM_FILE を使用して結果の CHM ファイル名を指定する必要もあります。

この方法の利点は、結果が配布しやすい単一のファイルであることです。また、全文検索も提供します。

欠点は、CHM ファイルのコンパイルが Windows でのみ機能し、Microsoft の HTML コンパイラを必要とすることです。このコンパイラは Microsoft によってあまり積極的にサポートされていません。このツールはほとんどの人にとっては問題なく動作しますが、時々、明らかな理由もなくクラッシュすることがあります(よくあることです)。

5. macOS Doc Sets

Doxygen を macOS 10.5 以降で実行している場合、Doxygen によって生成された HTML ファイルから「ドキュメントセット」を作成できます。ドキュメントセットは、HTML ファイルとプリコンパイルされた検索インデックスを含む、特殊な構造を持つ単一のディレクトリで構成されます。ドキュメントセットは Xcode(Apple が提供する統合開発環境)に埋め込むことができます。

ドキュメントセットの作成を有効にするには、設定ファイルで GENERATE_DOCSETYES に設定します。設定したいドキュメントセット関連のオプションがいくつかあります。Doxygen が完了した後、HTML 出力ディレクトリに Makefile が見つかります。この Makefile で「make install」を実行すると、ドキュメントセットがコンパイルされ、インストールされます。詳細については、この記事を参照してください。

この方法の利点は、Xcode 開発環境とうまく統合できることです。例えば、エディタで識別子をクリックすると、Doxygen ドキュメントの対応するセクションにジャンプできます。

欠点は、macOS の Xcode との組み合わせでのみ機能することです。

6. Qt 圧縮ヘルプ

Qt アプリケーションフレームワークを開発している、またはインストールしたい場合、Qt Assistant というアプリケーションが手に入ります。これは Qt 圧縮ヘルプファイル (.qch) 用のヘルプビューアです。

この機能を有効にするには、GENERATE_QHPYES に設定します。また、QHP_NAMESPACEQHG_LOCATIONQHP_VIRTUAL_FOLDER など、他の Qt ヘルプ関連オプションも入力する必要があります。詳細については、この記事を参照してください。

機能面では、Qt 圧縮ヘルプ機能は CHM 出力と比較できますが、QCH ファイルのコンパイルが Windows に限定されないという追加の利点があります。

欠点は、各ユーザーに対して Qt 4.5 (またはそれ以降) を設定する必要があるか、または Qt ヘルプアシスタントをドキュメントと一緒に配布する必要があることです。これは、現時点では別のパッケージとして利用できないため、複雑です。

7. Eclipse ヘルププラグイン

Eclipse を使用している場合、Doxygen によって生成されたドキュメントをヘルププラグインとして埋め込むことができます。すると、ヘルプメニューの「ヘルプ目次」から起動できるヘルプブラウザのトピックとして表示されます。Eclipse は、キーワードで初めて検索したときに、ドキュメントの検索インデックスを生成します。

ヘルププラグインを有効にするには、GENERATE_ECLIPSEHELPYES に設定し、ECLIPSE_DOC_ID を介してプロジェクトの一意の識別子を定義します。つまり、

   GENERATE_ECLIPSEHELP = YES
   ECLIPSE_DOC_ID       = com.yourcompany.yourproject

次に、Eclipse の plugin ディレクトリに com.yourcompany.yourproject ディレクトリ (ECLIPSE_DOC_ID の値と同じ名前で) を作成し、Doxygen が完了したら、ヘルプ出力ディレクトリの内容を com.yourcompany.yourproject ディレクトリにコピーします。その後、Eclipse を再起動して新しいプラグインを見つけさせます。

Eclipse ヘルププラグインは、Qt 圧縮ヘルプまたは CHM 出力と同様の機能を提供しますが、Eclipse がインストールされており、実行されている必要があります。

次のセクションに進むか、インデックスに戻ります。