閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

Win32API

売り出し中のアプリケーションを、バージョンアップして Web 対応させたい、なんて無茶なことを言われてしまった。まあ以前から言われていたことなのだけれど、もしかしたら本当にやることになるかもしれない。しかし、単なる Windows アプリをブラウザから完全に操作するなんてのは、無理ではないものの、数ヶ月で実装するのはさすがに無茶だ。……と思ったのだけれど、以前作ったこのアプリの一部の機能を呼び出す DLL があったりするので、これを CGI から利用すれば、その DLL がサポートしている機能くらいは使えるかも、と思いつき、面白そうだったのでちょっとやってみました。

言語は何でも良かったのですが、いまは Ruby を勉強したい気分なので、 PHP ではなく Ruby を選択。まず Ruby から DLL を呼び出す方法を調べる。できることは知っていたしライブラリの名前も知っていたのですぐだった。 Win32API という標準添付されているライブラリが実現してくれる。 Oops! お探しのページは見つかりませんでした を参考に、いくつかの関数を呼び出すコードを書いてみる。そして、ブラウザからアクセス。コマンドラインからでもいいのだけれど、ブラウザからの方が感動が大きそうだったので。ボタンも用意して、押すと DLL を呼び出すコードが実行されるようにもした。

ブラウザには真っ白な背景にたったひとつのボタン。「Click!」とか書かれた無意味に強気なボタンを押すと、うまいこと DLL の呼び出しに成功したらしく、アプリケーションが反応した。あまり詳しいことは書けないのだけれど、まあ、色々動いたのです (何) 。少し感動しました。これなら実際やることになっても、ある程度ならなんとかなるかな、と希望も見えました。でも費用対効果も相当悪いだろうし、あまり良い組合せにも思えないので、やらないに越したことはないでしょうけれど。実際にやるとなると Ruby も使えないだろうし。

そんなわけで今回はソースも晒せませんが、検索して出てくる色々なサンプルとやっていることは大して変わらないので、興味のある方は適当にぐぐってください。……舞い上がって思わず日記にまで書いてしまったけれど、ベイダー日記始まって以来の独りよがりな内容かもしれない。まあ気にしませんが。