NiCe - Network Information getting & Command Execution http によるファイルの取得および取得データに基づいたコマンド実行 ■前口上 WEB には、定期的に更新されるデータというものがあります。例とし ては、あまり面白みはありませんが、株価とか円相場なんかを挙げてお きましょうか。 このようなデータを取得して、それに応じてある動作を行なわせる、 というツールはよくあります。が、特定のデータと特定の動作に特化し たツールが多いようです。その分、それらのツールは設定項目もわかり やすく、簡単に使えるというメリットもありますが、それの引き換えと して、柔軟性が皆無とか、自分のやりたいことができない、といったデ メリットもあったりします。 そこで、試しに柔軟性がとても高いツールを作ってみました。案の定、 かなり設定等が複雑なものとなってしまいましたが、私が自分で使う分 には便利に使えるものができました。 ■動作環境 Windows95/98/Me/2K/XP 汎用(のはず)。 ただし、十分なテストは行なわれておりません。 なお、レジストリは一切使っておりませんので、単にファイルを削除す るだけでアンインストール可能です。 ■使用法 データ取得ボタンを押すと、URL で指定したファイルを取得し、項目 名などの特定の文字列以降の部分の、HTML タグなどではさまれた部分の 文字列を取得します。URL で指定可能なスキームは HTTP のみです。 ファイル取得の際の認証は、BASIC認証のみ対応しております。 認証のチェックボックスにチェックを入れて、ユーザ名とパスワードを 入力します。 取得結果をファイルに出力するときには、チェックボックスにチェッ クを入れて、出力ファイル名を指定します。 定期的にデータ取得を繰り返す場合は、チェックボックスにチェック を入れて、データ取得間隔を秒単位で入力します。このときは、データ 取得ボタンを押すとボタンの表示が「実行中」になり、定期的にデータ を取得する状態になっていることがわかります。 もし、データを取得した結果が前回に取得した結果と異なるなら、コ マンド名欄で指定したコマンドを実行させることができます。ここで指 定できるコマンドは、exe ファイルだけでなく、バッチファイルを指定 することもできます。 プログラム終了時には、各欄に入力した値などはプログラム本体が格 納してあるディレクトリの ini ファイルに保存されます。ini ファイル が存在していないときは新規に作成されます。次回起動時には、この保 存された値を参照し自動的に各種設定を行います。 なお、ウィンドウを最小化させると、タスクトレイに常駐します。常 駐時は、タスクトレイのアイコンをクリックすることによりウィンドウ を再表示します。 以下のコマンドラインオプションがあります。 -R 起動後、自動的にデータ取得を開始します。 ini ファイルからの情報を取得できなかった項目に関して は、適当な値が設定される為、試験実行が成功するまでは このオプションを指定しないことを強くお勧めします。 オプションは大文字・小文字ともに許容します ■使用例 (1)相場データの蓄積 新聞社でも証券会社でもいいのですが、WEB上で株価や円の相場を 毎日更新しています。こういったデータを継続的にファイルに蓄積する ことができます。 例えば、どこでもいいのですが、大和証券を例にとってみましょう。 2003年5月9日の大和証券のWEB(http://www.daiwa.co.jp/)で は「日経平均」という項目の「」と「」 にはさまれた部分でその日の日経平均株価が示されます。このデータを 86400秒毎に取得して、例えば「c:\kabu.txt」というファイルに出力し ます。これを処理するコマンドとして、次のような簡単なバッチファイ ル「c:\kabu.bat」を指定します。 type c:\kabu.txt >> c:\kabulog.txt dir c:\kabu.txt | find /i "kabu.txt" >> c:\kabulog.txt 実際には、テキスト処理ツールやスクリプトを使うとか、専用ツールを 作って、もっとかっこいいCSVなどの形式でログに記録するのがベタ ーでしょう。 こうすることにより、日付と、そのときの株式相場が日々記録されて いくことになります。取引所のお休みの日は、前回取得時と結果が異な らないため、コマンド実行も行なわれないので、不必要な日付が記録さ れることもありません。 (2)IPアドレス動的割り当て端末でのWEBサーバ設置 常時接続環境の普及に伴って、一般家庭でもWEBサーバを設置する ところが増えてきました。しかし、このときに使うアクセスラインやプ ロバイダの都合から、端末のIPアドレスはDHCPによる動的割り当 てのことが多いでしょう。 このようなときによく使われる手としては、Dynamic DNS を使ってド メイン名を取得し、IPアドレスに変更があった場合には Dice などの ツールを使ってDNSサーバに新しいIPアドレスを通知する、という 方法ではないでしょうか。しかし、実験などのためにちょっとサーバを 立ち上げたいだけで、ドメイン名の取得なんて言う大げさなことはした くない、なんていうときに、このツールが役に立ちます。 常時接続の場合だと、いわゆるブロードバンドルータというものを使 うことが多いと思いますが、これらにはたいてい、WEBによる設定・ ステータス表示画面があります。ここから情報を取得し、必要であれば 特定の相手にメールを送信して、あるいは動的にHTMLファイルを作 ってFTPで転送してWEBで公開するなりすれば、外部からアクセス してもらえるようにできます。 実は私、この目的のためにこのツールを作ったのでした。 ■ソースに関して Delphi version4 Standard で作成しております。 ■著作権、再配布等 一応、著作権は主張させていただきます。以下、本プログラム、およ びドキュメントを総称して「本プログラム等」と表します。 ・本プログラム等の著作権は としき が有します。 ・本プログラム等を使用することにより、使用者の予期しない影響が あっても、作者はなんらの保証および補償をいたしません。 ・本プログラム等の転載、再配布、販売等は、事前に著作権者の許可 を求めなければ、自由にできます。 ^^^^^^^^^^^^ ただし、事前に許可を求められた場合は、原則として全てお断り いたします。なお、事後報告は歓迎いたします。 ^^^^^^^^^^ もちろん書籍、雑誌、CD−ROMへの収録も自由です。 なお、転載等を長期間継続するような場合でも、定期的な連絡・ 報告などは不要です。また、1つのバージョンについて1ヶ所の 転載先に対し3回以上連絡があった場合、当該バージョンの転載 中止を要請することがあります。 ・著作者人格権の同一性保持権に基づき、本プログラム等の改変を自 由に行うことを許可します。というよりも、積極的な改変をお願い いたします。 ただし、改変した本プログラム等では、著作者人格権の氏名表示権 に基づき、原作者の著作権表示を消去することを要請します。 なお、差し支えなければ改変した部分をご連絡いただければ、次の バージョンからその改変内容を反映させていただきたいと思います。 ・転載等の際は、入手した本プログラム等のファイル構成に対し変更 を加えずに再配布してください。ただし、本プログラム等に改変を 加えた場合はこの限りではありません。 ・作者は、このプログラムに不備があっても、それを訂正する義務を 負いません。しかし、努力はするでしょうから連絡をお願いします。 ・仕様拡張に関する意見は、私の技術と体力と気力が許す範囲で対応 したいと思います。 ■改版履歴 version 0.01 2003-05-10 ・とりあえず動く version 0.02 2003-06-20 ・コマンドラインオプションについてドキュメントに明記 ・ini ファイルについてドキュメントに明記 ・ini ファイルに結果文字列も保存するようにした ・タスクトレイ常駐機能付加