medicalcloud on livedoor blog

まだ、このブログで何を書いていくのか決めていません。

Zoho Creater - リレーションの問題の続き

昨日のエントリの後、ツイッターで同様のことをつぶやくと、ZohoJapan(@jpzoho)から返事が来た。

@ 確かに仰るとおり、フォーム同士のリンクは若干不便なところがあります(表示する値と内部的な値[ID等]の両方を保持できないので)。実現したい内容にもよりますが、ルックアップではなく、スクリプトの「fetch records」関数で何とかなるかもしれません

だそうだ。
fetchrecordsについては、調べてみた。面白い関数だけれど、正直、今回の用途に使えそうなシロモノではなさそうだ。 

で、この問題をもう少し考えてみたんだけれど、本質的には、これは、類似したたくさんのオブジェクト(あるいはレコード)が存在するときに、どうやってオブジェクトを指定するか?あるいは、一意に指定するためのIDをに何を求めるか、という問題なんだと思う。

一般に、オブジェクトを指定するためのIDは、次の2つの要求を満たす必要がある。
  1. 一意であること
  2. ユーザーが覚えやすく、識別しやすいこと

DBで使うような自動的に振られる一意のIDや多くのオブジェクト指向言語で使われるreferenceやポインタは、1,の要求を完全に満たしているが、2,の要求は全く満たしていない。

反対に、日常生活で使う「氏名」とか「地名」は、2,の要求をよく満たすが、1,の要求は完全には満たしていない。

両者の中間には、メールアドレスやURI、UNIXのユーザー名などの1,の要求を満たしつつ、2,の要求もできるだけ満たす。といったものがある。

ソフトウェアの中で使うには、一般に、よりユーザーよりのレイヤーでは、2,が強く求められ、反対に、よりシステムよりのレイヤーでは、1,の要求が強く求められる。

Zoho Createrのような、エンドユーザーにアプリケーションを作らせるシロモノの場合、IDには、1,2、の療法の要求が同時に求められるわけで、本質的に、この問題は困難になりがちなのかもしれない。
 
他の類似のシステムでは、どうなっているのだろうか? 

とりあえず、今回の開発では、「ユーザー名」 のような、ユーザーに分かりやすく、システム的にも一意であることが保証されているような名前を用意してこの問題を回避しようと思う。

Zoho CreaterからGAEにデプロイ。

これは、画期的だと思う。
Zoho Creator の Google App Engine へのデプロイ | Zoho ブログ

要するに、Zoho CreaterをGAEのためのRADツールのように使うことが出来るってこと。
でも、こんなことをやって、Zohoにとっては利益は無いんじゃないかという気もする。

Zoho Createrを使ってみた。

最近、いろんな事業所で産業医仕事をすることが多くなってきた。

それで、それらの事業所の社員の健康管理のためのデータを、自分のデスクでも、それぞれの事業所の医務室でも呼び出すことが多くて、また、各事業所の人事や総務の人たちとデータ共有をしなくちゃいけないことが多くて、大抵、そういうデータ共有とか転送は、メールでやってるんだけれど、だんだん、そういうのが面倒になってきた。

そんなわけで、 こういう社員の健康管理のデータをクラウドで管理したいと思っていた。アプリケーションとしては、Microsoft Accessとかでやったら簡単にできる種類の話なんだけれど、Google App Engineとかでフルスクラッチで作るのも、サーバー借りてMySQLとかでやるのも面倒だなってことで、Zoho Creater使ってみようかと。

で、正月休みをつかって、Zoho Creater使って、くだんのアプリを作ってみようと。

ドキュメントは英語しか無いんだけれど、まあ、しかたがあるまい。平易な英語だからそれほど苦労はしない。

このデータベースソフトでは、普通のSQLを使ったDBではテーブル、あるいはエンティティと呼ばれるものをフォームと呼んでいる。で、テーブル同士のリレーションに相当するのはフォームのなかにルックアップフィールドなるものをつくることによって行われている(ルックアップフィールドが、ほかのテーブルのIDを持つことに対応する)。
このルックアップフィールドというのは、フォームの中では、チェックボックスやドロップダウンリストとして表示され、例えば、「社員」から、所属部署である「部署」にリレーションを張る場合、「社員」フォームの中に、「所属部署」という名前のルックアップフィールドを作り、そのルックアップを「部署」の「部署名」にリンクさせれば、社員を追加するフォームには、所属部署という名前の「部署名」を選ぶようなドロップダウンリストが作られることになる。このシステムは非常に良く考えられていると思う。

困ったのは、リンク先フォームのフィールドの中に、ドロップダウンフィールドで使って、どのレコードか分かるほどユーザーフレンドリで、なおかつ、普通のDB設計でつかうIDみたいなユニークさを持ったフィールドっていうのは、案外見つからないことがあることなのだ。

例えば、「ID」「姓」「名」「生年月日」という4つのフィールドを持った「人間」フォームにリンクを張るときに、
もちろん、「ID」のドロップダウンリストなんて使えない。それぞれの人間のIDを覚えておくなんて、そんな面倒なことはユーザーに要求出来ないから。

かといって、「姓」や「名」はそれほどユニークではない。同姓や同名の人なんてたくさんいるから。

理想的には、UIとしては、「姓-名-生年月日」なんてのがずらっと並んだドロップダウンを表示する。一方、内部のDBとしては、IDに対してリンクを張る、というのがいいんじゃないかと思うんだけれど、それを満足する機能が見つからない。

多分、そんなにマイナーな要求じゃないと思うから、どうにかして実現できるんじゃないかと思うんだけれど。

Mindiaとのリンク完了

Mindiaとのオートリンク、設定した。
livedoor プロフィール
タグクラウド
QRコード
QRコード
  • ライブドアブログ