2006/03/29

「文書が見つかりません」に対応する

DominoでWebアプリケーションを作成したとき、ビュー上に「文書が見つかりません」と、大きく表示されることがよくあります。これは、文字通り、ビューに文書が存在しない場合に表示されます。

これはDominoの標準機能であり、開発者が何もしなくても表示されるのですが、これは以下の2点で問題となることがあります。

  • メッセージは自動的に表示され、開発者はメッセージをカスタマイズすることが出来ない。表示するのをやめることも標準機能では出来ない。
  • メッセージが非常に大きく目立つ。
これに対応するため、長いこと多くの開発者たちが解決方法を検討してきました。

さて、今回に限った話ではありませんが、このように「Dominoが勝手にやってしまうことを制御する」ためには、主に2つのアプローチがあります。

  1. Dominoがそれを勝手に生成しないよう、極力工夫をする
  2. Dominoが生成してしまったものは仕方ないとし、生成されてしまったものの表示をいかにコントロールするかを工夫する
一言でいえば、上記の1.はサーバーサイドで、2.はクライアントサイドで何とかしようというアプローチです。

今 回の問題を含め、古典的アプローチとしては主に1番目の解決方法が行われていました。例えば、以下のLDD Todayの文書ではこの問題に対する解決策が提示されています。これは、「存在しなかったら、ビューを隠すようにする」というサーバーサイドでの工夫に なります。

「文書が見つかりません」というメッセージの置き換え

一方、サーバーサイドで出来ることには、やや限界があります。今回はこれでもよいですが、ビューを開くたびに、@Dbcolumn が動くのも、ちょっと気にかかります。

そこで登場するのが、クライアント側のテクノロジ(CSS、DHTML)です。
これを使って見事に解決した例が、以下の記事になります。(英語)

Using the DOM to replace "No documents found"

ここで、ポイントとなっているのは、この「文書が見つかりません」というのは、常に h2タグ に囲まれて生成されているということです。(h2タグというのは、見出し2レベルのタグであり、だから、文字サイズが大きい)

すなわち、このビューページの中で、h2 タグがこれしか存在しなければ、h2タグの中身を問答無用に書き換えてしまおうというアプローチです。(事実、よほどパススルーHTMLなどで直接指定しない限りは、h2タグは使われていないと思います)

最初のアプローチとしては、 h2 タグ部分を非表示スタイル指定してしまうという方法です。この方法は文字列を書き換えるのではなく、見えなくしてしまう方法です。非常に簡単です。
第二のアプローチとしては、JavaScriptのDOM機能を使って、h2タグの中身を上書きしてしまうという方法です(DHTMLともいいます)。この場合は、文字列までもがコントロール可能になります。

な かなか JavaScript でこのようなことを行うのは、まだメジャーではないけれど、Ajax全盛期において、少しずつ主流になってくると思います。なお、クライアントサイド側で の調整は、ブラウザ依存があったり、ユーザー側がCSSやJavaScriptをオフにすることで全て無効化されてしまうため注意が必要です。また、クラ イアント側でのアプローチも、Dominoが生成するHTMLに依存するため完璧なコントロールが出来るわけではないですが、少なくとも今回に関しては見 事に機能するという一例になります。

コードの詳細は、紹介した notestips.com のサイトにて記述がありますので、英語ではありますが是非読んでみて下さい。

2006/03/02

DominoBlogを探す/登録する

世界中には、Notes/Dominoに関するブログを開設している有志がたくさんいますが、そのまとまった情報が存在しません。

そんなのに答えるため、Domino関連ブログをまとめたサイトが出来たようです。

DominoBlogs

これは各地域ごとにカテゴリで別れています。私たち日本語文化圏は基本的にAsia Pacificでよいと思います。たいしたことを書いていないこのブログですが、一応何らかの盛り上がりにつながれば、と登録してみました。

Notes/Domino de chotto koneta


#追伸:RSSの話もそのうち続き書きます。でもなんか、やっぱり自分のエントリはコネタ向きなのかも。

2006/02/22

Notes/Domino 7 移行ガイド

既に紹介した、Redpaper も非常に役に立つと思いますが、こちらは日本語なのでもっと読みやすいと思います。

Notes/Domino 7 移行ガイド

もともと、各リリースともに、ヘルプの中にこうした移行ガイドは入っていたんですが、Domino 7からは落ちていたみたい。もともと、Yellow Book という名前で、移行ガイドをWestfordで開発していたようですが、それの日本語版になります。

サーバーからクライアントまで、細かいところもよく書いてあると思います。先のRedpaperはベストプラクティス色が強いので実践用というかんじですが、こちらは細かい部分などよく網羅されています。

2006/02/17

Notes/Domino 7 移行Redpaperドラフト

7への移行 Redpaper が、Webで公開されはじめました。

Upgrading to Notes and Domino 7 - Enterprise Best Practices

Best Practicesとだけあって、新機能の紹介、というよりは、各種の考え方やステップなどに重点があたっています。

個人的には、第4章の混在のパートと、付録のポリシーに関する部分が面白いと思います。

2006/01/25

DominoとRSS(2)

前回の続きです。

RSSを利用すると、閲覧者は自発的にWebサイトに更新チェックに行く必要がなくなります。Dominoにも購読機能や、未読チェック機能などがありますが、Webブラウザから利用するならやはりRSS機能に対応していると嬉しいでしょう。

Dominoでは、わりと簡単にRSS対応させることが出来ます。開発もそれほど難しくありません。
ただ、そのためには、RSSの文法を一応知っている必要があります。

以下、非常に簡単なRSSの説明です。
  • RSSの中には、「チャンネル」と「アイテム」があります。
  • 「チャンネル」とは、Webサイトのことです。テレビ局でいう「チャンネル」のようなイメージです。RSSには、チャンネル要素が1つだけ存在します。通常は、そのサイト情報(タイトル、リンク、サイト定義など)を記述します。
  • 「アイテム」とは各記事のことです。テレビに例えると個々の「プログラム」のようなイメージです。RSSには、複数のアイテム要素が存在します。そのWebサイトにある記事の一覧が含まれます。個々のアイテム要素には、タイトルやリンク、サマリー、著者やカテゴリー、最終更新日などが含まれます。
  • 全文配信か、サマリー配布かの規定はありません。(サイトによって異なる)

2006/01/24

DominoとRSS(番外)

DominoとRSSについて、続きを書こう書こうと思っていましたが、だらだらしているうちに、Lotusphereから興味深いお話が。

ソースはここから。

RSS feeds and blog templates coming in Domino

HannoverのセッションでKevin Cavanaughがプレゼンしたそうですが、Domino 7の標準機能としてのRSSとBlogテンプレートの話があるそうです。

そもそも、Hannoverのピクチャーショットの中に、RSSという項目があったので、注目していたのですが、Dominoとどのようにからむのか見ものです。
Blogテンプレートも、製品標準としてどういうものが出てくるのか、こちらも注目。

2006/01/11

Webアプリケーションと添付ファイル

いつも良いネタを提供してくれる、nsftools.com より。

http://www.nsftools.com/blog/blog-01-2006.htm#01-10-06

Notesには添付ファイルを自動的に圧縮する機能がついており、Notes 6/ODS43からは、さらにLZ1圧縮がサポートされるなど、ファイルストレージとしての機能を備えています。
圧縮されているファイルは、基本的に、ネットワーク上も圧縮されたまま転送され、Notesクライアントの機能で復号します。このため、Notes 6のODS43でLZ1サポートしたときも、R5クライアントがいるとかえってサーバーに負荷をかけるというお話がありました。

ここで紹介されているのは、それと同じ話。Webでの話です。
もちろん、Webブラウザは添付ファイルの復号なんていう機能はありませんので、サーバーがファイルを復号し、クライアントに転送します。このため、 Webで圧縮された添付ファイルを開くと、かえって時間がかかってしまうというものです(当然サーバー負荷も増えているはずです)。

つまり、「作成、編集はNotesクライアントで、閲覧はWebブラウザで」という形態で運用しているアプリケーションにおいて、コンテンツの作成者は、 添付ファイルの圧縮チェックボックスに注意したほうが効率がよいですよ、というお話です。(デフォルトで圧縮されてしまうため)


余談ではありますが、私個人はLZ1圧縮の考えは好きで、Notes6以降に環境が特定されているのなら、積極的に使っていくべきだと思っているのですが、、、なかなか浸透するのは難しいようです。

2006/01/07

DominoとRSS(1)

新年あけましておめでとうございます。すっかり停滞しているこのブログですが、ドミノ懇談室の閉鎖もあり、Dominoエンジニアとして少しでも盛り上げたいと、微力ながら書き続けることにします。

昨年は、いよいよいろいろなところで「RSS」という言葉が聞かれるようになりました。IBMのサイトもRSSフィードが増えてきていますし、Dominoも対応していきたいところです。

RSSを一言でいうと、「WebサイトのサマリーをXML形式で表現する」というものなのですが、現在、その用途はむしろ、「Webサイトの更新情報を配布する」という役割になっていると言えます。
つまり、RSSだけ見ていれば、そのWebページで何がいつ更新されたか、がわかるということです。

RSSには紆余曲折の歴史があり、バージョン1.0, 2.0と混在していたりとか、そもそもRSSは何の略語かが1つに決められない、など複雑な点がありますが、ユーザーとして使ってみると本当に便利です。

Dominoで対応していくのはもちろんなのですが、まずはDominoエンジニアも、情報収集はRSSリーダーを使って行いたいものです。私は、いろいろと使いましたが、最終的には多くの皆さんと同じく、Bloglinesに行き着きました。
使うものは、任意のリーダーで構わないと思いますが、是非Domino技術者も、標準的にRSSリーダーを使うようにしましょう。

国内には、Domino関連のブログはまだ少ないですが、developerWorksや、KnowledgeBaseもRSSで読めますし、海外には様 々なDominoブロガーたちが記事を書いています。ブックマークから1つ1つクリックしていたのでは読めませんが、RSSリーダーを使えば、なんとか 追っかけられるものです。基本的に、ブログと呼ばれるものはRSSを出力するのは標準装備ですので、是非トライしてみて下さい。

また、当ブログのように、滅多に更新されないようなサイトも、RSSリーダーには最適で、登録さえしておけば忘れた頃に更新記事が入ります。このブログサイトも、是非RSSリーダーに登録しておいてもらえるととても嬉しいです。

2005/11/17

ND7移行

ND7への移行の話も徐々に耳にしますが、早速USでは移行のガイドブックが公開されていました。割と網羅されているし、十分に役に立つかもしれない、と思います。

2005/11/16

テスト環境構築に関する独り言

ガチャガチャとローカルのテスト環境をいじってみています。
私のテスト環境は、ループバックアドレスを大量につけており、R4が1つ、R5が3つ、Domino 6が3つ入っていたのですが、それに加えてDomino 7も3つ入れてみました。心配されたLanguage Packも、普通に置換が成功して、何事もなかったかのように動いています。6と7の混在環境も、一度6を擬似アンインストールしたら上手くいきました。

一方、Notesクライアントは 4,5,6 と入っていたのですが、日々使うクライアントを6から7に移行したため、6なしになってしまいました。まあ6はいつか別途入れます。
それはさておき、6の環境を7に移行したのですが、そんなマルチリリース環境のため、ディレクトリの名称が Notes6\data という名前になってしまっており、悲しいかなそのまま 7 で動くことになりました。なかなかテスト環境のネーミング設定も難しいところがあります。

ND7壁紙

ND7が少しでも盛り上がるようにと、私もこの壁紙を使うことにしました。
壁紙というもの自体は、無駄なリソースを使うことになるので、あまり好きではないのですが・・・。

2005/11/01

Web Forms 2.0

AJAXもDHTMLも面白いですが、なかなかコーディング(特にDHTML部分)は大変です。

本日、Codestore の記事を読んでいたら、世の中には、 Web Forms 2.0 という規格があり、それを遵守したブラウザでは date 属性を使うだけで、ブラウザが自動的に日付ピッカーを表示してくれるそうです。

オープンソースのDHTMLコードを使えば、Notesクライアントに似た日付ピッカーが、Domino Webアプリでも簡単に作成出来るのですが、ブラウザで実装されるとなったら、これは嬉しいし、こうなればDominoのHTTPタスクも(さすがに)標 準対応してくれるでしょう。

Webの未来って、AJAXやDHTMLチックに、Web開発者が頑張り続けるのだと、いかにオープンソースライブラリが充実しても大変なところはあるけれど、標準技術としてブラウザで必要部分が実装されるなら、敷居は低くなっていくでしょうね。

追伸:Domino 7って今日ですよね。日本語版はLanguage Packになるそうですが、インストールは上手くいくかな。

2005/10/21

更新なしの日々が続いてしまいました

全くもって無名なこのブログですので、しばらく記事を書かなくとも何ら問題はないのですが、いろいろと思うところがあって、少しずつ何か書こうと思います。

USでは、ついにDomino 7がリリースされ、日本でももうそろそろなようです。まだ 7 は触っていないので、それ系のネタは書けないけれど、何かDomino関連ネタ書くことで、少しはLotusコミュニティが盛り上がるとよいのですが。
Lotusから目を離すと、今年はWeb系の技術がAJAXや Web 2.0ブームでやけに盛り上がってます。DominoのWebにも応用出来そうな部分もありますし、いろいろと考えながら。(AJAXは既に、海外の有志 たちによって、わりとDominoエリアも開拓されてきていますね)

目標は週に1本でも更新出来れば、の、のんびりペースですが。

2005/06/16

Hannover

今週は、あちこちで、"Hannover祭り" 状態です。まずは CNET の日本語記事より。

「未来のLotus Notesはこうなる」--IBMが開発の進捗をアピール


ここにあるとおり、Hannoverとは Notes 7の次期バージョンのNotes(気のはやいサイトでは、Notes 8 なんて書いてあるところもありました)

この手の情報は、まず Ed Brill のBlogにて取り上げられます

画 面自体は確かにFancyですし、RSS Feedが見えるなど次世代的な要素が組み込まれているように見えます。これまでのNotesクライアントのイメージはなく、見るからにEclipseな 匂いがしますが、Edのコメントを読むと、IBM Workplace Clientの技術を使っているというので、そうなのでしょう。機能としてはNotesクライアントの機能をそのまま移植したみたいなことが書いてありま す(It will do everything that Notes has always done)。これまでとはベースとなるエンジンが全く違うというのは不安ですが、Notesとの互換性が維持された上で、Eclipseベースになるなら ば、クライアントのプラグイン開発も容易になるでしょうし、配布や管理などももっと楽になるでしょうし、期待が出来ます。
ポイントは、やはり、 Notesとの互換性。過去の資産に手を入れなくてすむか。が、一番手で、後は初期配布の方法(Smart Upgradeが使えるかも、という期待はありますが)、必要とされるクライアントリソース(Eclipse重そう...)といったところでしょうか。

それにしても、コードネームで盛り上がるのは久しぶりに思います。反論もありそうな発表だけれど、EdのBlogに寄せられたコメントは、おおむね賛成派のようです。

2005/06/15

Sametime と QuickPlace

この2つの製品の正式名称が何かというのは、日本でも実はあまり知られわたっていないのかもしれません。いまだに、Sametime、QuickPlaceという声をよくききます。

本日、Ed BrillのBlogにて発表されていましたが、これらの2つの製品は、無事呼び名が、SametimeとQuickPlaceに戻るそうです。どうでもいい話ではありますが、すっかり旧名称のイメージがついてしまっていることを考えると、よい判断だと思います。そもそも、なんであんな名前にしたんだろうか・・・。

QPというと、Domino業界の人はQuickPlaceを想像しますが、普通はマヨネーズを想像すると思います。最近知った話では、アメリカの幼児教育における3つの重要な言葉、Please, "Thank you", "Excuse me" をまとめた用語、という解釈もあるようで、略語というのは面白い限りです。

2005/06/12

メール本文と改行

ノーツメールを使っていると、改行の入れ方が人によって違うことを感じます。インターネットメールの世界では、引用記号を意識した上で、70文字程度で改行するのが一般的なマナーになっており、長い文章を書くときは、メールソフトの自動改行機能か、本人自身による改行を行うことが一般的です。
一方、ノーツメールに関しては、メール本文に関する厳しい規定は特にありません。このため、ウインドウにあわせた表示時の自動改行機能にまかせる例も多いです。

どちらが正解ということはないでしょうが、私個人の意見では、メールに関しては、ユーザーは段落を変える以外では、改行を行う必要はないと思います。リッチテキストフィールドは、もともとワープロ的な機能があり、文章の途中(例えば読点)で改行を入れるのは、ワープロだと明らかに不自然ですし、例えばMTA機能を使ってインターネットメールになる場合は、MTAにより自動改行が入ることを考えると、相手方には美しくない改行で届くことが有り得るからです。

実は私がノーツに始めて触れた頃、メールに関しては改行を入れており、右端を意図的にある程度そろえていたのですが、あるきっかけで改行は使わないようにしました。全画面利用するかどうかなどはユーザーによっても異なるし、解像度もPCによって異なるため、自分の端末での改行が必ずしも相手端末では美しく見えない、というのが一番の理由です。最近はPCの解像度も上がり、1行にたくさんの文字が記述出来るようになりましたが、改行派の方はあらためて社内ノーツメールというものを見直してみてもよいと思います。経験的にも新人や、ノーツに詳しくない方ほど、改行派が多い気がしております。

技術的なことではありませんが、ふと日常で気になることがあったため、意見を記述しておきます。

2005/05/30

Notesクライアントでスキン

Notesクライアントでスキンといえば、NeoPlanetを利用した、Notes 6のPreRelease1が有名で、この機能は残念ながらPreRelease2で落ちてしまったものです。わりと賑やかで楽しい機能だったので、やや残念でした。

ところが、Alan Lepofskyのブログ(こここそまさに有益な「コネタ」の提供スポットです)にて、現在フリーで使えるNotesスキンがあることを知りました。

これはICODEX Software AGというところが開発、公開しているもので、こちらにて紹介されています。
実体は、dllが1つと、notes.iniに記述されるEXTMGR_ADDINS、あとはリソースの入ったDBです。EXTMGR_ADDINSを使うのは、ちょっと抵抗がありますが、まあそうはいっても、この手のことをしたい場合は必須ですので仕方がないです。あらかじめいくつかのスキンが入ってますし、自作も出来るようです。
基本的には、ワークスペースが派手に変わる程度なので、やはりNeoPlanetのようなウインドウごと派手に変わるほうが見栄えがよかったかな、、、とも思いますが、たまにはこういうお遊びも楽しいものです。

2005/05/24

DominoでAJAX

最近、Webの世界では、AJAX (Asynchronous JavaScript+XML) という言葉をよくききます。Google SuggestGoogle Mapを使うと、その技術に驚かされます(iNotes Web AccessやK-stationを見たときも感動でしたが)。

そこで、必ずネタがあると思ってましたが、「DominoでAJAX」です。Google Suggestをみると、やっぱりドミノディレクトリのタイプアヘッド検索が有力だろう、と思ったら、予想通りありました

早速、手元のテスト環境で試してみましたが、設置も簡単だし、効果もわかりやすいです。
で、気になる実装方法ですが、基本的にはクライアント部分で動くJavaScriptが、入力にあわせてサーバーのエージェントを OpenAgentで呼び出し、その引数に入力文字を渡しています。サーバー側は、XMLではなくプレインテキストで返事をし、それをクライアントが解釈するようです。
正直なところ、1文字入力するたびにOpenAgentなんてしたくないけれど、まあ、サンプルならこんなところでしょうか(本番環境なら、サーブレットがいいです。サーブレットはサーブレットで、パフォーマンス以外の面で利便性などDominoとしてどうかとも思いますが)。
Web化したときに、タイプアヘッドに対するニーズって大きいと思うのですが、これで1つは解決できそうです。AJAX自体は面白い技術ですし、他にも可能性が大きいと思うので注目ですね。

2005/05/12

Bob Balaban Lotus復帰

先ほど、Ed BrillのBlogをよんでいたら、IrisでLotusScript/Javaのクラス階層を作ったり、その後独立してDomino/JavaのエバンジェリストをしていたあのBob BalabanがIBM/Lotusに復帰するそうです。


http://www.looseleaf.net/looseleaf/LSIHome.nsf/612AD3D77C83A706852567E7006B9A50/C42ECE3A2D46834685256FFE006719AC?OpenDocument

DHTMLセクション

最近発見したのですが、Domino 6.5.1からセクションをDHTMLで提供する機能が備わっているようです。こちらのSPR対応という位置づけになるみたいです。

http://www-10.lotus.com/ldd/r5fixlist.nsf/0/47529bfeabc18af585256e1600527b41?OpenDocument

設定などの詳細はWeb Server: Additions to dynamic HTML generated for sectionsに記述されています。(日本語のリリースノートにももちろん記載されていますが、英語版しか直接リンク貼れないので)


従来までは、セクションは展開すると、いったんWebサーバーにアクセスして、展開されたHTMLを毎回ドミノサーバーが発行していました。

一方、DHTML対応すると、もともと全ての情報をHTMLとしてもらっておき、クリックにあわせてダイナミックに展開されます。この秘訣は、セクション部分をid付きの div
タ グで定義し、その部分(getElementbyID)の表示/非表示(.style.display)をJavaScriptでダイナミックに指定して いるのですが、このためNotesクライアントのセクションと同じようにみえます。従来までも、JavaScriptで関数さえ定義しておけば、同様なこ とも出来たでしょうが、セクションというのはユーザーがリッチテキストの中に書き込むこともあって、多少コントロールが難しかったこともあったと思いま す。Dominoサーバーとしていよいよ標準でDHTML対応したことは素晴らしいことだと思います。(実際問題としては、Notesクライアントユー ザーがコンテンツを作る必要があるため、Web中心の環境ではどこまで有用かというと微妙ですが)


コードもhtml内部に埋め込まれており(というのには賛美両論あると思いますが)、簡単に見ることが出来ます。



<script language="JavaScript" type="text/javascript">

<!--

function _dSectionExpand(sec) {

document.getElementById("cSec"+sec).style.display = "none";

document.getElementById("xSec"+sec).style.display = "";

}

function _dSectionCollapse(sec) {

document.getElementById("xSec"+sec).style.display = "none";

document.getElementById("cSec"+sec).style.display = "";

}

// -->

</script>

<div id="cSec1" style="position:relative; "><a onclick="return _dSectionExpand('1');"><img src="/icons/expand.gif" border="0" alt="Show details for セクション"><font size="2">セクション< /font></a></div>

<div id="xSec1" style="position:relative; display:none;"><a onclick="return _dSectionCollapse('1');"><img src="/icons/collapse.gif" border="0" alt="Hide details for セクション"><font size="2">セクション< /font></a>



クロスブラウザを意識してかデフォルトではオフになっているようですが、browser.cnfを多少変更するだけで簡単に出来るので、ブラウザが特定されている社内環境では積極的に使ってもよいかと思います。