(57)【要約】【課題】プログラムソースをウェブサイトから容易に検索すること。【解決手段】文字列抽出部４０が、プログラムソース１０のソースコードから抽出した文字列が命令語か区切り文字列語かを言語データベース２０を参照して判定し、命令語と判定し且つ前記命令語に続いて空白文字が記述されているか否かを判定し、記述していると判定したとき、言語データベース２０に格納した区切り文字列語と一致するか否かを判定し、一致すると判定したとき、前記命令語と空白文字と区切り文字列語の組み合わせを検索文字列語として抽出することによって、ヒット率の高い検索文字列語を抽出結果ファイル部４０に出力するプログラムソース検索システム。【選択図】図１
2011191950.tif 000002
【特許請求の範囲】
【請求項１】
連続した複数の文字から成る文字列から構成した命令語と、連続した複数の文字から成る文字列から構成した区切り文字列語と、前記命令語と区切り文字列語とを空白文字を介して１行のソースコードを形成したプログラムソースを、ウェブサイトからコンピュータを用いた検索エンジンによって検索するプログラムソース検索システムであって、前記コンピュータが、前記プログラムソースに予め規定された複数の命令語及び区切り文字列語を格納する言語データベースと、前記プログラムソースに記述された複数の命令語及び区切り文字列語と前記言語データベースに格納された複数の命令語及び区切り文字列語とを参照して検索文字列語を抽出する文字列抽出部と、文字列を一時的に記憶するワークメモリエリアとを備え、前記文字列抽出部が、前記プログラムソースの１行のソースコードから文字が連続する文字列を抽出する第１工程と、前記第１工程によって抽出した文字列が前記言語データベースに格納した命令語と一致するか否かを判定し、一致すると判定したとき、前記一致した命令語を前記ワークメモリエリアに格納する第２工程と、前記第２工程によってワークメモリエリアに格納した命令語に続いて空白文字が記述されているか否かを判定し、記述していると判定したとき、前記空白文字に続いて連続する文字列を前記ソースコードから抽出する第３工程と、前記第３工程によって抽出した文字列が前記言語データベースに格納した区切り文字列語と一致するか否かを判定し、一致すると判定したとき、前記一致した区切り文字列語を前記ワークメモリエリアに格納した命令語に空白文字を介して追加する第４工程と、前記第４工程によって格納した命令語と空白文字と区切り文字列語の組み合わせを検索文字列語として抽出する第５工程とを実行するプログラムソース検索システム。
【請求項２】
前記コンピュータが、検索を不要とする特定の文字列を格納した検索不要文字列ファイル部と、検索を不要とする特定のホームページアドレス情報を格納した検索不要ホームページアドレスファイル部とを備え、前記文字列抽出部が抽出した検索文字列語から前記検索不要文字列ファイル部に格納した検索不要文字列と前記検索不要ホームページアドレスファイル部に格納した検索不要ホームページアドレス情報とを削除する第６工程を実行する請求項１記載のプログラムソース検索システム。
【請求項３】
連続した複数の文字から成る文字列から構成した命令語と、連続した複数の文字から成る文字列から構成した区切り文字列語と、前記命令語と区切り文字列語とを空白文字を介して１行のソースコードを形成したプログラムソースを、ウェブサイトからコンピュータを用いた検索エンジンによって検索するプログラムソース検索方法であって、前記コンピュータに、前記プログラムソースに予め規定された複数の命令語及び区切り文字列語を格納する言語データベースと、前記プログラムソースに記述された複数の命令語及び区切り文字列語と前記言語データベースに格納された複数の命令語及び区切り文字列語とを参照して検索文字列語を抽出する文字列抽出部と、文字列を一時的に記憶するワークメモリエリアとを設け、前記コンピュータが文字列抽出部に、前記プログラムソースの１行のソースコードから文字が連続する文字列を抽出する第１工程と、前記第１工程によって抽出した文字列が前記言語データベースに格納した命令語と一致するか否かを判定し、一致すると判定したとき、前記一致した命令語を前記ワークメモリエリアに格納する第２工程と、前記第２工程によってワークメモリエリアに格納した命令語に続いて空白文字が記述されているか否かを判定し、記述していると判定したとき、前記空白文字に続いて連続する文字列を前記ソースコードから抽出する第３工程と、前記第３工程によって抽出した文字列が前記言語データベースに格納した区切り文字列語と一致するか否かを判定し、一致すると判定したとき、前記一致した区切り文字列語を前記ワークメモリエリアに格納した命令語に空白文字を介して追加する第４工程と、前記第４工程によって格納した命令語と空白文字と区切り文字列語の組み合わせを検索文字列語として抽出する第５工程とを実行させるプログラムソース検索方法。
【請求項４】
前記コンピュータに、検索を不要とする特定の文字列を格納した検索不要文字列ファイル部と、検索を不要とする特定のホームページアドレス情報を格納した検索不要ホームページアドレスファイル部とを設け、前記文字列抽出部が抽出した検索文字列語から前記検索不要文字列ファイル部に格納した検索不要文字列と前記検索不要ホームページアドレスファイル部に格納した検索不要ホームページアドレス情報とを削除する第６工程を実行させる請求項３記載のプログラムソース検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インターネット上に漏洩したプログラムソースを容易に検索することができるプログラムソース検索システム及びプログラムソース検索方法に係り、特にインターネットで公開されている情報をキーワードなどを使って検索できる検索エンジンと呼ばれるウェブサイトを使用して漏洩したプログラムソースを検索することができるプログラムソース検索システム及びプログラムソース検索方法に関する。
【背景技術】
【０００２】
近年、インターネットの発達によって個人がインターネットのウェブサイトに各種情報をアップロード可能な環境が整っており、例えば企業が外注会社に発注したソフトウェアのプログラムソースが外注会社の個人によってインターネットのウェブサイトにアップロードされ、漏洩してしまう可能性がある。しかし、このインターネットのウェブサイトにアップロードされたプログラムソースは、検索エンジンと呼ばれるウェブサイトを使用して漏洩したプログラムソースを検索することができるものの、一般の検索エンジンにおいては検索語のアンド条件とノット条件の２種の論理演算子しか使用できないと共に、プログラムソースを構成するコンピュータ言語は予め定められた文法による命令語、関数、演算子等の組み合わせによって構成されるため、膨大な量の情報が合致（ヒット）してしまい、目的とする漏洩プログラムソースを探し出すには人手による多大な労力を必要とするという課題があった。
【０００３】
なお、インターネット上に漏洩した情報を検索する技術が記載された文献としては、下記の特許文献１が挙げられ、この特許文献１には、漏洩情報に含まれると予想される特定の企業名や個人名等を漏洩情報パターンとして蓄積部に蓄積しておき、ピーツーピー（Ｐ２Ｐ）ネットワーク上を流れる情報から前記蓄積部に蓄積した漏洩情報パターンが所定数以上含まれる情報を漏洩情報として抽出する技術が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１４０１０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
前述の従来技術による特許文献１記載の技術は、漏洩情報の対象を文書としているため、企業文書に含まれる可能性の高い特定の企業名や個人名を検索キーとして設定することによってネットワーク上を流れる漏洩情報を検索することができるものの、漏洩した情報がプログラムソースの場合、プログラムソースが予め定められた命令語、関数、演算子等の組み合わせによって構成されるため、膨大な量の情報が合致（ヒット）してしまい、目的とする漏洩プログラムソースを効率よく検出することが困難であるという課題があった。
【０００６】
本発明の目的は、前述の従来技術による課題を解決することであり、コンピュータ言語によって構成されたプログラムソースを検索エンジンによって容易に検索することができるプログラムソース検索システム及びプログラムソース検索方法を提供することである。
【課題を解決するための手段】
【０００７】
前記目的を達成するために請求項１記載の本発明は、連続した複数の文字から成る文字列から構成した命令語と、連続した複数の文字から成る文字列から構成した区切り文字列語と、前記命令語と区切り文字列語とを空白文字を介して１行のソースコードを形成したプログラムソースを、ウェブサイトからコンピュータを用いた検索エンジンによって検索するプログラムソース検索システムであって、前記コンピュータが、前記プログラムソースに予め規定された複数の命令語及び区切り文字列語を格納する言語データベースと、前記プログラムソースに記述された複数の命令語及び区切り文字列語と前記言語データベースに格納された複数の命令語及び区切り文字列語とを参照して検索文字列語を抽出する文字列抽出部と、文字列を一時的に記憶するワークメモリエリアとを備え、前記文字列抽出部が、前記プログラムソースの１行のソースコードから文字が連続する文字列を抽出する第１工程と、前記第１工程によって抽出した文字列が前記言語データベースに格納した命令語と一致するか否かを判定し、一致すると判定したとき、前記一致した命令語を前記ワークメモリエリアに格納する第２工程と、前記第２工程によってワークメモリエリアに格納した命令語に続いて空白文字が記述されているか否かを判定し、記述していると判定したとき、前記空白文字に続いて連続する文字列を前記ソースコードから抽出する第３工程と、前記第３工程によって抽出した文字列が前記言語データベースに格納した区切り文字列語と一致するか否かを判定し、一致すると判定したとき、前記一致した区切り文字列語を前記ワークメモリエリアに格納した命令語に空白文字を介して追加する第４工程と、前記第４工程によって格納した命令語と空白文字と区切り文字列語の組み合わせを検索文字列語として抽出する第５工程とを実行することを特徴とする。
【０００８】
請求項２記載の発明は、前記プログラムソース検索システムにおいて、前記コンピュータが、検索を不要とする特定の文字列を格納した検索不要文字列ファイル部と、検索を不要とする特定のホームページアドレス情報を格納した検索不要ホームページアドレスファイル部とを備え、前記文字列抽出部が抽出した検索文字列語から前記検索不要文字列ファイル部に格納した検索不要文字列と前記検索不要ホームページアドレスファイル部に格納した検索不要ホームページアドレス情報とを削除する第６工程を実行することを特徴とする。
【０００９】
請求項３記載の発明は、連続した複数の文字から成る文字列から構成した命令語と、連続した複数の文字から成る文字列から構成した区切り文字列語と、前記命令語と区切り文字列語とを空白文字を介して１行のソースコードを形成したプログラムソースを、ウェブサイトからコンピュータを用いた検索エンジンによって検索するプログラムソース検索方法であって、前記コンピュータに、前記プログラムソースに予め規定された複数の命令語及び区切り文字列語を格納する言語データベースと、前記プログラムソースに記述された複数の命令語及び区切り文字列語と前記言語データベースに格納された複数の命令語及び区切り文字列語とを参照して検索文字列語を抽出する文字列抽出部と、文字列を一時的に記憶するワークメモリエリアとを設け、前記コンピュータが文字列抽出部に、前記プログラムソースの１行のソースコードから文字が連続する文字列を抽出する第１工程と、前記第１工程によって抽出した文字列が前記言語データベースに格納した命令語と一致するか否かを判定し、一致すると判定したとき、前記一致した命令語を前記ワークメモリエリアに格納する第２工程と、前記第２工程によってワークメモリエリアに格納した命令語に続いて空白文字が記述されているか否かを判定し、記述していると判定したとき、前記空白文字に続いて連続する文字列を前記ソースコードから抽出する第３工程と、前記第３工程によって抽出した文字列が前記言語データベースに格納した区切り文字列語と一致するか否かを判定し、一致すると判定したとき、前記一致した区切り文字列語を前記ワークメモリエリアに格納した命令語に空白文字を介して追加する第４工程と、前記第４工程によって格納した命令語と空白文字と区切り文字列語の組み合わせを検索文字列語として抽出する第５工程とを実行させることを特徴とする。
【００１０】
請求項４記載の発明は、前記プログラムソース検索方法において、前記コンピュータに、検索を不要とする特定の文字列を格納した検索不要文字列ファイル部と、検索を不要とする特定のホームページアドレス情報を格納した検索不要ホームページアドレスファイル部とを設け、前記文字列抽出部が抽出した検索文字列語から前記検索不要文字列ファイル部に格納した検索不要文字列と前記検索不要ホームページアドレスファイル部に格納した検索不要ホームページアドレス情報とを削除する第６工程を実行させることを特徴とする。
【発明の効果】
【００１１】
本発明によるプログラムソース検索システム及び方法は、文字列抽出部が、前記プログラムソースのソースコードから抽出した文字列が命令語か区切り文字列語かを言語データベースを参照して判定し、命令語と判定し且つ前記命令語に続いて空白文字が記述されているか否かを判定し、記述していると判定したとき、言語データベースに格納した区切り文字列語と一致するか否かを判定し、一致すると判定したとき、前記命令語と空白文字と区切り文字列語の組み合わせを検索文字列語として抽出することによって、ヒット率の高い検索文字列語を出力することができ、これによってコンピュータ言語によって構成されたプログラムソースを検索エンジンによって容易に検索することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態によるプログラムソース検索システムの概要を示す図
【図２】本発明の実施形態による言語データベースの内容を示す図
【図３】本発明の実施形態によるプログラムソースの記述例を示す図
【図４】本発明の実施形態による抽出結果ファイル部出力内容を示す図
【図５】本発明の実施形態による文字列抽出部の処理フローを示す図
【発明を実施するための形態】
【００１３】
以下、本発明によるプログラムソース検索システム及びプログラムソース検索方法の一実施形態を図面を参照して詳細に説明する。
［構成］
本発明の実施形態によるプログラムソース検索システムは、図１に示す如く、プログラム固有の文字列（プログラム言語）を格納する言語データベース（以下、ＤＢという。）２０と、ウェブサイト上の検索対象とするプログラムソース１０から入力したプログラム言語を抽出する文字列抽出部３０と、この文字列抽出部３０が抽出したプログラム言語の抽出結果を格納する抽出結果ファイル部４０と、検索不要な文字列を予め登録した検索不要文字列ファイル部７０と、検索不要なホームぺージ（ＨＰ）のアドレス（ＵＲＬ）を予め登録した検索不要ＨＰアドレスファイル部８０と、この抽出結果ファイル部４０に格納した文字列を抽出結果ファイル部４０から１行のソースコードを入力し、前記検索不要文字列ファイル部７０に登録してある文字列を検索対象外として一般的な検索エンジンによってウェブ検索を行い、このウェブ検索によってヒットしたホームぺージアドレスから前記検索不要ＨＰアドレスファイル部８０に登録したアドレスを除外して出力するウェブ検索部５０と、このウェブ検索部５０によって出力されたホームページのアドレスを格納する検索結果ファイル部６０とから構成される。
【００１４】
前記言語ＤＢ２０は、入力するプログラムソース１０にて記述される言語にあわせたプログラム言語を予めデータベース形式に作成して登録したものであり、図２に示す如く、命令語類の種別を示す「種別」と、この「種別」に含まれる「命令語」と、この「命令語」が繰り返して使われる文法か否かを示す繰り返し有無フラグと、前記「命令語」に対応して文法的に設定された複数の「区切文字」の各欄の項目とから構成され、例えば、番号１、種別２の命令語「ＳＥＬＥＣＴ」の区切り文字列語として「ＩＮＴＯ」「ＦＲＯＭ」「ＣＯＲＲＥＳＰＯＮＤＩＮＧ」「ＦＩＬＥＤＳ」「ＯＦ」「ＩＮ」の各コンピュータ言語が設定されていることを格納している。前記命令語類は、そのプログラム言語仕様で決められた文字列であり、プログラム固有の文字列とはならず、これら文字列のみでウェブ検索を実施しても膨大な数の検索結果となってしまい、区切り文字「１」〜「２０」もそのプログラム言語仕様で決められた文字列も同様であるが、「ＩＮＴＯ」「ＦＲＯＭ」「ＣＯＲＲＥＳＰＯＮＤＩＮＧ」「ＦＩＬＥＤＳ」等の区切り文字列語は、プログラム固有の文字列である。
【００１５】
このため、図３（ａ）に示したプログラムソース１０の記述例の場合、文字列「ＳＥＬＥＣＴ」「ＩＮＴＯ」「ＦＲＯＭ」「ＣＯＲＲＥＳＰＯＮＤＩＮＧ」「ＦＩＬＥＤＳ」「ＯＦ」「ＩＮ」の各文字列のみは検索キーとしては不適であり、太斜字で示した「ＬＩＦＮＲ」「仕入先」「ＮＡＭＥ２」「名称２」「ＡＤＲＮＲ」「アドレス」「ＬＦＡ」「ＩＴ＿ＬＦＡ１」「ＩＴ＿ＡＬＶ＿ＬＩＦＮＲ」が検索対象とすべき文字列である。後述する手法によって抽出する本実施形態特有の抽出文字列は、図３（ｂ）の如く、命令語（「ＳＥＬＥＣＴ」）に１文字の空白文字（△）と抽出した区切り文字列語（「ＬＩＦＮＲ」、「ＮＡＭＥ２」、「ＡＤＲＮＲ」、「ＩＴ＿ＬＦＡ１」・・「仕入先」、「名称２」、「アドレス」）として出力される。
【００１６】
図４は、ウェブ検索部５０が検索処理を行った結果を出力する検索結果ファイル部６０への出力例を示したものであって、前記抽出した検索文字列に対応して該当ホームページのアドレス（ＵＲＬ）、ホームページ（ＨＰ）見出し、検索エンジンから提供されるＨＰ概要の各欄とから構成される。
【００１７】
なお、本プログラムソース検索システムは、一般的なコンピュータと同様に、ＣＰＵ、メモリ、磁気ディスク装置等の前記各ファイル部を構成する記憶装置、キーボード、表示部等のハードウェア構成を成し、基本ソフトウェア及び前記文字列抽出部及びウェブ検索部を機能として実現するアプリケーションソフトウェアが制御するように構成され、記憶装置に図示しないワークエリアを備えるものである。
【００１８】
［動作］
さて、前述のように構成された本実施形態によるプログラムソース検索システムは、文字列抽出部３０が、図５に示す如く、プログラムソース１０から１行のソースコードを読み込むステップ３０１と、命令ワークエリアをクリアするステップ３０２と、抽出ワークエリアをクリアするステップ３０３と、１行のソースコードから１文字を読み込むステップ３０４と、プログラムソース１０の１行読み込が終了したか否かを判定するステップ３０５と、このステップ３０５において終了していないと判定したとき、継続する文字列があるか否かを判定するステップ３０９と、このステップ３０９において、継続する文字列があると判定したとき（１つの単語としての文字列の読み込みが完了していないと判定したとき。）、１行のソースコードの次の文字を読み込んで前記ステップ３０４に戻るステップ３１０とを繰り返して実行することによって、１行のソースコードに含まれる１つの文字列を読み込むように動作する。
【００１９】
次いで本システムの文字列抽出部３０は、１文字列（単語）の読み込みが終了して前記ステップ３０９によって継続する文字列がないと判定したとき、次の位置にスペース（空白文字）か否かを判定するステップ３１１と、このステップ３１１においてスペース（空文字）と判定したとき、空白文字に続く次の文字列を抽出するために、抽出ワークエリアが空か否かを判定するステップ３１２と、ここではステップ３１２によって空でないと判定したとき、命令ワークエリアが空か否かを判定するステップ３２０と、ここでは空と判定したとき、命令ワークエリアに格納した文字列が言語ＤＢ２０に格納した文字列と一致するか否かを判定するステップ３２１と、このステップ３２１によって一致すると判定したとき、抽出ワークエリアの文字列を命令ワークエリアに複写するステップ３２２と、抽出ワークエリアをクリアして前記ステップ３０４に戻るステップ３２３とを繰り返すことによって、１単語（文字列）分且つ言語ＤＢに格納した文字列と一致する検索対象の文字列を命令ワークエリアに格納する。なお、前記ステップ３２１によって言語ＤＢ２０に該当する命令語が存在しないと判定したとき、本システムは、ステップ３２４によって抽出ワークエリアの内容をそのまま抽出ファイル部４０へ出力し、抽出ワークエリアをクリアするステップ３２３を介してステップ３０４に戻る。
【００２０】
前記ステップ３１１において続きが空白文字であると判定したとき、本システムの文字列抽出部３０は、抽出ワークエリアが空か否かを判定し、空白文字であると（既に１文字列の検索語を格納のため。）判定したとき、抽出ワークエリアが空か否かを判定するステップ３１２と、ここでは先に１文字列の検索語を格納しているために当該ステップ３１２において空でないと判定し、前述のステップ３２０に移行する処理を、ステップ３１１において続きが空白文字でないと判定するまで繰り返し、前記ステップ３１１において続きが空白文字でないと判定したとき、終了文字か否かを判定し、終了文字と判定したときに前記ステップ３１２を介して前記ステップ３０４に戻るステップ３１３を実行し、前記ステップ３１３において終了文字でないと判定したとき、命令ワークエリアが空か否かを判定するステップ３１４と、このステップ３１４によって空白文字と判定したときに抽出ワークエリアへ追加出力し、前記ステップ３０４に戻るステップ３１４を実行し、前記ステップ３１３において命令ワークエリアが空白文字でないと判定したとき、命令ワークエリアに格納した文字列が言語ＤＢ２０に格納した区切り文字列語と一致するか否かを判定するステップ３１６と、このステップ３１６によって区切り文字列語と判定したとき、命令ワークエリアに格納した文字列と空白文字と抽出ワークエリアに格納した文字列を抽出結果ファイル部４０に出力するステップ３１７と、抽出ワークエリアをクリアして前記ステップ３０４に戻るステップ３１８とを実行することによって、１行分ソースコードから言語ＤＢ２０に格納した命令語と空白文字と区切文字列語の組み合わせと一致する検索対象の検索語を命令ワークエリアに格納するように動作する。
【００２１】
また、本システムの文字列抽出部３０は、前記ステップ３２０において命令ワークが空でないと判定したとき、命令ワークエリアと抽出ワークエリアに格納した文字列と言語ＤＢに格納した文字列が一致するか否かを判定するステップ３２５と、このステップ３２５において一致すると判定したとき、命令ワークエリアに格納した文字列と空白と抽出ワークエリアに格納した文字列を抽出結果ファイル部４０に出力して前記ステップ３２３に戻るステップ３２６を実行することによっても、１行ソースコード分の言語ＤＢに格納した命令語と区切文字と空白文字による文字列の組み合わせと一致する検索対象の文字列を命令ワークエリアに格納するように動作する。
【００２２】
更に、本システムの文字列抽出部３０は、前記ステップ３０５において、１行ソースコードの処理が終了したと判定したとき、抽出ワークエリアが空か否かを判定し、空と判定したときに前記ステップ３０１に戻るステップ３０６と、このステップ３０６において空でないと判定したとき、命令ワークエリアが空か否かを判定するステップ３０７と、このステップ３０７において空でないと判定したとき、命令ワークエリアに格納した文字列と空白と抽出ワークエリアに格納した文字列を抽出結果ファイル部４０に出力して前記ステップ３０１に戻るステップ３０８を実行することによって、次の行のソースコードから言語ＤＢ２０に格納した文字列と一致する検索対象の命令語と区切文字列語と空白文字による組み合わせの検索文字列を命令ワークエリアに格納するように動作する。なお、前記ステップ３０７において命令ワークエリアが空であると判定したとき、本システムは、抽出ワークエリアの文字列を抽出結果ファイル部４０に出力することによって、検索対象とする文字列がないことを出力する。
【００２３】
なお、前記ステップ３０８と４３１８と３２６において、命令文字列に空白文字と抽出文字列を付加して出力する理由は、抽出文字列のみでウェブ検索した場合、検索結果がプログラムソースに類するもの以外のものまで検索し、膨大な数になることを防止するためである。
【００２４】
このように本実施形態によるプログラムソース検索システムは、文字列抽出部３０が、言語ＤＢ２０に登録した検索対象となる命令語文字と空白文字と区切り文字列語との組み合わせによる検索語を作成することによって、ウェブ上における検索エンジンを用いたヒット率の高いプログラムソースの検索を行うことができる。
【符号の説明】
【００２５】
１０  プログラムソース、３０  文字列抽出部、４０  抽出結果ファイル部、５０  ウェブ検索部、６０  検索結果ファイル部、７０  検索不要文字列ファイル部、８０  アドレスファイル部
【図１】
2011191950.tif 000003
【図２】
2011191950.tif 000004
【図３】
2011191950.tif 000005
【図４】
2011191950.tif 000006
【図５】
2011191950.tif 000007