Report

イベントのレポートです。 >> 写真へ >> アンケートの声へ

第55回 インポート/エクスポートを考える
・開催日時:2010/01/16 18:00-19:00
・開催場所:Apple Store Ginza 3F シアタールーム
概要:
Excelの元ネタをFileMakerに取り込みたい、基幹システムから商品マスタのデータだけもらってきたい、または反対にFileMakerのデータを別のシステムで活用したい、など、FileMakerと外の世界をつなぐ架け橋となるのがインポート/エクスポートです。FileMakerの中でも、集計やデータセットの複製などで広く使われます。今回は、インポート/エクスポートの基本からちょっと進んだ使い方まで、実例を元にご紹介します。
レポート:
異常とも思える早さで正月が杉、もとい過ぎ、既に仕事モードは定常回転数に戻っている。この短い正月休み、スピーカーいじりに気合いが入った。某J社の有名モデルの超改造にかれこれ1年ほど断続的に取り組んでいるが、あと少しの所で特性が今ひとつフラットにならず最近ではf特グラフよりワタシの方が凹んでいる。しかし今年は長年の夢である「ドライバ + ホーンで30cm以上の2wayスピーカー」を組むのだと機を窺っている。金物の再現力はやはりドライバ + ホーンでしょう。問題は何回費用を見積もっても...orz だという点だろう。凹むわ。
じゃ本編いってみよ〜。

第55回 FileMaker Fun Night!「インポート/エクスポートを考える」
お題は...
FMテクニック「Get関数徹底解説」
恒例Tips対決!
【特集:インポート/エクスポートを考える】



●FMテクニック「Get関数徹底解説」
(茂田さん)
Get関数すなわち取得関数。その目的は、判断材料にしたり処理の素材を収集したりと多岐に及ぶ。さながら我々の目や耳あるいは手にさも似たりと。
92種類もあるというが、実は数えたことはない。そういえば昔はStatus関数なんて呼んでたっけ。

・システムの状態を取得する。
・値のセットはできない。
・リアルタイムには動作せず、式が評価された時点の値を取得する。

以下は茂田師匠的な分類

▼アカウント情報系
そのときログインしているアカウント情報を取得する。
ユーザに応じて動作や表示を切替えるのに便利。開発者から見れば、「開発者がログインしているときだけ、こ〜んなものや、あ〜んなものも表示される」ってのは強力な助っ人。

▼ウィンドウ表示系
画面やウィンドウの状態を取得する。
左位置、上位置とサイズの組み合わせでウィンドウをどのように表示するかを動的に制御できる。

▼キー入力系
Get(トリガキー入力):スクリプトトリガで起動したとき、どのキーが押されていたのかを知る→振る舞いを切替えるための手がかりにする。
Get(アクティブ修飾キー):ShiftやOptionなど、起動時に押されていた修飾キーを知る→これも振る舞いを切替えるための手がかりにする。

▼システム状態系
Get(アプリケーションバージョン):FMPのバージョンを調べる→それに応じて動作を切替える。
他にも、システムの情報によって振る舞いを切替えるための情報取得にはこんな関数も。
Get(システムIPアドレス)
Get(システムNICアドレス)
Get(システムバージョン)
Get(システムプラットフォーム)

▼スクリプト情報系
スクリプト内でリアクションを取得し引数にセットする。Get(スクリプトの結果)とか。

▼テキストカーソル情報系
Get(アクティブ選択サイズ)
Get(アクティブ選択位置)
この2つがあれば、テキスト内のいかなる範囲であっても文字列を取得できる。

▼ファイルパス系
Get(デスクトップパス)は、使い慣れるととても便利だ。
Get(ドキュメントパス)は時間がかかる事があるので注意した方が良い。
ここで、Get(ファイルパス)は、そのファイル自身の置かれているパスを取得する関数だが、他のファイルへアクセスするためにそのパスを取得しなければならない場合など、自身のパスを原点として相手を特定できる事が多いので、そのための材料として有用だ。

▼レイアウト系
Get(レイアウト表示状態)は、現在の表示モード(フォーム/リスト/表)を返す。

▼レコード情報系
カレントレコードの各種情報を取得する。レコード総数やレコード番号、レコード編集回数などがある。

▼画面情報系
Get(スクリーン幅)とかGet(スクリーン高さ)とか。Get(スクリーン深さ)は少し趣が違って表示色数を返す。

▼繰り返し系
Get(アクティブ繰り返し位置番号)カーソルが入っている繰り返しポジションを取得する。ピンとこない率高そうだが用途は深い。

▼選択オブジェクト情報系
Get(アクティブフィールド名)
Get(アクティブレイアウトオブジェクト名)


動的な処理を行うには状態を評価してそれに応じた動作をさせなければならないのだが、その判断材料はGet関数で取得できる場合がとても多い。
言い替えれば、Get関数を自在に使いこなせれば、ちょっと凄い動作ができたりもするので、上記のような分類を意識しつつ、うまく使っていきたい。

Getは助かる。あっしもかなりの部分をコレに依存してる。もはやGet関数がないと何も作れないのではないかと思うくらいだ。しかしこうして一覧してみると、まだ良く知らないネタが幾つもあることに今更ながら気付いたり。深いのう。うむ。



●恒例 Tips対決!


・竹内さん
 Get関数 (下の方にあるので選ぶのがたいへん) を素早くダイアログから選択するには、関数種別のプルダウンが開いた状態で、コマンド+下矢印キーを押すと一番下の関数が選択されるので、そこから上矢印キーを必要回数押して取得関数を選ぶ。更にタブキーで関数一覧をフォーカスしておき、上矢印キーを押せば最も下にあるGet関数が選択される。
 Get関数の中でも常用するものは下の方に多いのだ。

・Shinさん
 ・改行シンボルはOption+7で入力されます。同様に数字やコロンの組み合わせで、不等号なども入力できるのでお試しを。
 ・ScriptMakerダイアログで、スクリプトステップ一覧側にフォーカスしておき、例えば「i」と入力すれば「if」ステップが選択され、スペースを押すと入力される。
  日本語のステップ名であっても、文字入力を確定すれば同様に動作する。

・茂田さん
 フィールド参照の値一覧で、最上段に「すべて」次に区切線、その下が実データといったものは、1つのフィールドに改行区切りで値を入力すれば実現できる。
 新しい値の増加に対応するには、スクリプトトリガで参照先フィールドを更新すると良い。

・山本さん (スプラッシュ) 
 レイアウトオブジェクトの矩形を角丸矩形にするには、そのオブジェクトを選択してボタン設定を開き、動作を指定せずに角丸を選べば良い。

このところ、テキストで表現するのが苦しいパターンが続いてましたが、そんな中で山本さん天晴れなり。
みんなで、こういうのがもっと隠れてないか探しましょう。



●【特集:インポート/エクスポートを考える】
(竹内さん)
インポートは読み込み→テーブルに既存の外部データを投入する。エクスポートは書き出し→インポートの逆だね。CSV、エクセルやデジカメ、ODBCといった、いかにも別システムからのデータを受け入れるパターンもあれば、増分データをシステム改造後に自分自身へ取り込むような場合もあるだろう。どういった場合であれ多数のテーブル×フィールド×膨大なレコード数をさばく為には戦略が必要だ。精神力だけで取り組むとたいへんな間違いをやってしまうのがインポート/エクスポートなのだ。

▼まずインポートからやってみる。
1. テーブル間の関係を整える。
2. フィールド間の関係を整える。

フィールド間の関係を整合させる為に「照合名順」とか「カスタム順位」なんてオプションがある。
インポートしながら新規のテーブルを作らせることも可能だ。
しかし、その際に計算フィールドにきちんと計算式が作成されることは知らなかった。

▼次にエクスポート。
対象とするTOを選んで、必要なフィールドを指定のうえ出力する。
エンコーディング指定を忘れてはいけない。
ここで、今更聞けない「グループ化」という要素がある。便利だが意外に利用率は低いのではないか。是非試されたい。

「レコードを○○として保存」という機能もある。excel型式とpdfがある。
ポイントは、そのとき表示されているレイアウトに置かれたフィールドの値が選択的に出力されることだろう。

▼サーバとの併用ワザ
v10からだが、インポート/エクスポートはサーバサイドでも実行可能になった。利用するにはAdminからスケジュールを登録して実行させることになる。
ログを自動インポートさせて解析をラクチンにするとか、テーブル参照でユーザ認証を行う場合のユーザ変化分のセットとか、使い方はいろいろありそう。

▼他にも用途は多い
・印刷開始レコードの自由な設定
 印刷用の一時テーブルに値を読み込むことで、ラベル用紙の途中からプリント開始するとか。
・動作が高速なので、単に対象レコードの複製に利用してもメリット大なり。
・親レコード複製の際に子レコードを丸ごと複製するとか。
 関連レコードへ移動しておき、一気にエクスポートして直後にインポート。キーフィールドに新しい値をセットすれば複製完了でし。

▼では、インポートに潜む罠とは
・フィールド間の関係を整えるところに最大の罠あり。
 常に照合名順しか使わないのであれば関係ないが、カスタム順を使う時は注意が必要だ。
 カスタム順の場合、順番しか制御されないので、カスタム順を使ったインポートスクリプトを作ってしまうと、以後はフィールドの追加や削除が困難になる。

そこで、Merge形式(1行目がフィールド名、2行目以後がデータ行)のテキストを利用するために、XSLTを使ってテストしてみたら、成功したようだ。
デモもあった。確かにこれでカスタム順とはおさらば。fp7とfp5間のデータ授受にも強力な方法と言える。

しかし、もっと誰でもできる方法はないのかなあ。
Mergeで書き出し、フィールド名もデータとして捨てファイルに新規テーブルでインポート。
フィールド名変更ルールのテーブルを用意しておき、1レコード目(フィールド名になる所)の文字列を検索置換したうえ再度Mergeで書き出して...とか。


次回は2/20開催。「条件付書式の掘り下げ検証」だす。

おまけ(筆者quiz:FileMaker v1.0 がリリースされた1985年当時に開発元だった会社名は何でしょう。注:名前に「Pro」が付いていない。)
前回の問題(リレーションシップグラフで使用される「X」シンボルの正式な名称を答えよ。)の回答→「デカルト積」(個人的には「バッテンリレーション」の方がピンとくるのだが...)。

Reported by 金丸康明



アンケートのご協力、どうもありがとうこざいました!
ご意見、ご要望やご感想はこらちからお寄せください。 >> ご意見箱

Special Thanks to:
 FileMakerまんが:たまみそさん(今回のまんがはこちら
 イベントレポート:金丸康明さん
会場の様子:>> Topへ


Get関数、いろいろ使えます




会場からあっと驚くTips登場!



サーバサイドでの仕込み


汎用的に使い回せるのがポイント!








某所では、FileMakerベビーブームである

来場のみなさんのご感想:>> Topへ
男性XSLTについて知りたいです
男性たまたまApple Storeにきていて参加させてもらいました。もう少し長くてもうれしかったですが...。次回 or 他のセミナーも参加したいです。
男性いろいろなサンプルファイルを見せて欲しい。できればファイルをHP上で事前にダウンロードして解説もらえるとうれしいです。
男性ボタン設定のスタイルオプションで長方形のレイアウトオブジェクトを後から角丸長方形にできるとは知りませんでした。目からウロコのTipsです。
男性Webビューアの利用法、例えば旅費計算等のAPL利用
男性直接の参考にはならなかったが、面白かった。
男性明けましておめでとうございます。今年も毎回参加させていただきます。よろしくお願いします。
男性よかったです
男性かなり昔OS7(Mac)の時にFMを見ていたのでイベントでFMがあったので参加しました。まったく今風の仕様になっていて驚きですネ。
男性・すみません、疲れで少し眠ってしまいました。ビデオポッドキャストで配信してもらえるとうれしいです。→難易度高いですよね...。
・xlsxファイルのインポートがうまくいかなくて、いつもxlsファイルでインポートしています。少し面倒で困ってます。
男性XSLTが全く知識がないのでほぼ理解が難しかった。そのあたりをもっと知る必要があるなと思った。FFNとは直接は関係ないが、前回のレクレアルさんのメルマガを登録タイミングの差で受け取りのがしたので、できればもう一度配信していただきたいです。
男性XSLTの無理的なエクスポートおもしろかったです。
男性今回も内容の濃いイベントでありがとうございました。TIps対決の図形の話すごかったです!茂田さんの関数はさすがでしたし、竹内さんのインポート/エクスポートも良かったです。
男性インポート後半よくわかりませんでした。
女性インポートではひや汗がでる経験もあるので、今日の方法を試してみたいと思います。
男性参考で見させてもらいました
男性今年もよろしくお願いします
男性Bentoユーザではありますが、将来FileMakerもさわって遊べるようになりたいなと思いました。

Copyright © 2004-2010sevensdoor.com. All rights reserved.