開催から1ヶ月以上経ってしまいましたが、2012 年 4 月 14 日 (土)に開催したFM-Kyuhsuの勉強会『FM Talkers Apr. 2012 - 条件付き書式と変数を使いこなそう!(+ ver.12レビュー)』の、開催レポートをお届けいたします。
開催要項
- 時間
- 18:00 〜 21:00
- 参加者
- 25 名
- 参加費
- 500 円
- 場所
- ふくふくプラザ (福岡市市民福祉プラザ) 503 研修室
福岡県福岡市中央区荒戸3丁目3番39号
直前でFileMaker Pro 12シリーズの発売開始となったため、本来のテーマはやや縮小し、ver.12のオーバービューを追加した今回。いつもより多くの方にご参加いただけたのは、ver.12への関心の高さからでしょうか。
『変数を使いこなそう 基礎編』 - 変数の基本とスクリプトでの利用 -
メインテーマ1本目は、FM-Kyushuの本田による、変数の基本を紹介するプレゼン。プレゼン資料の準備不足でほとんどアドリブとなってしまい、まとまりが無く申し訳ありませんでした。
内容は以下のような構成でした。
変数とは
「データを一時的に入れておける名前の付いた入れ物」
何に使う?
複数回使うデータを入れる
一つのスクリプトの中で複数使う値を、一旦変数に入れてから使う。そうしておくと、無駄な計算が減り、スクリプトの修正も容易になる。
取り敢えず覚えておきたいデータを入れる
ループの回数や、長くややこしい計算を分割する場合など、一時的な値の置き場が欲しいことはままある。
グローバル格納の代わり(※$$グローバル変数を使う)
レコードを超えて1つの値を保持しておくグローバル格納は、便利な反面、テーブル定義が必要。変数はその代わりも出来る(完全ではない)。
変数の使い方
スクリプトで変数を使うのは、非常に簡単。
- 変数の作成:「変数を設定」スクリプトステップで名前と値を指定
- 変数の更新:「変数を設定」スクリプトステップで名前と値を指定
- 変数の使用:計算式に変数名を書くだけ
どんな使い方も、基本的にこの3つから組み立てられる。
変数の種類
変数には名前が必要。スクリプトで使う変数にはこの名前に規則があり、「$」または「$$」が必ず先頭に付く。
「$」と「$$」によって、変数はその有効範囲と寿命が変わる。
| 先頭記号 | 呼び名 | 有効範囲(スコープ) | 寿命 |
|---|---|---|---|
| $ | ローカル変数 | その変数を作成したスクリプト内 | 作成時点からスクリプト終了まで |
| $$ | グローバル変数 | その変数を作成したファイル内 | 作成時点からファイルを完全に閉じるまで |
ローカル変数は作成したスクリプト内でのみ有効なため、他のスクリプトと競合しない分安全な反面、複数のスクリプトで連動して値をやり取りするのは不便。値のやり取りは、グローバル格納フィールドやスクリプト引数、そしてグローバル変数などを使う必要がある。
グローバル変数は、従来のグローバル格納と同じ感覚で使えるが、複数ファイル間でのやり取りには、やはり不便がある。こちらもファイルをまたいだ値のやり取りには、グローバル格納フィールドやスクリプト引数を使う。
変数の名前の管理
変数には名前が必要だが、フィールドの様に一覧する方法が用意されていない。
スクリプト変数は、それを使うスクリプトの先頭にコメントで名前と用途を残すなど、工夫が必要。
グローバル変数は、ver.11以上なら、マージ変数機能を使って、一覧するレイアウトを作ると良い。
変数でしか出来ないこと ファイルパスの生成
エクスポートやPDF保存時などに指定するファイルパスの指定は、動的に行いたい場合、必ず変数を使う必要がある。
通常固定のパスを書き込んで指定するダイアログ上で、固定のパスの代わりに、「"file:" & Get(日付) & ".pdf"」などいう値を設定しておいた変数を指定すると、動的なファイル名で保存が可能。
まとめ
今回は触れませんでしたが、計算式中でLet()を通じて使う変数は、もっと面白い特徴があり強力です(代償に、把握すべき変数の種類が4種類に増えます…)。また、同じく触れられなかった話題として、グローバル変数とグローバル格納フィールドの違いも、バージョンによって異なり、使い分けも注意が必要です。
今後のFM-Kyushuの勉強会でも、引き続きこのような変数の解説をしていきたいと思います。
条件付き書式をつかいこなそう
メインテーマ2本目は、FM-Kyushuの大川による、条件付き書式の基本を紹介するプレゼンテーション。
■オーカワさんのプレゼンをslideshareなりで埋め込み■
FileMaker 12 オーバービュー - 変更点の概要と対応について -
飛び入りテーマですが、最も関心の高かったver.12のレビュー。今回はFM-Kyushuの本田による、重要な変更点の紹介と、簡単な移行についての紹介となりました。
まず、プレゼンテーションを全文掲載します。
なにが変わったのか
新しいファイルフォーマット
.fp7 から .fmp12 へ
- ver.7〜11まで続いた .fp7 形式は終了
- 新しいフォーマットは 「.fmp12」 となる
.fp7 ファイルは変換が必要
- ver.12の変換機能を使う
- 変換の影響確認にはテストが必要
.fp5 ファイルは変換に非対応
- 一旦 .fp7 形式に変換する必要がある
- よほど単純なファイル以外作り直した方が良い
新しいレイアウトエンジン
内部ではCSSを採用(恐らくWebKitベース)
- 内部的なものでユーザーがCSSを目にするわけではない
- 色々なレイアウト関連の新機能の基盤となっている
表現力の強化
- 最近のRIA風のモダンな表現が可能になった
- 角丸やグラデーション、背景画像など外観の指定が可能に
操作に応じたスタイリング
- ホバー時やフォーカス時などの外観を個別に指定可能
- より親切で安全なソリューションに繋がる
「テーマ」機能
テーマの概要
- レイアウトのスタイルを一括変更
- レイアウトオブジェクトの種類ごとにスタイルが用意されている
- 製品に40種類が付属(内5種類はGoに最適化)
テーマの自作
- 内部はほぼCSSなので自作可能
- 独自の拡張要素の特定と理解は必要
- 「○○病院」や「自社-入力用」といったテーマを作って一貫したUIを提供可能
- 但し編集機能は用意されていないので、CSSを直接編集
レイアウト編集機能の強化
ガイド(ダイナミック・ガイドライン)とグリッド、ステンシル
- 整ったレイアウトが手軽に作れる
- iPhoneやiPadなど特定のデバイス向けレイアウトが簡単に
オブジェクトの選択やサイズ変更
- 数値指定で複数オブジェクトの一括サイズ変更が可能に
- 塗りが無くても選択可能に
単位「px」が廃止され「pt」に変更
- レイアウトのサイズ指定などでは原則 pt が標準
- ウインドウサイズなどは従来通り px で指定
オブジェクトフィールド(コンテナ)の強化
対象ファイルの外部保存に対応
- オブジェクトの内容を .fmp12 に含まないため、安定性と可搬性が向上
- 「参照のみ」とは異なり、データは指定したパスにコピーされる
- 暗号化して格納する「セキュア格納」にも対応
- オープン格納の場合、同名のファイルは自動的にリネーム
UI・UXの向上
- ファイルをドラッグアンドドロップで格納
- 動画やPDFなどのファイルを閲覧できるようになったが、
実行環境のブラウザの設定に依存するため汎用性に欠ける
Goの無料化と強化
ver.12以降のGoは無料で配布
- iOSに於ける新たな開発プラットフォームとして
Goを定着させたいという判断から? - 製品名は『FileMaker Go 12』
- ver.11以前のファイルには非対応
- 1円でもかかるのと、無料とでは導入の気安さが全く違う
iOSとの連携が向上
- Location()で位置情報を取得
- オブジェクトフィールドにカメラから直接写真や動画を
- マルチタスク対応が少しマシに
その他の変更点
古い機能の廃止
- 後述
Advanced
- 特になし
- テーマエディタぐらい付けてほしい
インスタントWeb公開
- レイアウトエンジンの刷新で、より再現性が良くなった(はず)
その他も細かな変更点多数
- 「モーダルウインドウが手軽に実現」とか
有用なものが多いのでぜひチェックを
バグ
すでにバグが色々…
- Goのバグ情報が多い
旧来のバグは結構残ってる
- 多量のフォントがあるWindowsで印刷時間が異常に長い
- 日本語フォントなのにレンダリングがベースライン基準 等々
バグ情報の確認方法
- FileMaker社のナレッジベース
- RSSでバグや技術情報などが配信されている
ver.12への移行
移行すべき?
メリットが大きそうな人
- レイアウトの外観や挙動に凝りたい
- UIのビジュアルデザインが苦手
- ver.6までのシステムが現役
- ファイル管理に使いたい
- iPhone・iPadを業務に活かしたいけどアプリは自作できない
移行方法
ver.7 〜 11(fp7)の変換
- 古いバージョンであるほど、うまく変換できない部分が出てきうる
- 変換に問題が無いか確認する、テストの計画を立てよう
- 小規模ならチェックリストで済むかも
- 大規模なら『BaseElements(2012年4月14日時点では、12に非対応)』など、
別途ツールの使用も検討した方が良い
〜 ver.6(fp5)の変換
- 直接変換はできないので、一旦.fp7に変換する必要がある
- 余程単純な構造でないかぎり問題が大量にでるので、
潔く12で再構築するのがおすすめ
変換時に注意すべき要素
廃止された要素
- レイアウトオブジェクトの塗りのパターン
- OLE(Windowsのみ)
- XSLT公開
レイアウト全般
今回最大の変更点はレイアウトなので、全てのレイアウトでズレや不正な表示が無いか、確認する。
描画速度
全体的に遅くなっている筈なので、使い物にならなくなっている箇所が無いか確認する。
プレゼン内容は以上です。以降は、当日触れた内容も含んだ補足です。
レイアウトエンジンについて
12の変更点として重要なのは、やはりレイアウトエンジンが新しくなった事です。これによって制作効率は向上し、より質の高いレイアウトの実現につながります。また、今後のバージョンで追加されるであろうレイアウト関連の機能への布石ともなっている筈です。
但しこの変更は、新たなバグや互換性の問題にもつながっています。実際、すでにナレッジベースでは幾つも問題が報告されています(ポータルオブジェクトをあるレイアウトから別のレイアウトにコピーすると、想定外の結果になる, 条件付き書式を設定したレイアウトオブジェクトが期待通りにリフレッシュされない, レイアウトに挿入した画像の角丸の半径の設定が期待通りに動作しない, ポータルオブジェクトをあるレイアウトから別のレイアウトにコピーすると、想定外の結果になる 等々)。
このようなバグや互換性の問題は、大きな変更時には付き物ですが、変換後のテストを慎重に行うといった事しかほとんど対応手段がありません。なるだけ早いアップデータの公開を期待しています。
手軽にレイアウトのビジュアルを変更できるテーマ機能は、レイアウトエンジン変更の最大の効果です。しかし、せっかくのテーマを編集するツールが提供されていないのは、もったいないです。自社用のテーマが手軽に作れてこそ、テーマ機能は本領を発揮できるのではないでしょうか。この点はFM-Kyushuのメンバーでも、何かツールを作れないかと検討しています。オブジェクトフィールドの強化
外部保存に対応した事によって、従来は対応しにくかった大規模なファイルのデータベースでも、FileMakerが選択肢に入れられるようになりました。しかしこちらも、この強化に起因するバグ(外部保存されたオブジェクトフィールドのデータが、FileMaker Server にアップロードされない。)が確認されています。
Goの無料化
マーケティング上のインパクトが最も大きかったのは、この話題でしょうか。従来2~4,000円程度はしていたFileMaker Goが、完全に無料化される事で、iOSの開発プラットフォームとして名乗りを上げよう、という意図がありそうです。
この方向性が定着するかは、FileMaker社がどれだけGoを快適な環境に改善していけるかにかかっていそうです。少なくとも、現在の12用Goは、従来のものと大きな差が見られません。よりiOSネイティブの使い勝手に近づけること、ロケーションやイメージング以外のデバイスとの連携を強化すること、そして何より、レスポンスを上げること。こういった努力が続けば、本格的にiOSアプリの開発環境として認知されていくのではないでしょうか。
12と今後の勉強会
今回、参加者の中で12を実際に試している方は0でした。受託開発ではなく、インハウスツールの構築手段としてFileMakerを利用されている方が多いため、当然だと思います。
勉強会は次回6月に予定していますので、その頃には、実際に移行した方や、計画を立てている方の参加がありそうです。移行の中で出てきた疑問や実例を元に、FM-Kyushuで応えていけたらと思います。
質問タイム
アンケートでのリクエストなどから、FM-Kyushuでは今後、質問時間を長く取ろうと考えています。その始めとして、今回は最後の45分程度を質問タイムに充てました。
下記のように、面白い質問も出たのですが、スムーズとはいえず、もっと進行の工夫が必要だと感じました。
データベースの構造と繰り返しフィールドについて
Q. 表計算ソフトで言うところの行列変換を、繰り返しフィールドで行うには?
- A. 現状はフィールドを毎月増やす必要がある。
- A. 今後は毎月レコードが増えるような構造とし、帳票作成時に繰り返しフィールドに値を入れると良いのでは?
Q. それは大掛かりな変更が必要と言うことですか?
Q. 話は変わるが、繰り返しフィールドは今後のファイルメーカーでもサポートされ続けるのか?
- A. オブジェクトコンテナとしての利用はありではないか?
カレントレコードのビジュアル表現
Q. レコード選択時に背景色を変化させたり強調用のマークをつける方法はないか?
- A. レコードの移動をトリガで拾って(OnRecordLoad)、Get(レコード番号)を使ってそのレコードを特定する番号をグローバル変数等に取得。後は、背景色を条件付き書式で表現したり、オブジェクトを結果として返す計算フィールドで、$$カレントレコード番号 = Get(レコード番号) などとして表現する。
アンケートの集計結果
FM-Kyushuではよりニーズにあった勉強会を行うために、前々回より勉強会参加者の方にアンケートを行っています。
今回のアンケートは以下のような結果となりました。
あなたは開発者ですか? それとも、開発は行わない利用者ですか?
| 開発者 | 8 / 16 |
|---|---|
| 利用者 | 7 / 16 |
現在お使いのFileMaker製品
| Pro 6 以下 | 2 / 16 |
|---|---|
| Pro 7 〜 9 | 1 / 16 |
| Pro 10 | 4 / 16 |
| Pro 11 | 10 / 16 |
| Pro 12 Advanced | 1 / 16 |
| Advanced(Developer) | 4 / 16 |
| Server | 1 / 16 |
| Go iPhone | 1 / 16 |
| Go iPad | 2 / 16 |
勉強会の評価と今後の要望
アンケートでは、自分にとって勉強会の難易度もお訊きしています。今回は多くの方が「ちょうど良かった」、数名の方が「難しかった」との回答でした。また幸いなことに、「簡単すぎた」と感じた方はいらっしゃいませんでした。次回以降の勉強会でも、今回のような難易度の内容を、より分かりやすくお届けしたいと思います。
次回以降のテーマの要望には、やはりGoを挙げられる方が複数いらっしゃいました。他に、リレーションや計算式の基礎的なもの、チャートやエクスポート、SQLなどの実務的なものもありました。
勉強会には医療、教育、物販、印刷など様々な分野の方が参加しているため、求められる内容も様々です。全ての方のご要望に応えるのは難しいですが、基礎と実践をバランスよく扱いつつ、勉強会だからこそ出来る交流やデモも試みていきたいと思います。
次回のFM-Kyushu勉強会について
次回の勉強会は2012年6月9日を予定しています。内容はまだ確定していませんが、勉強会だからこそ可能な企画を検討中です。決まり次第、このブログやメーリングリストでお知らせします。

