(57)【要約】【課題】ソフトウェアのドキュメントの翻訳に好適な翻訳装置、方法、及びプログラムを提供する。【解決手段】ソフトウェアのソースコードを記憶するソースコード記憶部３２と、ソースコードの仕様が記載されたドキュメントを原言語で生成する生成部４５と、生成されたドキュメントを記憶するドキュメント記憶部３４と、ドキュメント記憶部からドキュメントを取得するとともに、ドキュメントの生成元のソースコードをソースコード記憶部から取得する取得部５０と、取得されたソースコードを参照して、取得されたドキュメントからソースコード中に出現するプログラム要素を検出する検出部６０と、検出されたプログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定部７０と、ドキュメントの翻訳不要語句以外の語句を目的言語に翻訳する翻訳部８０と、ドキュメントの翻訳結果を出力する出力部２０と、を備える。【選択図】図１
2010211719.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアのソースコードを記憶するソースコード記憶部と、
前記ソースコードの仕様が記載されたドキュメントを原言語で生成する生成部と、
前記ドキュメントを記憶するドキュメント記憶部と、
前記ドキュメント記憶部から前記ドキュメントを取得するとともに、前記ソースコード記憶部から前記ソースコードを取得する取得部と、
取得された前記ソースコードを参照して、取得された前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出部と、
前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定部と、
前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳部と、
前記ドキュメントの翻訳結果を出力する出力部と、を備えることを特徴とする翻訳装置。
【請求項２】
ソフトウェアのソースコードの仕様が原言語で記載されたドキュメントであって前記ソースコードを含むドキュメントを、外部装置から取得する取得部と、
前記ドキュメント内の前記ソースコードを参照して、前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出部と、
前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定部と、
前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳部と、
前記ドキュメントの翻訳結果を出力する出力部と、を備えることを特徴とする翻訳装置。
【請求項３】
前記プログラム要素は、関数名、引数名、変数名、クラス名、名前空間名、パッケージ名、及び予約語の少なくともいずれかであることを特徴とする請求項１又は２に記載の翻訳装置。
【請求項４】
前記設定部は、更に、前記翻訳不要語句を名詞句に設定し、
前記翻訳部は、前記翻訳不要語句を前記名詞句とみなして、前記翻訳不要語句以外の語句を前記目的言語に翻訳することを特徴とする請求項１〜３のいずれか１つに記載の翻訳装置。
【請求項５】
前記翻訳部は、更に、前記翻訳不要語句を前記目的言語に翻訳し、
前記出力部は、前記翻訳不要語句の翻訳結果を、前記ドキュメントの翻訳結果内の前記翻訳不要語句に併記して出力することを特徴とする請求項１〜４のいずれか１つに記載の翻訳装置。
【請求項６】
生成部が、ソースコード記憶部に記憶されたソフトウェアのソースコードの仕様が記載されたドキュメントを原言語で生成して、ドキュメント記憶部に記憶させる生成ステップと、
取得部が、前記ドキュメント記憶部から前記ドキュメントを取得するとともに、前記ソースコード記憶部から前記ソースコードを取得する取得ステップと、
検出部が、取得された前記ソースコードを参照して、取得された前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、
設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、
翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、
出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、を含むことを特徴とする翻訳方法。
【請求項７】
取得部が、ソフトウェアのソースコードの仕様が原言語で記載されたドキュメントであって前記ソースコードを含むドキュメントを、外部装置から取得する取得ステップと、
検出部が、前記ドキュメント内の前記ソースコードを参照して、前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、
設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、
翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、
出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、を含むことを特徴とする翻訳方法。
【請求項８】
生成部が、ソースコード記憶部に記憶されたソフトウェアのソースコードの仕様が記載されたドキュメントを原言語で生成して、ドキュメント記憶部に記憶させる生成ステップと、
取得部が、前記ドキュメント記憶部から前記ドキュメントを取得するとともに、前記ソースコード記憶部から前記ソースコードを取得する取得ステップと、
検出部が、取得された前記ソースコードを参照して、取得された前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、
設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、
翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、
出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、をコンピュータに実行させるための翻訳プログラム。
【請求項９】
取得部が、ソフトウェアのソースコードの仕様が原言語で記載されたドキュメントであって前記ソースコードを含むドキュメントを、外部装置から取得する取得ステップと、
検出部が、前記ドキュメント内の前記ソースコードを参照して、前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、
設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、
翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、
出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、をコンピュータに実行させるための翻訳プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、翻訳装置、方法、及びプログラムに関する。
【背景技術】
【０００２】
従来から、ソフトウェア開発においては、仕様書等のドキュメント、及び所定のプログラミング言語で記述されたソースコードが作成されている。特に近年では、Ｊａｖａ（登録商標）ＤｏｃやＤｏｘｙｇｅｎ等のドキュメンテーションジェネレータを用いることにより、ソースコード中に記述されたコメントから、ドキュメントを生成することが行われている。
【０００３】
また、近年のソフトウェア開発のグローバル化に伴い、異なる言語を母語とする複数の開発者によるソフトウェア開発の機会も増加している。このため、例えば特許文献１では、ソースコード中にコメントとして記述された仕様を、異なる言語に翻訳する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１８６３１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ソフトウェアの仕様には、通常、ソースコード中に出現する関数名等のプログラム要素が含まれている。そして、このプログラム要素には、ソースコードを記述する自然言語において日常的に使用される単語（以下、「日常単語」と称する）が使われることが多い。
【０００６】
このため、ソースコードの仕様が記載されたドキュメントをそのまま機械翻訳してしまうと、プログラム要素も日常単語とみなされて翻訳されるため、翻訳精度が悪化するおそれがある。
【０００７】
本発明は、上記事情に鑑みてなされたものであり、ソフトウェアのドキュメントの翻訳に好適な翻訳装置、方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明の一態様にかかる翻訳装置は、ソフトウェアのソースコードを記憶するソースコード記憶部と、前記ソースコードの仕様が記載されたドキュメントを原言語で生成する生成部と、前記ドキュメントを記憶するドキュメント記憶部と、前記ドキュメント記憶部から前記ドキュメントを取得するとともに、前記ソースコード記憶部から前記ソースコードを取得する取得部と、取得された前記ソースコードを参照して、取得された前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出部と、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定部と、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳部と、前記ドキュメントの翻訳結果を出力する出力部と、を備えることを特徴とする。
【０００９】
また、本発明の別の態様にかかる翻訳装置は、ソフトウェアのソースコードの仕様が原言語で記載されたドキュメントであって前記ソースコードを含むドキュメントを、外部装置から取得する取得部と、前記ドキュメント内の前記ソースコードを参照して、前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出部と、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定部と、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳部と、前記ドキュメントの翻訳結果を出力する出力部と、を備えることを特徴とする。
【００１０】
また、本発明の別の態様にかかる翻訳方法は、生成部が、ソースコード記憶部に記憶されたソフトウェアのソースコードの仕様が記載されたドキュメントを原言語で生成して、ドキュメント記憶部に記憶させる生成ステップと、取得部が、前記ドキュメント記憶部から前記ドキュメントを取得するとともに、前記ソースコード記憶部から前記ソースコードを取得する取得ステップと、検出部が、取得された前記ソースコードを参照して、取得された前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、を含むことを特徴とする。
【００１１】
また、本発明の別の態様にかかる翻訳方法は、取得部が、ソフトウェアのソースコードの仕様が原言語で記載されたドキュメントであって前記ソースコードを含むドキュメントを、外部装置から取得する取得ステップと、検出部が、前記ドキュメント内の前記ソースコードを参照して、前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、を含むことを特徴とする。
【００１２】
また、本発明の別の態様にかかる翻訳プログラムは、生成部が、ソースコード記憶部に記憶されたソフトウェアのソースコードの仕様が記載されたドキュメントを原言語で生成して、ドキュメント記憶部に記憶させる生成ステップと、取得部が、前記ドキュメント記憶部から前記ドキュメントを取得するとともに、前記ソースコード記憶部から前記ソースコードを取得する取得ステップと、検出部が、取得された前記ソースコードを参照して、取得された前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、をコンピュータに実行させるためのものである。
【００１３】
また、本発明の別の態様にかかる翻訳プログラムは、取得部が、ソフトウェアのソースコードの仕様が原言語で記載されたドキュメントであって前記ソースコードを含むドキュメントを、外部装置から取得する取得ステップと、検出部が、前記ドキュメント内の前記ソースコードを参照して、前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、をコンピュータに実行させるためのものである。
【発明の効果】
【００１４】
本発明によれば、ソフトウェアのドキュメントとして好適な訳文を得ることができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】図１は、第１の実施の形態の翻訳装置の構成の一例を示すブロック図である。
【図２】図２は、第１の実施の形態のソースコードの一例を示す図である。
【図３】図３は、第１の実施の形態のドキュメントの一例を示す図である。
【図４】図４は、第１の実施の形態のドキュメントの翻訳結果の一例を示す図である。
【図５】図５は、第１の実施の形態のドキュメントの翻訳結果との比較例を示す図である。
【図６】図６は、第１の実施の形態の翻訳装置で行われる翻訳処理手順の流れの一例を示すフローチャートである。
【図７】図７は、第２の実施の形態の翻訳装置の構成の一例を示すブロック図である。
【図８】図８は、第２の実施の形態のドキュメントの一例を示す図である。
【図９】図９は、第２の実施の形態のドキュメントの一例を示す図である。
【図１０】図１０は、第２の実施の形態のドキュメントの翻訳結果の一例を示す図である。
【図１１】図１１は、第２の実施の形態のドキュメントの翻訳結果との比較例を示す図である。
【図１２】図１２は、第２の実施の形態の翻訳装置で行われる翻訳処理手順の流れの一例を示すフローチャートである。
【図１３】図１３は、変形例１のドキュメントの翻訳結果の一例を示す図である。
【図１４】図１４は、変形例２のプログラム要素判別手法の一例を示す図である。
【図１５】図１５は、変形例３のプログラム要素判別手法の一例を示す図である。
【発明を実施するための形態】
【００１６】
以下、添付図面を参照しながら、本発明にかかる翻訳装置、方法、及びプログラムの最良な実施の形態を詳細に説明する。
【００１７】
（第１の実施の形態）
第１の実施の形態の翻訳装置は、ソフトウェアのドキュメントを原言語から目的言語に翻訳するものであり、特に、関数名や引数名などのプログラムの構成要素となるプログラム要素を原言語に維持したまま目的言語に翻訳する。また、本実施の形態の翻訳装置は、ソフトウェアの開発環境としての機能も有しており、開発者により作成されたソースコードの管理や、当該ソースコードからソフトウェアのドキュメントの生成などを行う。なお、以下では、原言語が英語であり、目的言語が日本語である場合、即ち、英語で記載されたドキュメントを日本語に翻訳する場合を例にとり説明するが、翻訳方向はこれに限定されるものではなく、あらゆる言語間での翻訳に適用することができる。
【００１８】
まず、本実施の形態の翻訳装置の構成について説明する。
【００１９】
図１は、本実施の形態の翻訳装置の構成の一例を示すブロック図である。図１に示すように、翻訳装置１は、入力部１０と、出力部２０と、記憶部３０と、入力受付部４０と、生成部４５と、取得部５０と、検出部６０と、設定部７０と、翻訳部８０と、出力制御部９０とを備える。
【００２０】
入力部１０は、ドキュメントの生成を指示する生成操作やドキュメントの翻訳を指示する翻訳操作などの各種操作の入力を行うものであり、例えば、キーボード、マウス、又はタッチパネルなどの既存の入力装置により実現できる。
【００２１】
出力部２０は、後述する出力制御部９０の指示により、ドキュメントの翻訳結果などを出力するものであり、例えば、ＣＲＴディスプレイ、液晶ディスプレイ、プラズマディスプレイ、有機ＥＬディスプレイ、又はタッチパネル式ディスプレイなどの既存の表示装置により実現できる。なお出力部２０を、プリンタなどの既存の印刷装置により実現してもよいし、これらを併用して実現するようにしてもよい。
【００２２】
記憶部３０は、翻訳装置１で行われる各種処理に使用される情報を記憶するものであり、例えば、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）、メモリカード、光ディスク、又はＲＡＭ（Random Access Memory）などの磁気的、電気的、又は光学的に記憶可能な既存の記憶媒体により実現できる。そして記憶部３０は、ソースコード記憶部３２と、ドキュメント記憶部３４とを含む。
【００２３】
ソースコード記憶部３２は、ソフトウェアのソースコードを記憶する。図２は、ソースコード記憶部３２に記憶されているソースコードの一例を示す図であり、図２に示す例では、ソースコード記憶部３２は、ｔｒａｎｓｌａｔｅという名前の関数（以下、「関数ｔｒａｎｓｌａｔｅ」と称する）のソースコードが記述されたソースファイルを記憶している。なお、関数ｔｒａｎｓｌａｔｅは、Ｃ＋＋言語及びＤｏｘｙｇｅｎの記述ルールに従って記述されており、ソースコードの左側の数字（１〜１３）は、行番号を示している。
【００２４】
例えば、１〜３行目の文字列は、「／＊」及び「＊／」で囲まれているため、Ｃ＋＋言語の記述ルールからコメント部分とみなされる。同時に、このコメント部分は、「／＊！」で開始されているため、Ｄｏｘｙｇｅｎの記述ルールから後続の関数ｔｒａｎｓｌａｔｅの仕様（説明）とみなされる。
【００２５】
また、４行目では、関数ｔｒａｎｓｌａｔｅが宣言されており、５〜６行目では、関数ｔｒａｎｓｌａｔｅの引数であるｄｏｃｕｍｅｎｔ（以下、「引数ｄｏｃｕｍｅｎｔ」と称する）及びｌａｎｇｕａｇｅ（以下、「引数ｌａｎｇｕａｇｅ」と称する）が宣言されている。そして、Ｃ＋＋言語の記述ルールから、５行目の「／／」以降はコメント部分とみなされる。同時に、このコメント部分は、「／／！」で開始されているため、Ｄｏｘｙｇｅｎの記述ルールから、直前の引数ｄｏｃｕｍｅｎｔの仕様（説明）とみなされる。なお、６行目についても同様である。
【００２６】
このように本実施の形態では、ソースコードのコメント部分に関数や引数の仕様が記述されており、後述の生成部４５がこのコメント部分を抽出して、当該ソースコードのドキュメントを生成する。なお、図２に示す例では、関数や引数の前後にその仕様を記述しているが、仕様の記述位置はこれに限られるものではない。例えば、離れた箇所にある関数等の仕様の記述や、記述する仕様の範囲を例えばファイル全体なのか、１つの関数なのかを指定することもできる。
【００２７】
ドキュメント記憶部３４は、ソースコード記憶部３２に記憶されているソースコードから後述の生成部４５により原言語で生成されたソフトウェアのドキュメントを記憶する。図３は、ドキュメント記憶部３４に記憶されているドキュメントの一例を示す図であり、図３に示すドキュメントは、図２に示すソースコードから関数ｔｒａｎｓｌａｔｅの仕様を示すコメント（図２に示すソースコードの１〜３行目のコメント）を抽出して生成されたドキュメントを示している。
【００２８】
なお、図３に示す例では、関数名に該当するｔｒａｎｓｌａｔｅ（）９１や、引数名に該当するｄｏｃｕｍｅｎｔ９２、ｌａｎｇｕａｇｅ９３は太字で示されており、それぞれ、図２に示すソースコード中の関数ｔｒａｎｓｌａｔｅ、引数ｄｏｃｕｍｅｎｔ、引数ｌａｎｇｕａｇｅの宣言箇所へのリンクになっている。
【００２９】
入力受付部４０は、入力部１０から生成操作や翻訳操作などの各種操作の入力を受け付ける。
【００３０】
生成部４５は、ソースコード記憶部３２に記憶されているソースコードから、当該ソースコードの仕様が記載されたドキュメントを原言語で生成する。具体的には、生成部４５は、入力受付部４０により生成操作が受け付けられると、生成操作で指示されたソースコードをソースコード記憶部３２から読み出す。そして生成部４５は、読み出したソースコードからコメント部分を抽出し、抽出したコメントの記述ルールに従い、原言語のドキュメントを生成して、ドキュメント記憶部３４に記憶させる。
【００３１】
例えば、生成部４５は、図２に示すソースコードが生成操作により指示された場合には、図２に示すソースコードのコメント部分を抽出して、図３に示すドキュメントを生成する。
【００３２】
なお、生成部４５は、生成元であるソースコードへのリンク情報など生成元であるソースコードの情報を含んでドキュメントを生成する。
【００３３】
取得部５０は、ドキュメント記憶部３４からドキュメントを取得するとともに、ソースコード記憶部３２からソースコードを取得する。具体的には、取得部５０は、入力受付部４０により翻訳操作が受け付けられると、翻訳操作で指示されたドキュメントをドキュメント記憶部３４から取得する。同時に取得部５０は、取得したドキュメントの生成元であるソースコード、即ち、取得したドキュメント内で言及されている関数や引数などのプログラム要素が宣言ないし定義されているソースコードをソースコード記憶部３２から取得する。
【００３４】
なお、本実施の形態では、ドキュメントに生成元のソースコードへのリンク情報が含まれており、取得部５０は、このリンク情報を用いて、ドキュメントの生成元であるソースコードを特定する。
【００３５】
検出部６０は、取得部５０により取得されたソースコードを参照して、取得部５０により取得されたドキュメントからソースコード中に出現するプログラム要素を検出する。具体的には、検出部６０は、取得部５０により取得されたソースコードのプログラム言語の文法解析（シンタックスパージング）を行って、関数名や引数名などを抽出する。そして検出部６０は、この抽出した関数名等や、当該関数名等へのドキュメントからのリンクの有無を参照して、取得部５０により取得されたドキュメントからプログラム要素を検出する。
【００３６】
例えば、検出部６０は、図２に示すソースコードから抽出した関数ｔｒａｎｓｌａｔｅ、引数ｄｏｃｕｍｅｎｔ、引数ｌａｎｇｕａｇｅなどを参照して、図３に示すドキュメントからｔｒａｎｓｌａｔｅ（）９１、ｄｏｃｕｍｅｎｔ９２、ｌａｎｇｕａｇｅ９３などのプログラム要素を検出する。
【００３７】
なお、本実施の形態では、リンクの有無だけでなく、ソースコードから抽出した関数名等を用いて、ドキュメントからプログラム要素を検出しているため、リンク先がプログラム要素でない場合や、リンク情報が付与されていないプログラム要素にも対処できる。従って、検出部６０は、ソースコードから抽出した関数名等でなければ、リンク情報が付与されていてもプログラム要素として検出せず、また、リンク情報が付与されていなくても、ソースコードから抽出した関数名等であれば、プログラム要素として検出する。
【００３８】
また、検出部６０は、語形変化及び冠詞の有無などを考慮してドキュメントからプログラム要素を検出する。具体的には、プログラム要素は、後述の設定部７０により名詞句に設定されるため、検出部６０は、語形変化する語句をプログラム要素として検出しない。また、プログラム要素には冠詞が付かないため、検出部６０は、冠詞が付く語句をプログラム要素として検出しない。
【００３９】
従って、検出部６０は、図３に示す例において、語形変化しているｔｒａｎｓｌａｔｅｓ９１’や、冠詞「ｔｈｅ」が付いているｌａｎｇｕａｇｅ９３’をプログラム要素として検出しない。このため本実施の形態では、日常単語が誤ってプログラム要素として検出されることを防止できる。
【００４０】
設定部７０は、検出部６０により検出されたプログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する。例えば、設定部７０は、図３に示す例において、検出部６０によりプログラム要素として検出されたｔｒａｎｓｌａｔｅ（）９１、ｄｏｃｕｍｅｎｔ９２、ｌａｎｇｕａｇｅ９３を翻訳不要語句に設定する。
【００４１】
また設定部７０は、更に、翻訳不要語句を名詞句に設定する。例えば、設定部７０は、図３に示す例において、翻訳不要語句に設定したｔｒａｎｓｌａｔｅ（）９１、ｄｏｃｕｍｅｎｔ９２、ｌａｎｇｕａｇｅ９３を更に名詞句に設定する。これにより、後述の翻訳部８０が行う翻訳処理において、ｔｒａｎｓｌａｔｅ（）９１のように動詞が使われることが多い関数名なども名詞句とみなして翻訳することができる。
【００４２】
翻訳部８０は、取得部５０により取得されたドキュメントの翻訳不要語句以外の語句を目的言語に翻訳する。また翻訳部８０は、翻訳不要語句を名詞句とみなして、翻訳不要語句以外の語句を目的言語に翻訳する。
【００４３】
出力制御部９０は、翻訳部８０によるドキュメントの翻訳結果を出力部２０に出力させる。図４は、出力部２０が出力するドキュメントの翻訳結果の一例を示す図であり、図３に示すドキュメントの翻訳結果を示している。図４に示す例では、ｔｒａｎｓｌａｔｅ（）９１、ｄｏｃｕｍｅｎｔ９２、ｌａｎｇｕａｇｅ９３がプログラム要素であることが考慮されて翻訳部８０による翻訳が行われているため、ソフトウェアのドキュメントとして好適な訳文になっている。
【００４４】
一方、図５は、従来の翻訳装置による図３に示すドキュメントの翻訳結果を示す図であるが、プログラム要素が日常単語として翻訳されているため、翻訳精度が著しく悪化している。
【００４５】
なお、出力制御部９０は、図４に示すように、翻訳結果の翻訳不要語句を翻訳前と同じフォント属性で出力しているため、原文同様にこれらの部分が関数や引数などのプログラム要素であることを開発者は判断できる。また、原文同様のリンク情報も付加されているため、訳文からも該当するソースコードへの移動ができるようになっている。
【００４６】
次に、本実施の形態の翻訳装置の動作について説明する。
【００４７】
図６は、本実施の形態の翻訳装置１で行われる翻訳処理手順の流れの一例を示すフローチャートである。
【００４８】
まず、生成部４５は、入力受付部４０により生成操作が受け付けられると、ソースコード記憶部３２に記憶されているソースコードからソフトウェアのドキュメントを原言語で生成して、ドキュメント記憶部３４に記憶させる（ステップＳ１０）。
【００４９】
続いて、取得部５０は、入力受付部４０により翻訳操作が受け付けられると、翻訳操作で指示された原言語のドキュメントをドキュメント記憶部３４から取得するとともに、取得したドキュメントの生成元であるソースコードをソースコード記憶部３２から取得する（ステップＳ１２）。
【００５０】
続いて、検出部６０は、取得部５０により取得されたソースコードを参照して、取得部５０により取得されたドキュメントからプログラムの構成要素となるプログラム要素を検出する（ステップＳ１４）。
【００５１】
続いて、設定部７０は、検出部６０により検出されたドキュメント中のプログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する（ステップＳ１６）。
【００５２】
続いて、翻訳部８０は、取得部５０により取得されたドキュメントの翻訳不要語句以外の語句を目的言語に翻訳する（ステップＳ１８）。
【００５３】
続いて、出力制御部９０は、翻訳部８０によるドキュメントの翻訳結果を出力部２０に出力させる（ステップＳ２０）。
【００５４】
このように本実施の形態では、ドキュメントからプログラム要素を検出し、検出したプログラム要素を翻訳が不要な翻訳不要語句に設定して翻訳を行うため、ソフトウェアのドキュメントとして好適な訳文を得ることができる。
【００５５】
（第２の実施の形態）
次に、第２の実施の形態では、翻訳装置が、ソースコードから原言語で生成されたソフトウェアのドキュメントであって生成元のソースコードを含むドキュメントを、外部装置から取得して、関数名や引数名などのプログラム要素を原言語に維持したまま目的言語に翻訳する例について説明する。第２の実施の形態の翻訳装置は、ソフトウェアの開発環境としての機能を有しておらず、また、ドキュメントに含まれるソースコードから関数名や引数名などのプログラム要素を検出する。
【００５６】
なお、以下では、第１の実施の形態との相違点の説明を主に行い、第１の実施の形態と同様の機能を有する構成要素については、第１の実施の形態と同様の名称・符号を付し、その説明を省略する。
【００５７】
まず、本実施の形態の翻訳装置の構成について説明する。
【００５８】
図７は、本実施の形態の翻訳装置１０１の構成の一例を示すブロック図である。翻訳装置１０１は、記憶部３０及び生成部４５を有していない点、取得部１５０が外部装置２０１からドキュメントを取得する点、及び検出部１６０がドキュメントからプログラム要素を検出する点が第１の実施の形態の翻訳装置１と異なる。従って、以下では、外部装置２０１、取得部１５０、及び検出部１６０について説明する。
【００５９】
外部装置２０１は、ソフトウェアのソースコードから原言語で生成され、当該ソースコードの仕様が記載されたドキュメントであって生成元のソースコードを含むドキュメントを管理するものであり、当該ドキュメントを記憶するドキュメント記憶部２１０を含む。なお、外部装置２０１がソフトウェアのソースコードから当該ドキュメントを生成するようにしてもよい。
【００６０】
図８及び図９は、ドキュメント記憶部２１０に記憶されているＨＴＭＬ形式のドキュメントの一例を示す図であり、図８は、ＨＴＭＬ文書として表示されたものであり、図９は、テキスト文書として表示されたものである。
【００６１】
図８及び図９に示すドキュメントは、図２に示すソースコードから関数ｔｒａｎｓｌａｔｅ、引数ｄｏｃｕｍｅｎｔ、及び引数ｌａｎｇｕａｇｅの仕様を示すコメント（図２に示すソースコードの１〜３、５、及び６行目のコメント）、並びに生成元のソースコードである関数ｔｒａｎｓｌａｔｅを抽出して生成されたドキュメントである。
【００６２】
図８に示す例では、生成元のソースコードである関数ｔｒａｎｓｌａｔｅと、関数ｔｒａｎｓｌａｔｅ、引数ｄｏｃｕｍｅｎｔ、及び引数ｌａｎｇｕａｇｅの仕様とが別々のエリアに表示されており、生成元のソースコードである関数ｔｒａｎｓｌａｔｅは、エリア１９１に表示されている。また、仕様が記述されているエリアにおいては、関数に該当するｔｒａｎｓｌａｔｅ（）９１や、引数に該当するｄｏｃｕｍｅｎｔ９２、ｌａｎｇｕａｇｅ９３などのプログラム要素に該当する部分はイタリック体で示されている。
【００６３】
なお、本実施の形態では、ドキュメント記憶部２１０に記憶されているドキュメントがＨＭＴＬファイルである例について説明するが、ワープロソフトにより作成されたファイルやＬａｔｅｘ等であってもよい。
【００６４】
取得部１５０は、ソフトウェアのソースコードから原言語で生成されたソフトウェアのドキュメントであって生成元のソースコードを含むドキュメントを、外部装置２０１から取得する。
【００６５】
検出部１６０は、取得部１５０により取得されたドキュメント内のソースコードを参照して、ドキュメントからソースコード中に出現するプログラム要素を検出する。
【００６６】
例えば、検出部１６０は、図８及び図９に示す例では、開始タグ１９２及び終了タグ１９３で囲まれた情報がエリア１９１に表示されている関数ｔｒａｎｓｌａｔｅの情報を示しているため、ここから、関数名、引数名、予約語などを抽出する。
【００６７】
そして、検出部１６０は、この抽出した関数名等を参照して、取得部１５０により取得されたドキュメントからプログラム要素を検出する。なお、検出部１６０は、エリア１９１に表示されている関数名、引数名、予約語等もプログラム要素として検出する。
【００６８】
例えば、検出部１６０は、エリア１９１から抽出した関数ｔｒａｎｓｌａｔｅ、引数ｄｏｃｕｍｅｎｔ、引数ｌａｎｇｕａｇｅや、イタリック体で表示された表示属性などを参照して、図８に示すドキュメントの仕様が記述されているエリアからｔｒａｎｓｌａｔｅ（）９１、ｄｏｃｕｍｅｎｔ９２、ｌａｎｇｕａｇｅ９３などのプログラム要素を検出する。
【００６９】
また例えば、検出部１６０は、第１の実施の形態で説明したように、語形変化や冠詞の有無、表示属性なども参照してプログラム要素を検出するため、ｔｒａｎｓｌａｔｅｓ９１’、ｄｏｃｕｍｅｎｔ９２’、ｌａｎｇｕａｇｅ９３’などはプログラム要素として検出しない。
【００７０】
以下、設定部７０、翻訳部８０、出力制御部９０が行う処理は第１の実施の形態と同様である。
【００７１】
図１０は、出力部２０が出力するドキュメントの翻訳結果の一例を示す図であり、図８に示すドキュメントの翻訳結果を示している。図１０に示す例では、ｔｒａｎｓｌａｔｅ（）９１、ｄｏｃｕｍｅｎｔ９２、ｌａｎｇｕａｇｅ９３がプログラム要素であることが考慮されて翻訳部８０による翻訳が行われているため、ソフトウェアのドキュメントとして好適な訳文になっている。
【００７２】
一方、図１１は、従来の翻訳装置による図８に示すドキュメントの翻訳結果を示す図であるが、プログラム要素が日常単語として翻訳されているため、翻訳精度が著しく悪化している。
【００７３】
次に、本実施の形態の翻訳装置の動作について説明する。
【００７４】
図１２は、本実施の形態の翻訳装置１０１で行われる翻訳処理手順の流れの一例を示すフローチャートである。
【００７５】
まず、取得部１５０は、入力受付部４０により翻訳操作が受け付けられると、翻訳操作で指示された原言語のドキュメントを外部装置２０１から取得する（ステップＳ１１２）。
【００７６】
続いて、検出部１６０は、取得部１５０により取得されたドキュメント内のソースコードを参照して、ドキュメントからプログラムの構成要素となるプログラム要素を検出する（ステップＳ１１４）。
【００７７】
以下、翻訳不要語句の設定から翻訳結果の出力までの処理（ステップＳ１１６〜ステップＳ１２０）は、図６に示すフローチャートのステップＳ１６〜ステップＳ２０までの処理と同様であるため、説明を省略する。
【００７８】
このように本実施の形態では、ドキュメントのみからプログラム要素を検出し、検出したプログラム要素を翻訳が不要な翻訳不要語句に設定して翻訳を行うため、ソフトウェアの開発環境としての機能を有していない翻訳装置であっても、ソフトウェアのドキュメントとして好適な訳文を得ることができる。
【００７９】
（変形例）
なお、本発明は、上述した各実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記各実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、上記各実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【００８０】
（変形例１）
例えば、上記各実施の形態では、ドキュメントの翻訳結果において、翻訳不要語句に設定されたプログラム要素を原言語のみで出力したが、翻訳不要語句の目的言語への翻訳結果を併記して出力するようにしてもよい。
【００８１】
具体的には、翻訳部８０は、更に、翻訳不要語句を目的言語に翻訳し、出力制御部９０は、翻訳部８０による翻訳不要語句の翻訳結果を、ドキュメントの翻訳結果内の翻訳不要語句に併記して出力部２０に出力させるようにしてもよい。
【００８２】
図１３は、翻訳不要語句の翻訳結果が併記されたドキュメントの翻訳結果の一例を示す図である。図１３に示す例では、翻訳不要語句に設定されたプログラム要素であるｔｒａｎｓｌａｔｅ（）９１、ｄｏｃｕｍｅｎｔ９２、及びｌａｎｇｕａｇｅ９３を原表記のまま表示するとともに、それぞれのプログラム要素の翻訳結果をルビとして表記している。
【００８３】
このようにすると、目的言語を母語とする開発者が原言語に精通していない場合であっても、プログラム要素の意味を理解することができ、翻訳後のドキュメントの利便性を更に向上させることができる。
【００８４】
（変形例２）
また、上記各実施の形態では、ソースコードから抽出した関数名等に加え、リンクの有無などの表示属性を参照して、プログラム要素を検出したが、検出部６０、１６０は、ソースコードから抽出した関数名等に加え、以下のような手法でプログラム要素を検出してもよい。
【００８５】
例えば、関数名、引数名、又は変数名の後に型名を併記する場合には、検出部６０、１６０は、この型名の前の語句をプログラム要素として検出するようにしてもよい。
【００８６】
また例えば、関数名、引数名、又は変数名は、図１４の関数名３０１〜３０４に示すように、１単語だけでなく、２単語以上あるいは数字や記号を組み合わせて表記する場合や、複数の単語を「＿」で連結する場合や、大文字で開始する単語をつなげた複合語である場合もある。従って、検出部６０、１６０は、このような複合語をプログラム要素として検出するようにしてもよい。
【００８７】
また例えば、開始文字が小文字であるプログラム要素は、文頭であっても開始文字は大文字にならないため、検出部６０、１６０は、開始文字が大文字にならない語句をプログラム要素として検出するようにしてもよい。
【００８８】
（変形例３）
また、上記各実施の形態では、関数名及び引数名をプログラム要素として説明したが、プログラム要素はこれらに限定されず、関数名、引数名、変数名、クラス名、名前空間名、及び予約語の少なくともいずれかであればよい。
【００８９】
例えば、クラス名や名前空間名であれば、図１５に示す予約語３１１、３１２にそれぞれ後続するので、予約語３１１、３１２の有無によりクラス名や名前空間名をプログラム要素として検出できる。
【００９０】
また、図１５に示す型名３１３〜３２０のような予約語は、予めプログラム要素であることが分かっているので、翻訳装置１、１０１が予約語を定義したテーブルを記憶部に記憶しておくことで、これら型名などの予約語をプログラム要素として検出できる。
【００９１】
（変形例４）
また、上記各実施の形態では、英語を用いたプログラミング言語を例にとり説明したが、日本語や中国語を変数名や関数名に用いることのできるプログラミング言語、具体的にはユニコードリテラルが利用可能な言語においては、これらの言語でプログラミングされたソフトウェアのドキュメントの翻訳にも用いることができる。
【００９２】
なお、上記各実施の形態の翻訳装置１、１０１は、ＣＰＵ（Central Processing Unit）などの制御装置、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などの記憶装置、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）、メモリカード、光ディスクなどの外部記憶装置、液晶ディスプレイなどの表示装置、キーボードやマウスなどの入力装置、ネットワークに接続して通信を行う通信Ｉ／Ｆ等を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００９３】
上記各実施の形態の翻訳装置１、１０１で実行される翻訳プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital Versatile Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００９４】
また、上記各実施の形態の翻訳装置１、１０１で実行される翻訳プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上記各実施の形態の翻訳装置１、１０１で実行される翻訳プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。また、上記各実施の形態の翻訳装置１、１０１で実行される翻訳プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００９５】
上記各実施の形態の翻訳装置１、１０１で実行される翻訳プログラムは、上述した各部（入力受付部、生成部、取得部、検出部、設定部、翻訳部、出力制御部等）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体から翻訳プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、入力受付部、生成部、取得部、検出部、設定部、翻訳部、出力制御部等が主記憶装置上に生成されるようになっている。
【符号の説明】
【００９６】
１、１０１  翻訳装置
１０  入力部
２０  出力部
３０  記憶部
３２  ソースコード記憶部
３４  ドキュメント記憶部
４０  入力受付部
４５  生成部
５０、１５０  取得部
６０、１６０  検出部
７０  設定部
８０  翻訳部
９０  出力制御部
９１  関数名
９２、９３  引数名
１９１  エリア
１９２  開始タグ
１９３  終了タグ
２０１  外部装置
２１０  ドキュメント記憶部
３０１〜３０４  関数名
３１１〜３２０  予約語
【図１】
2010211719.tif 000003
【図２】
2010211719.tif 000004
【図３】
2010211719.tif 000005
【図４】
2010211719.tif 000006
【図５】
2010211719.tif 000007
【図６】
2010211719.tif 000008
【図７】
2010211719.tif 000009
【図８】
2010211719.tif 000010
【図９】
2010211719.tif 000011
【図１０】
2010211719.tif 000012
【図１１】
2010211719.tif 000013
【図１２】
2010211719.tif 000014
【図１３】
2010211719.tif 000015
【図１４】
2010211719.tif 000016
【図１５】
2010211719.tif 000017