arcanum_jp’s blog

おっさんの日記

ノーツ ドミノ

 最近は仕事でノーツ ドミノを仕事で使っていますが、驚くことばかりですね。最初ノーツは単なるメールと掲示板じゃねの?って思っていたんだけど、カスタマイズ次第では承認ルートなんかの仕組みはもとより、それこそ普通のアプリケーションのように、一覧⇒詳細⇒選択画面・・・みたいな構成のものもできます。ようするに、「ノーツはアプリケーションのフレームワーク」なんですね。

ノーツで使う言葉

 僕が使っているのは主に、ノーツ8.5以上になりますが、通常Webの開発者がノーツに触るときにノーツでは独特な表現があり、これにはじめ悩まされます。

  • データベース
    • 通常Oracleなどのデータベース(RDB)のことではなく、ノーツで作ったアプリケーションをデータベースと言います。
    • データベースの中にある後述する設計要素と言うものを作りこむことによってノーツアプリケーションを構築します。
  • 設計要素
    • フォームやビュー、その他画面で使う画像などアプリケーションで使うあらゆるものを設計要素と言います。
    • そのほかノーツデザイナーで作る一切合財も設計要素みたいな感じで言うのかな?
    • なお、設計要素はゼロから作るのではなく、すでにあるテンプレートを変更していくことでも作ることが可能です。
  • フォーム
    • 入力画面であり、レコードそのもの。
    • 通常Oracleなどのデータベースで言う、テーブルの定義みたいなもん。
    • ノーツデザイナーというツールで画面(フォーム)を作ると、その1画面が1レコードの定義になります。
  • ビュー
    • いわゆる一覧ですね。
    • ビューはフォームの別表現系ですね。
  • 文書
    • フォームによって入力された実体。
    • 要するにデータ。データベースで言うとレコードにあたる。
    • ひとつのフォームがひとつのテーブル定義と勘違いすると、複数のフォーム間で結合ができるの?(データベースのような結合はどうするの?)って考えそうだけど、ノーツに結合という概念は無いです。
  • エージェント
    • いわゆるバッチプログラムです
    • エージェントは通常のイベント処理よりも速度が速いです。
    • プロパティで設定すると、起動日から起動時間、色々な設定で起動することができます。通常のアプリケーションみたくシェルなんて書く必要はありません。
  • 競合文書
    • 複数の人が同時に同じ文書を変更しあうと、データベースのように後勝ちではなく、競合文書として別データとなります。
    • ノーツでは競合文書をどうするかがキモみたいな感じがしますね。
  • ノーツデザイナー
    • ノーツアプリケーションの開発には、ノーツデザイナーという専用の開発環境が用意されている。
    • ノーツ8.xからはEclipseベースの開発環境になっている・・・んだけど、ジャバラーが普通に使っているEclipseとは別モノと思ったほうがよいよ。
  • XPage
    • 古いバージョンのノーツはクラサバ系だったのですが、ノーツ8からはWebアプリ形式も可能になっています。(ブラウザで操作)
    • データ自身はフォームとビューで変わりは無いのですが、その上にHTMLの表現系(見え方)をかぶせてWebで動くようにしたらしい。その、HTML部分をXPageといいます。
    • XPageはJSFを基に作られているらしいのですが、ノーツデザイナーで作りこむのであまり意識する必要はありません。
    • 通常は画面でホームページビルダーのようにボタンなどを貼り付けていく作業になりますが、ソースでイジル事も可能。
    • 作りようによってはWebでも動いてクラサバでも動くように作れるので、ものすごく凄い仕組みです。

ノーツで使える言語

 当然、処理系はコンピュータ言語を使ってプログラミングしますが、以下のように多彩な言語を使うことができます。

  • Lotus Script
    • VBに似た言語構成
    • VBロータス特有の@で始まる関数が入ったみたいなモン
    • エージェントはコレでも作れます。
  • JavaScript
    • クライアントサイドはXPageでアプリケーションを作る場合はJavaScriptを使うことができます。
  • JavaScript(サーバサイド)
    • サーバ側の処理はサーバサイドJavaScriptを使用します。
    • ロータス特有の@で始まる関数も使えるみたいです。
  • Java
    • 上記の他Javaなんかも呼び出せるようになっています。
    • エージェントはJavaでも構築できるようになっています。
  • J2EEコンテナ
    • ノーツは基本的にそれひとつで、Webアプリ〜SMTPサーバなど殆どの部分をカバーしますが、サーブレットも動かすことができます。(すんごく特有な設定が必要だけどね)
    • J2EEコンテナは何も用意せずともノーツがすでに固有のコンテナを持っています。サードパーティ製は現在websphereのみが対応らしいです。

所感

 通常私が何かしらアプリケーションを作るには、DBを立ち上げて、Tomcatなどのサーバを立ちあげて、デプロイして、メールも使うなら、SMTP立ち上げて・・・と分散したサーバ環境をまとまるように構築していく必要があったのですが、ノーツでアプリケーションを作ると、それらのサーバ達がノーツ1つで済むようになるので、非常に楽チンですね。


 でも、よくデータベースが破損しやすいとか言われますし、そもそも何百万件もあるような大きなデータベースは苦手だそうなので、小規模〜中規模ユースのアプリケーションに向いているのかなと感じました。


 今のプロジェクトの正確かもしれませんが、複数のデータベース(アプリケーション)間でコンポーネントや関数などを共有する仕組みが無いので、とあるデータベースで使っているコンポーネントを修正すると同じコンポーネントを使っているデータベースでも修正が必要になるなど非常に手間がかかるのも確か。使った感じとしては複数のデータベース(アプリケーション)が集まってひとつの大きなノーツシステムを構築するような感じなので、この辺の仕組みがないと今後ちとつらいなぁ・・・


 Eclipseベースになって、右クリックのメニューとか見ると「チーム」のメニューがあるんだよね。コレってCVSSVNなどのバージョン管理システムを使えるって事なのだろうか、使えるんだとしたら活用できれば非常に強力だとは思いますね。



 ノーツデザイナーはEclipseベースとはいえ、まだまだ改良の余地はありそうですね。JavaScript部分や、Javaエディターのタイプアヘッド機能("."を入力すると入力候補を表示してくれるアレ)はうまく動かないので、テキストエディタJavaコードを作っているころを思い出してしまった。


 しかし、Eclipseベースになったということは、これからプラグインなんかが沢山出てくるのかなと思うと、意外とオープンソースの分野ではブルーオーシャンなんじゃないかなと感じた次第。


 暇があったら、もうちょっと突っ込んでみたいと思う。