あなたにもできる
FileMakerを使ったシステム開発
初めてマニュアル
・社内で情報を共有化したい
・紙や Excel からデータベースへ移行したい
・外出先から会社の情報へアクセスしたい
・他の業務をしながらできる
FIleMaker は FileMaker 社の商標です。本文中に登場する製品等の名称は、各社の商標です。また、本文中の表記を省略 させていただきます。また、この本を読んで作成したデータベースにおいて起きたトラブルに関しては当方では責任を持 ちませんので、あらかじめご了承のうえ、お読みください。また、本書作成上で内容に関して正確であることを慎重に精 査しておりますが、本書・サンプルファイルの不備で起きた損害やトラブル等は一切責任を負いません。お使いの環境な どによって変わる場合がありますのでご了承ください。 本書で書かれている情報は 2014 年 5 月現在の情報です。変更される場合がありますので、現在の情報を確認されるよ うお願いいたします。
基本的に環境として Windows を使用していることをご了承ください。しかし、FileMaker 上での操作はほとんど OSX でも変わりはありません。OSX をお使いの方でも FileMaker の使い方は問題なく学ぶことができます。
まず、本書を手に取ってくださりありがとうございます。業務の IT 化や情報の共有化が進み、大企業だけで はなく、中小企業に対しても競争力向上やや効率化を進めるための方策が求められる時代になりました。大企業 であれば、数百万~数千万円という予算を付けて、システムを構築し業務を支援できるでしょうが中小企業はそ ういうわけにはとてもいきません。そういった IT 競争力という点で中小企業が目をつけるべき製品が FileMaker です。FileMaker の最大の特徴は「自分でできる」です。外注して多額の費用が掛かるシステム開発を自分でで きる可能性があるのが、この FileMaker です。Access や Excel といった標準的に PC にインストールされている 製品を使って帳票を作ったり、データを保存したりして利用している中小企業が多いのが現状です。こういっ た製品は、多人数での情報の共有には向きません。FileMaker は FileMaker Server という製品を利用して、イン ターネット経由でのデータベースへのアクセスが可能で、FileMakerGO という iOS 用のアプリを使用して、外出 先から会社のサーバへアクセスし、在庫の確認をしたり、業務日報などを書き込んだりすることが可能です。し かも、システム開発の知識やプログラミングの知識をほとんど必要とせずに構築することができるのが、この FileMaker です。この製品を使わない手はないのですが、もともと Mac でスタートした製品ということからか Windows ユーザにとってはマイナーなソフトであるかもしれません。でもそんな理由で使わないのは非常にもっ たいないことだと感じます。基幹業務をまだ Excel で行っていませんか? そんな企業におススメのソフトです。 私は FileMaker10 から使用を本格的に始めました。当時、FileMaker の機能を解説した書籍はありましたが、 実践的な書籍というものを見つけることができませんでした。私も本書に登場する鈴木さんのように他の業務と 兼任しながら、業務をなんとか効率化し情報を共有化できないものかといろいろな方法を考えていました。私が その部署に配属される前に発注システムの外注の見積もりを取ったそうですが、500 万円くらいかかるというこ とで断念したそうです。中小企業でしたからそんな金額はもちろん出せません。そこでためしに FileMaker を使っ てみることにし、成功することができました。いくつか業務のシステムを開発しましたが、おそらく他のプラッ トフォームで外注すると一千万円は超えるでしょうか。規模が大きければ、見合う金額でしょうが中小企業では とても見合いません。 本書は「あなたにでもできます」を意識し書いています。また、私が FileMaker を使い始めたときに、または FileMaker を導入しようか検討している時期に「こんな本があったらよかった」という本にしたつもりです。本 書を読んで「こういうことができるのか」と理解してもらえたら幸いです。 初心者がとりあえず、FileMaker のやれることを学びながらシステムらしきものを作ってみるということで書 いていますので、FileMaker のすべての機能を掲載しているわけではないことをご了承ください。とりあえず、 業務を効率化・情報を共有化したい方のために「感覚をつかんでもらえる部分」だけに絞っています。 さあ、FileMaker を使って業務の効率化・情報の共有化を始めましょう。 2014 年 9 月
突然情シスに!………13
FileMaker で作るシステムで必要な費用 ……… 15
FileMaker Pro Advanced ……… 15
FileMaker Server ……… 15 メンテナンスとは?……… 15 サーバはクラウドかオンプレミスか……… 16 まとめ……… 16
目次
Contents
Section1
はじめての FileMaker ……… 13
Section2
FileMaker システム開発の実際 ……… 17
システムを開発する前に………17
要件をまとめる……… 18リレーショナルデータベース………18
セキュリティ制御………19
アカウント&パスワード……… 19 アクセス権……… 19 見せるデータを制御……… 19FileMaker 上の手順について ………19
必要なもの………20
Section3
テーブル定義 ……… 21
新しいデータベースを作成する………21
新しいテーブルを作成する………21
フィールドのタイプ………23
テキスト……… 23 数字……… 23 日付……… 23 時刻……… 23 タイムスタンプ……… 23 オブジェクト……… 23 計算……… 23 集計……… 23フィールドのオプション………24
グローバル格納……… 25Part1
~導入・基本編 FileMaker ってなに?~
繰り返し……… 26 索引……… 26 オブジェクトデータの格納……… 26
ハウスキーピングフィールド………27
テーブル定義の実際………27
Section4
レイアウトの操作 ……… 29
表形式………29
フォーム形式………29
リスト形式………30
ステータスツールバー………30
レイアウトモード………31
画面サイズ………32
レイアウトの保存………32
新しくレイアウトを作成する………33
Section5
リレーションシップ ……… 35
テーブルとテーブルオカレンス……… 35 テーブルオカレンスとレイアウト……… 35 データベースの正規化……… 35リレーションシップによって実現できる機能………37
他のテーブルのデータを表示……… 37 ルックアップ……… 37 ポータル……… 37リレーションシップをきれいに保つ………38
Section6
計算式と関数 ……… 39
計算式を使う場面……… 39 フィールドの挿入……… 40 演算子……… 40 関数一覧……… 40 計算式を記述……… 40いろいろな導き方がある計算式………42
関数の構造………42
Section7
スクリプト ……… 43
スクリプトステップ一覧……… 44 互換性……… 44 スクリプト作成……… 44Part2
~実践編 プロトタイプ売上管理システムを作ってみる~
Section8
システムの基礎となる部分の作成 ……… 47
テーブルを作成しよう………47
メモを見返す……… 47 商品分類別の売上……… 47 SV は担当店舗の売上が見られるように ……… 47 売上を集計する方法……… 48 昨年比を計算する……… 48 実際にテーブルを作ってみよう……… 49 uriage_master データの起点となるテーブル ……… 49 zone_master 店舗が所属するゾーンを分けるテーブル ……… 53 store_master 店舗を管理するマスターテーブル ……… 54 bunrui_master 分類を管理するテーブル ……… 55 売上をリレーションで集計するためのテーブルたち……… 56 リレーションをしよう!……… 57 フィールドの定義を変更……… 58 集計をする他のテーブルも変更……… 59 リレーションシップのまとめ……… 61検索について知ろう………62
検索モード・ブラウズモード……… 62 基本的な検索と複数検索条件(OR 条件) ……… 63 AND 検索 ……… 64 あいまい検索……… 64 検索演算子……… 65 FileMaker の検索パフォーマンス ……… 65ソートについて知ろう………66
Section9
インターフェイスの作成 ……… 67
メインメニューを作ろう………67
すべての起点「メインメニュー」 ……… 67 レイアウトとテーマ……… 68 レイアウトの整理……… 68 オリジナルテーマ……… 69 レイアウトパート……… 71スクリプトを使う場面………45
レイアウト上のボタン、フィールド・テキストに配置……… 45 スクリプトトリガ……… 45 サーバサイドスクリプト……… 45画面ステンシル……… 71 パートサイズの変更……… 72 テキストの配置……… 73 テキストのフォント、大きさ、色などを変える……… 73 スタイルの保存、テーマの保存……… 74 スタイルの上書きと復帰……… 75 パートの色(背景色)を変えよう……… 75 レイアウトを移動するボタンを作ろう……… 77 これから作るレイアウトを思い浮かべながらボタンを作成……… 79 ボタン一覧……… 79 オブジェクトのコピー……… 79 オブジェクトの整列……… 79 ボタンを業務内容などによって分類……… 80
売上入力レイアウト・閲覧レイアウトを作ろう………83
売上レイアウトの基本情報……… 83 複数のレイアウトを作るコツ……… 83 複数のレコードを一画面に表示するリスト形式のレイアウト……… 84 ヘッダ部分……… 84 クイック検索……… 85 フィールドの配置……… 86 フィールドの書式設定……… 87 パディング……… 87 角を丸く……… 88 日付の入力を簡単にする「ドロップダウンカレンダー」 ……… 89 疑似クイック検索を実行するスクリプトを設定……… 89 変数とは……… 91 ボタンにスクリプトを割り当てる……… 92 メインメニューへ移動するボタン……… 93 現在表示されている売り上げの集計……… 94 ボディ部分を作っていきましょう……… 95 パートラベル表示の変更……… 95 フィールド配置と調整……… 95 フィールドラベルを作ろう……… 96売上集計を閲覧するための3つのレイアウト………97
複製した後の変更点……… 97 フィールドの変更……… 97 スクリプトの複製(疑似クイック検索フィール)とフィールド作成……… 98 月間売上・分類別売上レイアウト……… 100 複数フィールドの疑似クイック検索……… 101 値一覧(基本) ……… 102 設定した値一覧を使う……… 103 値一覧(フィールドの値を使う) ……… 104Part3
~実践編 2 最初のレビュー、テスト、修正~
Section10
初めてのレビュー ………113
レビューをしよう……… 113
実際に仮のデータを入力してみよう……… 113 レビュー……… 115本社・SV のインターフェイス ……… 116
SV 用のメインメニュー ……… 116 動的値一覧……… 118 売上関連のレイアウト……… 120 できるだけ後々の手間を減らしておきたい……… 120 SV と本社の機能を共有する方法 ……… 120 条件によって変わるスクリプト If、ElseIf ……… 122 SV が検索に使うポップオーバーボタン ……… 123 ポップオーバーボタンを作る手順……… 123 本社のメインメニュー……… 125 タブコントロールを使おう……… 125グラフを使ったレポートを PDF 出力してみよう ……… 128
基本情報……… 128 新しいリレーション定義……… 128 レイアウトの作成……… 129 ポータルの配置……… 129 グラフの配置……… 131 印刷用(PDF 用)レイアウトの作成 ……… 134 印刷領域の表示……… 134 配置の見直しと印刷用の構成……… 136 ポータルの線……… 136 ポータル線の自作……… 137 PDF エクスポート ……… 139 PDF エクスポート(スクリプト) ……… 140カスタムダイアログと分岐条件を使ったエラー処理と支援……… 143
エラー処理……… 143 検索スクリプトの変更……… 144メインメニューから各レイアウトへの移動……… 106
売上入力……… 106 自動的に直近(今月)のデータを表示させる……… 107 メインメニューに検索の窓を作る……… 108 10 個のフィールドを追加 ……… 109 レイアウト上に配置……… 109Section11
セキュリティとアカウント ………145
アカウントとアクセス権……… 146
アカウントの編集とパスワード……… 146 アクセス権セット……… 147アクセス権設定……… 148
他のテーブルのアクセス権……… 150 レイアウトのアクセス権……… 152 SV・本社のアクセス権 ……… 153 メニューと使える機能……… 153 「スクリプトを完全アクセス権で実行」……… 154 拡張アクセス権……… 154スクリプトトリガ……… 155
OnFirstWindowOpen ファイルが開かれたときに実行される ……… 155 レイアウト関連のスクリプトトリガ……… 156 オブジェクト関連のスクリプトトリガ……… 156 売上額を検証するスクリプト内容……… 158Section12
FileMaker Server とネットワーク ………159
FileMaker Server の特徴 ……… 159 FileMaker Pro での共有 ……… 159
ネットワークの基礎知識……… 161
IP アドレス ……… 161 グローバル IP、ローカル IP ……… 161 ポート……… 161 ファイアウォール……… 161 NAT とパケットフィルター ……… 161FileMaker Server のインストールと設定 ……… 162
FileMaker Server のインストール ……… 163 Windows ファイアウォールの設定 ……… 168サーバへのファイルのアップロードと Admin Console ……… 171
サーバへのファイルのアップロード……… 171 もっとも簡単な方法―USB メモリなどで移動 ……… 171 FileMaker Pro の機能を使ってアップロード ……… 173 Admin Console の基本的な使い方 ……… 175 接続しているクライアントの情報閲覧……… 175 接続しているクライアントの接続解除&メッセージ送付……… 176 データベースの管理(開閉) ……… 177 データベースのバックアップ……… 178 アクセスログ……… 180サーバサイドスクリプト……… 181
売上を入力するレコードを自動で作る……… 181Section13
テストとメンテナンス ………188
テストをする上であるといいもの……… 188
FileMaker Pro Advanced ……… 188
スクリプトデバッガ……… 188 データビューア……… 189 2 台目の PC ……… 191 リモートデスクトップ……… 191 テストをお願いする際のポイント……… 193 マニュアル……… 194 メンテナンスの正体……… 194
Section14
機能の追加と Tips 集 ………196
集計用のテーブルにレコードを作成……… 196
他のテーブルのレコードを作成するイメージ……… 196 フィールドの作成、リレーションシップの編集、スクリプトの作成……… 196入力忘れ対策―FileMaker でメールを発信 ……… 199
昨年比を計算してみる……… 201
リレーションの設定―自己リレーション……… 201 ExecuteSQL 関数を使う ……… 204レポート形式……… 205
ExecuteSQL 関数で集計を行ってみる ……… 209
レコードの変更履歴を記録する方法……… 209
FileMaker のデフォルトの操作を制限する ……… 210
FileMakerGO を使ってアクセスする ……… 211
Microsoft Azure をレンタルサーバとして使ってみる ……… 212
Microsoft Azure で FileMaker Server を使う準備 ……… 214
Microsoft Azure の仮想サーバのアドレス ……… 216
Section15
Function Guide ………217
Exact ……… 217 LeftValues ……… 217 RightValues ……… 217 Length ……… 217 Middle ……… 217 MiddleValues ……… 218 Int ……… 218 Random ……… 218 Date ……… 218 Average ……… 219 Count ……… 219 Max ……… 219 Min ……… 219 Case ……… 220 GetNthRecord ……… 220 IsEmpty ……… 220
Loop と Exit Loop If ……… 181
スクリプトの内容……… 182
スクリプトをサーバでスケジューリング……… 184
テーブル名・フィールド名について ………22 何でもかんでも制限 ………25 計算フィールドか、計算値オプションか ………52 フィールドに値が存在する場合は置き換えない ………52 非保存の計算フィールド ………59 大きさ(サイズ)の単位 ………72 書式設定バー ………74 レイアウトの背景 ………77 レイアウトのデザイン ………78 オブジェクトの重なり ………82 グローバルフィールド ……… 101 Windows でのウィンドウ ……… 124 ズームできない ……… 138 まとめて設定 ……… 149 セキュリティの設定変更 ……… 151 完全アクセス権は便利すぎる ……… 152
FileMaker Technical Network サブスクリプション ……… 167
LAN 上のサーバが見つからない ……… 187 スクリプトステップ「レコード / 検索条件 / ページへ移動 [ 次の ] 最後まできたら終了 …… 198 ドキドキする「フィールド内容の全置換」 ……… 204 計算式、関数は「習うより慣れろ」 ……… 219 right ……… 52 Left ……… 52 Sum ……… 59 Get( 日付 ) ……… 107 LeftWords ……… 107 RightWords ……… 107 Month……… 108 Year ……… 108 Day ……… 108 Get(ウィンドウモード) ……… 121 Get(アカウントアクセス権セット名) … 121
本文中で紹介している Function Guide
Get(デスクトップパス) ……… 142 Get(ドキュメントパス) ……… 142 Substitute ……… 142 Get(システムプラットフォーム) ……… 142 Abs ……… 142 Get(最終メッセージ選択) ……… 158 ValueCount ……… 183 GetValue ……… 183 ExecuteSQL ……… 183 Get(対象レコード数) ……… 198 Get( レコード番号 ) ……… 198 Let ……… 210 Get(アカウント名) ……… 220 Get(アクティブフィールド内容) ……… 221 Get(アクティブフィールド名) ………… 221 Get(ホストのタイムスタンプ) ………… 221 Get(時刻) ……… 221 Get(タイムスタンプ) ……… 221 Get(最終エラー) ……… 222 Get(持続 ID) ……… 222 Get(レコード ID) ……… 222Column
Part1
導入・基本編
はじめての FileMaker
突然情シスに!
アクセサリー等を中心とした雑貨を販売するA社の 本社・営業管理の鈴木優子さんは、普段は店舗から送 られてくる伝票類などを入力したり、整理したりする 管理業務に携わっています。ところがある日、上司で ある田中課長に呼び出されました。 鈴木さんにちょっとお願いがあるん だけど。全体的に店舗の業務を効率 化と情報共有のスピードアップがで きないかと部長に言われているんだ。 まずは売上報告について検討してく れと言われているんだけど、何かい いアイディアはないかな? 急にそんなことを言われても困って しまいますけど…… 田中課長 普段から、社員のPCの設定を手伝ったりしていた 鈴木さんは本社社員の中で最もPCに詳しいというこ とで、田中課長に意見を求められたのです。とはいっ ても、多少PCが使えるというだけで、何もそれ以外 に知識のあるわけではない鈴木さんは困ってしまいま す。 鈴木さん 鈴木さんしか頼れそうな人がいない から、まあ、ちょっと考えてみてよ。 田中課長 突然、そんなことを言われ、戸惑う鈴木さん。ひと まず、「分りました」といろいろ調べてみることにし ました。 A社は 30 店ほどの店舗を持つ会社です。田中課長 から「売上報告」について、別な方法で報告すること はできないかと、上司から言われ、それを鈴木さんに 伝えました。A社では、毎日の売り上げを記録した Excel のファイルをメールで本社の鈴木さんへ送り、 鈴木さんはそれを全店舗分まとめ、共有フォルダで保 存して共有化しています。店舗にも在籍したことのあ り、また現在この業務を担当している鈴木さんにとっ て業務の内容と流れは当然頭に入っています。あとは それをどうやって上司の要望に応えるかだけでした。 規模が大きい会社であれば、情報システム部門があ り、そこで専門の人が対処するのでしょうが、中小企 業であるA社はそんな余裕はありません。限られた予 算、今いる人員で何とかしたいわけで、鈴木さんにお 鉢が回ってきたわけです。そこで鈴木さんはシステム エンジニアをしている友人にアドバイスを求めること にしました。 友人 システムを作ることになるけど。 システム……。なんだか大袈裟だね。 鈴木さん 友人 外注するの? 自社で? 外注はあんまり考えてないけど、外 注するとどれくらいになる? 鈴木さん友人 ピンからキリまでだけど、50 万~ 100 万くらいはかかるんじゃないか な。そんなに難しいものじゃないみ たいだから。 結構かかるのね。順次、情報の共有 化や業務の効率化をやっていくみた いだからね。 FileMaker ? 鈴木さん 鈴木さん 友人 これからシステム化に順次取り組む ということであって、優子の規模の 会社だと、FileMaker という選択肢も あるね。 友人 データベースのソフトで、開発ツー ルも付いている市販のソフトよ。や ろうと思えば、それなりの規模のシ ステムを作ることも可能よ。 エンジニアの友人から FileMaker というソフトがあ るということを聞いた鈴木さんは、そのソフトについ て調べてみました。 プログラミング、データベースに関する知識がほ • とんど必要ない(あった方が、やりやすい) FileMakerServer を使用するとインターネット越し • にシステムに接続することが可能 サーバのスペック次第というところもあるが、そ • こそこの規模も可能 Web と連携する機能が豊富 • iOS からのアクセスが可能 • という特徴が見えてきました。デメリットはないの かと調べていくと、「遅い」など否定的な意見も目に つきました。 友人 FIleMaker ってシステム開発の知識 がない人が簡単にできそうだという ことで使い始めるから、どうしても 遅いと感じる場合があるんだと思う よ。どんなものも軽く作る方法、重 く作る方法はあるから。どんなこと でも工夫は大事よ。どんなソフトで も使い方を間違わないようにしない と。 友 人 の ア ド バ イ ス も あ り、 鈴 木 さ ん は 上 司 に FileMaker を提案することにします。その提案に先立 ち、鈴木さんは FileMaker を導入するのに必要な費用 を計算することにしました。 名前 数量 単価(税込) 価格 備考
FileMaker Pro Advanced 1 61,236 61,236 開発支援ツール付
FileMaker Pro 35 34,528 1,208,466 クライアントソフトとして使用 FileMaker Server+5 同時接続 1 219,672 219,672 サーバソフト iOS の使用を想定
して、同時接続を購入 合計 1,489,374
図 1-1 鈴木さんのケースの場合導入費用 ボリュームライセンス VLA ※金額は概算
名前 数量 単価(税込) 価格 備考
FileMaker Pro Advanced 1 年メンテナンス 1 12,247 12,247 FileMaker Pro 1 年メンテナンス 35 6,901 241,542 FileMaker Server+5 同時接続 1 40,680 40,680
Microsoft Azure 仮想マシン(M) 1 か月 12 14,752 177,033 ※使用状況により異なる 合計 471,502
からです。図 1-1 は FileMaker のソフトの導入費用で す。FileMaker でも他のソフトと同じようにボリュー ムライセンスがあり、数多く購入すると割引があり ます。今回鈴木さんの例では、30 店舗分 + 本社従 業員 5 人分 + 鈴木さん用で開発ツールの付属した Advanced 版を購入を見積もりました。FileMaker の ボリュームライセンスの種類にはいくつかあり、今回 選択したのは VLA という永続ライセンスです。また、 FileMakerServer というサーバ用のソフトも必要にな ります。約 150 万円の見積もりになりました。 意外に高いと思われたかと思います。確かに数字 だけをみると高額かもしれません。ただ、ひとつ FileMaker の特徴として、「ひとつのサーバに複数の システムを載せることができる」という点がありま す。実際に、業務システムとして FileMaker を採用し ている企業では 10 や 20 のシステムを一つのサーバ に載せているところはざらに存在します。いろいろな ところに散っているシステムをひとつのサーバに統合 する、今後複数のシステムを開発していくということ を考えているのであれば、FileMaker の方がお得です。 FileMaker Advanced
FileMaker Advanced は FileMaker Pro に 開 発 を 支 援するツールがついた開発用のエディションです。 FileMaker Pro だけでもシステムを開発することは可 能です。FileMaker にも関数やスクリプトといった、 簡易プログラミングが存在します。スクリプトが、誤っ て設定されていないかなどを確認するスクリプトデ バッガといったツールが付属しています。社内で開発 される場合は、1 ライセンスは購入しておきます。 FileMaker Server FileMaker で作ったシステムにアクセスする場合、 同時に接続する人数が 5 人までなら、FileMaker Pro でシステムを開くことも可能です。それ以上の場合や、 データ量が多く、サーバ側で計算などのバッチ処理を させたい場合などは FileMaker Server が必要です。少 人数で FileMaker Server を導入しないで費用を抑える 方法もあります。 ス契約というものがあります。これは、通称「アップ グレード保険」と言われており、メンテナンス契約中 にバージョンアップがあった場合、無償で新しいバー ジョンを使えるという契約です。VLA は永続ライセ ンスですので、同じバージョンで長く使い続ける場 合は、メンテナンス契約は必要ないかもしれません。 FileMaker のバージョンアップは最近は 2 年程度に 1 回程度行われています。現在のバージョンは 13 です。 新しい機能を常に使いたい • FileMaker Server の同時接続ライセンスを使ってい • る
iOS(iPhone や iPad)で FileMaker を使用する • このような場合にメンテナンス契約を更新した方が いいでしょう。メンテナンス契約は新規で VLA を購 入すると 1 年間の契約が付いてきます。これを 1 年 後更新するということになります。上記にあてはまら ない場合は、更新しないという選択肢もあり得ます。 上記にあてはまる場合は、メンテナンス契約を更 新します。なぜ更新しなくてはならないのでしょう か。「同時接続ライセンス」を使っている場合ですが、 この「同時接続ライセンス」というのは、FileMaker WebDirect という Web 公開の機能や、iOS 用の無料 アプリ FileMakerGO を使って FileMaker Server にア クセスする場合に最大同時アクセス数分必要になりま す。この「同時接続ライセンス」はメンテナンス契約 中でないと、ライセンス数の追加ができません。 ま た、3 番 目 の「iOS(iPhone や iPad) で FileMaker を使用する」場合ですが、これは FileMaker の問題というよりも、iOS 上の仕様の問題と言える でしょう。iOS はバージョンアップされる時に OS の仕様wが変更される場合があり、それに伴って FileMaker 上で使用する機能に制限がつくことがあり ます。こういった場合に、FileMaker は新しいバージョ ンで代替の機能を提供することがあります。制限され た機能がそのシステムでは必要不可欠なものである場 合、FileMaker のバージョンをアップさせるしかなく なってしまいます。iOS のバージョンを上げないとい う選択肢もあるでしょうが、その場合セキュリティの 問題もありますし、社内の全ユーザーにそれを周知徹 底させることは難しいことです。iOS は OS の更新を 促すので、気付かずに更新の手順を進めてしまうとい
うことも多くあります。 ちなみにボリュームライセンスのバージョンアップ の方法として、「アップグレードライセンス」という 方法もあります。これは新規の価格の 60%でバージョ ンアップできます。メンテナンス契約は新規価格の 20%ですので、3 年に一回程度バージョンアップする 可能性がある場合はメンテナンス契約のほうが有利に なります。その企業での使われ方によって選択すると いいかと思います。 今回鈴木さんの会社の例では、iOS の端末をすでに 使用しているので、メンテナンス契約をするという選 択をします。 図 1-2 に「Microsoft Azure 仮 想 マ シ ン 」 と い う 項目があります。FileMaker Server を導入する場合 専用のサーバ機が必要になります。このサーバ機に FileMaker Server というサーバ用のソフトを入れて、 システムを管理します。サーバ機の OS として下記の 選択肢があります。 サーバはクラウドかオンプレミスか OS 名 Windows Server2012 Windows Server2008 R2 Windows 8 Pro WIndows 7 Professional OS X Mavericks v10.9.x OS X Mountain Lion
OS X Mountain Lion Server v10.8.5
http://www.filemaker.co.jp/ より サーバ機用の OS としていろいろな選択肢があり、 その中にはクライアント OS も含まれています。サー バ機自体はクライアントが使用しない専用機を用意す ることが必須ですが、OS はクライアント OS も選べ ます。ちなみに 64bit に限られます。 頭を悩ませるのはサイジング(サーバ機のスペック をどうするか)でしょう。 新 規 で 購 入 す る 場 合 は、 約 6 万 円 ~ 購 入 で き る Mac mini で も 可 能 で す。 サ ー バ 機 が Mac で も Windows でもクライアントも Mac でも Windows で もアクセスすることは可能です。サーバ機が Mac で クライアントがすべて Windows でも問題ありません。 アクセス数が多いようであれば、HP や Dell などの Windows のサーバ機を購入することでもいいでしょ う。 これまでの話はオンプレミス(自社でサーバを設置 して運用)でしたが、Microsoft Azure などのクラウ ドで運用することもできます。 クラウド(仮想マシン)のメリット 可用性が高い(止まらない) 新しいサーバを設置する際に素早くできる 時々に応じて、サーバのスペックが変更できる 面倒な設定を省ける(RAID や UPS などの周辺機 器) クラウド(仮想マシン)のデメリット インターネットの障害があると使えない 第 3 者に管理をゆだねなければならない(セキュ リティ上のリスク) サーバの場所が物理的に遠く、スピードが遅く なる場合がある 長期間使用する場合、比較的割高になる クラウドかオンプレミスかを選択するにあたり、ど のメリットを取るかで変わるかと思います。どうして も止められないということであれば、クラウド、ある 程度ネットワークの知識等があり、設定や運用等が面 倒でなければオンプレミスということになるでしょう か。また、はじめはクラウドを使い、さまざまな知識 等を身につけ、慣れてきたらオンプレミスに変えるな んていう考えもあります。 サーバやらなんやらいろいろ難しいと思えるかもし れません。FileMaker の場合、展開するにも他よりか は非常に楽といえるでしょう。たとえば、Microsoft Azure を使用する場合は、仮想サーバの立ち上げから、 FileMaker Server を展開し、使えるようになるまで、 小一時間あれば可能です。オンプレミスにしても、サー バの電源スイッチを入れてから、ネットワークの設定、 展開などを含めても数時間ですむでしょう。もともと Mac のソフトですから、直感的に使いやすいという ことには長けています。 鈴木さんはひとまず、クラウドで運用することにし ました。他の業務も行っているので、できるだけ時間 を節約したいという考えからでした。 まとめ
図 5-8 ポータル
リレーションシップグラフをきれいに保つ
リレーションシップグラフをきれいに保つというとちょっと変な感じですが、常に意識する必要があります。 きれいにとはなんでしょうか? 整列、色付け、メモなどを利用して可読性を向上させる • リレーションを不必要に増やさない努力をしてみる • FileMaker でも他でもそうですが、後になって「なんだったかな」というのはよくあります。後で見返したとき、 何か変更を加えるとき、他の人でもわかりやすいように上記の点に気を付けることは重要です。このリレーショ ンはどういった用途で組んだものなのかといったことをリレーショングラフ内のメモ機能で残したりします。 リレーションを不必要に増やさない努力をしてみるということですが、リレーションを不必要に増やしていく と、データベース自体が重くなります。また、検索において、レイアウトに紐づいているテーブルからリレーショ ンでつながっているテーブルへの検索は遅くなっていきます。本当に必要なのか、他の機能で代替できないもの かを考えてみる必要がある、ということは覚えておいてください。 通常、レイアウトでは指定したテーブルオカレンスとその関連テーブルのデータしか表示できないことは前に も出てきましたが、ExecuteSQL 関数はそれに関係なくデータを取得することが可能です。つまり、場合によっ てリレーションの代替えの機能になる場合があります。 図 5-9 FileMaker 画面上でのポータル店舗用インターフェイス
Section9
インターフェイスの作成
このセクションはユーザーから見るインターフェイス、レイアウトの部分の作成をしてきましょう。まずレイ アウトを作成するには、どういったレイアウトが必要かを考えることは重要です。レイアウトを作る前の設計図 を画面移管図といって、まずシステムを開くとどういった画面が表示され、そこからどの画面へいけるなどといっ た情報を図式化します。そうすることによって、作るべきレイアウトが見えてきます。画面移管図は手書きでも 表計算ソフトでも何でもいいでしょう。また、Web には画面移管図などを作成できるサービスも存在しますので、 有効に活用してきましょう。 メインメニュー 売上入力 月間売上閲覧 日別売上閲覧 月間分類売上閲覧 エクスポート エクスポート エクスポート エクスポート 上記は店舗用の画面移管図を簡単に作ってみました。おそらく最終的な形態としてはこれでおさまらないと思 います。筆者も開発する前にこういったものを作りますが、この時点でどんなに作りこんでも、後で思いついた りとかで付け足すことが多いので、ここでは大まかなイメージさえできればいいでしょう。また、SV 用のインター フェイス、管理者用(本書では鈴木さん)の管理画面が必要となります。 すべての起点「メインメニュー」 システムを起動すると、まずログインするための画面が開きます。ログインに成功するとこの「メインメニュー」 を必ず表示するようにします。この画面は、すべての起点で、システムといわれるものの多くにはこのメインメ ニューというものが存在すると思います。この画面をいかに便利なものにするかが、ユーザーにとって使いやす いシステムだと感じさせるものではないでしょうか。ただ、あまりにも便利にしすぎようとすると、雑多なもの になってしまい、逆に不便を感じることもありますので、ほどほどにといったところでしょうか。 まずメインメニューを作るにあたり必要なことがあります。FileMaker ではレイアウトに必ずテーブルオカレ ンスを関連付けなくてはいけません。メインメニューに、専用のテーブルを作成するか、既存のものを割り当て るかを決めます。今回は店舗の社員が使うメインメニューに「store_master」を割り当てます。ログイン後にス クリプトで「store_master」の自分のアカウントを検索し、移動します。「store_master」にユーザーの検索履 歴等を保存したりすれば、マイページのような使い方ができますので、このテーブルを割り当てます。あとあと いろいろな使い方がメインメニューでできるようになります。 また、iOS からのアクセスがある場合、メインメニューを兼用で作るか、別に作るかの選択も行います。シス テムの内容が幅広い場合は、分けたほうがいいでしょう。今回は内容は多くはないので、兼用にしたいと思います。メインメニューを作ろう
トステップを変えたいときに使います。if で設定した条件に合わなかったときにさらに条件によって判定する ElseIf、どの条件にも合わなかった場合の Else があります。 使い方の例としては、今回のようにモードによって処理を変えたい、アクセス権によって処理を変えたい、入 力されたデータによって処理を変えたり、また処理を続行せずにスクリプトを終了させたりもできます。
If[ 条件式 ]
スクリプトステップ
ElseIf[ 条件式 ]
Else
EndIf
条件に一致しない場合 ※条件に一致しないとは条件式が「0」を返す場合、 一致するのは「1」を返す場合 条件に一致しない場合 条件に一致するスクリプトステップ
条件に一致するスクリプトステップ
すべての条件式に一致しないときに実行基本的な If、ElseIf について図式化してみるとこのようになります。ElseIf および、Else はオプションで、なく ても構いません。必ず必要なのは、If と EndIf だけです。また、If、ElseIf、Else の後に続くスクリプトステップ は何行でもかまいませんし、さらに If を入れて分岐することも可能です。このスクリプトはよく使いますので、 自分でいろいろな分岐を組んでみたり、条件式を設定したりして慣れおくことが重要になります。
基本情報
グラフを使ったレポートを PDF 出力してみよう
レビュー時に要望のあった「レポート」を作成していきます。「レポート」といっても、FileMaker 機能のレポー トではありません。一般的な意味でのレポートで、売上の情報と視覚的に表現するグラフを配置し、印刷を想定 して PDF でエクスポート(出力)するものです。今回、分類別月別売上集計をグラフ付きのレイアウトで表現し、 閲覧用と印刷用のレポートを作っていきます。 まず今回レポートを作る上でのトピックスを挙げておきます。 新しくリレーションの定義を作成 •• レイアウトに新しく定義したテーブルオカレンス「uriage_monthly2」を割り当てる •• ポータルで分類別の売上を表示 •• 印刷用、閲覧表の2つのレイアウトを作成 •• 新しいリレーション定義 月間の売上と、分類別の売上、グラフを1つのレコードに配置したいということで、「月間売上」と「分類別 月間売上」が直接リレーションする必要があります。 リレーションの管理を開き、図 10-12 の赤丸部分のアイコンをクリックすると図 10-13 のウィンドウが開き ます。ここで新しくリレーション定義に追加するテーブルを選択して、「OK」をクリックするとグラフ内に配置 されます。これを繰り返し作成し、繋いだものが図 10-14 になります。 図 10-12 テーブルを追加 図 10-13 テーブルを追加 図 10-14 新しく定義したリレーションFileMaker•Pro 上で設定したスクリプトをサーバ上で作動できるものです。 ホストされているデータベースの場合、クライアント上で実行するよりも早い •• 大量のデータを処理できる •• スケジュールできるので、深夜などに自動で処理をさせられる •• このようなメリットがあります。特に多人数が日常的に使うようなデータベースの場合はこのサーバサイドス クリプトを使うメリットを享受できるでしょう。 売上を入力するレコードを自動で作る さて、ちょっと久しぶりに売上管理システムに戻ります。レビューで出てきましたが、このシステムでは、毎 日店舗で売り上げを入力します。入力するレコードを誰が作るかを考えなくてなりません。入力する店舗でレコー ドを作成するのは、重複してしまったり、不要なレコードが作成されたりという不安もあり、それを制御するた めの仕組みを作るのが大変です。店舗ではレコードを作成させず、サーバ上で行えばいいわけです。ここではそ の設定例についてご紹介します。 図 12-15 スクリプトの内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 図 12-15 は今回サーバに行わせるスクリプトの内容です。初心者の方にとっては複雑なように見えますが、内 容的にはシンプルな構造だと思います。ですが、今回初めて登場した「Loop」は慣れるまでちょっとわかりに くいかもしれません。
Loop と Exit Loop If
詳しい内容に行く前に Loop について少し紹介してきます。Loop はその名の通り、繰り返します。「Loop」 から「End•Loop」までを永遠に繰り返します。クライアントであれば、「Esc」キーを押せば Loop を止めること もできます(スクリプト自体を止める)。しかし、処理内容によってはすごいスピードで実行されますので、注 意が必要です。Loop を止める(抜ける)には方法は2つあり、ひとつは「レコード / 検索条件 / ページへ移動」 スクリプトステップで「次へ」オプション、「最後まで来たら終了オプションを設定すると抜けることができます。 もう一つは「Exit•Loop•If」スクリプトステップです。「Exit•Loop•If」は条件式を設定し、条件式が「1」を返す(条 件式に合うとき)に Loop から抜けます。 ① ②
昨年比を計算してみる
売上がからむようなデータベースの場合、昨年との比較というのが必要なケースも出てきます。ここでは、昨 年比を計算するために必要な設定について紹介します。 昨年比を計算するには、「昨年の売上」と「今年と昨年の売上の比較」という2つの計算が必要です。リレーショ ンを利用する方法と、ExecuteSQL 関数で導く方法の2つをご紹介します。 リレーションの設定ー自己リレーション 自己リレーションという言葉が出てきました。自分のテーブルとリレーションすることを自己リレーションと いいます。自己リレーションは自分自身のテーブルから現在のレコード以外のデータを参照したいときに使いま す。例えば、現在のレコードの直前の値などが必要な時です。言葉だとなかなか伝わらないかと思いますので、 実際の手順で見てきましょう。 「ファイル」→「管理」→「データベース」 →「フィールド」タブを開きます。 図のように「month」フィールドの年と月を 分離するフィールドを作成します。両方とも に「計算」タイプになり、図のように計算式 を設定します。1
「 リ レ ー シ ョ ン シ ッ プ 」 タ ブ で 「uriage_monthly」に基づくテーブルオカレ ンスを2つ作成します。 図のように3つのフィールドをドラッグで繋 げます。 二つのテーブルの結合部をダブルクリックし て「リレーションシップ編集」を開きます。2
図のように「c_year」を繋ぐリレーションを 「>」に変更します。 一方のテーブル(>の右側)「レコードのソー ト」にチェックを入れます。3
レイアウトを開くとこのようにレイアウトが 自動で作成されています。まだ、ソートがさ れていないので、グループ化されていません。 小計も計算されていません。
14
ここで⑦で設定したフィールドでソートを 行ってみると、グループ化され図のようにな ります。「区切り」が図で日付が入っている 部分です。日付ごとの小計と、店舗の小計が 表示されています。15
レコードの変更履歴を記録する方法
FileMaker にはレコードの変更履歴を記録する方法がありません。誤った値をレコードに書き込んでしまった 場合に、いつだれがどんな内容の値を書き込んだかそれを行ったのか知りたい場合があります。最後に編集した 人と日時だけであれば、フィールド設定のオプションで設定することもできますが、フィールドの内容まではわ かりません。それを行う方法の一つをご紹介します。 方法としてはそれほど難しいものではありません。ログを記録するフィールドを作成し、計算式を設定するだ けです。 ログを記録したいフィールドと同じテーブ ルにテキストタイプのフィールドを作成し、 オプション「計算値」を設定します。また、 「フィールドに既存の~」チェックを外しま す。1
計算値の内容は図のようになります。Let 関 数 と い う 関 数 を 使 い ま す。 こ の 例 で は $trigger という変数に「uriage」のフィール ドを入れていますが、「&」で複数のフィー ルドを結合することによって、複数のフィー ルドの変更ログを記録できます。また、この ログはスクリプトなどでは正しく記録できな いステップがあります。フィールドへ移動な どを使い、フィールドをアクティブにする 必要があります。例の場合下の図のように、 「uriage」のフィールド内容が分かるたびに記 録されていきます。2
ExecuteSQL 関数で集計を行ってみる
リレーションによる集計を使わずに ExecuteSQL 関数で集計をする方法を紹介します。月間分類別を集計する ということで「bunrui_monthly_uriage」テーブルに計算フィールドを追加します。追加した計算フィールドに 計算式を設定するだけです。 ExecuteSQL•(•"SELECT•SUM(uriage)•FROM•uriage_master• • WHERE•month_name•=•?•AND•kf_bunrui_id•=?••AND•kf_store_id•=•?"•;• • ""•;•""••;•month•;•kf_bunrui_id•;•kf_store_id•)も FileMaker データベースにアクセスすることが可能です(サーバがインターネットからアクセスすることが可 能な場合)。ここではその方法について紹介します。FileMaker•Server でも、FileMaker•Pro 共有でもアクセスで きます。 LAN 外(インターネット)のホスト FileMakerGO を起動し、「ホスト」をタップ して選択すると、LAN 内にあるホストを自動 で探します。見つかると右側に表示されます。
1
「ホスト名」をタップすると、そのホストの データベースの一覧が表示されて、データ ベース名をタップするとデータベースが開け ます。2
ホストのアドレス(IP アドレスか、ドメイン) を入力して「保存」をクリックすると、ホス トされているデータベースの一覧が表示され ます。2
「ホストを追加」を選択すると1
Microsoft Azure をレンタルサーバとして使ってみる
LAN 内だけでサーバを運用する場合はあまりメリットはないかもしれませんが、インターネット経由でアク セスする FileMaker•Server を運用する場合はレンタルサーバを使うことも検討するといいかもしれません。冒頭 で触れていますが、実際な使い方なども紹介していきたいと思います。
今となっては Amazon や、Microsoft•Azure など FileMaker•Server をインストールして、リモートデスクトッ プを使って管理する仮想マシンを作成できるレンタルサーバが増えてきたので、それを活用しない手はありませ ん。特に、ネットワークの設定などが基本的にない(自動で設定)ので、省力化できますし、知識のない方にとっ てもそういった部分に気を使う必要がないので、楽です。ただし、長期間使用する場合は費用的に割高になる場 合もあるので、メリット・デメリットを比べて選択する必要があります。
Microsoft•Azure を使用するにはまず Microsoft アカウントと Azure の利用登録が必要です。その部分につい ては割愛させてもらいます。 ログインし、「ポータル」を開きます。