2007-11-03

イベントによるスクリプト起動プラグイン って…(4)

 前回(3)を書いてから半年以上経ってしまった…

 この記事はzippScriptを使用した会計のサブシステムをお客さんに納品したのをきっかけに書き始めたんですが、その後 FileMaker 9 の RC が出たりして SQL Server やら MySQL をいじってるうちに書くのがめんどくさくなっちゃって… と言い訳タラタラ。

 プラグインは実はあんまり使いたくはないんですが、このお客さんの要望もあり、どうしてもイベントによるスクリプト起動のプラグインが必要ということになり、予算をかけず、安定稼働して、FMアップグレード時にも迅速に互換情報やらアップグレードを提供してくれそうなって基準で(1)で挙げたような製品をチェックしました。

 最終的には、無料で、互換情報を比較的提供してくれそうなzippScriptを選択しました。 複数クライアントで10時間連続起動しても落ちずに安定して動作する、みたいなテストもやってるわけですが、やはりテスト環境と実運用環境(最大50クライアントが利用)では違うわけで、一抹の不安が… 

 つい先日、お客さんの担当者(経理)から「不気味なくらい順調に動いている云々」のメールを頂いて、一安心。開発元は FM9 の互換情報もいち早く出してるし、このプラグイン選択はまぁ正解だったのかなと思っています。 

2007-05-18

FlexSkype

Skype コンタクトを FileMaker で管理し発信するソフトウェア FlexSkype をリリースいたしました。
本ソフトウェアはフリーウェアですので、ご自由にお試しください。




本製品にユーザサポートはございませんが、何かお気づきの点やご意見等ございましたら、当ブログエントリの方までご投稿ください。

◇FlexSkype 情報ページ
http://www.tpc.jp/product/fskype/

2007-03-28

自作 vCard の Skype 取込で苦戦

Skype には vCard によるコンタクトの取り込み、および書き出しをする機能が搭載されています。

vCard とは、氏名、email アドレス、電話番号、住所情報などを登録しておく電子名刺のようなもので、記述規則は決められているものの、vCard を採用しているアプリケーション同士でデータ移行が可能になります。たとえば OutLook と Skype 間でコンタクト(ユーザ)の移行ができます。

さて、今回はこの vCard を自作して Skype に取り込むテストをやってみたのですが、これがなかなかうまくいきません。日本語情報が無視されて電話番号のみがコンタクトリストに登録されてしまいます。
ちなみに準備した vCard はこのようなものです。

BEGIN:VCARD
VERSION:3.0
N:+810000000000
X-SKYPE-PSTNNUMBER:+810000000000
X-SKYPE-DISPLAYNAME:漢字太郎
END:VCARD

これを拡張子 .vcf を付けて保存して、Skype より vCard 形式でコンタクトのインポートを実行します。
保存データ形式は最初は Shift-JIS で行いましたが、N:+810000000000 で示す番号がコンタクト名に出てきてしまいます。つまり漢字太郎は Skype には無視されてしまいました。
そこで保存データ形式を EUC や UTF-8 に変えて取り込みましたが結果は同じ。

泣く泣く Skype フォーラムの方に相談しました。すると、できたという方の返信があり、親切にも成功したファイルも添付されていました。試してみると確かに漢字太郎がコンタクトリストに表示されます。

結果、UTF-8 形式で BOM(Byte Order Mark) という先行データを取り除いた状態で vCard を保存すれば取り込める模様です。

次に、FileMaker から vCard データ書出を行った場合に、Skype に取り込めるかテストしてみましたが、フィールド索引を UTF-8(UTF-16 の誤りでした。申し訳ありません。訂正:2008/10/30) にはしたものの、やはり漢字太郎は無視されてしまいました。デフォルトのままでは BOM が付いているのかもしれませんが、こちらはもう少し調査してから追記していきたいと思います。

参考:
vCard
BOM

●2008/10/30 追加
FileMaker Pro 7 以降の xml を使った書出機能を使うことによって、vCard の書出はできる模様です。
参考:
FileMaker Business Tracker
http://www.filemaker.co.jp/solutions/fbt.html
当方の環境で試してみたところ、日本語が化けているので、こちらももうちょっと調査したいと思います。

2007-03-07

FileMaker 製品のカスタマイズ

弊社製品のカスタマイズについて

弊社の全製品(FlexSales R1.0売上猫くん4.5FlexManager1.5)はパスワードを公開しており(*1)、お客様はご自身の責任によりカスタマイズが可能です(*2)。
 当方に寄せられる質問に「FileMaker の初心者(あるいは中級者)なんですが、カスタマイズってできるものなんですか?」というものがあります。

 カスタマイズを行おうとする方は、以下を参考にしてください。

まったくの初心者の方

まったくの初心者の方にはいかなるカスタマイズもお勧めできません。ちょっとした操作ミスで復旧不能になってしまうからです。
 それでもカスタマイズしたいという方は、まず、FileMaker に付属するチュートリアル、テンプレートやマニュアル等で FileMaker の勉強をしましょう。
 そして、付属のテンプレートが問題なく理解できるレベルになれば、初級者と呼んでも構わないのではないでしょうか。

初級者または中級者によるカスタマイズ

  • 初級中級の方は原則としてオブジェクトの追加のみ行い、変更、削除は行わない
ここで言うオブジェクトとは、テーブル、フィールド、リレーション、レイアウト、スクリプト、アクセス権限、ファイル参照といったシステム(製品)を構成する要素です。
 これらのオブジェクトを変更・削除すると既存機能に障害を生じさせる可能性があるため、初級・中級の方は変更・削除は行わないようにしてください。

 追加は既存機能に影響を与える可能性が低いため、多くの場合、問題がないと思われます。たとえば、あるテーブルにフィールドを追加し、そのフィールドをレイアウトに表示させる、というのがここで言う“追加”にあたります。
 なお、リレーションの追加はお勧めできません。

上級者の方へ

上級者の方であれば、既存オブジェクトに変更を加えるリスクは十分にご承知のことと思います。第三者が作成したスクリプトを変更するのは煩わしいですし、危険ですよね?
 小生などは、自分が書いたスクリプトでさえ2ヶ月もたつと「これ、俺が書いたの?」ってこともあり、過去の記憶を辿りながらこれを修正・変更するのは骨が折れます。
 また、「これ、不要だろ?」と思ったフィールドやサブスクリプトを整理のため削除して、ボタンが正しく動作しなくなった、なんてこともちらほらと。

 それでもこの仕事をしていると、運用開始後何年も後にいままで正常に動いていた仕様を大幅に変更しなければならない、というようなこともしばしばあります。そのような場合、人間の記憶や仕様書のみに頼るのは危険です。そこで、土屋企画ではシステム分析データベースを作成し、これにより変更対象となる特定のオブジェクトがどこで使用されているかを全て検索・リストアップして印刷できるようにしています(このシステム分析データベースについては、別の機会に書きたいと思います)。
 このリストをたよりに、そのオブジェクトが使用されている他のオブジェクトの変更の必要性や変更方法を検討します。

講習

「土屋企画の製品をカスタマイズしたいが、製品の構造やカスタマイズの方法を知りたい」という方向けの講習を行っております。
 

注:

*1 FlexSales R1.0 にはパスワード公開版と非公開のバージョンがあります。詳細は→ここ
*2 カスタマイズは危険な作業です。カスタマイズ時は追記バックアップを行いましょう。

(土屋)

2007-03-01

Skypeのメモ

Skypeって…
インターネット電話のこと。 インターネットに接続されたPCにSkypeというソフトをインストールして使います。 SkypeをインストールしたPC間であれば、無料・無制限で通話ができます。


SkypeOut
SkypeOutを使用すると、Skypeから一般の固定電話や携帯に格安で電話を掛けることが可能です(これは有料)。  一分あたりの料金は以下の通り。

日本¥ 2.660(携帯¥ 17.5)、アメリカ¥ 2.380(携帯も同じ)、韓国¥ 2.405(携帯¥ 8.260)
  ↑  ↑  ↑   ↑  ↑  ↑  ↑  ↑  ↑
やっぱ、日本の電話、特に携帯の料金はオカシイんじゃないかと。
NTTの社長は「Skypeはインターネットにタダ乗りしてる」とか言ってるらしいですね・・・
SkypeOut料金表


SkypeIn
「普通の電話・携帯からの電話をSkypeで受けるための電話番号」です。 SkypeInの電話番号に電話をする場合、コストが安くなるそうです。 掛けてくる人が実際どの程度得をするのか?ということですが、その電話から最寄のSkypeのアクセスポイント(AP)までに通常の電話料金がかかり、APからSkypeまでが無料ということなのかなぁ?と思います。


◇スカイプフォン
Skypeは基本的にはPCの前で使うものだと思うのですが、PCの前に限定されてしまうと不便です。 まあ、これは会社のビジネスフォンとかでも一緒なんですが、やはり無線のハンドセットで発信・受信・通話ができないと。 世の中にはおんなじことを考えて、商品にしてしまう人達がいるんですね。

スカイプフォンいろいろ
ヨドバシカメラで売ってるやつ←なぜかスカイプフォンの品揃えが充実している

無線LAN環境があればパソコン無しでSkypeできる無線ハンドセット
ロジテックLAN-WSPH01WH ---¥22,800

PCにUSBアダプタをつけて無線ハンドセットでSkype
comfixワイヤレスフォンSKP-001---¥11,800

一般電話とSkypeのデュアル電話機
パイオニアTF-FS55M-S ---¥14,300

普通の電話機をSkype電話として使うUSBアダプタ
DIGITAL COWBOYDC-NCTELU ---¥3,980

注:価格はヨドバシの価格。


ちなみに、うちではパイオニアのデュアル機をAmazonで買いました。 出不精のわたしにはAmazonはホントに便利。 早く来ないかなぁ…

(土屋)

2007-02-22

イベントによるスクリプト起動プラグイン って…(3)

プラグインの問題点

 一見便利なプラグインですが、サードパーティーが、ある意味無理矢理機能を拡張しているため、ユーザが意図する通りに動かない、動作が不安定ということはある程度覚悟しておく必要があります。


 小生が開発した環境では、フィールド定義の「入力値の自動化」の計算式で、以下のような現象が発生しました。
  1. ヘッダレコード(「レイアウト設定」で「レコードを表示:」で指定するテーブルのレコード)が未確定の場合、ポータル行のフィールド入力時にスクリプトが起動するように設定がなされていても、スクリプトは起動されない
  2. スクリプト起動を設定したフィールド入力中にレコードが切り替わると、不適切なレコードに対してスクリプトが実行されてしまう
  3. スクリプト起動を設定したフィールド入力中に他のボタンを実行すると、スクリプトが実行されない、または不適切なタイミングで実行される

 また、アクセス権設定の計算式により、カーソルがフィールドに入ったときにスクリプトを実行するように設定しましたが、ヘッダレコードで2つめ以降にカーソルが入ったレコードでは、スクリプトが実行されませんでした。


 上記は小生の環境で発生したもので、必ずしも他の環境で発生するとは限りませんが、いずれにしてもスクリプト起動プラグインを使用する場合は十分なテストを実行し、問題を発見して、回避策を自分で施さなければなりません。 

 また、FileMaker Pro のアップグレード時にプラグインは遅延無くアップグレードされるのか、プラグインを連続運用しても安定して動作するのか、運用開始後プラグインに問題があると判明した場合の回避策などを、重要なアプリケーションでは考えておく必要があると思います。

 今後、時間があれば土屋企画で施した対策を書いてみます。
 
 

2007-02-19

FileMaker プラグインを FileMaker Server から自動的にダウンロードさせる方法

FileMaker プラグインは、ファイルメーカー Pro 6 までは各クライアントコンピュータに手作業でインストールする必要がありましたが、FileMaker 7/FileMaker Server 7 からは、サーバにアクセスした時点でクライアント側のプラグインの有無をチェックし、必要に応じて自動的にクライアントにダウンロードして有効化できるようになりました。

つまり、このスクリプト自動ダウンロード機能を利用すれば、クライアント台数の多い企業ならプラグインのインストール作業が大幅に軽減されるだけでなく、インストール漏れが発生するというトラブルも発生しにくくなります。

今回は Windows 環境で FilMaker Server からプラグインをクライアントコンピュータに自動インストールする方法について説明します。

* プラグインの自動ダウンロードの詳細は、FileMaker 社の FileMaker Server 8 プラグインの更新ガイド (PDF) を参照してください。


◇ 準備するもの
1. AutoUpdate プラグイン
これは FileMaker Pro 7 以降をインストールしたときに標準でインストールされているプラグインです。このプラグインを使って FileMaker Server にアクセスし、バージョンチェックとダウンロードを行います。
あえてここでは何もする必要はありませんが、AutoUpdate プラグインのインストール状態は以下の画面からチェックできます。



2.FileMaker Server 7 または 8
インストールして、起動しておいてください。
3. お好みの FileMaker プラグイン
今回の例では無料プラグインの zippScript を例に挙げます。以下のリンクよりスクリプトを入手してください。
http://homepage.mac.com/jkornhaus/filemaker/Downloads.html


◇操作方法

1. zippScript をサーバ環境に配置します。下図のようにディレクトリを作成してくだい。
* スクリプト名を記述したディレクトリと、それに対応するバージョン名を入れたディレクトリをそれぞれ用意します。


2. FileMaker Pro 7~8.5 を開き、新規ファイルを作成して、プラグインダウンロード用のスクリプトを作ります。

(スクリプトファイルは準備中です。暫くお待ちください。)

3. ファイルオープン時に 2. のスクリプトが実行されるように設定しておけば、必要に応じて FileMaker Server からローカルコンピュータにプラグインがダウンロードされ、有効化されます。

イベントによるスクリプト起動プラグイン って・・・(2)

スクリプト起動プラグインを使ってみる

前回書いたようにスクリプトの起動は計算式で指定します。ここでは、フィールドオプションの「自動入力」の計算式を使用し、数値フィールド[価格]にユーザが入力した値が10000以上であれば警告メッセージを表示するスクリプトを起動するようにします。

「入力値の自動化」タブで計算式を書く
注:
  • 上式に[価格]があることに注意。
  • “OK”クリック後、「フィールドに既存の値が存在する場合は置き換えない」をチェック。

入力値の警告し、キャンセルならば値をクリアするスクリプト

 後はレイアウトにフィールドを配置し、[価格]フィールドに10000以上の値を入れると警告スクリプトによりメッセージが表示されます。


 ばら色に見えるプラグインですが、いくつかの問題があります。次回はその問題について書きます。

2007-02-15

イベントによるスクリプト起動プラグイン って・・・(1)

スクリプト起動のタイミングをイベント対応にしたい

FileMaker Pro(以下、FM)のスクリプトを起動するには、ボタンをクリックするか、またはスクリプトメニューから目的のスクリプトを起動するしかありません。
 VBやJavaScriptのように、フィールド値の変更等なんらかのイベントが発生したときにスクリプト(ルーチン)を起動できると便利なのですが、FileMaker にはその機能がありません。これを実現させるのが、サードパーティ製のプラグインと呼ばれるプログラムです。

スクリプト起動プラグインのインストール

スクリプト起動プラグインはさまざまなものがありますが、ここでは「zippScript」という製品の使用方法をご紹介します。

 まず使用するプラグインをダウンロードします。必要に応じて解凍し、zippScript.fmx という名称のファイルを FileMaker Pro\Extensions\ に入れ、FileMaker Pro を起動します。

 これでプラグインのインストールは完了です。 

スクリプト起動プラグイン製品
製品名 価格
zippScript freeware
DoScript freeware
Events 4.0 US$129
ScriptFire US$59
Activator US$89
EventScript freeware


◇イベントによりスクリプトを起動させる

では、スクリプトはどのようにすると起動できるのかというと、計算式でプラグインが提供する外部関数を実行して起動します。 スクリプトを起動する計算式は、フィールド定義の入力値の自動化/制限、計算フィールド、アクセス権設定、ポップアップヘルプの設定で指定可能です。 これにより、以下のイベント発生時にスクリプトが起動できることになります。

  1. カーソルがフィールドに入った

  2. レコードを表示/作成/削除した

  3. フィールド値が変更された

  4. 未保存の計算フィールドが表示された

  5. 特定のオブジェクトをマウスオーバーした
zippScript には、zippScript Example.fp7 というファイルが付属していて、これを分析するとイベントに基づくスクリプトの起動方法(スクリプト起動用外部関数の記述方法)が詳しくわかります。

次回

次回は zipScript 外部関数の使用方法と、プラグインの問題点を挙げたいと思います。

(土屋)