Visio 2003 ソフトウェア開発キットとパフォーマンス向上のためのコーディング テクニック

そろそろ MSDN っぽいエントリにしたくなってきたので、ソフトウェア開発キット (SDK) の紹介をしたいと思います。

まずは入手方法ですが、SDK (英語版) はダウンロード センターからダウンロードすることができます。完全日本語版は用意できていないのですが、この 2 つのモジュールをインストールすることで一部を日本語化することができます。
まずこちらにある英語版をインストールし (Visio 2003 が事前にインストールされている必要があります)、
https://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=557120bd-b0bb-46e7-936a-b8539898d44d
次にこちらの日本語版をインストールします。
https://www.microsoft.com/downloads/details.aspx?FamilyID=557120bd-b0bb-46e7-936a-b8539898d44d&displaylang=ja

ほとんどが英語であるのが難点ですが、Visual Studio とこの SDK の組み合わせは Visio の開発環境としては最強のツール セットだと思います。

コード ライブラリアン
貼り付けるだけでクラス モジュールとして使えるサンプル集

サンプル アプリケーション
よく使用される機能の実装例が即コンパイル可能なプロジェクト ファイルの形に

ツール
イベント モニタ、MSI オーサリング、図形開発キットなどデバッグから配布までをサポートするツール群。Visual Studio 用の各言語用プロジェクト ウィザードもインストールされます

ドキュメント
Visio のヘルプと同等のリファレンス (目次が横に出るヘルプ ドキュメントなので Visio に付属の開発者ヘルプよりも見やすいかもしれません) に加えて、XML などこれから流行りそうな開発技術のアーティクルも

従来の VB や C++ だけでなく、VB.NET と C# の開発にも対応しているのが一番の売りです。VB と VB.NET のコード サンプルを比較すると言語仕様の違いがわかって面白い…のですが現実にはこの違いがあるために VB.NET への移行ができないという声もあるのですからここは喜ぶところではないですね。すみません。しかし新規のプロジェクト開発にはかなり役に立つキットだと思います。ツールの使い方や興味深いアーティクルやサンプルをこのブログで紹介していく予定です。

さて、SDK のさわりの紹介だけで終わるのもつまらないので、今回は Visio ソリューション開発のヒントでしめることにします。昨年弊社で開催した Visio の開発者向けトレーニングでもトピックとしてあがった、パフォーマンス向上のためのコーディング テクニックです。

セル参照には CellsSRC を使う
シェイプシート内のセルの値を参照するときは、セル名を使って値にアクセスすることができます…が、セルの位置を数字で表現する CellsSRC プロパティを使ったほうがパフォーマンスがあがります。講師の Chris もこのことは繰り返し言っていました。

図形のドロップはいっきに行う
図面上に複数の図形をドロップするとき、ループで 1 つ 1 つをドロップするよりも、DropMany (または DropManyU) で同時にドロップしましょう。1 度のコールで処理が終わるのでこれもスピードアップにつながります。DropMany はドロップした図形の ID を格納した配列を返すので、その後の処理も楽になります。

セル値の設定もいっきに
上のヒントと同原理です。複数のセル値を設定するときは SetFormulas と SetResults を使います。指定した Cell オブジェクトの Formula や Result プロパティを 1 回のコールで設定できます。

Application.DeferRecalc
図形やセル値の更新などをまとめてやっていると、値が変わるたびにセル値の再計算が行われるので処理が重たくなります。このプロパティをオンにしておくと、再計算の実行が保留されるので処理の終了までの時間が短くなります。終了後は必ずオフにして、保留していた計算を実行させてやる必要がありますが。

図形の位置決定は最後に
図形を図面上にドロップするときは、座標を指定しないでランダムな場所にドロップし、あとで適切な場所に移動したほうがパフォーマンスが良いようです。

<担当: M>

この投稿は現状のまま何の保証もなく掲載しているものであり、何らかの権利を許諾するものでもありません。マイクロソフト社員による発言やコメントは、マイクロソフトの正式な見解またはコメントではありません。