表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
worms  作者: 宮沢弘
第二章: 開発-2
7/25

2−2: αテスト-2

 次に寄せられた要望は、当たり前のものでもあり、黒田(くろだ) (あゆむ)にとっては避けて済ませたいものでもあった。個々のwormが別個にサイト内のページに対して検索をするのは効率がいいとは言えないというものだった。

 それを効率的に行なうには、サーバ権限により、あるいは他の権限により、そのサイトに存在するページに現われる語句のインデックスを作成する必要があった。それを行なうには字句解析が必要であり——それ自体はもちろん可能だが——、加えてサーバとDBMSの統合が必要だった。

 さらには、wormが保持するキーワードと字句解析の齟齬への対応も必要だった。字句解析の機能が、たとえば「字句解析」を「字句」と「解析」としており、wormにおいては「字句解析」がキーワードとなっているような場合への対応が必要だった。これに対応するには、wormが保持するキーワードに対しても字句解析を行ない、その結果の and あるいは or を検索の結果とする必要があった。

 これらは不可能ではないが、サーバの資源を消費する。そのため、サーバの本来の機能であるページ参照の解決とデータの転送に影響を与えることを懸念した。

「どこも高スペックのサーバを使っていれば、こんなのは問題じゃないんだが」

 しかし、それを期待することは、あるいは前提とすることはできなかった。

 他に方法がないわけでもなかった。一つのwormの検索結果を、そこに存在する他のwormにブロードキャストする方法もあるだろうし、より簡単にwormが参照する黒板(ブラック・ボード)を用意する方法もあるように思えた。だが、どちらの場合も問題は残るように思えた。ブロードキャストするのであれば、結局のところwormによる検索の回数はそれほど減らないだろう。ある時点において、あるサーバに存在するwormのみが、ブロードキャストを受信する対象になるからだった。そして黒板(ブラック・ボード)を使う場合であれば、適切にファイルのロックが行なわれなければ、デッド・ロックが発生するかもしれなかった。黒板(ブラック・ボード)を読み込む場合には問題にはならないが、書き込む場合には注意が必要だった。デッド・ロックを回避するためには、できるだけ低レベルにおいて実行する必要があった。そして、現状においては、wormの実行系、wormの実行系を実行するJavascriptの変種の実行系を通してロックを行なう必要があり、複数のwormがロックの動作に入った時に、既にロックされていることを確実に確認することには問題があるように思えた。

 だが、黒板(ブラック・ボード)による方法は魅力的ではあった。

「C言語のflockを直接叩ければいいんだが。あるいはセマフォが確実に、即座に実行されれば」

 しかし、それは実装上困難な問題ではあった。wormの実行系からできるだけ直通にする方法はある。FORTH 83-Standardを参考にしたのも、そのシンプルさから、ここでは利点になるように思えた。あとは、Javascriptの変種の実行系において適宜複数回ロックされているかどうかを確認し、デッド・ロックを回避するしかなかった。

 一つの確実な解決方法は、シリアライズであった。しかし、それはwormが各々プロセスとして動いている現状の実装を変える必要があった。シリアライズが行なえるなら、wormの実行系を実行しているJavascriptの変種の実行系も、各々プロセスとして動いているという無駄を排除できることにも繋がる。問題は、どのようにシリアライズをするかだった。

 仮にwormの到着順に実行するというシリアライズを行なった場合——これが一番簡単そうではあったが——、混雑した場合の待ち時間の予測が立たないという問題があった。そして、個々のwormが自律的に動作しなくなるため、待ち時間によっては一旦別のサーバに退避することも困難になるように思えた。

 到着したwormの先頭部分に到着時刻を記録し、wormの実行系を実行しているJavascriptの変種の実行系において経過時間を求め、一定時間を経過していたならwormの移動の機能に実行を移す方法はあった。

「ロックとこちらとどちらが確実で、さらには簡単か」

 シリアライズは、Javascriptの変種の実行系の動作を大きく変える必要があった。なにより、wormの自律性が奪われるのは、歩としては避けたかった。それが最善の選択ではないとしても。

 教授から、一週間、ワークステーション一台を専用に使う許可を得ると、歩は両方のバージョンを作り、高負荷下での実験を行なった。シリアライズを検討に加えたことは無駄ではなかった。実行されるwormの数の上限を制御できるようになったからだった。それは、要望ではなく懸念として送られてきていたものに対応することでもあった。


評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ