説明

翻訳装置、方法、及びプログラム

【課題】ソフトウェアのドキュメントの翻訳に好適な翻訳装置、方法、及びプログラムを提供する。
【解決手段】ソフトウェアのソースコードを記憶するソースコード記憶部32と、ソースコードの仕様が記載されたドキュメントを原言語で生成する生成部45と、生成されたドキュメントを記憶するドキュメント記憶部34と、ドキュメント記憶部からドキュメントを取得するとともに、ドキュメントの生成元のソースコードをソースコード記憶部から取得する取得部50と、取得されたソースコードを参照して、取得されたドキュメントからソースコード中に出現するプログラム要素を検出する検出部60と、検出されたプログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定部70と、ドキュメントの翻訳不要語句以外の語句を目的言語に翻訳する翻訳部80と、ドキュメントの翻訳結果を出力する出力部20と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、翻訳装置、方法、及びプログラムに関する。
【背景技術】
【0002】
従来から、ソフトウェア開発においては、仕様書等のドキュメント、及び所定のプログラミング言語で記述されたソースコードが作成されている。特に近年では、Java(登録商標)DocやDoxygen等のドキュメンテーションジェネレータを用いることにより、ソースコード中に記述されたコメントから、ドキュメントを生成することが行われている。
【0003】
また、近年のソフトウェア開発のグローバル化に伴い、異なる言語を母語とする複数の開発者によるソフトウェア開発の機会も増加している。このため、例えば特許文献1では、ソースコード中にコメントとして記述された仕様を、異なる言語に翻訳する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−186311号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、ソフトウェアの仕様には、通常、ソースコード中に出現する関数名等のプログラム要素が含まれている。そして、このプログラム要素には、ソースコードを記述する自然言語において日常的に使用される単語(以下、「日常単語」と称する)が使われることが多い。
【0006】
このため、ソースコードの仕様が記載されたドキュメントをそのまま機械翻訳してしまうと、プログラム要素も日常単語とみなされて翻訳されるため、翻訳精度が悪化するおそれがある。
【0007】
本発明は、上記事情に鑑みてなされたものであり、ソフトウェアのドキュメントの翻訳に好適な翻訳装置、方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
上述した課題を解決し、目的を達成するために、本発明の一態様にかかる翻訳装置は、ソフトウェアのソースコードを記憶するソースコード記憶部と、前記ソースコードの仕様が記載されたドキュメントを原言語で生成する生成部と、前記ドキュメントを記憶するドキュメント記憶部と、前記ドキュメント記憶部から前記ドキュメントを取得するとともに、前記ソースコード記憶部から前記ソースコードを取得する取得部と、取得された前記ソースコードを参照して、取得された前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出部と、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定部と、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳部と、前記ドキュメントの翻訳結果を出力する出力部と、を備えることを特徴とする。
【0009】
また、本発明の別の態様にかかる翻訳装置は、ソフトウェアのソースコードの仕様が原言語で記載されたドキュメントであって前記ソースコードを含むドキュメントを、外部装置から取得する取得部と、前記ドキュメント内の前記ソースコードを参照して、前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出部と、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定部と、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳部と、前記ドキュメントの翻訳結果を出力する出力部と、を備えることを特徴とする。
【0010】
また、本発明の別の態様にかかる翻訳方法は、生成部が、ソースコード記憶部に記憶されたソフトウェアのソースコードの仕様が記載されたドキュメントを原言語で生成して、ドキュメント記憶部に記憶させる生成ステップと、取得部が、前記ドキュメント記憶部から前記ドキュメントを取得するとともに、前記ソースコード記憶部から前記ソースコードを取得する取得ステップと、検出部が、取得された前記ソースコードを参照して、取得された前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、を含むことを特徴とする。
【0011】
また、本発明の別の態様にかかる翻訳方法は、取得部が、ソフトウェアのソースコードの仕様が原言語で記載されたドキュメントであって前記ソースコードを含むドキュメントを、外部装置から取得する取得ステップと、検出部が、前記ドキュメント内の前記ソースコードを参照して、前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、を含むことを特徴とする。
【0012】
また、本発明の別の態様にかかる翻訳プログラムは、生成部が、ソースコード記憶部に記憶されたソフトウェアのソースコードの仕様が記載されたドキュメントを原言語で生成して、ドキュメント記憶部に記憶させる生成ステップと、取得部が、前記ドキュメント記憶部から前記ドキュメントを取得するとともに、前記ソースコード記憶部から前記ソースコードを取得する取得ステップと、検出部が、取得された前記ソースコードを参照して、取得された前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、をコンピュータに実行させるためのものである。
【0013】
また、本発明の別の態様にかかる翻訳プログラムは、取得部が、ソフトウェアのソースコードの仕様が原言語で記載されたドキュメントであって前記ソースコードを含むドキュメントを、外部装置から取得する取得ステップと、検出部が、前記ドキュメント内の前記ソースコードを参照して、前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、をコンピュータに実行させるためのものである。
【発明の効果】
【0014】
本発明によれば、ソフトウェアのドキュメントとして好適な訳文を得ることができるという効果を奏する。
【図面の簡単な説明】
【0015】
【図1】図1は、第1の実施の形態の翻訳装置の構成の一例を示すブロック図である。
【図2】図2は、第1の実施の形態のソースコードの一例を示す図である。
【図3】図3は、第1の実施の形態のドキュメントの一例を示す図である。
【図4】図4は、第1の実施の形態のドキュメントの翻訳結果の一例を示す図である。
【図5】図5は、第1の実施の形態のドキュメントの翻訳結果との比較例を示す図である。
【図6】図6は、第1の実施の形態の翻訳装置で行われる翻訳処理手順の流れの一例を示すフローチャートである。
【図7】図7は、第2の実施の形態の翻訳装置の構成の一例を示すブロック図である。
【図8】図8は、第2の実施の形態のドキュメントの一例を示す図である。
【図9】図9は、第2の実施の形態のドキュメントの一例を示す図である。
【図10】図10は、第2の実施の形態のドキュメントの翻訳結果の一例を示す図である。
【図11】図11は、第2の実施の形態のドキュメントの翻訳結果との比較例を示す図である。
【図12】図12は、第2の実施の形態の翻訳装置で行われる翻訳処理手順の流れの一例を示すフローチャートである。
【図13】図13は、変形例1のドキュメントの翻訳結果の一例を示す図である。
【図14】図14は、変形例2のプログラム要素判別手法の一例を示す図である。
【図15】図15は、変形例3のプログラム要素判別手法の一例を示す図である。
【発明を実施するための形態】
【0016】
以下、添付図面を参照しながら、本発明にかかる翻訳装置、方法、及びプログラムの最良な実施の形態を詳細に説明する。
【0017】
(第1の実施の形態)
第1の実施の形態の翻訳装置は、ソフトウェアのドキュメントを原言語から目的言語に翻訳するものであり、特に、関数名や引数名などのプログラムの構成要素となるプログラム要素を原言語に維持したまま目的言語に翻訳する。また、本実施の形態の翻訳装置は、ソフトウェアの開発環境としての機能も有しており、開発者により作成されたソースコードの管理や、当該ソースコードからソフトウェアのドキュメントの生成などを行う。なお、以下では、原言語が英語であり、目的言語が日本語である場合、即ち、英語で記載されたドキュメントを日本語に翻訳する場合を例にとり説明するが、翻訳方向はこれに限定されるものではなく、あらゆる言語間での翻訳に適用することができる。
【0018】
まず、本実施の形態の翻訳装置の構成について説明する。
【0019】
図1は、本実施の形態の翻訳装置の構成の一例を示すブロック図である。図1に示すように、翻訳装置1は、入力部10と、出力部20と、記憶部30と、入力受付部40と、生成部45と、取得部50と、検出部60と、設定部70と、翻訳部80と、出力制御部90とを備える。
【0020】
入力部10は、ドキュメントの生成を指示する生成操作やドキュメントの翻訳を指示する翻訳操作などの各種操作の入力を行うものであり、例えば、キーボード、マウス、又はタッチパネルなどの既存の入力装置により実現できる。
【0021】
出力部20は、後述する出力制御部90の指示により、ドキュメントの翻訳結果などを出力するものであり、例えば、CRTディスプレイ、液晶ディスプレイ、プラズマディスプレイ、有機ELディスプレイ、又はタッチパネル式ディスプレイなどの既存の表示装置により実現できる。なお出力部20を、プリンタなどの既存の印刷装置により実現してもよいし、これらを併用して実現するようにしてもよい。
【0022】
記憶部30は、翻訳装置1で行われる各種処理に使用される情報を記憶するものであり、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、メモリカード、光ディスク、又はRAM(Random Access Memory)などの磁気的、電気的、又は光学的に記憶可能な既存の記憶媒体により実現できる。そして記憶部30は、ソースコード記憶部32と、ドキュメント記憶部34とを含む。
【0023】
ソースコード記憶部32は、ソフトウェアのソースコードを記憶する。図2は、ソースコード記憶部32に記憶されているソースコードの一例を示す図であり、図2に示す例では、ソースコード記憶部32は、translateという名前の関数(以下、「関数translate」と称する)のソースコードが記述されたソースファイルを記憶している。なお、関数translateは、C++言語及びDoxygenの記述ルールに従って記述されており、ソースコードの左側の数字(1〜13)は、行番号を示している。
【0024】
例えば、1〜3行目の文字列は、「/*」及び「*/」で囲まれているため、C++言語の記述ルールからコメント部分とみなされる。同時に、このコメント部分は、「/*!」で開始されているため、Doxygenの記述ルールから後続の関数translateの仕様(説明)とみなされる。
【0025】
また、4行目では、関数translateが宣言されており、5〜6行目では、関数translateの引数であるdocument(以下、「引数document」と称する)及びlanguage(以下、「引数language」と称する)が宣言されている。そして、C++言語の記述ルールから、5行目の「//」以降はコメント部分とみなされる。同時に、このコメント部分は、「//!」で開始されているため、Doxygenの記述ルールから、直前の引数documentの仕様(説明)とみなされる。なお、6行目についても同様である。
【0026】
このように本実施の形態では、ソースコードのコメント部分に関数や引数の仕様が記述されており、後述の生成部45がこのコメント部分を抽出して、当該ソースコードのドキュメントを生成する。なお、図2に示す例では、関数や引数の前後にその仕様を記述しているが、仕様の記述位置はこれに限られるものではない。例えば、離れた箇所にある関数等の仕様の記述や、記述する仕様の範囲を例えばファイル全体なのか、1つの関数なのかを指定することもできる。
【0027】
ドキュメント記憶部34は、ソースコード記憶部32に記憶されているソースコードから後述の生成部45により原言語で生成されたソフトウェアのドキュメントを記憶する。図3は、ドキュメント記憶部34に記憶されているドキュメントの一例を示す図であり、図3に示すドキュメントは、図2に示すソースコードから関数translateの仕様を示すコメント(図2に示すソースコードの1〜3行目のコメント)を抽出して生成されたドキュメントを示している。
【0028】
なお、図3に示す例では、関数名に該当するtranslate()91や、引数名に該当するdocument92、language93は太字で示されており、それぞれ、図2に示すソースコード中の関数translate、引数document、引数languageの宣言箇所へのリンクになっている。
【0029】
入力受付部40は、入力部10から生成操作や翻訳操作などの各種操作の入力を受け付ける。
【0030】
生成部45は、ソースコード記憶部32に記憶されているソースコードから、当該ソースコードの仕様が記載されたドキュメントを原言語で生成する。具体的には、生成部45は、入力受付部40により生成操作が受け付けられると、生成操作で指示されたソースコードをソースコード記憶部32から読み出す。そして生成部45は、読み出したソースコードからコメント部分を抽出し、抽出したコメントの記述ルールに従い、原言語のドキュメントを生成して、ドキュメント記憶部34に記憶させる。
【0031】
例えば、生成部45は、図2に示すソースコードが生成操作により指示された場合には、図2に示すソースコードのコメント部分を抽出して、図3に示すドキュメントを生成する。
【0032】
なお、生成部45は、生成元であるソースコードへのリンク情報など生成元であるソースコードの情報を含んでドキュメントを生成する。
【0033】
取得部50は、ドキュメント記憶部34からドキュメントを取得するとともに、ソースコード記憶部32からソースコードを取得する。具体的には、取得部50は、入力受付部40により翻訳操作が受け付けられると、翻訳操作で指示されたドキュメントをドキュメント記憶部34から取得する。同時に取得部50は、取得したドキュメントの生成元であるソースコード、即ち、取得したドキュメント内で言及されている関数や引数などのプログラム要素が宣言ないし定義されているソースコードをソースコード記憶部32から取得する。
【0034】
なお、本実施の形態では、ドキュメントに生成元のソースコードへのリンク情報が含まれており、取得部50は、このリンク情報を用いて、ドキュメントの生成元であるソースコードを特定する。
【0035】
検出部60は、取得部50により取得されたソースコードを参照して、取得部50により取得されたドキュメントからソースコード中に出現するプログラム要素を検出する。具体的には、検出部60は、取得部50により取得されたソースコードのプログラム言語の文法解析(シンタックスパージング)を行って、関数名や引数名などを抽出する。そして検出部60は、この抽出した関数名等や、当該関数名等へのドキュメントからのリンクの有無を参照して、取得部50により取得されたドキュメントからプログラム要素を検出する。
【0036】
例えば、検出部60は、図2に示すソースコードから抽出した関数translate、引数document、引数languageなどを参照して、図3に示すドキュメントからtranslate()91、document92、language93などのプログラム要素を検出する。
【0037】
なお、本実施の形態では、リンクの有無だけでなく、ソースコードから抽出した関数名等を用いて、ドキュメントからプログラム要素を検出しているため、リンク先がプログラム要素でない場合や、リンク情報が付与されていないプログラム要素にも対処できる。従って、検出部60は、ソースコードから抽出した関数名等でなければ、リンク情報が付与されていてもプログラム要素として検出せず、また、リンク情報が付与されていなくても、ソースコードから抽出した関数名等であれば、プログラム要素として検出する。
【0038】
また、検出部60は、語形変化及び冠詞の有無などを考慮してドキュメントからプログラム要素を検出する。具体的には、プログラム要素は、後述の設定部70により名詞句に設定されるため、検出部60は、語形変化する語句をプログラム要素として検出しない。また、プログラム要素には冠詞が付かないため、検出部60は、冠詞が付く語句をプログラム要素として検出しない。
【0039】
従って、検出部60は、図3に示す例において、語形変化しているtranslates91’や、冠詞「the」が付いているlanguage93’をプログラム要素として検出しない。このため本実施の形態では、日常単語が誤ってプログラム要素として検出されることを防止できる。
【0040】
設定部70は、検出部60により検出されたプログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する。例えば、設定部70は、図3に示す例において、検出部60によりプログラム要素として検出されたtranslate()91、document92、language93を翻訳不要語句に設定する。
【0041】
また設定部70は、更に、翻訳不要語句を名詞句に設定する。例えば、設定部70は、図3に示す例において、翻訳不要語句に設定したtranslate()91、document92、language93を更に名詞句に設定する。これにより、後述の翻訳部80が行う翻訳処理において、translate()91のように動詞が使われることが多い関数名なども名詞句とみなして翻訳することができる。
【0042】
翻訳部80は、取得部50により取得されたドキュメントの翻訳不要語句以外の語句を目的言語に翻訳する。また翻訳部80は、翻訳不要語句を名詞句とみなして、翻訳不要語句以外の語句を目的言語に翻訳する。
【0043】
出力制御部90は、翻訳部80によるドキュメントの翻訳結果を出力部20に出力させる。図4は、出力部20が出力するドキュメントの翻訳結果の一例を示す図であり、図3に示すドキュメントの翻訳結果を示している。図4に示す例では、translate()91、document92、language93がプログラム要素であることが考慮されて翻訳部80による翻訳が行われているため、ソフトウェアのドキュメントとして好適な訳文になっている。
【0044】
一方、図5は、従来の翻訳装置による図3に示すドキュメントの翻訳結果を示す図であるが、プログラム要素が日常単語として翻訳されているため、翻訳精度が著しく悪化している。
【0045】
なお、出力制御部90は、図4に示すように、翻訳結果の翻訳不要語句を翻訳前と同じフォント属性で出力しているため、原文同様にこれらの部分が関数や引数などのプログラム要素であることを開発者は判断できる。また、原文同様のリンク情報も付加されているため、訳文からも該当するソースコードへの移動ができるようになっている。
【0046】
次に、本実施の形態の翻訳装置の動作について説明する。
【0047】
図6は、本実施の形態の翻訳装置1で行われる翻訳処理手順の流れの一例を示すフローチャートである。
【0048】
まず、生成部45は、入力受付部40により生成操作が受け付けられると、ソースコード記憶部32に記憶されているソースコードからソフトウェアのドキュメントを原言語で生成して、ドキュメント記憶部34に記憶させる(ステップS10)。
【0049】
続いて、取得部50は、入力受付部40により翻訳操作が受け付けられると、翻訳操作で指示された原言語のドキュメントをドキュメント記憶部34から取得するとともに、取得したドキュメントの生成元であるソースコードをソースコード記憶部32から取得する(ステップS12)。
【0050】
続いて、検出部60は、取得部50により取得されたソースコードを参照して、取得部50により取得されたドキュメントからプログラムの構成要素となるプログラム要素を検出する(ステップS14)。
【0051】
続いて、設定部70は、検出部60により検出されたドキュメント中のプログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する(ステップS16)。
【0052】
続いて、翻訳部80は、取得部50により取得されたドキュメントの翻訳不要語句以外の語句を目的言語に翻訳する(ステップS18)。
【0053】
続いて、出力制御部90は、翻訳部80によるドキュメントの翻訳結果を出力部20に出力させる(ステップS20)。
【0054】
このように本実施の形態では、ドキュメントからプログラム要素を検出し、検出したプログラム要素を翻訳が不要な翻訳不要語句に設定して翻訳を行うため、ソフトウェアのドキュメントとして好適な訳文を得ることができる。
【0055】
(第2の実施の形態)
次に、第2の実施の形態では、翻訳装置が、ソースコードから原言語で生成されたソフトウェアのドキュメントであって生成元のソースコードを含むドキュメントを、外部装置から取得して、関数名や引数名などのプログラム要素を原言語に維持したまま目的言語に翻訳する例について説明する。第2の実施の形態の翻訳装置は、ソフトウェアの開発環境としての機能を有しておらず、また、ドキュメントに含まれるソースコードから関数名や引数名などのプログラム要素を検出する。
【0056】
なお、以下では、第1の実施の形態との相違点の説明を主に行い、第1の実施の形態と同様の機能を有する構成要素については、第1の実施の形態と同様の名称・符号を付し、その説明を省略する。
【0057】
まず、本実施の形態の翻訳装置の構成について説明する。
【0058】
図7は、本実施の形態の翻訳装置101の構成の一例を示すブロック図である。翻訳装置101は、記憶部30及び生成部45を有していない点、取得部150が外部装置201からドキュメントを取得する点、及び検出部160がドキュメントからプログラム要素を検出する点が第1の実施の形態の翻訳装置1と異なる。従って、以下では、外部装置201、取得部150、及び検出部160について説明する。
【0059】
外部装置201は、ソフトウェアのソースコードから原言語で生成され、当該ソースコードの仕様が記載されたドキュメントであって生成元のソースコードを含むドキュメントを管理するものであり、当該ドキュメントを記憶するドキュメント記憶部210を含む。なお、外部装置201がソフトウェアのソースコードから当該ドキュメントを生成するようにしてもよい。
【0060】
図8及び図9は、ドキュメント記憶部210に記憶されているHTML形式のドキュメントの一例を示す図であり、図8は、HTML文書として表示されたものであり、図9は、テキスト文書として表示されたものである。
【0061】
図8及び図9に示すドキュメントは、図2に示すソースコードから関数translate、引数document、及び引数languageの仕様を示すコメント(図2に示すソースコードの1〜3、5、及び6行目のコメント)、並びに生成元のソースコードである関数translateを抽出して生成されたドキュメントである。
【0062】
図8に示す例では、生成元のソースコードである関数translateと、関数translate、引数document、及び引数languageの仕様とが別々のエリアに表示されており、生成元のソースコードである関数translateは、エリア191に表示されている。また、仕様が記述されているエリアにおいては、関数に該当するtranslate()91や、引数に該当するdocument92、language93などのプログラム要素に該当する部分はイタリック体で示されている。
【0063】
なお、本実施の形態では、ドキュメント記憶部210に記憶されているドキュメントがHMTLファイルである例について説明するが、ワープロソフトにより作成されたファイルやLatex等であってもよい。
【0064】
取得部150は、ソフトウェアのソースコードから原言語で生成されたソフトウェアのドキュメントであって生成元のソースコードを含むドキュメントを、外部装置201から取得する。
【0065】
検出部160は、取得部150により取得されたドキュメント内のソースコードを参照して、ドキュメントからソースコード中に出現するプログラム要素を検出する。
【0066】
例えば、検出部160は、図8及び図9に示す例では、開始タグ192及び終了タグ193で囲まれた情報がエリア191に表示されている関数translateの情報を示しているため、ここから、関数名、引数名、予約語などを抽出する。
【0067】
そして、検出部160は、この抽出した関数名等を参照して、取得部150により取得されたドキュメントからプログラム要素を検出する。なお、検出部160は、エリア191に表示されている関数名、引数名、予約語等もプログラム要素として検出する。
【0068】
例えば、検出部160は、エリア191から抽出した関数translate、引数document、引数languageや、イタリック体で表示された表示属性などを参照して、図8に示すドキュメントの仕様が記述されているエリアからtranslate()91、document92、language93などのプログラム要素を検出する。
【0069】
また例えば、検出部160は、第1の実施の形態で説明したように、語形変化や冠詞の有無、表示属性なども参照してプログラム要素を検出するため、translates91’、document92’、language93’などはプログラム要素として検出しない。
【0070】
以下、設定部70、翻訳部80、出力制御部90が行う処理は第1の実施の形態と同様である。
【0071】
図10は、出力部20が出力するドキュメントの翻訳結果の一例を示す図であり、図8に示すドキュメントの翻訳結果を示している。図10に示す例では、translate()91、document92、language93がプログラム要素であることが考慮されて翻訳部80による翻訳が行われているため、ソフトウェアのドキュメントとして好適な訳文になっている。
【0072】
一方、図11は、従来の翻訳装置による図8に示すドキュメントの翻訳結果を示す図であるが、プログラム要素が日常単語として翻訳されているため、翻訳精度が著しく悪化している。
【0073】
次に、本実施の形態の翻訳装置の動作について説明する。
【0074】
図12は、本実施の形態の翻訳装置101で行われる翻訳処理手順の流れの一例を示すフローチャートである。
【0075】
まず、取得部150は、入力受付部40により翻訳操作が受け付けられると、翻訳操作で指示された原言語のドキュメントを外部装置201から取得する(ステップS112)。
【0076】
続いて、検出部160は、取得部150により取得されたドキュメント内のソースコードを参照して、ドキュメントからプログラムの構成要素となるプログラム要素を検出する(ステップS114)。
【0077】
以下、翻訳不要語句の設定から翻訳結果の出力までの処理(ステップS116〜ステップS120)は、図6に示すフローチャートのステップS16〜ステップS20までの処理と同様であるため、説明を省略する。
【0078】
このように本実施の形態では、ドキュメントのみからプログラム要素を検出し、検出したプログラム要素を翻訳が不要な翻訳不要語句に設定して翻訳を行うため、ソフトウェアの開発環境としての機能を有していない翻訳装置であっても、ソフトウェアのドキュメントとして好適な訳文を得ることができる。
【0079】
(変形例)
なお、本発明は、上述した各実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記各実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、上記各実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせても良い。
【0080】
(変形例1)
例えば、上記各実施の形態では、ドキュメントの翻訳結果において、翻訳不要語句に設定されたプログラム要素を原言語のみで出力したが、翻訳不要語句の目的言語への翻訳結果を併記して出力するようにしてもよい。
【0081】
具体的には、翻訳部80は、更に、翻訳不要語句を目的言語に翻訳し、出力制御部90は、翻訳部80による翻訳不要語句の翻訳結果を、ドキュメントの翻訳結果内の翻訳不要語句に併記して出力部20に出力させるようにしてもよい。
【0082】
図13は、翻訳不要語句の翻訳結果が併記されたドキュメントの翻訳結果の一例を示す図である。図13に示す例では、翻訳不要語句に設定されたプログラム要素であるtranslate()91、document92、及びlanguage93を原表記のまま表示するとともに、それぞれのプログラム要素の翻訳結果をルビとして表記している。
【0083】
このようにすると、目的言語を母語とする開発者が原言語に精通していない場合であっても、プログラム要素の意味を理解することができ、翻訳後のドキュメントの利便性を更に向上させることができる。
【0084】
(変形例2)
また、上記各実施の形態では、ソースコードから抽出した関数名等に加え、リンクの有無などの表示属性を参照して、プログラム要素を検出したが、検出部60、160は、ソースコードから抽出した関数名等に加え、以下のような手法でプログラム要素を検出してもよい。
【0085】
例えば、関数名、引数名、又は変数名の後に型名を併記する場合には、検出部60、160は、この型名の前の語句をプログラム要素として検出するようにしてもよい。
【0086】
また例えば、関数名、引数名、又は変数名は、図14の関数名301〜304に示すように、1単語だけでなく、2単語以上あるいは数字や記号を組み合わせて表記する場合や、複数の単語を「_」で連結する場合や、大文字で開始する単語をつなげた複合語である場合もある。従って、検出部60、160は、このような複合語をプログラム要素として検出するようにしてもよい。
【0087】
また例えば、開始文字が小文字であるプログラム要素は、文頭であっても開始文字は大文字にならないため、検出部60、160は、開始文字が大文字にならない語句をプログラム要素として検出するようにしてもよい。
【0088】
(変形例3)
また、上記各実施の形態では、関数名及び引数名をプログラム要素として説明したが、プログラム要素はこれらに限定されず、関数名、引数名、変数名、クラス名、名前空間名、及び予約語の少なくともいずれかであればよい。
【0089】
例えば、クラス名や名前空間名であれば、図15に示す予約語311、312にそれぞれ後続するので、予約語311、312の有無によりクラス名や名前空間名をプログラム要素として検出できる。
【0090】
また、図15に示す型名313〜320のような予約語は、予めプログラム要素であることが分かっているので、翻訳装置1、101が予約語を定義したテーブルを記憶部に記憶しておくことで、これら型名などの予約語をプログラム要素として検出できる。
【0091】
(変形例4)
また、上記各実施の形態では、英語を用いたプログラミング言語を例にとり説明したが、日本語や中国語を変数名や関数名に用いることのできるプログラミング言語、具体的にはユニコードリテラルが利用可能な言語においては、これらの言語でプログラミングされたソフトウェアのドキュメントの翻訳にも用いることができる。
【0092】
なお、上記各実施の形態の翻訳装置1、101は、CPU(Central Processing Unit)などの制御装置、ROM(Read Only Memory)やRAM(Random Access Memory)などの記憶装置、HDD(Hard Disk Drive)、SSD(Solid State Drive)、メモリカード、光ディスクなどの外部記憶装置、液晶ディスプレイなどの表示装置、キーボードやマウスなどの入力装置、ネットワークに接続して通信を行う通信I/F等を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【0093】
上記各実施の形態の翻訳装置1、101で実行される翻訳プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【0094】
また、上記各実施の形態の翻訳装置1、101で実行される翻訳プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、上記各実施の形態の翻訳装置1、101で実行される翻訳プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。また、上記各実施の形態の翻訳装置1、101で実行される翻訳プログラムを、ROM等に予め組み込んで提供するように構成してもよい。
【0095】
上記各実施の形態の翻訳装置1、101で実行される翻訳プログラムは、上述した各部(入力受付部、生成部、取得部、検出部、設定部、翻訳部、出力制御部等)を含むモジュール構成となっており、実際のハードウェアとしてはCPU(プロセッサ)が上記記憶媒体から翻訳プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、入力受付部、生成部、取得部、検出部、設定部、翻訳部、出力制御部等が主記憶装置上に生成されるようになっている。
【符号の説明】
【0096】
1、101 翻訳装置
10 入力部
20 出力部
30 記憶部
32 ソースコード記憶部
34 ドキュメント記憶部
40 入力受付部
45 生成部
50、150 取得部
60、160 検出部
70 設定部
80 翻訳部
90 出力制御部
91 関数名
92、93 引数名
191 エリア
192 開始タグ
193 終了タグ
201 外部装置
210 ドキュメント記憶部
301〜304 関数名
311〜320 予約語

【特許請求の範囲】
【請求項1】
ソフトウェアのソースコードを記憶するソースコード記憶部と、
前記ソースコードの仕様が記載されたドキュメントを原言語で生成する生成部と、
前記ドキュメントを記憶するドキュメント記憶部と、
前記ドキュメント記憶部から前記ドキュメントを取得するとともに、前記ソースコード記憶部から前記ソースコードを取得する取得部と、
取得された前記ソースコードを参照して、取得された前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出部と、
前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定部と、
前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳部と、
前記ドキュメントの翻訳結果を出力する出力部と、を備えることを特徴とする翻訳装置。
【請求項2】
ソフトウェアのソースコードの仕様が原言語で記載されたドキュメントであって前記ソースコードを含むドキュメントを、外部装置から取得する取得部と、
前記ドキュメント内の前記ソースコードを参照して、前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出部と、
前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定部と、
前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳部と、
前記ドキュメントの翻訳結果を出力する出力部と、を備えることを特徴とする翻訳装置。
【請求項3】
前記プログラム要素は、関数名、引数名、変数名、クラス名、名前空間名、パッケージ名、及び予約語の少なくともいずれかであることを特徴とする請求項1又は2に記載の翻訳装置。
【請求項4】
前記設定部は、更に、前記翻訳不要語句を名詞句に設定し、
前記翻訳部は、前記翻訳不要語句を前記名詞句とみなして、前記翻訳不要語句以外の語句を前記目的言語に翻訳することを特徴とする請求項1〜3のいずれか1つに記載の翻訳装置。
【請求項5】
前記翻訳部は、更に、前記翻訳不要語句を前記目的言語に翻訳し、
前記出力部は、前記翻訳不要語句の翻訳結果を、前記ドキュメントの翻訳結果内の前記翻訳不要語句に併記して出力することを特徴とする請求項1〜4のいずれか1つに記載の翻訳装置。
【請求項6】
生成部が、ソースコード記憶部に記憶されたソフトウェアのソースコードの仕様が記載されたドキュメントを原言語で生成して、ドキュメント記憶部に記憶させる生成ステップと、
取得部が、前記ドキュメント記憶部から前記ドキュメントを取得するとともに、前記ソースコード記憶部から前記ソースコードを取得する取得ステップと、
検出部が、取得された前記ソースコードを参照して、取得された前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、
設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、
翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、
出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、を含むことを特徴とする翻訳方法。
【請求項7】
取得部が、ソフトウェアのソースコードの仕様が原言語で記載されたドキュメントであって前記ソースコードを含むドキュメントを、外部装置から取得する取得ステップと、
検出部が、前記ドキュメント内の前記ソースコードを参照して、前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、
設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、
翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、
出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、を含むことを特徴とする翻訳方法。
【請求項8】
生成部が、ソースコード記憶部に記憶されたソフトウェアのソースコードの仕様が記載されたドキュメントを原言語で生成して、ドキュメント記憶部に記憶させる生成ステップと、
取得部が、前記ドキュメント記憶部から前記ドキュメントを取得するとともに、前記ソースコード記憶部から前記ソースコードを取得する取得ステップと、
検出部が、取得された前記ソースコードを参照して、取得された前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、
設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、
翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、
出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、をコンピュータに実行させるための翻訳プログラム。
【請求項9】
取得部が、ソフトウェアのソースコードの仕様が原言語で記載されたドキュメントであって前記ソースコードを含むドキュメントを、外部装置から取得する取得ステップと、
検出部が、前記ドキュメント内の前記ソースコードを参照して、前記ドキュメントから前記ソースコード中に出現するプログラム要素を検出する検出ステップと、
設定部が、前記プログラム要素を、目的言語への翻訳が不要な翻訳不用語句に設定する設定ステップと、
翻訳部が、前記ドキュメントの前記翻訳不要語句以外の語句を前記目的言語に翻訳する翻訳ステップと、
出力制御部が、前記ドキュメントの翻訳結果を出力部に出力させる出力制御ステップと、をコンピュータに実行させるための翻訳プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2010−211719(P2010−211719A)
【公開日】平成22年9月24日(2010.9.24)
【国際特許分類】
【出願番号】特願2009−59645(P2009−59645)
【出願日】平成21年3月12日(2009.3.12)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】