Gauche OLE

Windows では OLE オートメーションという技術がある。 あるアプリケーションが提供する機能群をオブジェクト指向におけるオブジェクトとメソッドのように公開して他のアプリケーションからの利用を容易にする技術である。 (と、私は理解している。) 特にスクリプト言語からの利用を容易にすることが考慮されている。 各スクリプト言語は OLE オートメーションに対応するだけで Windows アプリケーションの操作が容易にできるわけだ。 もちろん、対象となる Windows アプリケーションが OLE オートメーションに対応する形で機能を公開している必要はあるが。

さて、そんな便利な技術なわけだが、私が普段からよく使っている Gauche は OLE オートメーションを使うことが出来なかったので、自分でライブラリを書いてみた。 なかなか複雑な規約があって難しいが、どうにか基礎的な部分は動くようになった。

http://saito.s4.xrea.com/software/Gauche-OLE-0.2.tar.gz

ドキュメントは無いので、同梱しているサンプルを参照してもらいたい。

本当に基礎的なことが出来るようになっただけなので、現時点で足りないと思う部分を列挙しておく。 (将来的に確実に対応する予定があるわけではない。)

  • メモリ管理を厳密にする (メモリ解放の責任に関する OLE のポリシを理解する)
  • 起動中のオートメーションサーバへの接続
  • 接続可能なオブジェクト (サーバからクライアントへの通知を行なうことが可能なオブジェクト) への接続
  • 名前付き引数
  • オブジェクトの相互変換 (現在は文字列や数値などの基礎的な型のみ変換していて、変換できない型が現れるとエラーで止まる)
    • 手続きをコールバックとして渡せるように
    • 時刻型
    • 配列型
  • 滑らかな統合
  • 性能
    • 名前の検索結果をキャッシュ

参考として Ruby の win32ole.c をざっと眺めたりもしたのだが、一万行近くもある巨大なものだった。 これと同程度に使い勝手の良いものにするには先が長そうだ。

Document ID: 2e397a3eff1f89b0ee6df3d9425c4913