Regnessem用のプラグインを書いていて気になるところがある。仕様にあわせて書こうとすると、どうしてもキャストを多用せざるを得ないのだ。
コネクションやセッションを表現するハンドルの型の実体がvoid*であるのは、おそらくオブジェクトの内容を公開せずに抽象的に扱えるように配慮した結果だとは思うのでそれは良いとしても、ところどころでしょっちゅうintに変換が入るのが嫌なカンジだ。ハンドラの型もWindowsのウィンドウプロシージャを模したようなものになっていて、単なる整数型で渡されたものにいくつもの意味を持たせているのが気にかかる。
とは言え、バイナリレベルで厳密にインターフェイスを定めようとすると、規格としてあるのはCOMくらいのものなので、一気に敷居があがってしまう。プラグインの開発環境をより広く想定するなら、使えるのはごく基本的なオブジェクトだけであり、実質的には整数や文字列程度ということになるのだろう。
階層を持った機能を単純な文字列で表現するというのはそのような制約の中で出来た苦肉の策なのだろう。それはそれで面白いアイデアだと思うが、C++等で美しく書けるようなラッパークラスがあればかなり便利だと思うので、今書いているものを上手くまとめてあとから流用できるように出来ればいいなぁと妄想している。
それ以前にいろいろと引掛って停滞気味なんだけど。メッセンジャーって地味に高機能で、一通りの機能を揃えるだけでも書くべきところが結構多い。
Document ID: 30b17617db12819bf7d4644474094650