はじめに
今回も、応用情報技術者試験の過去問を解いていきます。
今回のテーマは 「ドキュメンテーションジェネレータ」 です。
開発現場では、プログラムを作るだけでなく、その内容を他の人が理解できるように文書化することも非常に重要です。
特に保守・運用の場面では、
- 誰が見ても理解できること
- 修正しやすいこと
- 引き継ぎしやすいこと
が求められます。
そのため、「ソースコードから自動でドキュメントを作る仕組み」は頻出テーマです。
今回はその基本をしっかり押さえていきましょう。
問題
ドキュメンテーションジェネレータの説明として、適切なものはどれか。
| 選択肢 | 内容 |
|---|---|
| ア | HTML、CSSなどのリソースを読み込んで、画面などに描画又は表示するソフトウェア |
| イ | ソースコード中にある、フォーマットに従って記述されたコメント文などから、プログラムのドキュメントを生成するソフトウェア |
| ウ | 動的にWebページを生成するために、文書のテンプレートと埋込み入力データを合成して出力するソフトウェア |
| エ | 文書構造がマーク付けされたテキストファイルを読み込んで、印刷可能なドキュメントを組版するソフトウェア |
解答
正解:イ
解説
ドキュメンテーションジェネレータを理解するうえで重要なのは、
「コメントをきれいに表示するソフト」
とだけ覚えないことです。
目的は、プログラムの構造や使い方を開発者が確認しやすい形に整理することです。
例えばJavaでは、次のようなコメントを書くことがあります。
/**
* ユーザー情報を取得する
* @param id ユーザーID
* @return ユーザー情報
*/
public User getUser(int id)
このような情報をもとに、
- メソッドの説明
- 引数
- 戻り値
- クラス
- フィールド
- 利用方法
などを整理したAPIドキュメントを生成できます。
イメージすると、次のような流れです。
ソースコード
│
├─ クラス
├─ メソッド
├─ 引数
└─ コメント
│
▼
ドキュメンテーションジェネレータ
│
▼
APIドキュメント
├─ クラス一覧
├─ メソッド一覧
├─ 引数の説明
└─ 戻り値の説明
つまり、
プログラムの中にある情報を、人間が読みやすいドキュメントへ変換する仕組み
と考えると分かりやすいでしょう。
なぜドキュメンテーションジェネレータを使うのか
ここは試験問題そのものには直接書かれていませんが、実際には重要なポイントです。
例えば、別の開発者が次のメソッドを利用するとします。
public User getUser(int id)
コードだけを見ても、
「idには何を入れるのか」
「戻り値には何が入っているのか」
「どのような処理なのか」
がすぐには分からないかもしれません。
そこで、ソースコードの近くに決められた形式で説明を書いておきます。
ソースコード
+
決められた形式のコメント
↓
自動生成
↓
読みやすいAPIドキュメント
これによって、
- プログラムの使い方を確認しやすくなる
- 開発者同士で情報共有しやすくなる
- 保守や改修をしやすくなる
- 手作業でAPI文書を作成する負担を減らせる
- ソースコードとAPIドキュメントの不整合を減らしやすくなる
といったメリットがあります。
特に複数人での開発や、長期間保守するシステムでは有効な仕組みです。
各選択肢を確認する
今回の問題では、四つとも「何らかの入力を読み込んで出力するソフトウェア」なので、少し紛らわしくなっています。
そこで、
入力 → 処理 → 出力
という視点で整理してみます。
| 選択肢 | 主な入力 | 主な出力・役割 | 該当するもの |
| ア | HTML・CSSなど | Webページを画面に表示 | Webブラウザ |
| イ | ソースコード・コメント | プログラムのドキュメント | ドキュメンテーションジェネレータ |
| ウ | テンプレート・データ | 動的に生成されたWebページなど | テンプレートエンジン |
| エ | マーク付けされた文書 | 組版された文書 | 文書組版システム |
この表で整理すると、それぞれの違いがかなり分かりやすくなります。
ア:Webブラウザ
アは、
HTML、CSSなどのリソースを読み込んで、画面などに描画又は表示するソフトウェア
となっています。
これは Webブラウザ の説明です。
代表例として、
- Google Chrome
- Microsoft Edge
- Mozilla Firefox
などがあります。
WebブラウザはHTMLやCSSなどを解釈し、その内容をWebページとして画面に表示します。
HTML・CSS
↓
Webブラウザ
↓
Webページを表示
したがって、ドキュメンテーションジェネレータではありません。
イ:ドキュメンテーションジェネレータ
イは、
ソースコード中にある、フォーマットに従って記述されたコメント文などから、プログラムのドキュメントを生成するソフトウェア
となっています。
これが正解です。
代表的なツールには、
- Javadoc
- Doxygen
- phpDocumentor
などがあります。
また、Sphinxも技術文書の生成に広く利用され、PythonではdocstringなどからAPIドキュメントを生成する用途でも利用されます。
ウ:テンプレートエンジン
ウは、
文書のテンプレートと埋込み入力データを合成して出力する
と書かれています。
これは テンプレートエンジン の説明です。
例えば、
<h1>{{ user.name }}</h1>
というテンプレートがあったとします。
ここに、
user.name = "田中"
というデータを渡せば、
<h1>田中</h1>
のような内容を生成できます。
流れとしては、
テンプレート
+
入力データ
↓
テンプレートエンジン
↓
Webページなどを生成
となります。
代表例としては、
- Jinja2
- Thymeleaf
- Smarty
などがあります。
エ:文書組版システム
エは、
文書構造がマーク付けされたテキストファイルを読み込んで、印刷可能なドキュメントを組版するソフトウェア
という説明です。
これは 文書組版システム に関する説明です。
代表的なものとして、TeXやLaTeXがあります。
例えばLaTeXでは、
\section{はじめに}
これは本文です。
のように文書構造を記述しておき、それを処理して整った文書を作成します。
イメージとしては、
マーク付けされた文書
↓
組版システム
↓
整形された文書
となります。
これはプログラムのコメントからAPIドキュメントを生成する仕組みとは目的が異なります。
問題の用語解説
ドキュメンテーションジェネレータ
ソースコードや、決められた形式で書かれたコメントなどを解析し、プログラムに関するドキュメントを生成するツールです。
特に、
- クラス
- メソッド
- 関数
- 引数
- 戻り値
などを説明する APIドキュメント の生成によく利用されます。
Javadoc
Javaで利用される代表的なドキュメント生成ツールです。
Javaのソースコードやドキュメンテーションコメントを解析して、クラスやメソッドなどを説明するAPIドキュメントを生成できます。
今回の問題を理解するうえでは、もっともイメージしやすい具体例の一つでしょう。
Doxygen
主にCやC++などのソースコードからドキュメントを生成するために利用されるツールです。
決められた形式でコメントを書いておくことで、ソースコードの構造と説明をまとめた文書を生成できます。
テンプレートエンジン
あらかじめ用意した文書のひな形にデータを埋め込み、HTMLなどを生成する仕組みです。
ドキュメンテーションジェネレータとの違いは、
ソースコードの説明書を作るのではなく、テンプレートとデータから出力を作る
という点です。
文書組版システム
文字や図表などをページ上に配置し、読みやすい文書として整えるための仕組みです。
TeXやLaTeXなどが代表例です。
論文や数式を多く含む技術文書などでも利用されています。
体系的位置づけ
今回の問題は、大きく見ると テクノロジ系の開発技術 に関する内容です。
その中でも、
テクノロジ系
↓
開発技術
↓
ソフトウェア開発
↓
開発ツール
↓
ドキュメンテーションジェネレータ
という位置づけで考えると分かりやすいでしょう。
ドキュメンテーションジェネレータだけを単独で覚えるのではなく、
- エディタ
- コンパイラ
- デバッガ
- テスト支援ツール
- ドキュメント生成ツール
などと並ぶ ソフトウェア開発を支援するツールの一つ として理解しておくことが重要です。
今回の問題の重要ポイント
今回の問題では、用語そのものを暗記するよりも、
「何を入力して、何を出力するのか」
を理解することが重要です。
整理すると次のようになります。
| ツール | 入力 | 出力 |
| Webブラウザ | HTML・CSSなど | 画面表示 |
| ドキュメンテーションジェネレータ | ソースコード・コメント | APIドキュメント |
| テンプレートエンジン | テンプレート・データ | Webページなど |
| 文書組版システム | マーク付けされた文書 | 組版された文書 |
そして、ドキュメンテーションジェネレータについては、
「コメント → ドキュメント」
と覚えておけば、試験ではかなり判断しやすくなります。
ただし、実務的にはもう一歩進んで、
なぜコメントからドキュメントを自動生成するのか?
まで考えておきたいところです。
答えは、
プログラムの使い方を共有しやすくし、保守・改修をしやすくするため
です。
つまり、
コメントを書く
↓
ドキュメントを自動生成
↓
プログラムの仕様を確認しやすくなる
↓
複数人で共有しやすくなる
↓
保守・改修がしやすくなる
という流れまで理解できれば、単なる用語暗記ではなくなります。
まとめ
今回の問題の正解は、
イ:ソースコード中のコメント文などから、プログラムのドキュメントを生成するソフトウェア
でした。
ドキュメンテーションジェネレータとは、
ソースコードや決められた形式のコメントなどから、APIドキュメントなどを自動生成するツール
です。
試験対策としては、
「コメント → ドキュメント」
と覚えておくとよいでしょう。
ただし、本当に重要なのは名称そのものではありません。
なぜこのようなツールが存在するのかを考えると、
プログラムの仕様を他の開発者にも分かりやすく伝え、保守や改修をしやすくするため
という目的が見えてきます。
応用情報技術者試験では、似たようなソフトウェアを並べて役割を問う問題もあります。
そのため、
「名前を覚える」のではなく、「何を入力して、何をするものなのか」で整理する
ことを意識しておきましょう。
参考情報
代表的なドキュメント生成関連ツールを整理すると、次のようになります。
| ツール | 主な用途・特徴 |
| Javadoc | JavaのソースコードなどからAPIドキュメントを生成 |
| Doxygen | C/C++などのソースコードからドキュメントを生成 |
| Sphinx | 技術文書の生成。PythonではAPIドキュメント生成にも利用される |
| phpDocumentor | PHPのソースコードからAPIドキュメントを生成 |
今回の問題については、
「ソースコード・コメント → APIドキュメント」
という関係を押さえておけば十分です。
そこからさらに、
「それによって開発者同士の情報共有や保守がしやすくなる」
というところまで理解できれば、実務にもつながる知識になります。


コメント