report

過去のミーティング報告(2002/03/09)

すぐそこまで近付いた春のおとずれを感じる穏やかな晴天、参加者43名。

ミーティング概要

Preミーティング)
前回demo2の復習

はじめに)
参加者全員による恒例の自己紹介

demo1)
『超ファイルメーカー Pro入門-スクリプト-』高岡幸生さん
Speaker紹介:有限会社 ジェネコム代表。コンサルティングからシステム開発まで行う、ファイルメーカー界のマルチプレーヤー。

demo2)
『CDMLに仕事をさせないWeb公開-カレンダー-』山本康仁さん
Speaker紹介:都立広尾病院 小児科医師、「medical macintosh」の作者。多忙なスケジュールの中、合間を縫って制作するファイルメーカーProソリューションは逸品。

懇談)
『自由質問/座談会コーナー』

番外編)
『懇親会風景』

詳しい報告


Preミーティング) Top
FM-tokyoML上発言された「前回demo2の復習をしたい」との要望に応えて、本編の前に急きょ施設内レストランでランチミーティングが行われた。1時間程度で前回の資料に基づき0から同じファイルを作成したもの(つまり前回と全く同じ内容)だが、その間の学習の違いか理解度が大きく違った。

はじめに) Top
参加者全員による恒例の自己紹介

見なれた顔も、お初の顔も取りそろい、わいわいといつものように進む。今回は初心者さんは少なかった&女性の比率が多かった模様。

demo1) Top
『超ファイルメーカーPro入門編-スクリプト-』
高岡幸生
前回のオフラインミーティングに引き続いての初心者編です。

「ボタンを作ろう」
まずは、テンプレートを表示し「これがボタンです」からはじまった。
スクリプト設定のダイアログを表示。「ここにありますよー」と指し示したのち、レイアウト画面へ。
ツールパレットからボタンツールを視差。
ヘッダにボタンを配置。
ここでボタンの設定パレットの説明。
#ver.55では「ボタンにオーバーすると指になる」オプションがあるよん。
ボタンと言うのは、ボタンのオブジェクト事態に機能がついていて、別のファイルに持っていってもアクションは継承される。(モジュール化)
使いやすいUIのためにボタンの使用をお勧めします。

ところでボタンは一つのアクションしか設定できませんね。
複数のアクションを組み合わせたい時には「スクリプト」を使用します。

「スクリプトには"記憶"は使っちゃダメよ」
ファイルメーカーPro以前の「ファイルメーカー2」のときのスクリプト設定の説明。
#これは、手順を「記録」させておくものだったとか。adobeのアクション同様ですがあちらはステップごとに記述があるけど、こちらは記述もなかったので、まさに自分の記憶だけが頼りであったらしい。
では、現在のスクリプト定義を見てみよう。
ここで、ダイアログを開く。
Tips1.コメントは細かくしよう。
#後のメンテナンスや担当者がかわっても対応しやすいよね。
それを考えると「記憶」オプションは困るね。極力使用を避けましょう。
Tips2.フィールド設定スクリプトステップを使おう
このスクリプトステップは便利だけど、気をつけたいことがある。
 1.フィールドタイプを考慮しなきゃいけないよ。
 #日付けタイプのフィールドに対して、「フィールド設定」を行う時はtexttoDateの関数を使って"2002/03/09"のようなテキストを日付けに変更します。 数字でも、時刻でも同様に対応するFildタイプに変更してから「フィールド設定」を行って下さい。そうしないと、エラーがかえってきちゃいます。
Tips3.計算結果を挿入スクリプトステップをつかおう。
さて、では日付け検索では「20002.1.1…2002.12.30」とかしますね。
これはどうやってスクリプトで処理しましょうか?
この場合は「フィールド設定」ではなく「計算結果を挿入」を使用します。
この機能はフィールド名に計算結果をペーストするものです。
これでオッケーです。
「フィールド設定」はタイプを考慮しないとエラーがかえります。
「計算結果を挿入」ではペーストしているので、エラーはかえりません。
この2つのスクリプトステップを使うことで「検索」時に「記憶」オプションを使用しなくても良くなります。

「スクリプトステップの中のIf文」
If文は「2つの条件の中で、もしも〜ならば、〜をおこなう、そうでないならば〜をおこなう」というものですね。
つまり0か1かという2者選択です。

IsEmpty(日付け)=1
IsEmpty(日付け)
これらは同じ結果がかえります。
このIsEmptyなど結果が「0 or 1」しか持たないものを「ブール関数」といいます。
このブール関数のときは「IsEmpty(日付け)」の使用を推賞します。またブール関数での注意点として「スペース」がフィールドに入っている時、見た目には何も入っていないように見えても戻り値は「偽」になります。
なので、ブール関数をIf文で利用する時は、trim関数と組み合わせてよけいなスペースを除去しておくと安全です。

また、サブスクリプトをIF文と組み合わせれば、各種条件にあわせて「サブスクリプト」を呼び出してくれます。これだと複雑な処理も見やすいステップにできます。

最後に、スクリプトの編集を行う時は必ず「複製」してください。
それによりうまくいかなくても、一つ前の状態に戻ることができます。

demo2) Top
『CDMLに仕事をさせないWeb公開 〜カレンダー〜』山本康仁

ファイルメーカーのWebコンパニオン及びCDMLは非常に便利なサービスである。一方、Webコンパニオンで公開したデータベースは、作者の意図しない操作を受ける危険性が高いのも事実である。Webセキュリティは完全なものとは言えず、XML出力機能は簡単にデータベースの構造、データそのものを取り出すことが可能である。

そこで、公開側データベースと非公開データベースを二重に用意し、スクリプトやリレーショナルを利用して二つを連動させ、非公開側データベースにおいた情報を守るという、比較的オーソドックスな手法を、ファイルメーカーのもつ簡単なweb公開の機能を出来るだけ損なうことなく、追求した。

一番難しい選択は、構造、手法が複雑化することによって、生産性、保守性が低下することと、セキュリティをどのバランスで実装するかである。これまではバランスの問題から、CDMLフィルタリングサーブレット、もしくはアップルスクリプト、またはFLASHといった外部ソフトの助けを借りる方法がもっともスマートであるとされてきた。しかし、今回は最小限のプラグインを用意するのみで、全体のプロテクションをwebコンパニオンとスクリプトで実現する方法をとった。

実装方法の基本はオーソドックスなデータベースの二重化である。すなわちwebコンパニオンもしくはXML、ODBCで公開される可能性のあるデータベースにはクライアントと接続するための最小限のデータしか置かず、文章データ本体は、こうしたプロトコルではアクセスできないデータベースに置くわけである。この二つのデータベースを関連づける手法としてリレーショナルを採用した。データの入力、修正、表示の時のみ一時的にリレーショナルキーをマッピングする。このマッピング操作はすべてスクリプトが担当する。一連のスクリプトの最後に用意した、「スクリプトの中断(待ち時間0秒)」によって、HTMLが一旦クライアントに送出されたのち、間髪を入れずマッピングしたリレーショナルキーを削除する。この一見単純とも思える手法で、データの改竄、のぞき込みは出来なくなる。さらにパフォーマンスを向上させ、より安全性を高めるため、リレーショナルキーをデータ要求ごとにランダマイズした。この手法で、一連のスクリプト内部何度か発生する、データベース全体のリレーショナルキー削除操作を省略することができ、十分なパフォーマンスが得られることが確認された。さらに、データ表示に計算式を介在させ、スクリプトごとに細かい閲覧許可を設定することで、意図しない表示フォーマットとスクリプトの組み合わせによるデータの散逸、改竄を防ぐことを可能とした。

このパーシャルリンク、計算式によるフィールドロック、リレーショナルキーのランダマイズによるパフォマンスアップを組み合わせ、スクリプト実行許可を、クライアント情報と、認証時の一時鍵との組み合わせで確実な物にするわけである。

今回のデモでは、認証自体をどのように実現するかも合わせてプレゼンテーションした。認証にはパスワードを利用したが、パスワード自体をブラウザ内部でJavaScriptを利用した128bitのダイジェスト関数、MD5で暗号化し、送出する。暗号化されたパスワードは、ファイルメーカー側に保存される。認証時には、セッションごとに配給される、ランダムコードをもとに、ブラウザ内部でパスワードとランダムコードによる暗号化を行う。同時にファイルメーカー内部に保存された暗号化パスワードと、ランダムコードを合成し、再度暗号化する。こうしてブラウザとファイルメーカー内部の両方で生成されたパスコードが一致した場合に、認証とする。

この手法では、たとえランダムコードをみても、流通しているパスコードを盗み見たとしても、もとのパスワードを類推することは不可能であり、パスコードはログインのたびに、新しい物が要求される。接続を保つ公開データベースは、排他処理を厳重に行い、さらに一定時間ごとに使用されていないデータベースを削除することで、強固な認証を実現した。

これらの実現にはブラウザ内部だけではく、ファイルメーカー側にも同様のダイジェスト関数が必要だが、今回はプラグインをあらたに用意することで実現している。

このようにして、webコンパニオン単体でも、十分なセキュリティを持つデータベースの公開が可能であり、こうした手法自体は、より柔軟な画面デザインのためにこれまでも行われてきた、リレーションの活用の応用であることから、実際に駆動するグループウェアの作成のために使用した。デモでは、このグループウェアであるcom-schedulerの動作画面も紹介した。

Com-schedulerテストサーバー


懇談)Top
『自由質問/座談会コーナー』

持ち込みネタ1.エクセルであるクロス集計はファイルメーカーではどうするの?
このお題を参加者のかたに聞いてみる。
 ・その1品名でリレーションを張る。月は元フィールドで用意。集計
 ・集計フィールド&集計パートのみでやる
 ・品名&月で別ファイル。集計フィールドを使って集計。
 ・全部書き出し、別ファイルを作って並べ替え。
などなどなどなど……..
さて、持ち込まれた方はどれが一番気に入ったのでしょう?

持ち込みネタ2.iTour(アイツアー)のおはなし。JOEさん

JOEさんこと村上丈一郎さんの飛び入りデモ。
3月21日〜23日に東京ビッグサイトにて行われたMacworld Tokyoでは、「iTour」(前年までは「シェルパツアー」と呼ばれていた)と称して、ユーザグループ有志によるEXPO会場の案内ツアーが行われていたが、このiTourの事前申し込み用のWebも、実はファイルメーカーとCDMLを使ったデータベースであることが紹介された。
事前の準備なしで行われたために、環境を整えるのに少し苦労があったものの、製作者のJOEさんから特徴やノウハウなどが紹介されると、参加者からも質問が飛び交い、飛び入りらしい熱いデモとなった。


<!– –>
 


以上でオフラインミーティングの本編は終了です。
今回も盛り沢山で会場使用時間を40分もオーバー(汗)。大急ぎで会場の片づけをしたのち、新宿に出て恒例の大宴会。そちこちでこゆーいファイルメーカー談義が繰り広げられた。こちらだけの参加も大歓迎です。
ファイルメーカーを酒の肴におおいに酔いつぶれませんか?

↓賑やかな親睦会です。

番外編)『大宴会風景』
  (reported by SIHO, K. Takeuchi, Y. Yamamoto)




※写真は個人の許諾を得て掲載しています。
※無断転用は禁止です。

Top

           
広告

ディスカッション

コメントは受け付けていません。

%d人のブロガーが「いいね」をつけました。