(57)【要約】【課題】ソースコード等の文書を効率的に評価できるプログラムを提供することを目的とする。【解決手段】プログラムは、ソースコードを取得し、文字の種別に応じて文字を色に変換する、または文字の色を変換するルールに従って、ソースコードについて変換処理を実行して色情報を生成し、生成した色情報を出力する、処理をコンピュータに実行させる。特に、プログラムは、他のソースコードを取得し、ルールに従って、他のソースコードについて変換処理を実行して他の色情報を生成し、色情報と他の色情報とのパターン認識に基づいて、他のソースコードに対する評価結果を出力する、処理を含むことを特徴とする。【選択図】図７
2018156654.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードを取得し、
文字の種別に応じて文字を色に変換する、または文字の色を変換するルールに従って、前記ソースコードについて変換処理を実行して色情報を生成し、
生成した前記色情報を出力する、
処理をコンピュータに実行させるプログラム。
【請求項２】
前記ルールは、前記ソースコードに対する評価の観点毎に異なる色に文字を置換するルールである、
ことを特徴とする請求項１に記載のプログラム。
【請求項３】
他のソースコードを取得し、
前記ルールに従って、前記他のソースコードについて変換処理を実行して他の色情報を生成し、
前記色情報と前記他の色情報とのパターン認識に基づいて、前記他のソースコードに対する評価結果を出力する、
処理を含むことを特徴とする請求項１又は２に記載のプログラム。
【請求項４】
前記出力する処理は、前記色情報と前記他の色情報とのパターン認識に基づいて、前記他のソースコードに対する評価の観点毎に異なる評価結果を出力する、
ことを特徴とする請求項３に記載のプログラム。
【請求項５】
さらに、前記ソースコードを部分的に重畳する複数の部分ソースコードに分割するとともに、前記他のソースコードを部分的に重畳する複数の他の部分ソースコードに分割し、
前記ルールに従って、分割した前記複数の部分ソースコード、及び前記複数の他の部分ソースコードについて変換処理を実行して色情報を生成する、
ことを特徴とする請求項３又は４に記載のプログラム。
【請求項６】
ソースコードを取得し、
文字の種別に応じて文字を色に変換する、または文字の色を変換するルールに従って、前記ソースコードについて変換処理を実行して色情報を生成し、
生成した前記色情報を出力する、
処理をコンピュータが実行する情報処理方法。
【請求項７】
ソースコードを取得し、
文字の種別に応じて文字を色に変換する、または文字の色を変換するルールに従って、前記ソースコードについて変換処理を実行して色情報を生成し、
生成した前記色情報を出力する、
処理部を備える情報処理装置。
【請求項８】
複数の文字を含む文書の情報を取得し、
文字の種別に応じて文字を特定の色に変換する、または文字の色を変換するルールに従って、前記文書の情報について変換処理を実行して色情報を生成し、
生成した前記色情報を出力する、
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、プログラム、情報処理方法、及び情報処理装置に関する。
【背景技術】
【０００２】
ソースコードに対する静的解析が知られている（例えば特許文献１参照）。静的解析により例えばコーディング規約違反といった品質に関する問題が発見される。ソースコードが静的解析を通過すると、レビューアなどと呼ばれるソースコードの評価担当者がそのソースコードを評価（レビュー）する。評価担当者は静的解析の解析結果を踏まえつつ、さらに、ソースコードの保守性の高さや潜在的なバグの少なさといった評価観点でそのソースコードを評価する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１３４５２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、評価担当者はソースコードを目視により評価するため、効率的でないという問題がある。また、ソースコードに限らず、評価や検証の対象である文書を、担当者が目視で評価や検証する場合には、同様に、効率的ではないという問題がある。
【０００５】
そこで、１つの側面では、ソースコード等の文書を効率的に評価できるプログラム、情報処理方法、及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
１つの実施態様では、プログラムは、ソースコードを取得し、文字の種別に応じて文字を色に変換する、または文字の色を変換するルールに従って、前記ソースコードについて変換処理を実行して色情報を生成し、生成した前記色情報を出力する、処理をコンピュータに実行させる。
【発明の効果】
【０００７】
ソースコード等の文書を効率的に評価することができる。
【図面の簡単な説明】
【０００８】
【図１】図１は第１実施形態に係るソースコードレビューシステムの一例である。
【図２】図２はサーバ装置のハードウェア構成の一例である。
【図３】図３は第１実施形態に係るサーバ装置のブロック図の一例である。
【図４】図４（ａ）は教師データ生成画面の一例である。図４（ｂ）は学習対象記憶部の一例である。
【図５】図５はサーバ装置の動作の一例を示すフローチャートである。
【図６】図６は学習部生成処理の一例を示すフローチャートである。
【図７】図７は第１実施形態に係る画像化ツールの処理の一例を説明するための図である。
【図８】図８（ａ）は可読性評価用マッピングルールの一例である。図８（ｂ）は可読性評価用マッピングルールに基づく置換の一例を説明する図である。
【図９】図９（ａ）は複雑度評価用マッピングルールの一例である。図９（ｂ）は複雑度評価用マッピングルールに基づく置換の一例を説明する図である。
【図１０】図１０（ａ）はコメント密度評価用マッピングルールの一例である。図１０（ｂ）はコメント密度評価用マッピングルールに基づく置換の一例を説明する図である。
【図１１】図１１は評価処理の一例を示すフローチャートである。
【図１２】図１２はソースコード評価処理の一例を示すフローチャートである。
【図１３】図１３（ａ）〜（ｄ）は評価結果の一例を説明するための図である。
【図１４】図１４は第２実施形態に係る画像化ツールの処理の一例を説明するための図（その１）である。
【図１５】図１５は第２実施形態に係る画像化ツールの処理の一例を説明するための図（その２）である。
【図１６】図１６は第３実施形態に係るコードレビューシステムの一例である。
【図１７】図１７は第３実施形態に係る制御装置とサーバ装置のブロック図の一例である。
【図１８】図１８（ａ）は評価済画像記憶部の一例である。図１８（ｂ）は未評価画像記憶部の一例である。
【発明を実施するための形態】
【０００９】
以下では、評価や検証の対象の文書が、ソースコードであるとして説明を行う。まず、本件の実施形態を説明する前に、比較例を簡単に説明する。例えば、静的解析を通過したソースコードが評価担当者に集中すると、評価担当者は目視によりソースコードを評価するため、評価担当者に負荷がかかるという問題がある。なお、この問題は評価や検証の対象がソースコード以外の文書であっても、同様である。このような場合、評価担当者が行う評価の一部を例えば人工知能によって実現することが想定される。評価担当者の評価観点を教師データとして人工知能が学習できれば、ソースコードに対する一部の評価を人工知能が担当するため、評価担当者の負荷は低減する。
【００１０】
しかしながら、ソースコードの一部をスクリーンショットにより切り出した画像とその画像に対する評価とを教師データとして人工知能に投入して学習させる場合、投入する画像の大きさはスクリーンの大きさ（具体的にはディスプレイの大きさ）に相当する。このような大きさの画像を人工知能に投入して学習させる場合、教師データの学習に時間がかかるという課題がある。そこで、学習時間が少ない教師データを生成できる実施形態を説明する。
【００１１】
以下、本件を実施するための形態について図面を参照して説明する。
【００１２】
（第１実施形態）
図１は第１実施形態に係るソースコードレビューシステムＳ１の一例である。ソースコードレビューシステムＳ１は端末装置１００と情報処理装置としてのサーバ装置２００を含んでいる。端末装置１００とサーバ装置２００は同一の拠点（例えばオフィスなど）内に設置される。端末装置１００とサーバ装置２００は通信ネットワークＮＷによって接続されている。通信ネットワークＮＷとしては例えばLocal Area Network（ＬＡＮ）がある。尚、図１において、端末装置１００の一例としてPersonal Computer（ＰＣ）が示されているが、端末装置１００はＰＣに限定されず、例えばスマートフォンやタブレット端末といったスマートデバイスであってもよい。
【００１３】
端末装置１００は入力装置１１０と表示装置１２０と制御装置１３０とを含んでいる。制御装置１３０は入力装置１１０からの情報の入力を受け付けて、表示装置１２０の表示内容を制御する。また、制御装置１３０は入力装置１１０からの入力を受け付けて各種の情報をサーバ装置２００に送信したり、サーバ装置２００から送信された各種の情報を受信したりする。例えば、入力装置１１０から評価対象のソースコードに対する評価を要求する情報を入力すると、制御装置１３０はその情報の入力を受け付けて、サーバ装置３００にソースコードの評価を要求する。サーバ装置２００はその要求を受信すると、評価対象のソースコードを評価し、評価結果を制御装置１３０に送信する。制御装置１３０は評価結果を受信すると、表示装置１２０に評価結果を表示する。
【００１４】
以下、図面を参照して、サーバ装置２００の詳細について説明する。
【００１５】
図２はサーバ装置２００のハードウェア構成の一例である。尚、上述した端末装置１００は基本的にサーバ装置２００と同様のハードウェア構成であるため、説明を省略する。
【００１６】
図２に示すように、サーバ装置２００は、少なくともCentral Processing Unit（ＣＰＵ）２００Ａ、Random Access Memory（ＲＡＭ）２００Ｂ、Read Only Memory（ＲＯＭ）２００Ｃ及びネットワークＩ／Ｆ（インタフェース）２００Ｄを含んでいる。サーバ装置２００は、必要に応じて、Hard Disk Drive（ＨＤＤ）２００Ｅ、入力Ｉ／Ｆ２００Ｆ、出力Ｉ／Ｆ２００Ｇ、入出力Ｉ／Ｆ２００Ｈ、ドライブ装置２００Ｉの少なくとも１つを含んでいてもよい。ＣＰＵ２００Ａからドライブ装置２００Ｉまでは、内部バス２００Ｊによって互いに接続されている。少なくともＣＰＵ２００ＡとＲＡＭ２００Ｂとが協働することによってコンピュータが実現される。
【００１７】
入力Ｉ／Ｆ２００Ｆには、入力装置７１０が接続される。入力装置７１０としては、例えばキーボードやマウスなどがある。尚、上述した入力装置１１０も基本的に入力装置７１０と同様である。
出力Ｉ／Ｆ２００Ｇには、表示装置７２０が接続される。表示装置７２０としては、例えば液晶ディスプレイがある。尚、上述した表示装置１２０も基本的に表示装置７２０と同様である。
入出力Ｉ／Ｆ２００Ｈには、半導体メモリ７３０が接続される。半導体メモリ７３０としては、例えばUniversal Serial Bus（ＵＳＢ）メモリやフラッシュメモリなどがある。入出力Ｉ／Ｆ２００Ｈは、半導体メモリ７３０に記憶されたプログラムやデータを読み取る。
入力Ｉ／Ｆ２００Ｆ及び入出力Ｉ／Ｆ２００Ｈは、例えばＵＳＢポートを備えている。出力Ｉ／Ｆ２００Ｇは、例えばディスプレイポートを備えている。
【００１８】
ドライブ装置２００Ｉには、可搬型記録媒体７４０が挿入される。可搬型記録媒体７４０としては、例えばCompact Disc（ＣＤ）−ＲＯＭ、Digital Versatile Disc（ＤＶＤ）といったリムーバブルディスクがある。ドライブ装置２００Ｉは、可搬型記録媒体７４０に記録されたプログラムやデータを読み込む。
ネットワークＩ／Ｆ２００Ｄは、例えばＬＡＮポートを備えている。ネットワークＩ／Ｆ２００Ｄは上述した通信ネットワークＮＷと接続される。
【００１９】
上述したＲＡＭ２００Ｂには、ＲＯＭ２００ＣやＨＤＤ２００Ｅに記憶されたプログラムがＣＰＵ２００Ａによって格納される。ＲＡＭ２００Ｂには、可搬型記録媒体７４０に記録されたプログラムがＣＰＵ２００Ａによって格納される。格納されたプログラムをＣＰＵ２００Ａが実行することにより、後述する各種の機能が実現され、また、後述する各種の処理が実行される。尚、プログラムは後述するフローチャートに応じたものとすればよい。
【００２０】
図３は第１実施形態に係るサーバ装置２００のブロック図の一例である。図４（ａ）は教師データ生成画面の一例である。図４（ｂ）は学習対象記憶部２５１の一例である。図３ではサーバ装置２００の機能構成をブロック図により表している。サーバ装置２００は、制御アプリ２１０と画像化ツール２２０とニューラルネットワークライブラリ又は機械学習ライブラリ（以下、単にニューラルネットワークライブラリという）２３０とを備えている。制御アプリ２１０は画像化ツール２２０とニューラルネットワークライブラリ２３０の動作を制御する。例えば制御アプリ２１０は上述した要求を制御装置１３０から受信すると、画像化ツール２２０とニューラルネットワークライブラリ２３０を駆動する。これにより、画像化ツール２２０とニューラルネットワークライブラリ２３０はそれぞれ自身の処理を実行する。
【００２１】
画像化ツール２２０はソースコードを分割し、分割したソースコードを画像に変換する処理を実行する。言い換えれば、画像化ツール２２０はソースコードを分割し、分割したソースコードを画像化する。図３に示すように、画像化ツール２２０はソースコード分割部２２１とソースコード変換部２２２を含んでいる。
【００２２】
ソースコード分割部２２１はソースコードを予め定めた行数毎に複数の部分ソースコードに分割する。例えば、ソースコード分割部２２１は学習対象記憶部２５１が教師データとして記憶する学習対象のソースコードを取得し、取得したソースコードを４０行毎に複数の部分ソースコードに分割する。同様に、ソースコード分割部２２１は評価対象記憶部２５２が記憶する評価対象のソースコードを取得し、取得したソースコードを４０行毎に複数の部分ソースコードに分割する。
【００２３】
ここで、学習対象記憶部２５１は予め所定の行単位で評価が付与された複数の評価観点におけるソ−スコード全文を教師データとして記憶している。例えば、評価担当者は入力装置１１０を操作して、図４（ａ）に示すように、教師データ生成画面（以下、単に生成画面という）を表示装置１２０に表示させる。生成画面は画像化ツール２２０に相当する機能を備えている。評価担当者は生成画面に含まれる入力欄Ｂｘ１にプログラマが作成し終えたソースコードの格納先（例えばフォルダ名など）を入力し、入力欄Ｂｘ２にソースコードの名称（例えばファイル名）を入力する。また、評価担当者は入力欄Ｂｘ３に教師データの格納先を入力し、評価結果の入力欄Ｂｘ４を未入力のまま、選択欄Ｂｘ５で複数の評価観点の中からいずれか１つの評価観点（例えば「可読性」）を選択する。尚、選択欄Ｂｘ６，Ｂｘ７のそれぞれにおいて選択欄Ｂｘ５で選択した評価項目と異なる評価項目（例えば「複雑度」及び「コメント密度」）を選択してもよい。
【００２４】
評価担当者は種々の入力及び選択を終えると、入力装置１１０を操作してポインタＰｔにより画像化開始ボタンＢｔ１を押下する指示を行う。これにより、制御装置１３０はソースコードの格納先及びファイル名に基づいて、ソースコードの格納先からそのファイル名が付与されたソースコードを取得し、取得したソースコードを部分ソースコードに分割し、部分ソースコードの画像と対応付けて生成画面上に表示する。部分ソースコードを画像に変換する画像化は、選択欄Ｂｘ５で選択した評価観点に応じた画像化のルール（後述する種々のマッピングルール）に則って実施する。画像化したソースコードは生成画面上でその内容を目視で確認することができる。評価担当者は表示中の部分ソースコード１またはその画像化を確認して評価を行い、評価結果の入力欄Ｂｘ４に評価結果「〇」又は「×」を入力する。評価結果「〇」は高評価を表し、評価結果「×」は低評価を表す。
【００２５】
入力欄Ｂｘ４には３つの評価観点の結果を入力できるが必須なのは選択欄Ｂｘ５で選択した観点のみで、他の観点での評価結果は省略可能である。３つのすべての入力欄Ｂｘ４への入力（省略も含む）を終えると、生成画面は次の４０行分の部分ソースコードと画像を表示する。再び評価担当者が、表示中のソースコードを評価し、評価結果を入力する。このように４０行ずつ刻んで評価の入力を繰りかえし、最後の行まで評価し終えた段階で、入力装置１１０を操作してポインタＰｔにより保存ボタンＢｔ２を押下する指示を行う。
【００２６】
これにより、制御装置１３０（例えばローカルドライブ）は所定の行単位に評価が付与された複数の評価観点におけるソ−スコード全文を教師データとして記憶する。そして、制御装置１３０からの指示に基づいて制御アプリ２１０が学習部の生成を開始すると、制御アプリ２１０は制御装置１３０から教師データを取得して、図４（ｂ）に示すように、学習対象記憶部２５１に教師データを格納する。
【００２７】
ソースコード変換部２２２は複数の部分ソースコードを画像に変換する。この変換によりソースコード上の文字１桁は、画像上の１ピクセルにマッピングされる。より詳しくは、ソースコード変換部２２２はソースコード分割部２２１から複数の部分ソースコードを取得すると、マッピングルール記憶部２５３が記憶するマッピングルールを取得する。マッピングルールはプログラミング言語が予め定義する文字であるかや、プログラマが予め任意に定義できる文字であるかといった、予め定めた文字の種別に基づいて文字を異なる色に置換する情報（例えば電子ファイル）である。例えばプログラミング言語がJava（登録商標）である場合、プログラミング言語が予め定義する文字としては予約語などがあり、プログラマが任意に定義できる文字としてはクラス名やメソッド名といった識別子などがある。尚、マッピングルールについては後に詳しく説明する。
【００２８】
ソースコード変換部２２２はマッピングルールを取得すると、マッピングルールに基づいて、複数の部分ソースコードのそれぞれに含まれる文字を色のついたピクセルに置換する。そして、ソースコード変換部２２２は文字を色のついたピクセルに置換した複数の部分ソースコードを画像に変換する。ソースコード変換部２２２は部分ソースコードの分割元が学習対象のソースコードである場合には、制御アプリ２１０を介して画像を評価済画像として評価済画像記憶部２５５に格納する。これにより、図１８（ａ）に示すように、評価済画像記憶部２５５は複数の評価済画像を記憶する。一方、ソースコード変換部２２２は部分ソースコードの分割元が評価対象のソースコードである場合には、画像を未評価画像記憶部２５４に格納する。これにより、図１８（ｂ）に示すように、未評価画像記憶部２５４は複数の未評価画像を記憶する。
【００２９】
ニューラルネットワークライブラリ２３０は、第１学習部２３１、第２学習部２３２、及び第３学習部２３３を含んでいる。第１学習部２３１、第２学習部２３２、及び第３学習部２３３はいずれも制御アプリ２１０がニューラルネットワークとして生成し、ニューラルネットワークライブラリ２３０に格納する。尚、ニューラルネットワークライブラリ２３０は第１学習部２３１、第２学習部２３２、及び第３学習部２３３のいずれか１つ又は２つを含んでいてもよいし、第１学習部２３１、第２学習部２３２、及び第３学習部２３３に加えて、第４学習部（不図示）などを含んでいてもよい。
【００３０】
第１学習部２３１は第１の評価観点の評価済画像を学習する。例えば、制御アプリ２１０がソースコードの可読性に関する評価済画像を評価済画像記憶部２５５から取得して第１学習部２３１に投入すると、第１学習部２３１は取得した評価済画像をDeep Learning（ディープラーニング：深層学習）により学習する。これにより、第１学習部２３１はソースコードの可読性を動的に評価することができる。第１学習部２３１は評価済画像の学習を終えると、制御アプリ２１０は学習結果を第１学習部２３１から取得し、取得した学習結果を第１の評価観点の学習済ニューラルネットとしてニューラルネット記憶部２５６に保存する。尚、可読性とはソースコードのコメント以外の部分をプログラマ以外の者が読んだときの、その目的や処理の流れの理解し易さを表している。
【００３１】
一方、第１学習部２３１はまだ評価が付与されていない画像が制御アプリ２１０から投入された場合、投入された画像に対応する部分ソースコードの可読性を評価する。より詳しくは、制御アプリ２１０が評価対象のソースコードを受け付けた場合、制御アプリ２１０は第１学習部２３１を生成し、第１学習部２３１に第１の評価観点の学習済ニューラルネットを投入する。そして、制御アプリ２１０は評価対象のソースコードが分割されて画像に変換された画像を未評価画像記憶部２５４から取得して、第１学習部２３１に投入する。これにより、第１学習部２３１は投入された画像に対応する部分ソースコードの可読性を評価する。第１学習部２３１は評価を終えると、制御アプリ２１０は評価結果を取得し、取得した評価結果を評価結果記憶部２５７に格納する。評価結果記憶部２５７が評価結果を記憶すると、制御アプリ２１０は評価結果記憶部２５７から評価結果を取得し、制御装置１３０に送信する。制御装置１３０は評価結果を受信すると、評価結果を表示装置１２０に表示する。
【００３２】
尚、第２学習部２３２は第２の評価観点の評価済画像を学習し、制御アプリ２１０から投入された画像に対応する部分ソースコードを第２の評価観点で評価する点を除いて、第１学習部２３１と同様であるため、詳細な説明を省略する。第２の評価観点としては、ソースコードの複雑度などがある。例えば丸括弧記号（「（」及び「）」）のネスト（入れ子構造）が深かったり、オペレータ記号（例えば「！」、「＝」、「＆＆」、「｜｜」など）に挟まれてドット（「．」）が連なっていたり、一文が長い行にわたって記述されている場合、そのソースコードは複雑であると評価される。
【００３３】
同様に、第３学習部２３３は第３の評価観点の評価済画像を学習し、制御アプリ２１０から投入された画像に対応する部分ソースコードを第３の評価観点で評価する点を除いて、第１学習部２３１と同様であるため、詳細な説明を省略する。第３の評価観点としては、ソースコードのコメント密度などがある。例えば条件分岐（「ｉｆ」や「ｅｌｓｅ」など）や繰り返し処理の制御文（例えば「ｆｏｒ」や「ｗｈｉｌｅ」など）、その他の制御文（例えば「ｃａｓｅ」や「ｓｗｉｔｃｈ」など）の直前にコメントが記述されていない場合、そのソースコードはコメント不足であると評価される。
【００３４】
続いて、サーバ装置２００の動作について説明する。
【００３５】
図５はサーバ装置２００の動作の一例を示すフローチャートである。より詳しくは、図５は学習部の生成に関する動作の一例を示すフローチャートである。
【００３６】
まず、図５に示すように、制御アプリ２１０は最初の評価観点の教師データを格納する（ステップＳ１０１）。例えば、制御アプリ２１０は最初の評価観点の教師データを制御装置１３０から取得して、学習対象記憶部２５１に格納する。ステップＳ１０１の処理が完了すると、次いで、制御アプリ２１０は学習部生成処理を実行する（ステップＳ１０２）。学習部生成処理は、評価済画像をニューラルネットワークに学習させて評価観点に応じた第１学習部２３１、第２学習部２３２、又は第３学習部２３３を生成する処理である。尚、学習部生成処理の詳細については後述する。
【００３７】
ステップＳ１０２の処理が完了すると、次いで、制御アプリ２１０は次の評価観点があるか否かを判断する（ステップＳ１０３）。例えば、制御アプリ２１０は評価観点「可読性」に関して学習部生成処理を実行し、評価観点「複雑度」や評価観点「コメント密度」に関する学習部生成処理を実行していない場合、次の評価観点があると判断し（ステップＳ１０３：ＹＥＳ）、次の評価観点の教師データを格納する（ステップＳ１０４）。例えば、制御アプリ２１０は次の評価観点の教師データを制御装置１３０から取得して、学習対象記憶部２５１に格納する。
【００３８】
一方、全ての評価観点について学習部生成処理を実行し終えた場合、制御アプリ２１０は次の評価観点がないと判断する（ステップＳ１０３：ＮＯ）。この場合、制御アプリ２１０は処理を終える。
【００３９】
続いて、図６から図１０を参照して、上述した学習部生成処理の詳細について説明する。
【００４０】
図６は学習部生成処理の一例を示すフローチャートである。図７は第１実施形態に係る画像化ツール２２０の処理の一例を説明するための図である。図８（ａ）は可読性評価用マッピングルールの一例である。図８（ｂ）は可読性評価用マッピングルールに基づく置換の一例を説明する図である。図９（ａ）は複雑度評価用マッピングルールの一例である。図９（ｂ）は複雑度評価用マッピングルールに基づく置換の一例を説明する図である。図１０（ａ）はコメント密度評価用マッピングルールの一例である。図１０（ｂ）はコメント密度評価用マッピングルールに基づく置換の一例を説明する図である。
【００４１】
まず、図５を参照して説明したステップＳ１０１の処理が完了すると、図６に示すように、ソースコード分割部２２１はソースコードを分割する（ステップＳ１１１）。より詳しくは、ソースコード分割部２２１は学習対象記憶部２５１が記憶する教師データを取得し、取得した教師データのソースコードを分割する。例えば、図７に示すように、学習対象記憶部２５１が１２０桁（具体的には１２０文字分）×５２１行のソースコード全文を含むテキストタイプのソースコードを記憶している場合、ソースコード分割部２２１は、所定行単位に付与された評価を維持した状態で、そのソースコードを複数の部分ソースコードに分割する。本実施形態ではソースコード分割部２２１は４０行単位でソースコードを分割するため、ソースコード分割部２２１はソースコードを部分ソースコード１から１４に分割する。尚、単位行数については適宜変更してもよい。
【００４２】
ステップＳ１１１の処理が完了すると、次いで、ソースコード変換部２２２はマッピングルールを取得する（ステップＳ１１２）。より詳しくは、ソースコード変換部２２２はマッピングルール記憶部２５３から対象の評価観点に応じたマッピングルールを取得する。ここで、マッピングルール記憶部２５３は、予め複数種類のマッピングルールを記憶している。
【００４３】
具体的には、図８（ａ）、図９（ａ）、及び図１０（ａ）に示すように、マッピングルール記憶部２５３は、可読性評価用マッピングルール、複雑度評価用マッピングルール、及びコメント密度評価用マッピングルールを予め記憶している。可読性評価用マッピングルールはソースコード（より詳しくは部分ソースコード）の可読性を評価する際に適した置換を定義する情報である。同様に、複雑度評価用マッピングルールはソースコードの複雑度を評価する際に適した置換を定義する情報である。コメント密度評価用マッピングルールはソースコードのコメント密度を評価する際に適した置換を定義する情報である。ソースコード変換部２２２はマッピングルール記憶部２５３から対象の評価観点に応じて、可読性評価用マッピングルール、複雑度評価用マッピングルール、及びコメント密度評価用マッピングルールのいずれかを取得する。
【００４４】
ステップＳ１１２の処理が完了すると、次いで、図６に示すように、ソースコード変換部２２２は部分ソースコードを画像化する（ステップＳ１１３）。より詳しくは、ソースコード変換部２２２は取得したマッピングルールに基づいて、図７に示すように、評価を維持した状態で、複数の部分ソースコード１から１４を複数の画像ファイルに変換する。特に、ソースコード変換部２２２は１行を縦１ピクセル（画素）相当に、１桁を横１ピクセル相当に対応付けて複数の部分ソースコード１〜１４を複数の画像に変換する。したがって、ソースコード変換部２２２は部分ソースコード１から１４に応じた４０ピクセル×１２０ピクセルの１４個の画像を生成する。１４個の画像は、いずれも一又は複数の色を含んでいる。
【００４５】
ここで、ソースコード変換部２２２が可読性評価用マッピングルールを取得した場合、図８（ｂ）に示すように、取得した可読性評価用マッピングルールに基づいて、まず、部分ソースコード１に含まれる文字を色に置換する。例えば、ソースコード変換部２２２は予約語「ｉｆ」の２文字をいずれも桃色に変換する。例えば、ソースコード変換部２２２は識別子「ＦＤＵｔｉｌ」の６文字及び識別子「ｈａｓ」の３文字をいずれも黄色に変換する。残りの文字についても同様に、ソースコード変換部２２２は可読性評価用マッピングルールに基づいて文字を色に変換する。これにより、ソースコード変換部２２２は部分ソースコード１の可読性の評価に適した複数の色を含む画像を生成する。ソースコード変換部２２２は部分ソースコード１の画像化を終えると、順に、部分ソースコード２から１４についても同様に画像化する。ソースコード変換部２２２は複数の画像を生成すると、評価と関連付けられた複数の画像を制御アプリ２１０に出力し、制御アプリ２１０は評価と関連付けられた複数の画像を評価済画像として評価済画像記憶部２５５に格納する（図１８（ａ）参照）。
【００４６】
図６に戻り、ステップＳ１１３の処理が完了すると、次いで、制御アプリ２１０は学習部を生成する（ステップＳ１１４）。例えば、制御アプリ２１０は評価済画像記憶部２５５に評価済画像を格納すると、第１学習部２３１の生成を開始し、第１学習部２３１をニューラルネットワークライブラリ２３０に格納する。ステップＳ１１４の処理が完了すると、次いで、制御アプリ２１０は学習部を初期化する（ステップＳ１１５）。例えば、制御アプリ２１０が第１学習部２３１を生成した場合、第１学習部２３１を初期化する。
【００４７】
ステップＳ１１５の処理が完了すると、次いで、制御アプリ２１０は学習部に評価済画像を投入する（ステップＳ１１６）。例えば、制御アプリ２１０は評価済画像記憶部２５５が記憶する評価済画像を取得して、第１学習部２３１に投入する。ステップＳ１１６の処理が完了すると、学習部は学習する（ステップＳ１１７）。したがって、第１学習部２３１は投入された評価済画像を学習する。すなわち、第１学習部２３１は可読性の評価が付与された画像を学習する。ステップＳ１１７の処理が完了すると、第１学習部２３１は学習済ニューラルネットを保存する（ステップＳ１１８）。すなわち、第１学習部２３１は画像の学習を終えると、可読性の評価観点に関する学習結果を表す学習済ニューラルネットをニューラルネット記憶部２５６に保存する。ステップＳ１１８の処理が完了すると、図５を参照して説明したステップＳ１０３の処理が開始される。
【００４８】
したがって、次の評価観点がある場合、制御アプリ２１０は次の評価観点のソースコードに対して同様に学習部生成処理を実行する。例えば、次の評価観点として複雑度を評価する場合、図９（ｂ）に示すように、部分ソースコード１に対して、複雑度評価用マッピングルールに基づいて、部分ソースコード１に含まれる文字を色に置換する。例えば、ソースコード変換部２２２は予約語「ｉｆ」の２文字をいずれも赤色に変換する。例えば、ソースコード変換部２２２は識別子「ＦＤＵｔｉｌ」の６文字及び識別子「ｈａｓ」の３文字をいずれも紫色に変換する。残りの文字についても同様に、ソースコード変換部２２２は複雑度評価用マッピングルールに基づいて文字を色に変換する。部分ソースコード２から部分ソースコード１４についても部分ソースコード１と同様である。これにより、評価済画像記憶部２５５は複雑度の評価が付与された複数の画像を評価済画像として記憶する（図１８（ａ）参照）。第２学習部２３２は画像の学習を終えると、複雑度の評価観点に関する学習結果を表す学習済ニューラルネットをニューラルネット記憶部２５６に保存する。
【００４９】
また、例えば、次の評価観点としてコメント密度を評価する場合、図１０（ｂ）に示すように、部分ソースコード１に対して、コメント密度評価用マッピングルールに基づいて、部分ソースコード１に含まれる文字を色に置換する。例えば、ソースコード変換部２２２は予約語「ｉｆ」の２文字をいずれも紫色に変換する。例えば、ソースコード変換部２２２は識別子「ＦＤＵｔｉｌ」の６文字及び識別子「ｈａｓ」の３文字をいずれも水色に変換する。残りの文字についても同様に、ソースコード変換部２２２はコメント密度評価用マッピングルールに基づいて文字を色に変換する。部分ソースコード２から部分ソースコード１４についても部分ソースコード１と同様である。これにより、評価済画像記憶部２５５はコメント密度の評価が付与された複数の画像を評価済画像として記憶する（図１８（ａ）参照）。第３学習部２３３は画像の学習を終えると、コメント密度の評価観点に関する学習結果を表す学習済ニューラルネットをニューラルネット記憶部２５６に保存する。
【００５０】
続いて、図１１を参照して、まだ評価が付与されていないソースコードに対する評価を行う評価処理について説明する。
【００５１】
図１１は評価処理の一例を示すフローチャートである。まず、制御アプリ２１０は評価対象のソースコードを受け付ける（ステップＳ２０１）。例えば、制御装置１３０が上述した生成画面とは異なる画面（不図示の評価画面）で入力されたソースコードの格納先及びファイル名を送信すると、制御アプリ２１０はソースコードの格納先及びファイル名により特定されるソースコードを評価対象として受け付ける。制御アプリ２１０は評価対象のソースコードを受け付けると、評価対象記憶部２５２に格納する。
【００５２】
ステップＳ２０１の処理が完了すると、次いで、ソースコード分割部２２１はソースコードを分割する（ステップＳ２０２）。より詳しくは、ソースコード分割部２２１は評価対象記憶部２５２が記憶する評価対象のソースコードを取得し、取得したソースコードを複数の部分ソースコードに分割する。ステップＳ２０３の処理が完了すると、次いで、ソースコード分割部２２１はマッピングルールを取得する（ステップＳ２０３）。すなわち、ソースコード分割部２２１は、可読性評価用マッピングルール、複雑度評価用マッピングルール、及びコメント密度評価用マッピングルールのいずれか１つを取得する。
【００５３】
ステップＳ２０３の処理が完了すると、次いで、ソースコード変換部２２２は部分ソースコードを画像化する（ステップＳ２０４）。より詳しくは、ソースコード変換部２２２は取得したマッピングルールに基づいて、複数の部分ソースコードをそれぞれ画像化する。ソースコード変換部２２２は部分ソースコードを画像化し終えると、画像化した複数の部分ソースコードを未評価画像として未評価画像記憶部２５４に格納する（図１８（ｂ）参照）。
【００５４】
ステップＳ２０４の処理が完了すると、次いで、制御アプリ２１０はマッピングルールに応じた学習部を選択する（ステップＳ２０５）。具体的には、ソースコード変換部２２２が可読性評価用マッピングルールを取得した場合、制御アプリ２１０がニューラルネット記憶部２５６から可読性評価に関する学習済ニューラルネットを取り込んでニューラルネットワークライブラリ２３０に格納する。ステップＳ２０５の処理が完了すると、次いで、制御アプリ２１０はソースコード評価処理を実行する（ステップＳ２０６）。ソースコード評価処理は、まだ評価されていない画像を学習済ニューラルネットに基づいて動的に評価することにより、ソースコードを評価する処理である。尚、ソースコード評価処理の詳細については後述する。
【００５５】
ステップＳ２０６の処理が完了すると、次いで、制御アプリ２１０は未取得のマッピングルールがあるか否かを判断する（ステップＳ２０７）。例えば、ステップＳ２０３の処理において、ソースコード変換部２２２が可読性評価用マッピングルールを取得しており、まだ複雑度評価用マッピングルール及びコメント密度評価用マッピングルールを取得していない場合、制御アプリ２１０は未取得のマッピングルールがあると判断する（ステップＳ２０７：ＹＥＳ）。この場合、ソースコード変換部２２２はステップＳ２０３の処理を再び実行する。すなわち、ソースコード変換部２２２は、まだ取得していない複雑度評価用マッピングルール及びコメント密度評価用マッピングルールのいずれかを取得して、ステップＳ２０４からステップＳ２０６までの処理を実行する。
【００５６】
一方、ソースコード変換部２２２は未取得のマッピングルールがないと判断すると（ステップＳ２０７：ＮＯ）、制御アプリ２１０は評価結果を集計し（ステップＳ２０８）、集計した評価結果を出力する（ステップＳ２０９）。より詳しくは、制御アプリ２１０は評価結果記憶部２５７から評価結果を取得して集計し、集計した評価結果を制御装置１３０に向けて出力する。制御装置１３０は評価結果を受信すると、表示装置１２０に評価結果を表示させる。これにより、表示装置１２０には評価結果が表れる。
【００５７】
続いて、図１２を参照して、上述したソースコード評価処理の詳細について説明する。尚、ソースコード評価処理は第１学習部２３１を一例として説明するが、第２学習部２３２及び第３学習部２３３についても第１学習部２３１と同様であるため、説明を省略する。
【００５８】
図１２はソースコード評価処理の一例を示すフローチャートである。図１１を参照して説明したステップＳ２０５の処理が完了すると、図１２に示すように、制御アプリ２１０は未評価画像記憶部２５４から最初の未評価画像を取得する（ステップＳ２１１）。ステップＳ２１１の処理が完了すると、次いで、制御アプリ２１０は選択した学習部に未評価画像を投入する（ステップＳ２１２）。例えば、ステップＳ２０５の処理において制御アプリ２１０が第１学習部２３１を選択した場合、第１学習部２３１に未評価画像を投入する。
【００５９】
ステップＳ２１２の処理が完了すると、次いで、制御アプリ２１０は評価結果を取得する（ステップＳ２１３）。すなわち、制御アプリ２１０が第１学習部２３１に未評価画像を投入した場合、第１学習部２３１が未評価画像に対してパターン認識により動的に評価した評価結果を取得する。ステップＳ２１３の処理が完了すると、次いで、制御アプリ２１０は評価観点に応じたリストに評価結果を格納する（ステップＳ２１４）。例えば、制御アプリ２１０は未評価画像に対応する部分ソースコードを識別する識別情報と評価結果を格納するための空欄とを対応付けたリストを保持しており、評価結果を取得すると、対応する識別情報の空欄に評価結果を格納する。
【００６０】
ステップＳ２１４の処理が完了すると、次いで、制御アプリ２１０は次の未評価画像があるか否かを判断する（ステップＳ２１５）。例えば、未評価画像記憶部２５４にまだ評価を終えていない未評価画像があれば、制御アプリ２１０は次の未評価画像があると判断し（ステップＳ２１５：ＹＥＳ）、次の未評価画像を取得し（ステップＳ２１６）、ステップＳ２１２からＳ２１５までの処理を繰り返す。これにより、上述した空欄全てに評価結果が格納されたリストが完成する。
【００６１】
一方、未評価画像記憶部２５４に評価を終えていない未評価画像がなければ、制御アプリ２１０は次の未評価画像がないと判断し（ステップＳ２１５：ＮＯ）、評価結果を評価結果記憶部２５７に保存する（ステップＳ２１７）。これにより、評価結果記憶部２５７はステップＳ２０３の取得したマッピングルールの評価観点で評価したリストを記憶する。
【００６２】
図１３（ａ）〜（ｄ）は評価結果の一例を説明するための図である。
【００６３】
まず、図１３（ａ）に示すように、例えば部分ソースコードＸ（不図示）に対応する未評価画像１０が第１学習部２３１に入力されると、第１学習部２３１は可読性評価に関する学習済ニューラルネットに基づいて、未評価画像１０に対する評価値を算出し、算出した評価値が所定の閾値（例えば０．５）以上であれば、その部分ソースコードＸに対して評価結果「〇」を出力する。図１３（ｂ）に示すように、例えば部分ソースコードＹ（不図示）に対応する未評価画像２０が第１学習部２３１に入力されると、第１学習部２３１は可読性評価に関する学習済ニューラルネットに基づいて、未評価画像２０に対する評価値を算出し、算出した評価値が所定の閾値未満であれば、その部分ソースコードＹに対して評価結果「×」を出力する。
【００６４】
例えば、図１３（ｃ）に示すように、部分ソースコードＸに対応する未評価画像１０が第２学習部２３２に入力されると、第２学習部２３２は複雑度評価に関する学習済ニューラルネットに基づいて、未評価画像１０に対する評価値を算出し、算出した評価値が所定の閾値未満であれば、その部分ソースコードＸに対して評価結果「×」を出力する。また、図１３（ｄ）に示すように、例えば部分ソースコードＸに対応する未評価画像１０が第３学習部２３３に入力されると、第３学習部２３３はコメント密度評価に関する学習済ニューラルネットに基づいて、未評価画像１０に対する評価値を算出し、算出した評価値が所定の閾値以上であれば、その部分ソースコードＸに対して評価結果「〇」を出力する。
【００６５】
以上、第１実施形態によれば、サーバ装置２００は画像化ツール２２０を備えている。画像化ツール２２０はソースコード分割部２２１とソースコード変換部２２２を備えており、ソースコード分割部２２１は教師データとしてのソースコードを複数の部分ソースコードに分割する。一方、ソースコード変換部２２２はプログラミング言語が予め定義する文字であるか任意に定義できる文字であるかなどに基づいて文字を異なる色に置換するマッピングルールを取得し、取得したマッピングルールに基づいて、部分ソースコードに含まれる文字を色に置換する。そして、ソースコード変換部２２２は文字を色に置換した部分ソースコードを画像に変換する。このような画像を利用することで、ソースコードを効率的に評価することができる。
【００６６】
（第２実施形態）
続いて、図１４及び図１５を参照して、本件の第２実施形態について説明する。
図１４は第２実施形態に係る画像化ツール２２０の処理の一例を説明するための図（その１）である。図１５は第２実施形態に係る画像化ツール２２０の処理の一例を説明するための図（その２）である。
【００６７】
図１１のステップＳ２０１で説明したように、第１実施形態では、制御アプリ２１０は評価対象のソースコードを受け付けたが、制御アプリ２１０は評価対象のソースコードと併せてオーバーラップ率を受け付けてもよい。オーバーラップ率は例えば第１実施形態で説明した評価画面で入力される。
【００６８】
例えば、制御アプリ２１０がオーバーラップ率「５０％」を受け付けると、図１４に示すように、ソースコード分割部２２１は評価対象のソースコードを複数の部分ソースコード１〜２７に分割する。特に、ソースコード分割部２２１が４０行単位でソースコードを分割する場合、４０行の５０％である２０行をオーバーラップさせ、評価対象のソースコードを２０行毎に分割する。これにより、ソースコード分割部２２１は２７個の部分ソースコードを生成する。
【００６９】
ソースコード分割部２２１が評価対象のソースコードを分割し終えると、次いで、ソースコード変換部２２２は複数の部分ソースコードを画像に変換する。すなわち、ソースコード分割部２２１が２７個の部分ソースコードを生成した場合、図１５に示すように、ソースコード変換部２２２は２７個の部分ソースコードを２７個の画像に変換する。変換後、ソースコード変換部２２２はこれらの画像を未評価画像として未評価画像記憶部２５４に格納する。
【００７０】
未評価画像記憶部２５４が未評価画像を記憶すると、次いで、制御アプリ２１０は未評価画像記憶部２５４から未評価画像を取得して、第１学習部２３１に入力する。第１学習部２３１はオーバーラップ率が利用された画像が入力された場合、第１実施形態のように個別に評価結果を出力せずに、図１５に示すように、それぞれの未評価画像に対して算出した評価値をヒストグラム形式で評価結果として出力する。個別に評価結果を出力する場合に比べて、部分ソースコード間に対する評価が補間されるため、評価結果は滑らかになる。これにより、ソースコード全文に対する全体的な評価結果を円滑に把握することができる。
【００７１】
（第３実施形態）
続いて、図１６及び図１７を参照して、本件の第３実施形態を説明する。
図１６は第３実施形態に係るコードレビューシステムＳ２の一例である。図１７は第３実施形態に係る制御装置１３０とサーバ装置２００のブロック図の一例である。第１実施形態では、端末装置１００とサーバ装置２００が同一拠点にある場合を説明したが、図１６に示すように、サーバ装置２００は端末装置１００と異なる拠点にあってもよい。例えば、サーバ装置２００はクラウドＣＬ上のデータセンターＤＣ内に配備されていてもよい。この場合、通信ネットワークＮＷとしてはインターネットが利用される。
【００７２】
図１６に示すように、サーバ装置２００が端末装置１００と異なる拠点にある場合、図１７に示すように、制御装置１３０が上述した画像化ツール２２０を備えていてもよい。この場合、制御装置１３０は画像化ツール２２０と併せて、学習対象記憶部２５１、評価対象記憶部２５２、及びマッピングルール記憶部２５３を含んでいてもよい。
【００７３】
第１実施形態では制御アプリ２１０が画像化ツール２２０を制御したが、第３実施形態では制御装置１３０の制御部１３１が画像化ツール２２０を制御する。例えば、制御部１３１はソースコード変換部２２２から出力された未評価の画像を未評価画像記憶部２５４に向けて送信したり、評価済画像を評価済画像記憶部２５５に向けて送信したりする。これにより、サーバ装置２００は評価済画像記憶部２５５に記憶された評価済画像に基づいて学習を行い、未評価画像記憶部２５４に記憶された未評価の画像の評価を行う。画像の評価が完了すると、制御アプリ２１０は評価結果記憶部２５７から評価結果を取得して、制御部１３１に送信する。これにより、制御部１３１は表示装置１２０に評価結果を表示する。このように、ソースコードの画像化を端末装置１００側で実施できれば、通信ネットワークＮＷ上をソースコードが流通せず、ソースコードの流出が回避される。
【００７４】
（第４実施形態）
第１実施形態乃至第３実施形態では、評価や検証の対象がソースコードであるとして説明を行ったが、対象はソースコードに限られない。たとえば、医療分野のレセプトなどの文書を対象としてもよい。この場合、マッピングルールとして、文字や数字に応じて、所定の色を設定する。例えば、文字の種別に応じて所定の色を設定することができる。文字の種別としては例えば、ＡＳＣＩＩコードを利用してもよいし、レセプト内に記載される病名の別などを利用してもよい。そして、マッピングルールに応じて、評価または検証の対象文書が画像化され、画像化された文書情報を用いて、学習や評価が行われる。
【００７５】
以上、本発明の好ましい実施形態について詳述したが、本発明に係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。例えば、上述した第１実施形態から第３実施形態では、評価結果「〇」及び「×」といった記号を用いて説明したが、例えば評価結果を「〇」、「×」及び「△」などの記号で、３つ以上に細かく評価してもよい。また、記号に代えて評価の高低を表す数値を利用してもよい。
【００７６】
なお、以上の説明に関して更に以下の付記を開示する。
（付記１）ソースコードを取得し、文字の種別に応じて文字を色に変換する、または文字の色を変換するルールに従って、前記ソースコードについて変換処理を実行して色情報を生成し、生成した前記色情報を出力する、処理をコンピュータに実行させるプログラム。
（付記２）前記ルールは、前記ソースコードに対する評価の観点毎に異なる色に文字を置換するルールである、ことを特徴とする付記１に記載のプログラム。
（付記３）他のソースコードを取得し、前記ルールに従って、前記他のソースコードについて変換処理を実行して他の色情報を生成し、前記色情報と前記他の色情報とのパターン認識に基づいて、前記他のソースコードに対する評価結果を出力する、処理を含むことを特徴とする付記１又は２に記載のプログラム。
（付記４）前記出力する処理は、前記色情報と前記他の色情報とのパターン認識に基づいて、前記他のソースコードに対する評価の観点毎に異なる評価結果を出力する、ことを特徴とする付記３に記載のプログラム。
（付記５）さらに、前記ソースコードを部分的に重畳する複数の部分ソースコードに分割するとともに、前記他のソースコードを部分的に重畳する複数の他の部分ソースコードに分割し、前記ルールに従って、分割した前記複数の部分ソースコード、及び前記複数の他の部分ソースコードについて変換処理を実行して色情報を生成する、ことを特徴とする付記３又は４に記載のプログラム。
（付記６）ソースコードを取得し、文字の種別に応じて文字を色に変換する、または文字の色を変換するルールに従って、前記ソースコードについて変換処理を実行して色情報を生成し、生成した前記色情報を出力する、処理をコンピュータが実行する情報処理方法。
（付記７）ソースコードを取得し、文字の種別に応じて文字を色に変換する、または文字の色を変換するルールに従って、前記ソースコードについて変換処理を実行して色情報を生成し、生成した前記色情報を出力する、処理部を備える情報処理装置。
（付記８）前記ルールは、前記ソースコードに対する評価の観点毎に異なる色に文字を置換するルールである、ことを特徴とする付記７に記載の情報処理装置。
（付記９）前記処理部は、他のソースコードを取得し、前記ルールに従って、前記他のソースコードについて変換処理を実行して他の色情報を生成し、前記色情報と前記他の色情報とのパターン認識に基づいて、前記他のソースコードに対する評価結果を出力する、ことを特徴とする付記７又は８に記載の情報処理装置。
（付記１０）前記処理部は、前記色情報と前記他の色情報とのパターン認識に基づいて、前記他のソースコードに対する評価の観点毎に異なる評価結果を出力する、ことを特徴とする付記９に記載の情報処理装置。
（付記１１）前記処理部は、さらに、前記ソースコードを部分的に重畳する複数の部分ソースコードに分割するとともに、前記他のソースコードを部分的に重畳する複数の他の部分ソースコードに分割し、前記ルールに従って、分割した前記複数の部分ソースコード、及び前記複数の他の部分ソースコードについて変換処理を実行して色情報を生成する、ことを特徴とする付記９又は１０に記載の情報処理装置。
（付記１２）複数の文字を含む文書の情報を取得し、文字の種別に応じて文字を特定の色に変換する、または文字の色を変換するルールに従って、前記文書の情報について変換処理を実行して色情報を生成し、生成した前記色情報を出力する、処理をコンピュータに実行させるプログラム。
【符号の説明】
【００７７】
１００  端末装置
２００  サーバ装置
２１０  制御アプリ
２２０  画像化ツール
２２１  ソースコード分割部
２２２  ソースコード変換部
２３０  ニューラルネットワークライブラリ
２３１  第１学習部
２３２  第２学習部
２３３  第３学習部
【図１】
2018156654.tif 000003
【図２】
2018156654.tif 000004
【図３】
2018156654.tif 000005
【図４】
2018156654.tif 000006
【図５】
2018156654.tif 000007
【図６】
2018156654.tif 000008
【図７】
2018156654.tif 000009
【図８】
2018156654.tif 000010
【図９】
2018156654.tif 000011
【図１０】
2018156654.tif 000012
【図１１】
2018156654.tif 000013
【図１２】
2018156654.tif 000014
【図１３】
2018156654.tif 000015
【図１４】
2018156654.tif 000016
【図１５】
2018156654.tif 000017
【図１６】
2018156654.tif 000018
【図１７】
2018156654.tif 000019
【図１８】
2018156654.tif 000020