NAIS Journal

アクティブソフトウェアからアクティブ・ウェブへ
京都情報大学院大学

渡邉

教授

れに対応する設計と実装の方針として，階層化と再利用と合わせて，アクティブソフトウェアの考えがある。
アクティブソフトウェアは，能動的に起動するモジュールや関数を要素として，ソフトウェアを構成する方法で，並列処理や分散処

一方，インターネットの発展で，ウェブ上の情報は急激に増大している。増加の傾向は益々強くなり，単純な検索方法では，真に希望するページを見つけることがむつかしくなる。
本論文では，アクティブソフトウェアの考えを述べて，ウェブプログラムの構成に適用することを提案する。ウェブ上の検索やセキュ
リティなどの問題が関連する。

新しく作 成されるソフトウェアへ の要 求の高 度 化に伴って，その論 理 構 造は複 雑になり， 規 模が大きくなっていく。一 方，その設計と開発の期間を短縮すること，使用環境や要求仕様の変化に柔軟に対応することが求められている。
これに対応する設計方法と実装の方針として，アクティブソ

分を調整できること，などの特徴をもつソフトウェアである。これ

かつ｛起動条件iの論理式の値は真である｝ □によって，「複雑さと多様な変化に耐える強靭で（ robust ）安全な（safe）ソフトウェア」を実現することを目指している。

起動条件に含まれる変数を通じて間接的に起動を駆けること

ここでは，アクティブソフトウェアの広汎な目標ではなく，そのである。 このとき モード（ ＠モード）では， 複数の関数が起内の特徴（1）（self awareness）に焦点を当てている。それが動することがある。

他の特徴（2，3，4）を実現する出発点となる。

例題1a：$ 新値（ ）;の起動文によって， 注目した株価が変化

は，どちらか1つが真値になることがある。 □3.

動的検証と動的検出
能動関数は，プログラムのある時点で，動作｛Q｝の前条件

例題2：サイズ Nの配列A（int A［N］）について，添え字に使（P）と後条件（R）
によるアサーション検証法 P｛Q｝
R［hoare1969］

われている変数の値（k）をチェックする。

を動的に実現することに適用できる。これは，ある処理動作｛Q｝

能動関数側：

をする前に満足していなければならない条件（P）
と処理動作
｛Q｝

＠（N<=（k+2））;/*サイズを越える可能性*/の後で成り立つ条件（ R ）を示すことによって，プログラムの正アの稼動中に，ある特定の「条件」が成立したときに行う「動作」

int overIndex（ ）｛ /*添字が限界を越えた処理*/｝

しさを検証しようとするものである。

を，次のように表記する。

＠（k<0）;/*添え字が負になる可能性*/

定義1：＠起動条件｛関数またはモジュール｝ □int negativeIndex（ ｛）/*添字が負になった処理*/｝

これを能動関数（ active function ）または能動モジュール

配列参照側：

起動条件に（ P ）や（ R ）を持つ能動関数で，実行の正当性を確認するとともに，起動条件に（Pの否定，̲P）や（Rの否定，
̲R）を持つ能動関数によって，正当でない実行状態を検出す（ active module）という（ 以下では，能動関数とする）。広い

＠k（ ）;/*参照の前に添え字の値をチェックする*/ることができる。

意味の，イベント駆動方式，あるいは，ルールベース実行であA［k+2］=A［k］+A［k+1］;

例題4 : 2点（x1，y1），（x2，y2）の線分の傾き
（勾配）
を計算

る。ただし，1つのソフトウェア全体を，この形式だけで構成し添え字の値kが，どちらかの条件に抵触することがある。配列する。この場合，線分が垂直（x1 == x2）のケースを除かないて表現するのではなく，一部の関数やモジュールに起動条件の不当参照を防ぐ。 □といけない。

ジュールや関 数を要 素としてソフトウェアを構 成 する方 法で，を自由に追加・記述することで良い。

例 題 3：在 庫 管 理では部 品や商 品の在 庫 数を常に監 視して，前条件（P：x1!=x2）

並 列 処 理や分 散 処 理に適 合している。ソフトウェアの階 層 的

例題1：株価の大幅な変動を検出して，取引を制限する。

製造や販売の損失を防ぐ。たとえば，自動車の製造では，ある動作 ｛Q：勾配=（y2−y1）÷（x2−x1）｝

構成や，コンポーネントウェアと再利用などと関連している。また，

ストップ高 :

車種の右ドアのガラスと左ドアのガラスの在庫数量は同じであ後条件（R：桁溢れなし）

フトウェア（Active Software）の考えがある。
［rl2000］
アクティブソフトウェアは， 能動的に起動するソフトウェアモ

ソフトウェアに動的な検証機能や誤りの検出機能をもたせるこ＠（（新値-昨日の終値）> 昨日の終値*上昇変動率）

る。また，その数は，定常的な生産ラインを止めない限界値以

これを能動関数によって表現する。前条件（P）とその否定（̲P）とに適している。
［kw2005］｛ストップ高の警告を発生して,処置する手順｝

上である。

をチェックする。

ストップ安 :

能動関数側：

能動関数側：

一方，インターネット利用の拡大発展に伴い，ウェブ上の情報（ホームページ）が増大すること，ウェブサービスなどのウェ＠（（昨日の終値-新値）< 昨日の終値*下降変動率）

＠（右ドアのガラス!=左ドアのガラス）;/*ガラスの数量が異なる*/＠（x1==x2）;/*垂直線の場合*/

ブプログラミングの役割が大きくなることの傾向が見られる。増｛ストップ安の警告を発生して,処置する手順｝

int unEqualDoorGrass（ ｛）/*数量の検査と補充を促す処理*/｝float verticalCheck（ ）｛ /*垂直線の場合の処理手順*/ ｝

加の傾向が益々強くなるに従って，検索によって，真に希望す

実際には，昨日の終値の範囲によって，変動幅が定められて＠（右ドアのガラス< 限界値*安全率）;/*在庫切れを防ぐ*/

＠（x1!=x2）;/* 垂直線でない場合*/るページを見つけたり，適切なウェブサービスを探したりするこいる。このような株式の値の動きを監視することと処理の考えは，

int littleStock（ ｛）/*在庫を補充する手配を促す*/｝

float nonverticalLine（ ）｛ 勾配=（y2-y1）（x2-x1）/; ｝とがむつかしくなっている。また， 外部からの不正な侵入や攻

為替レート（ドルと円のレート）の変動の監視と，それに伴う方撃に対処することの重要性が高まっている。
［ao2004］

策の問題にも共通する。 □生産計画側：

処理本体側：

＠右ドアのガラス（）;/*新しい製造指示の前に在庫をチェックする*/

＠x1，x2（ ）;/*勾配を事前チェックする*//*勾配を用いた処理*/

本論文では，まず，アクティブソフトウェアの基本になる考え

能動関数の起動は， 計算の途中でいつでも条件の検出を

newProductPlan（K）;/*K台の自動車を製造する指示*/と特徴，その設計法を述べる。次いで，その構成法をウェブプするように指定しても良い場合（これを， いつでも モード，まこの場合は，2つの起動条件が同時に真になることがある。 □ログラミングや，ウェブ上の検索，および，セキュリティなどの問

たは，$モードという）と，検出する時点を適宜指定する場合（ここのような能動関数を用いて，アクティブソフトウェアの基盤

題に適用する方法を考察する。

れを， このとき モード，または，＠モードという）とがある。計を築くことができる。アクティブソフトウェア （active software）

例題5 : 商品取引において，受注（商品名，受注数量，売り「アクティブ」（Active，能動的）ということばは，「アクティブ

算の途中で，どちらかのモードを指定する。

の概念は，文献 ［rl200］ で導入されたもので，つぎのような

上げ単価 ）を受けたとき，受注処理をする前に，受注条件の制御」や「アクティブネットワーク」，あるいは，「アクティブ学習」

定義2：起動文で，起動モード（$または＠）と対象の変数を指

能動性の特徴をもっている。

妥当性をチェックする必要がある。

など，技術の面や生活の面で様々に使われている。人間の活定する。

（1）自分の状況を知る（self awareness）

前条件（P：受注数量 <= 在庫量，売り上げ単価 >= 最低額）

（2）自分を調整できる（self regulating）

動作 ｛Q：受注処理を行う｝（3）自分の誤りを訂正する（self correcting）

後 条 件（ R：計 算 式［売 上 金 = 売り上げ単 価 * 受 注 数 量］や在を式の中に含む起 動 条 件を評 価して， 起 動モードに従って，（4）モジュールが移動する（nomadic or self moving）

庫量の変化を確認する）

関数本体（または，モジュール本体）を起動させる。起動文（定つまり，計算の進行状況や計算環境の変動に対応して，能動

これを能動関数によって表現する。前条件（P）の否定（̲P）
を動の根 本であり，組 織や経 営において求められる行 動である。

起動モード

対象変数のリスト（［実引数の並び］）;□

計算の途中で，対象変数の値が更新されたとき，その変数2.

能動モジュールとアクティブソフトウェア

アクティブソフトウェアの構 成 原 理は単 純である。ソフトウェ112

定 義 3：｛起動文で指定した変数vを起動条件iが含んでいる｝

するたびに，例題1の2つの起動条件が評価される。この場合理に適合している。

はじめに的に処理を選択できること，目標とのずれを予測して動的に自これは，関数名を指定して関数を直接呼び出すのではなく，勝正

新しく開発されるソフトウェアシステムは，要求の高度化に伴って，論理構造が複雑になり，規模が大きくなっていく一方である。こ

1.

義2）と起動条件（定義1）の関連は次のように結び付けられる。

後条件（R）のチェックは省略している。処理の後でRが成り立たない場合（̲R）の発生も検出すると良い。 □113

NAIS Journal

アクティブソフトウェアからアクティブ・ウェブへ
京都情報大学院大学

渡邉

教授

れに対応する設計と実装の方針として，階層化と再利用と合わせて，アクティブソフトウェアの考えがある。
アクティブソフトウェアは，能動的に起動するモジュールや関数を要素として，ソフトウェアを構成する方法で，並列処理や分散処

一方，インターネットの発展で，ウェブ上の情報は急激に増大している。増加の傾向は益々強くなり，単純な検索方法では，真に希望するページを見つけることがむつかしくなる。
本論文では，アクティブソフトウェアの考えを述べて，ウェブプログラムの構成に適用することを提案する。ウェブ上の検索やセキュ
リティなどの問題が関連する。

新しく作 成されるソフトウェアへ の要 求の高 度 化に伴って，その論 理 構 造は複 雑になり， 規 模が大きくなっていく。一 方，その設計と開発の期間を短縮すること，使用環境や要求仕様の変化に柔軟に対応することが求められている。
これに対応する設計方法と実装の方針として，アクティブソ

分を調整できること，などの特徴をもつソフトウェアである。これ

かつ｛起動条件iの論理式の値は真である｝ □によって，「複雑さと多様な変化に耐える強靭で（ robust ）安全な（safe）ソフトウェア」を実現することを目指している。

起動条件に含まれる変数を通じて間接的に起動を駆けること

ここでは，アクティブソフトウェアの広汎な目標ではなく，そのである。 このとき モード（ ＠モード）では， 複数の関数が起内の特徴（1）（self awareness）に焦点を当てている。それが動することがある。

他の特徴（2，3，4）を実現する出発点となる。

例題1a：$ 新値（ ）;の起動文によって， 注目した株価が変化

は，どちらか1つが真値になることがある。 □3.

動的検証と動的検出
能動関数は，プログラムのある時点で，動作｛Q｝の前条件

例題2：サイズ Nの配列A（int A［N］）について，添え字に使（P）と後条件（R）
によるアサーション検証法 P｛Q｝
R［hoare1969］

われている変数の値（k）をチェックする。

を動的に実現することに適用できる。これは，ある処理動作｛Q｝

能動関数側：

をする前に満足していなければならない条件（P）
と処理動作
｛Q｝

＠（N<=（k+2））;/*サイズを越える可能性*/の後で成り立つ条件（ R ）を示すことによって，プログラムの正アの稼動中に，ある特定の「条件」が成立したときに行う「動作」

int overIndex（ ）｛ /*添字が限界を越えた処理*/｝

しさを検証しようとするものである。

を，次のように表記する。

＠（k<0）;/*添え字が負になる可能性*/

定義1：＠起動条件｛関数またはモジュール｝ □int negativeIndex（ ｛）/*添字が負になった処理*/｝

これを能動関数（ active function ）または能動モジュール

配列参照側：

起動条件に（ P ）や（ R ）を持つ能動関数で，実行の正当性を確認するとともに，起動条件に（Pの否定，̲P）や（Rの否定，
̲R）を持つ能動関数によって，正当でない実行状態を検出す（ active module）という（ 以下では，能動関数とする）。広い

＠k（ ）;/*参照の前に添え字の値をチェックする*/ることができる。

意味の，イベント駆動方式，あるいは，ルールベース実行であA［k+2］=A［k］+A［k+1］;

例題4 : 2点（x1，y1），（x2，y2）の線分の傾き
（勾配）
を計算

る。ただし，1つのソフトウェア全体を，この形式だけで構成し添え字の値kが，どちらかの条件に抵触することがある。配列する。この場合，線分が垂直（x1 == x2）のケースを除かないて表現するのではなく，一部の関数やモジュールに起動条件の不当参照を防ぐ。 □といけない。

ジュールや関 数を要 素としてソフトウェアを構 成 する方 法で，を自由に追加・記述することで良い。

例 題 3：在 庫 管 理では部 品や商 品の在 庫 数を常に監 視して，前条件（P：x1!=x2）

並 列 処 理や分 散 処 理に適 合している。ソフトウェアの階 層 的

例題1：株価の大幅な変動を検出して，取引を制限する。

製造や販売の損失を防ぐ。たとえば，自動車の製造では，ある動作 ｛Q：勾配=（y2−y1）÷（x2−x1）｝

構成や，コンポーネントウェアと再利用などと関連している。また，

ストップ高 :

車種の右ドアのガラスと左ドアのガラスの在庫数量は同じであ後条件（R：桁溢れなし）

フトウェア（Active Software）の考えがある。
［rl2000］
アクティブソフトウェアは， 能動的に起動するソフトウェアモ

ソフトウェアに動的な検証機能や誤りの検出機能をもたせるこ＠（（新値-昨日の終値）> 昨日の終値*上昇変動率）

る。また，その数は，定常的な生産ラインを止めない限界値以

これを能動関数によって表現する。前条件（P）とその否定（̲P）とに適している。
［kw2005］｛ストップ高の警告を発生して,処置する手順｝

上である。

をチェックする。

ストップ安 :

能動関数側：

能動関数側：

一方，インターネット利用の拡大発展に伴い，ウェブ上の情報（ホームページ）が増大すること，ウェブサービスなどのウェ＠（（昨日の終値-新値）< 昨日の終値*下降変動率）

＠（右ドアのガラス!=左ドアのガラス）;/*ガラスの数量が異なる*/＠（x1==x2）;/*垂直線の場合*/

ブプログラミングの役割が大きくなることの傾向が見られる。増｛ストップ安の警告を発生して,処置する手順｝

int unEqualDoorGrass（ ｛）/*数量の検査と補充を促す処理*/｝float verticalCheck（ ）｛ /*垂直線の場合の処理手順*/ ｝

加の傾向が益々強くなるに従って，検索によって，真に希望す

実際には，昨日の終値の範囲によって，変動幅が定められて＠（右ドアのガラス< 限界値*安全率）;/*在庫切れを防ぐ*/

＠（x1!=x2）;/* 垂直線でない場合*/るページを見つけたり，適切なウェブサービスを探したりするこいる。このような株式の値の動きを監視することと処理の考えは，

int littleStock（ ｛）/*在庫を補充する手配を促す*/｝

float nonverticalLine（ ）｛ 勾配=（y2-y1）（x2-x1）/; ｝とがむつかしくなっている。また， 外部からの不正な侵入や攻

為替レート（ドルと円のレート）の変動の監視と，それに伴う方撃に対処することの重要性が高まっている。
［ao2004］

策の問題にも共通する。 □生産計画側：

処理本体側：

＠右ドアのガラス（）;/*新しい製造指示の前に在庫をチェックする*/

＠x1，x2（ ）;/*勾配を事前チェックする*//*勾配を用いた処理*/

本論文では，まず，アクティブソフトウェアの基本になる考え

能動関数の起動は， 計算の途中でいつでも条件の検出を

newProductPlan（K）;/*K台の自動車を製造する指示*/と特徴，その設計法を述べる。次いで，その構成法をウェブプするように指定しても良い場合（これを， いつでも モード，まこの場合は，2つの起動条件が同時に真になることがある。 □ログラミングや，ウェブ上の検索，および，セキュリティなどの問

たは，$モードという）と，検出する時点を適宜指定する場合（ここのような能動関数を用いて，アクティブソフトウェアの基盤

題に適用する方法を考察する。

れを， このとき モード，または，＠モードという）とがある。計を築くことができる。アクティブソフトウェア （active software）

例題5 : 商品取引において，受注（商品名，受注数量，売り「アクティブ」（Active，能動的）ということばは，「アクティブ

算の途中で，どちらかのモードを指定する。

の概念は，文献 ［rl200］ で導入されたもので，つぎのような

上げ単価 ）を受けたとき，受注処理をする前に，受注条件の制御」や「アクティブネットワーク」，あるいは，「アクティブ学習」

定義2：起動文で，起動モード（$または＠）と対象の変数を指

能動性の特徴をもっている。

妥当性をチェックする必要がある。

など，技術の面や生活の面で様々に使われている。人間の活定する。

（1）自分の状況を知る（self awareness）

前条件（P：受注数量 <= 在庫量，売り上げ単価 >= 最低額）

（2）自分を調整できる（self regulating）

動作 ｛Q：受注処理を行う｝（3）自分の誤りを訂正する（self correcting）

後 条 件（ R：計 算 式［売 上 金 = 売り上げ単 価 * 受 注 数 量］や在を式の中に含む起 動 条 件を評 価して， 起 動モードに従って，（4）モジュールが移動する（nomadic or self moving）

庫量の変化を確認する）

関数本体（または，モジュール本体）を起動させる。起動文（定つまり，計算の進行状況や計算環境の変動に対応して，能動

これを能動関数によって表現する。前条件（P）の否定（̲P）
を動の根 本であり，組 織や経 営において求められる行 動である。

起動モード

対象変数のリスト（［実引数の並び］）;□

計算の途中で，対象変数の値が更新されたとき，その変数2.

能動モジュールとアクティブソフトウェア

アクティブソフトウェアの構 成 原 理は単 純である。ソフトウェ112

定 義 3：｛起動文で指定した変数vを起動条件iが含んでいる｝

するたびに，例題1の2つの起動条件が評価される。この場合理に適合している。

はじめに的に処理を選択できること，目標とのずれを予測して動的に自これは，関数名を指定して関数を直接呼び出すのではなく，勝正

新しく開発されるソフトウェアシステムは，要求の高度化に伴って，論理構造が複雑になり，規模が大きくなっていく一方である。こ

1.

義2）と起動条件（定義1）の関連は次のように結び付けられる。

後条件（R）のチェックは省略している。処理の後でRが成り立たない場合（̲R）の発生も検出すると良い。 □113

アクティブソフトウェアからアクティブ・ウェブへ

NAIS Journal

チェックする。また，後条件（R）で処理の確認を行う。
能動関数側：

PC-i/PC-0

メモリバス

＠（受注数量 > 在庫量）;/*̲P：在庫不足*/

1.起動条件に含まれる変数のレジスタint zaikoHusoku（｛）/*商品の生産または仕入れ処理をする*/｝

起動文
の
番号j

A:B:C

関数
iの
終了

4.PC選択回路

＠（売り上げ単価<最低額）;/*̲P：受注単価が適切でない*/
3.起動文により
起動条件を
選択する
［定義3］

2.起動条件iの
論理回路
（B+C）

int tankaKakunin（）｛ /*単価が低い理由を確認する*/;｝＠（売上金!=売り上げ単価*受注数量）;/*̲R：計算の間違い*/A

float uriageAyamari（）｛ /*計算の照合結果を報告する*/;｝
処理本体側：

true/
false

AND
gate

FFs

NOR
gate

＠受注数量，売り上げ単価（）;/*̲P：受注処理の事前チェック*/
受注処理（商品名，受注数量，売り上げ単価）;

図1

書き換え可能な起動条件評価回路

は，アンチウィルスやワクチンソフトウェアとして工夫されている。

検索の幅を広げて，気がつかない検索結果を示す。

これには，ウィルスのパターンが判っていることが前提となって

d.

検索の結果を見て，関連する他のサイトを紹介する。

いる。そのパターンが判れば，図1と同じように，ウィルスをチェe.

ホームページを探すのに，検索だけに頼ることの弊害を避ックする再構成可能な回路を実現できる。比較回路に，ウィルける。

スの実行パターンを持たせて， 主プロセッサが実行する命令

f.

令の実行履歴をハッシュ値に変換する方法がある。
［ao2004］
つぎに，攻撃のひとつにDOS攻撃（Denial of Service）が起 動 条 件を表 現する水 準（レベル）を上げる必 要があるかも知れない。今後に向けての問題である。

L」と重複しているとき，これをリストに含めない。

チェックすることである。

＠（次のURL<=>リストされているURL［i］）;/*重複している*/

とくに，株式の取引では，取引の株数と取引価格のチェックは（ 2 ）起動条件の論理回路は能動関数iの起動条件iを表す論｛/*DoS 攻撃と判断して，以後の受け入れを停止する*/｝ □重要である。処理後のチェック（̲R）
も不可欠である。 □理式の評価回路である。

（2）のウェブ検索については，ウェブページの増大が急激で，図では，条件（A>=B+C）の比較回路を持っている。

その増 大 が留まらないことが問 題の根 源である。それにより，（ 3 ）選択部は， 起動文jについて， 評価の対象となる起動条

検索結果が大量になり，現在でも，直接，それをすべて観るこ

何をするか」を設計と構成の基本にするものである。それは，「何アクティブソフトウェアの基盤になっている能動関数について，る。これに対応するには，入ってくるパケットの個数を入り口で＠（パケットの個数 > 同時に受け入れるパケットの上限数）

このように，能動関数は，「何時，どのような状態になったら，古くなって不要と思われるページを対象からはずす。

例題8 : 検索結果の「次のURL」が「既にリストしているUR-

きに，新しく取り込まれる。

処理前のチェックによって，取引上の誤りを防ぐことができる。

逆に，同義語をもつキーワードについては，同義語によるある。大量にパケットが送られてきて，本来の仕事ができなくな

例題6 : 受信パケット数を制限する能動関数

＠ 売上金，在庫量（）;/*R：受注処理の結果を確認する*/

int removeURL｛「次のURL」はリストに入れない，URL［i］の順位を上げる｝ □5. おわりに
能動的な働きは，日常の生活においても，組織の活動においかの処理をするときに，どのような状態であるべきか」を確かめ

件 iを選 択する回 路である。比 較 回 路の論 理 値 iと信 号 jの両とは到底できない状況である。

ることと表 裏の関 係にある。能 動 関 数は実 行中のソフトウェア

方が1（真）のとき，選択回路のANDゲート（論理積）が1（真）例題7 : たとえば，キーワード Google検索 で検索するとつ

念をコンピュータソフトウェアに導入しようとしている。そのようなの異常事態を発見したり，正しく動作していることを確認したとなる。

ぎの件数が出てくる。

動きをプログラムとして表現することは容易であるが， 動きを効りすることに適している。

その出力は，起動条件iに対応するフリップフロップi（1ビットても，期待される行動である。アクティブソフトウェアは，その概YAHOOでの検索件数 3,380,000

率よく実行するためには，並列に動作するハードウェアとの協調

記憶レジスタi）を1に設定する．

Googleでの検索件数 43,300,000

性が求められる。とくに， いつでも モード（$モード）では，「起

件の評価を，プログラムの実行中に逐次に行うことは，実行効（ 4 ）P C 選 択 回 路では， フリップフロップiの出 力が1になると，.comのみ，日本語のみとすると，1,210,000に絞られる。

動条件を常に監視して評価するハードウェア」の効果が期待さ率の上で好ましいことではない。幸いなことに，コンピュータの対応する能動関数iのプログラムカウンタi（PC̲i）
を取り出して，

この検索結果の数値にどのような意味があるのだろうか。□

れる。

性能が向上して， 処理時間の遅延が目立たなくなっている。

主プロセッサに知らせる。実行スケジュールの対象に加えられる。

このような現象に対して，表示順位の決め方，順位を上げ

アクティブの考えは，インターネットおよびウェブの領域においでも，応答時間に厳しいリアルタイム処理や，ソフトウェアの規能動関数iの実行が終了すると，対応するフリップフロップiるページの作り方などで，いろいろの工夫がなされている。たても効果をもつ。外部からの攻撃に備えることと，検索要求に模に合わせて能動関数の数が増えるものについては，重大なを0（ 偽 ）にリセット（クリア）する。すべてのフリップフロップが0とえば， 他からの参照リンク数によってページに格付けをする

対して適切なURLを返すことに，有効な方策を提供したい。ま

問題点になる。

になると，NOR（論理和の否定）の出力が1となり，PC̲0により，方法が知られている。しかし， それで本当に観たいページがた，第3の問題として，増えていく一方のウェブページの中で待機していた起動文jの次に実行の制御を戻す。

得られるのだろうかという疑問が残る。この問題についての解対象にするものをどのように限定していくかに， ひとつの解決

決法は単純には得られない。能動関数を用いて，つぎのような策を見出す手掛かりを与えていきたい。

しかし，このような検出や確認を，つまり，対応する起動条

これを改良するには，ある時点で評価すべき起動条件を厳選しておくこと，あるいは，起動条件を評価するハードウェア回できれば能動関数の本体も書き換え可能な回路として実現路を構成して並列に実行することである。前者は， 能動関数すればよい。起 動 条 件の評 価や能 動 関 数の本 体を可 変のハ点に対応することを検討している。

を含んだプログラムを言語処理するときの問題である。

ードウェアで実装すると，ソフトウェアの仕様の変更や，計算環a.

境の変化に対しても，能動関数を差し替えることによって，柔のとき，重なりの多いページの順位を上げる。

時，何処に移動するか」を決定する上で，能動関数を適用で軟に対応しやすい。

b.

きると考えている。

後者は，能動関数の起動条件をハードウェアに変換する問題である。変換によって生成されたハードウェア記述から， 書き換え可能なハードウェア（たとえば，FPGA：Field Program-

このような再構成可能コンピュータアーキテクチャは， 一般

mable Gate Array）回路を構成する。その回路は，主プロセ

的な例外処理を効率良くサポートして，システムの実働を安定ッサがプログラムに従って動 作するのと並 列に， 起 動条 件のに保つ環境を与える。
［mt2004］

評価を行う。ある時点に対応する起動条件が真になると， 主プロセッサに割り込み信号を送って， 能動関数の本体を実行させる。
信号の大まかな流れを図1に示す。
［kw2005］114c.

列を監視する考えである。パターンの照合には，たとえば，命

j

B+C

比較回路
＞＝

run
of
any

（1）については，まず，ウィルスの侵入がある。これに対して

4. ウェブプログラミングへの適用
アクティブソフトウェアの考えは，ウェブの環境にも適用できる。
インターネット利用の拡大につれて，とくに，（1）外部からの不アクティブソフトウェアの4 つ目の特 徴である「モジュールが検索結果から同じURLを削除して表示件数を減らす。こ多義語のキーワードについては，不要の意味をはずして，移動する（nomadic or self moving）」を実現するとき，「何検索結果を絞る。

参考 ［rl2000］ Laddaga，R．
: Active Software， 防止，コンピュータセキュリティシンポジウム
文献 Self-Adaptive Software，First International
2004（CSS2004），2004, 10, pp.421-426.
Workshop，IWSAS 2000，LNCS 1936，Springer， ［mt2004］伴野充，中西正樹，山下茂，渡邉
2000，pp.11-19．

勝正 : 再構成可能ハードウェアを用いたイベ［kw2005］渡邉勝正, 井上晶広, 伴野充, 蔵

ント指向型計算とその応用，第4回リコンフィギ

川 圭, 中西正樹, 山下茂 : 能動関数によるアャラブルシステム研究会論文集， 2004, 9,

渡邉

勝正

Katsumasa Watanabe
京都大学工学部助手，助教授を経て，福井大学工学部教授， 奈良先端科学技術大学
院大学教授。2006年4月より，京都情報大学
院大学教授。これまでに，
ソフトウェアシステム，

サーション検証設計, コンピュータソフトウェア,

pp.103-109.

問題になっている。能動関数によってこれらの対応策を立てた

Vol. 22, No. 3, 2005, 7, pp.76-91［hoare1969］Hoare，C．
: An axiomatic ba-［ao2004］岡崎篤也，中西正樹，山下茂，渡sis for computer programming，Comm．
Of

研究を進めてきた。現在，人やコンピュータのい。

邉勝正 : CPUによるマルウェアコードの実行

ACM，Vol．
12，1969，pp.576-580．

アクティブな振る舞いに関心を持っている。

（1）図中のレジスタ（たとえば，A，B，C）は，起動条件に使わ正な侵入と攻撃，（ 2 ）増大するウェブページの検索が重大なれている変数の値をもつ記憶用のレジスタである。これらの値は，メモリバスを監視していて，主プロセッサがメモリに書き込むとハードウェア／ソフトウェア協調設計， 並列・分散アルゴリズム， アクティブソフトウェアの115アクティブソフトウェアからアクティブ・ウェブへ

NAIS Journal

チェックする。また，後条件（R）で処理の確認を行う。
能動関数側：

PC-i/PC-0

メモリバス

＠（受注数量 > 在庫量）;/*̲P：在庫不足*/

1.起動条件に含まれる変数のレジスタint zaikoHusoku（｛）/*商品の生産または仕入れ処理をする*/｝

起動文
の
番号j

A:B:C

関数
iの
終了

4.PC選択回路

＠（売り上げ単価<最低額）;/*̲P：受注単価が適切でない*/
3.起動文により
起動条件を
選択する
［定義3］

2.起動条件iの
論理回路
（B+C）

int tankaKakunin（）｛ /*単価が低い理由を確認する*/;｝＠（売上金!=売り上げ単価*受注数量）;/*̲R：計算の間違い*/A

float uriageAyamari（）｛ /*計算の照合結果を報告する*/;｝
処理本体側：

true/
false

AND
gate

FFs

NOR
gate

＠受注数量，売り上げ単価（）;/*̲P：受注処理の事前チェック*/
受注処理（商品名，受注数量，売り上げ単価）;

図1

書き換え可能な起動条件評価回路

は，アンチウィルスやワクチンソフトウェアとして工夫されている。

検索の幅を広げて，気がつかない検索結果を示す。

これには，ウィルスのパターンが判っていることが前提となって

d.

検索の結果を見て，関連する他のサイトを紹介する。

いる。そのパターンが判れば，図1と同じように，ウィルスをチェe.

ホームページを探すのに，検索だけに頼ることの弊害を避ックする再構成可能な回路を実現できる。比較回路に，ウィルける。

スの実行パターンを持たせて， 主プロセッサが実行する命令

f.

令の実行履歴をハッシュ値に変換する方法がある。
［ao2004］
つぎに，攻撃のひとつにDOS攻撃（Denial of Service）が起 動 条 件を表 現する水 準（レベル）を上げる必 要があるかも知れない。今後に向けての問題である。

L」と重複しているとき，これをリストに含めない。

チェックすることである。

＠（次のURL<=>リストされているURL［i］）;/*重複している*/

とくに，株式の取引では，取引の株数と取引価格のチェックは（ 2 ）起動条件の論理回路は能動関数iの起動条件iを表す論｛/*DoS 攻撃と判断して，以後の受け入れを停止する*/｝ □重要である。処理後のチェック（̲R）
も不可欠である。 □理式の評価回路である。

（2）のウェブ検索については，ウェブページの増大が急激で，図では，条件（A>=B+C）の比較回路を持っている。

その増 大 が留まらないことが問 題の根 源である。それにより，（ 3 ）選択部は， 起動文jについて， 評価の対象となる起動条

検索結果が大量になり，現在でも，直接，それをすべて観るこ

何をするか」を設計と構成の基本にするものである。それは，「何アクティブソフトウェアの基盤になっている能動関数について，る。これに対応するには，入ってくるパケットの個数を入り口で＠（パケットの個数 > 同時に受け入れるパケットの上限数）

このように，能動関数は，「何時，どのような状態になったら，古くなって不要と思われるページを対象からはずす。

例題8 : 検索結果の「次のURL」が「既にリストしているUR-

きに，新しく取り込まれる。

処理前のチェックによって，取引上の誤りを防ぐことができる。

逆に，同義語をもつキーワードについては，同義語によるある。大量にパケットが送られてきて，本来の仕事ができなくな

例題6 : 受信パケット数を制限する能動関数

＠ 売上金，在庫量（）;/*R：受注処理の結果を確認する*/

int removeURL｛「次のURL」はリストに入れない，URL［i］の順位を上げる｝ □5. おわりに
能動的な働きは，日常の生活においても，組織の活動においかの処理をするときに，どのような状態であるべきか」を確かめ

件 iを選 択する回 路である。比 較 回 路の論 理 値 iと信 号 jの両とは到底できない状況である。

ることと表 裏の関 係にある。能 動 関 数は実 行中のソフトウェア

方が1（真）のとき，選択回路のANDゲート（論理積）が1（真）例題7 : たとえば，キーワード Google検索 で検索するとつ

念をコンピュータソフトウェアに導入しようとしている。そのようなの異常事態を発見したり，正しく動作していることを確認したとなる。

ぎの件数が出てくる。

動きをプログラムとして表現することは容易であるが， 動きを効りすることに適している。

その出力は，起動条件iに対応するフリップフロップi（1ビットても，期待される行動である。アクティブソフトウェアは，その概YAHOOでの検索件数 3,380,000

率よく実行するためには，並列に動作するハードウェアとの協調

記憶レジスタi）を1に設定する．

Googleでの検索件数 43,300,000

性が求められる。とくに， いつでも モード（$モード）では，「起

件の評価を，プログラムの実行中に逐次に行うことは，実行効（ 4 ）P C 選 択 回 路では， フリップフロップiの出 力が1になると，.comのみ，日本語のみとすると，1,210,000に絞られる。

動条件を常に監視して評価するハードウェア」の効果が期待さ率の上で好ましいことではない。幸いなことに，コンピュータの対応する能動関数iのプログラムカウンタi（PC̲i）
を取り出して，

この検索結果の数値にどのような意味があるのだろうか。□

れる。

性能が向上して， 処理時間の遅延が目立たなくなっている。

主プロセッサに知らせる。実行スケジュールの対象に加えられる。

このような現象に対して，表示順位の決め方，順位を上げ

アクティブの考えは，インターネットおよびウェブの領域においでも，応答時間に厳しいリアルタイム処理や，ソフトウェアの規能動関数iの実行が終了すると，対応するフリップフロップiるページの作り方などで，いろいろの工夫がなされている。たても効果をもつ。外部からの攻撃に備えることと，検索要求に模に合わせて能動関数の数が増えるものについては，重大なを0（ 偽 ）にリセット（クリア）する。すべてのフリップフロップが0とえば， 他からの参照リンク数によってページに格付けをする

対して適切なURLを返すことに，有効な方策を提供したい。ま

問題点になる。

になると，NOR（論理和の否定）の出力が1となり，PC̲0により，方法が知られている。しかし， それで本当に観たいページがた，第3の問題として，増えていく一方のウェブページの中で待機していた起動文jの次に実行の制御を戻す。

得られるのだろうかという疑問が残る。この問題についての解対象にするものをどのように限定していくかに， ひとつの解決

決法は単純には得られない。能動関数を用いて，つぎのような策を見出す手掛かりを与えていきたい。

しかし，このような検出や確認を，つまり，対応する起動条

これを改良するには，ある時点で評価すべき起動条件を厳選しておくこと，あるいは，起動条件を評価するハードウェア回できれば能動関数の本体も書き換え可能な回路として実現路を構成して並列に実行することである。前者は， 能動関数すればよい。起 動 条 件の評 価や能 動 関 数の本 体を可 変のハ点に対応することを検討している。

を含んだプログラムを言語処理するときの問題である。

ードウェアで実装すると，ソフトウェアの仕様の変更や，計算環a.

境の変化に対しても，能動関数を差し替えることによって，柔のとき，重なりの多いページの順位を上げる。

時，何処に移動するか」を決定する上で，能動関数を適用で軟に対応しやすい。

b.

きると考えている。

後者は，能動関数の起動条件をハードウェアに変換する問題である。変換によって生成されたハードウェア記述から， 書き換え可能なハードウェア（たとえば，FPGA：Field Program-

このような再構成可能コンピュータアーキテクチャは， 一般

mable Gate Array）回路を構成する。その回路は，主プロセ

的な例外処理を効率良くサポートして，システムの実働を安定ッサがプログラムに従って動 作するのと並 列に， 起 動条 件のに保つ環境を与える。
［mt2004］

評価を行う。ある時点に対応する起動条件が真になると， 主プロセッサに割り込み信号を送って， 能動関数の本体を実行させる。
信号の大まかな流れを図1に示す。
［kw2005］114c.

列を監視する考えである。パターンの照合には，たとえば，命

j

B+C

比較回路
＞＝

run
of
any

（1）については，まず，ウィルスの侵入がある。これに対して

4. ウェブプログラミングへの適用
アクティブソフトウェアの考えは，ウェブの環境にも適用できる。
インターネット利用の拡大につれて，とくに，（1）外部からの不アクティブソフトウェアの4 つ目の特 徴である「モジュールが検索結果から同じURLを削除して表示件数を減らす。こ多義語のキーワードについては，不要の意味をはずして，移動する（nomadic or self moving）」を実現するとき，「何検索結果を絞る。

参考 ［rl2000］ Laddaga，R．
: Active Software， 防止，コンピュータセキュリティシンポジウム
文献 Self-Adaptive Software，First International
2004（CSS2004），2004, 10, pp.421-426.
Workshop，IWSAS 2000，LNCS 1936，Springer， ［mt2004］伴野充，中西正樹，山下茂，渡邉
2000，pp.11-19．

勝正 : 再構成可能ハードウェアを用いたイベ［kw2005］渡邉勝正, 井上晶広, 伴野充, 蔵

ント指向型計算とその応用，第4回リコンフィギ

川 圭, 中西正樹, 山下茂 : 能動関数によるアャラブルシステム研究会論文集， 2004, 9,

渡邉

勝正

Katsumasa Watanabe
京都大学工学部助手，助教授を経て，福井大学工学部教授， 奈良先端科学技術大学
院大学教授。2006年4月より，京都情報大学
院大学教授。これまでに，
ソフトウェアシステム，

サーション検証設計, コンピュータソフトウェア,

pp.103-109.

問題になっている。能動関数によってこれらの対応策を立てた

Vol. 22, No. 3, 2005, 7, pp.76-91［hoare1969］Hoare，C．
: An axiomatic ba-［ao2004］岡崎篤也，中西正樹，山下茂，渡sis for computer programming，Comm．
Of

研究を進めてきた。現在，人やコンピュータのい。

邉勝正 : CPUによるマルウェアコードの実行

ACM，Vol．
12，1969，pp.576-580．

アクティブな振る舞いに関心を持っている。

（1）図中のレジスタ（たとえば，A，B，C）は，起動条件に使わ正な侵入と攻撃，（ 2 ）増大するウェブページの検索が重大なれている変数の値をもつ記憶用のレジスタである。これらの値は，メモリバスを監視していて，主プロセッサがメモリに書き込むとハードウェア／ソフトウェア協調設計， 並列・分散アルゴリズム， アクティブソフトウェアの115