Takenoff Labs

Lotus Notes/Domino に関する Tips や、クラシックの名曲などを紹介します

[Notes/Domino] 設計解析講座: はじめに

今回から、LotusScript で Notes C API を使って設計解析を行う方法のチュートリアルを始めたいと思います。序盤は基本事項、後半はひたすら構造体の解説になると思いますので、退屈な内容になるかもしれませんが、ノーツがどういう形でデータを保管しているかを知るだけでも面白いかもしれません。あまりにもぐっちゃぐちゃですから(^^;

今回は序盤の序盤、ご挨拶程度の内容です。上級者の方は、次々回くらいからお付き合いいただければと。あと、連載中他のネタがカットインするかと思いますので、あしからず(_ _

本連載について

今回の企画は、LotusScript から Notes C API を呼び出し、設計要素の中身を取り出す方法についての解説を行うつもりです。ネット上には断片的なコードはよくありますし、今は亡きポータルサイトでも連載されていたことがありますが、設計全体を体系的に解説したものはまだ無いのではないでしょうか。特に、コンパウンド・ドキュメント(CD)からCDレコードを切り出す処理は、LotusScript では初めてではないかと思います。

「CD の解析って LotusScript だと関数ポインタが使えないから出来ないんじゃない?」って思った方は、ノーツに詳しい方。しかし、これは可能です。今回の企画の目玉は「LotusScript でも CD 解析ができるよ」という点がメインです。

本当はこのことを黙っておいて、シェアウエアでも作ってひと儲けしようかと企んでいたのですが、最近は DXL もだいぶ良くなってきたことですし、そもそもそんなツールを作っても売れるだけの開発人口がもはやノーツには無いんじゃないか、と思ってきました(涙)。だったら、技術をオープンにして、みんなでいいツールを作ったほうがいいんじゃないか、と。第一、設計解析には技術というより根気と時間が必要ですから。

DXL ではダメなのか?

R6 から DXL が使えるようになり、設計要素も出力できるようになりました。最初のころは、カレンダービューが生データでしか出力されないとか、特定設計でクライアントが落ちるとか、出力されない要素が沢山あるとか、散々な出来でしたが、最近はだいぶマシになってきたようです。

ただ、新規に追加された要素に対応するのが遅く、いったん XML に変換されるため速度面でも不利です。R6 でひどい目に遭った管理人としては、いまだに不信感はぬぐえません。速く確実に、という命題があると、どうしても C API に軍配があがります。

とはいえ、R8 以降という条件であれば、DXL でも十分な使えるレベルにはなってきています。実際、管理人も現在開発中のツールでは DXL を使っているものもあります。通常は DXL、細かいところまで取得したい場合や速度面が気になる場合は API、というふうに使い分けするのがいいかもしれません。

LotusScript を使用するメリット・デメリット

本連載では、LotusScript を使用します。メリット・デメリットは以下のとおりです。

メリット

  • ドミノデザイナーさえあればOK。C コンパイラは不要。(最近はアプリをインストール禁止の会社が多いですからねー)
  • (明示的な)コンパイル不要。すぐ実行できる。
  • LotusScript のクラスで取得できるものは、そっちを利用するという手抜きができる(汗
  • NotesDocument の隠しプロパティにより、余計なハンドルを取得する必要がない。(次回あたりに解説)

デメリット

  • 定数や関数をいちいち宣言しなければならない。(これが一番面倒)
  • UI が貧弱。
  • C などに比べると、実行速度は遅い。
  • 関数ポインタが使えない。

デメリットのうち、実行速度については、耐えられないほど遅いというわけではありません。コンマ何秒の単位でスピードを求められるのでなければ、実用的な速度だと思います。関数ポインタ問題は、前述のとおり CD については解決法があります。

宣言と UI についてはどうしようもなりませんが、そこはトレードオフということで。C に比べれば、圧倒的に開発効率が高いと思います。

C++ API とは?

C API とよく似たものに、C++ API というものがあります。この2つは名前は似ていますが、根本的に違うものと考えてください。C API はあくまで関数ライブラリ、C++ API はクラスライブラリです(まぁ当たり前ですが)。C++ API は C++ 専用ですが、C API はDLL の関数を呼べる言語であれば、どんな言語からも呼び出すことができます。

C++ で開発する場合は、当然ながら C++ API を使ったほうが圧倒的に楽です。設計を扱うクラスなんかもあるので、C API で操作するよりも簡単に操作できます。ただし、ざっと見た感じでは、C API を使わないとできない処理もある感じです。まぁ、C++ API は C++ でしか使えないので、C++ で開発しない限りは気にしないでいいでしょう。

Toolkit

LotusScript から C 関数を呼ぶには、とくに何も必要ありませんが、C のヘッダファイルがあると断然便利です。関数の宣言や定数の値、そして何よりもコメント部分に非常に役に立つ情報が載っています。ダウンロードできる環境の場合は、こちらからダウンロードしておいてください。

ダウンロードできない場合は、こちらからユーザーガイドとリファレンスだけは参照することができます(やっと 8.5 のリファレンスも検索できるようになったみたい)。


今回はとりあえずここまで。次回は間違いやすい点などを取り上げるつもりです。

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
読み込み中...

トラックバック

トラックバックはありません

コメント

コメントはありません

※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。





(以下のタグが使えます)
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

For spam filtering purposes, please copy the number 5619 to the field below:

^
×