最近は仕事でノーツ ドミノを仕事で使っていますが、驚くことばかりですね。最初ノーツは単なるメールと掲示板じゃねの?って思っていたんだけど、カスタマイズ次第では承認ルートなんかの仕組みはもとより、それこそ普通のアプリケーションのように、一覧⇒詳細⇒選択画面・・・みたいな構成のものもできます。ようするに、「ノーツはアプリケーションのフレームワーク」なんですね。
ノーツで使う言葉
僕が使っているのは主に、ノーツ8.5以上になりますが、通常Webの開発者がノーツに触るときにノーツでは独特な表現があり、これにはじめ悩まされます。
- データベース
- 設計要素
- フォームやビュー、その他画面で使う画像などアプリケーションで使うあらゆるものを設計要素と言います。
- そのほかノーツデザイナーで作る一切合財も設計要素みたいな感じで言うのかな?
- なお、設計要素はゼロから作るのではなく、すでにあるテンプレートを変更していくことでも作ることが可能です。
- フォーム
- 入力画面であり、レコードそのもの。
- 通常Oracleなどのデータベースで言う、テーブルの定義みたいなもん。
- ノーツデザイナーというツールで画面(フォーム)を作ると、その1画面が1レコードの定義になります。
- ビュー
- いわゆる一覧ですね。
- ビューはフォームの別表現系ですね。
- 文書
- フォームによって入力された実体。
- 要するにデータ。データベースで言うとレコードにあたる。
- ひとつのフォームがひとつのテーブル定義と勘違いすると、複数のフォーム間で結合ができるの?(データベースのような結合はどうするの?)って考えそうだけど、ノーツに結合という概念は無いです。
- エージェント
- いわゆるバッチプログラムです
- エージェントは通常のイベント処理よりも速度が速いです。
- プロパティで設定すると、起動日から起動時間、色々な設定で起動することができます。通常のアプリケーションみたくシェルなんて書く必要はありません。
- 競合文書
- 複数の人が同時に同じ文書を変更しあうと、データベースのように後勝ちではなく、競合文書として別データとなります。
- ノーツでは競合文書をどうするかがキモみたいな感じがしますね。
- ノーツデザイナー
- XPage
- 古いバージョンのノーツはクラサバ系だったのですが、ノーツ8からはWebアプリ形式も可能になっています。(ブラウザで操作)
- データ自身はフォームとビューで変わりは無いのですが、その上にHTMLの表現系(見え方)をかぶせてWebで動くようにしたらしい。その、HTML部分をXPageといいます。
- XPageはJSFを基に作られているらしいのですが、ノーツデザイナーで作りこむのであまり意識する必要はありません。
- 通常は画面でホームページビルダーのようにボタンなどを貼り付けていく作業になりますが、ソースでイジル事も可能。
- 作りようによってはWebでも動いてクラサバでも動くように作れるので、ものすごく凄い仕組みです。
ノーツで使える言語
当然、処理系はコンピュータ言語を使ってプログラミングしますが、以下のように多彩な言語を使うことができます。
- JavaScript
- クライアントサイドはXPageでアプリケーションを作る場合はJavaScriptを使うことができます。
- JavaScript(サーバサイド)
- サーバ側の処理はサーバサイドJavaScriptを使用します。
- ロータス特有の@で始まる関数も使えるみたいです。
所感
通常私が何かしらアプリケーションを作るには、DBを立ち上げて、Tomcatなどのサーバを立ちあげて、デプロイして、メールも使うなら、SMTP立ち上げて・・・と分散したサーバ環境をまとまるように構築していく必要があったのですが、ノーツでアプリケーションを作ると、それらのサーバ達がノーツ1つで済むようになるので、非常に楽チンですね。
でも、よくデータベースが破損しやすいとか言われますし、そもそも何百万件もあるような大きなデータベースは苦手だそうなので、小規模〜中規模ユースのアプリケーションに向いているのかなと感じました。
今のプロジェクトの正確かもしれませんが、複数のデータベース(アプリケーション)間でコンポーネントや関数などを共有する仕組みが無いので、とあるデータベースで使っているコンポーネントを修正すると同じコンポーネントを使っているデータベースでも修正が必要になるなど非常に手間がかかるのも確か。使った感じとしては複数のデータベース(アプリケーション)が集まってひとつの大きなノーツシステムを構築するような感じなので、この辺の仕組みがないと今後ちとつらいなぁ・・・
Eclipseベースになって、右クリックのメニューとか見ると「チーム」のメニューがあるんだよね。コレってCVSやSVNなどのバージョン管理システムを使えるって事なのだろうか、使えるんだとしたら活用できれば非常に強力だとは思いますね。
ノーツデザイナーはEclipseベースとはいえ、まだまだ改良の余地はありそうですね。JavaScript部分や、Javaエディターのタイプアヘッド機能("."を入力すると入力候補を表示してくれるアレ)はうまく動かないので、テキストエディタでJavaコードを作っているころを思い出してしまった。
しかし、Eclipseベースになったということは、これからプラグインなんかが沢山出てくるのかなと思うと、意外とオープンソースの分野ではブルーオーシャンなんじゃないかなと感じた次第。
暇があったら、もうちょっと突っ込んでみたいと思う。