(57)【要約】      （修正有）【課題】利用者が作成したプログラムコードを加工せずに、実行される機能の範囲や計算機資源の使用量を監視下に置いて実行するサーバ機能を提供する。【解決手段】利用者の処理要求の正当性を判別する機能を有する起動制御手段と、プログラムコードの走査や静的リンクを用いて、実行される機能範囲を制限することでシステムを保護する機能を有する実行準備手段２０２と、計算機資源利用量や入出力を監視する機能を有する実行監視手段２０９と、で構成する。【選択図】図２
2006139465.tif 000002
【特許請求の範囲】
【請求項１】
利用者が作成したプログラムコードを実行するサーバであって、処理要求を受け付けて正当性確認後に伝達する起動制御手段と、プログラムコードを走査する実行準備手段と、監視下でプログラムを実行する実行監視手段と、から構成されるプログラムコード実行サーバ。
【請求項２】
前記起動制御手段は、複数の利用者から発せられる複数の処理要求の識別を、暗号化した判別キーによって管理する機能を有することで誤操作や悪意の改竄を検出できることと、正当な要求ではその種類に応じて実行準備手段や実行監視手段にそれらを伝達し、処理の結果を処理要求発行元に伝達することと、一定時間処理要求が届かない利用者を見つけて占有している計算機資源を解放することと、を特徴とする請求項１に記載のプログラムコード実行サーバ。
【請求項３】
前記実行準備手段は、利用者の作成したプログラムコードの実行によってシステムが危害を受けないことを確認し、コンパイラ言語にあってはコンパイル処理を実行する機能であって、プログラムコードの中に制限すべき関数呼出しが無いかを調べるプログラムコード走査機能と、実行時ライブラリを参照することになる未解決外部参照を調べて、同名のダミー関数を先に静的にリンクすることでシステムの実行時ライブラリを変更することなく機能を制約できる機能制約ライブラリと、から構成されることを特徴とする請求項１に記載のプログラムコード実行サーバ。
【請求項４】
前記実行監視手段は、利用者の作成したプログラムコードの実行により使用されるＣＰＵ時間、メモリ領域、ファイルなどの計算機資源の使用量に上限を設けて監視することと、実行により出力された内容を随時利用者に提示することと、実行中に利用者の入力を促すプログラムの場合は実行を停止して利用者の入力を受け付けることと、実行時にエラーが生じたときはその内容を提示できることと、を特徴とする請求項１に記載のプログラムコード実行サーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータのプログラム言語のソースコードを入力して実行するサーバ機能に関するものである。
【背景技術】
【０００２】
プログラムコードを入力して実行するサーバ機能の用途のひとつに、インターネットを利用したＷｅｂベースのプログラム言語の実習サイトがある。これまで、Ｗｅｂブラウザ上で実習できるとするもの（例えば、特許文献１参照）は、プログラムの穴埋めだけか、提供者が用意したプログラムコードと一致したときだけ予め用意された実行結果を応答するものであり、利用者の書いたプログラムコードを加工せずに実行するシステムではない。この種の機能提供が厳しい条件下に置かれるのは、利用者のプログラムコードを加工せずに実行するときには機能の制約が難しく、サーバの動作環境の保全が困難となるためである。
【特許文献１】特許公開２００２−３６６６６７
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、こうした従来システムは、コンピュータを動作させるための言語の学習であるにもかかわらず、学習の過程で利用者の書いたプログラムを動作させることができないという致命的な問題を有する。ソースコードを入力して実行するサーバ機能の代わりにＣＤを配布する方法では、学習の連続性が損なわれるだけでなく、利用者に不慣れな設置作業を要求することや、利用者のコンピュータの動作環境による違いが問題となる。さらに、ひとつの結果を得るプログラムは変数名のつけ方の違いなどから無数に存在するため、穴埋めやただひとつのプログラムを正解とする扱いには無理があり、利用者が自由にプログラムを書けるシステムが必要である。
【０００４】
そこで、第１の発明は、穴埋め式や用意された解答と完全に一致したときだけの実行ではなく、実際に利用者の書いたプログラムコードを加工せずに実行するシステムを提供することを目的としている。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、請求項１に記載の発明は、利用者が与えたプログラムコードを加工せずに実行できるサーバ機能であって、受信した要求の正当性を判断し、多数の要求が交錯する中で実行結果をそれぞれの要求元に応答する機能を有する起動制御手段と、受信したプログラムコードに含まれる危険要因を走査検出する機能を有する実行準備手段と、システムに害を及ぼさないよう監視下で実行する実行監視手段と、から構成されるプログラムコード実行サーバであり、誤りや悪意の利用者からシステムを守るための手段とともに所期の機能を実現することを特徴としている。
【０００６】
請求項２に記載の発明は、前記起動制御手段が、複数の利用者から発せられる複数の処理要求の識別を、暗号化した判別キーによって管理する機能を有することで誤操作や悪意の改竄を検出できることと、正当な要求ではその種類に応じて実行準備手段や実行監視手段にそれらを伝達し、処理の結果を処理要求発行元に伝達することと、一定時間処理要求が届かない利用者を見つけて占有している計算機資源を解放することと、を特徴としている。
【０００７】
請求項３に記載の発明は、前記実行準備手段が、利用者の作成したプログラムコードの実行によってシステムが危害を受けないことを確認し、コンパイラ言語にあってはコンパイル処理を実行する機能であって、プログラムコードの中に制限すべき関数呼出しが無いかを調べるプログラムコード走査機能と、実行時ライブラリを参照することになる未解決外部参照を調べて、同名のダミー関数を先に静的にリンクすることでシステムの実行時ライブラリを変更することなく機能を制約できる機能制約ライブラリと、から構成されることを特徴としている。
【０００８】
請求項４に記載の発明は、前記実行監視手段が、利用者の作成したプログラムコードの実行により使用されるＣＰＵ時間、メモリ領域、ファイルなどの計算機資源の使用量に上限を設けて監視することと、実行により出力された内容を随時利用者に提示することと、実行中に利用者の入力を促すプログラムの場合は実行を停止して利用者の入力を受け付けることと、実行時にエラーが生じたときはその内容を提示できることと、を特徴としている。
【発明の効果】
【０００９】
以上説明したように、請求項１に記載の発明によれば、利用者が作成したプログラムコードを加工せずに実行するサーバ機能であって、入力した要求の正当性を判断し、多数の要求が交錯する中で実行結果をそれぞれの要求元に応答する機能を有する起動制御手段と、受信したプログラムコードに含まれる危険要因を走査検出する機能を有する実行準備手段と、システムに害を及ぼさないよう監視下で実行する実行監視手段と、から構成されるプログラムコード実行サーバであり、誤りや悪意の利用者からシステムを守るための手段とともに所期の機能を実現することができる。
【００１０】
また、請求項２に記載の発明によれば、前記起動制御手段が、複数の利用者から発せられる複数の処理要求の識別を、暗号化した判別キーによって管理する機能を有することで誤操作や悪意の改竄を検出できることと、正当な要求ではその種類に応じて実行準備手段や実行監視手段にそれらを伝達し、処理の結果を処理要求発行元に伝達することと、一定時間処理要求が届かない利用者を見つけて占有している計算機資源を解放することと、が可能となる。
【００１１】
また、請求項３に記載の発明によれば、前記実行準備手段が、利用者の作成したプログラムコードの実行によってシステムが危害を受けないことを確認し、コンパイラ言語にあってはコンパイル処理を実行する機能であって、プログラムコードの中に制限すべき関数呼出しが無いかを調べるプログラムコード走査機能と、実行時ライブラリを参照することになる未解決外部参照を調べて、同名のダミー関数を先に静的にリンクすることでシステムの実行時ライブラリを変更することなく機能を制約できる機能制約ライブラリと、から構成されることにより、サーバを含んでシステムの動作環境を保全した上で利用者のプログラムコードを実行することができる。
【００１２】
また、請求項４に記載の発明によれば、前記実行監視手段が、利用者の作成したプログラムコードの実行により使用されるＣＰＵ時間、メモリ領域、ファイルなどの計算機資源の使用量に上限を設けて監視することと、実行により出力された内容を随時利用者に提示することと、実行中に利用者の入力を促すプログラムの場合は実行を停止して利用者の入力を受け付けることと、実行時にエラーが生じたときはその内容を提示できることとにより、利用者が自身のコンピュータにプログラム言語処理系を用意したときと同様のことができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の、最良の実施の形態について図を参照して説明する。図１は本発明の、最良の実施の形態に係るプログラミング言語実習システムの構成図である。図２は図１に示す実行準備手段と実行監視手段の構成図である。
【００１４】
図１において、１はコンピュータ装置により実習用サーバを構成するプログラミング言語実習システムであり、次のように構成される。２はネットワーク上に実習サイトを設置するＷｅｂサーバである。３はプログラミング言語実習システムにおいて利用者の作成したプログラムコードを実行するサーバ機能の窓口となる起動制御手段である。４はプログラムコードを走査して危険行為を禁止する実行準備手段であり、５は計算機資源の使用量や利用者プログラムの入出力を監視する実行監視手段である。
【００１５】
６から８はプログラミング言語実習システムが必要とする機能のうちプログラムコードを実行するサーバ機能以外の機能であり、６は利用者認証手段、７は教材管理手段、８はコミュニティ役務である。９はインターネット等の通信ネットワーク、１０はこのシステムの利用者である。
【００１６】
つぎに動作について説明する。先ず、利用者１０が通信ネットワーク９を介してプログラミング言語実習システム１に接続すると、利用者認証手段６を用いて利用者認証の手続きを行い、正当な利用者であるときは利用者情報データベースから取り出した学習中の課題に応じた最適のページに、起動制御手段３から取得した正当性判別のためのキーを埋め込んで送信する。このとき、送信ページの内容となる教材は、教材管理手段７が教材データベースから取り出したものである。利用者認証後のすべての要求は、起動制御手段が正当な要求であることを確認したうえで処理を開始する。なお、コミュニティ役務は利用者間での情報交換を目的としたものであり、この実施形態に不可欠のものではない。
【００１７】
利用者１０から実行準備要求を受信したときは、実行準備手段４がそれを担当する。実行準備手段は、利用者の作成したプログラムコードの実行によってシステムが危害を受けないことを確認し、コンパイラ言語にあってはコンパイル処理を実行する。またシステム関数の呼び出しでは、システムの持つ実行時ライブラリを参照させないために予め静的なリンクを実行したり、インタプリタ言語にあってはインタプリタが実行時に参照するライブラリを切り替えることで、システムに危害を及ぼす可能性のある処理を制限する。このことによって、システムの動作環境を保全した上で利用者の作成したプログラムコードの実行が可能となる。
【００１８】
実行監視手段は、利用者の作成したプログラムコードの実行中に、役務を提供するコンピュータ装置のＣＰＵ時間、メモリ、ディスクスペースなどの計算機資源使用量を監視したり、要求発行元との間の入出力データ交換を適切に処理する機能を有する。
【００１９】
実行準備手段の処理が正しく行われた場合、引き続き自動的に実行監視手段が起動制御手段から呼び出される形態とするか、または、実行準備手段と実行監視手段の処理要求を別個に扱う形態とするかは、プログラミング言語がコンパイラ言語かインタプリタ言語かという言語の性質や実習サイトの方針によって選択できる。
【００２０】
図２はコンパイラ言語の場合において、実行準備手段と実行監視手段の連携を示す実施例である。利用者はＷｅｂブラウザ画面に表示される解説記事やサンプルコードを参考にしてＷｅｂブラウザ画面上にソースコード２０１を作成する。実行準備手段２０２は、それをプログラミング言語コンパイラ２０３に与えることでオブジェクトモジュール２０４を生成させる。続いて実行準備手段から起動されたリンカ２０５がオブジェクトモジュール２０４を制約機能ライブラリ２０６とリンクして実行オブジェクトコード２０７を生成する。機能制約ライブラリ２０６は、悪用すればプログラミング言語実習システムに害を及ぼす恐れのある機能を除くことで機能を制約されたライブラリである。
【００２１】
コンパイラ２０３の出力したメッセージを利用者のＷｅｂブラウザ上に設けたコンパイル結果の表示域２０８に応答する。利用者の作成したソースコードに誤りがあるときは、誤りの内容が表示される。正しいときはエラーの無いことが報告され、実行可能状態になる。利用者が実行指示を出すと、その要求は実行監視手段２０９に伝達される。実行監視手段はその監視下で当該利用者の実行オブジェクトコード２０７を起動する。実行監視手段はＣＰＵ時間やメモリなどの計算機資源の使用量をとともに、利用者のプログラムの挙動を監視する。利用者プログラムがデータ入力を要求したときは、実行監視手段がそれを検出して利用者のＷｅｂブラウザのデータ入力要求域２１０にデータ入力を要求する。利用者の入力したデータは実行監視手段が実行中の利用者プログラムに与える。実行が終了すると、それまでに利用者プログラムが出力した内容と終了コードを実行監視手段がＷｅｂブラウザの実行結果表示域２１１に表示する。なお、コンパイル結果の表示域２０８、データ入力要求域２１０、実行結果表示域２１１は必要なものだけを起動制御手段（図１の３）が判断して利用者のＷｅｂブラウザに表示する。
【００２２】
このような本実施の形態によれば、Ｗｅｂブラウザが使用できさえすれば、利用者は自身のコンピュータの種類に関わらず、さらに何ら言語処理系を設置することなく、実習ができる。また、説明と実習が途切れることなく同じ画面に表示されるので、思考を妨げずに学習を進めることができる。さらに利用者の作成したプログラムは事前に加工することなく言語処理系に与えられるので、診断メッセージも各言語処理系のものをそのまま表示できる。一方で、自由なコーディングを受け入れることによって、悪意を持つ利用者から攻撃を受ける可能性が高くなるが、このような本実施の形態によってシステムの保護が可能となる。
【００２３】
ここまでは、本発明はＷｅｂサーバから起動されるものとして説明したが、通信ネットワークを介せず利用者のコンピュータ装置内で動作する場合も含め、プロセス間通信によって処理要求をやり取りする形態全般に応用できる。
【産業上の利用可能性】
【００２４】
本発明は、Ｗｅｂブラウザを用いたコンピュータのプログラム言語のコーディング実習など、個々のコンピュータ装置にプログラミング言語処理系を設置することなくプログラムコードを実行する仕組みを提供することに関するものである。
【図面の簡単な説明】
【００２５】
【図１】本発明の、第１の実施の形態に係るプログラミング言語実習システムの構成図である。
【図２】図１に示す実行準備手段と実行監視手段の構成図である。
【符号の説明】
【００２６】
１  プログラミング言語実習システム
２  Ｗｅｂサーバ
３  起動制御手段
４  実行準備手段
５  実行監視手段
６  利用者認証手段
７  教材管理手段
８  コミュニティ役務
９  通信ネットワーク
１０  利用者
２０１  ソースコード
２０２  実行準備手段
２０３  各種のプログラミング言語コンパイラ
２０４  コンパイラが出力したオブジェクト
２０５  リンカ
２０６  機能を制約したライブラリ
２０７  実行オブジェクトコード
２０８  コンパイル結果の表示域
２０９  実行監視手段
２１０  データ入力要求域
２１１  実行結果
【図１】
2006139465.tif 000003
【図２】
2006139465.tif 000004