FileMaker(ファイルメーカー)を作る時、必ず通るのがフィールド作成です。その時に「タイプ」を選択しますが、よく分からずに「テキスト」のままにしてはいないでしょうか?
本記事では、テキストのまま作ってしまっているような方に向けてフィールドのタイプ選択について書いてみます。
このページでは次のような内容が書かれています。
- フィールド作成時の「タイプ」を再確認
- よく使うタイプ4撰
- たまに使うタイプ2撰
- 特殊なタイプ2撰
- なぜタイプを選ぶのか・考える必要があるのか
- まとめ
フィールド作成時の「タイプ」を再確認
この記事を読み進めるにあたり、念のためフィールドタイプを再確認します。全部で8種類あります。
- テキスト
- 数字
- 日付
- 時刻
- タイムスタンプ
- オブジェクト
- 計算
- 集計
テキスト、数字、日付、時刻の4つは、アプリやデータベースを作ったことがなくてもなんとなく分かると思います。
他のタイムスタンプやオブジェクト、計算といったものは分かりそうでわからない、そんなことはありませんか?
さらに、「集計」ともなると「よく分からん。あとで。」となること間違いなし(!?)です。
次に、使う頻度別にタイプを見ていきたいと思います。その後になぜタイプを選ぶ必要があるのかを書いていきます。
よく使うタイプ4撰
テキスト
最もよく使うタイプです。文字列なら何でも格納できます。最大2GBまでと Claris 社の FileMaker ヘルプに書かれています。これははたして1レコードの1フィールドにつき2GBなのでしょうか。
とにかく通常使う分の文字列の量は問題なく格納できるので「何文字まで格納できるのだろう?」というのは普段は考えなくても大丈夫そうです。
数字
いわゆる数字を格納するためのタイプです。数字だけかと思いきや、小数点やマイナスなど計算で使われる記号なども入ります。
それどころか、普通に英数文字も格納できるし、日本語も入れることはできます。
但し、どんな文字が混じっていようとも、計算で使われるのは数字と数字関連の文字列だけです。
(↑ 通貨表示にしてみたところ。数字関連のみが内部的に計算されるので「文字も入る」や「円」の文字列は無視される。)
日付
これもそのまま、日付を格納するタイプです。基本は YYYY/MM/DD のスラッシュ区切りで格納します。スラッシュはピリオドでも可能ですが、スラッシュのほうが無難です。
スラッシュ区切り以外の形式は受け付けません。例えば「2022年7月20日」と入力すると「年」などの文字は受け付けないので、エラーメッセージが出て修正を求められます。
なお、入力はスラッシュ区切りですが表示方法は「2022年7月20日」や「令和4年7月20日」など自在に変えられます。この辺はご要望があれば別途記事にしたいと思います。
*ご要望があればお問合せからお知らせ下さい ▶お問合せはこちら↗
オブジェクト
画像や動画、PDF、その他のファイル等を格納できます。少しイメージしづらいタイプ名ですね。「オブジェクト」とは、物、物体、目標物、対象、目的語、客体、などの意味があります。なので「物」を格納できると思って良いです。
フォルダに入っているファイルは基本的に全て格納できます。但し「フォルダ」は格納できません。フォルダを格納する場合はZIPファイルなどの圧縮ファイルにすることで格納できます。
但し、容量には要注意です。特に動画ファイルはサイズが大きいので格納中にフリーズしたり、一つ一つが小さいファイルでも数万件など数が多くなると FileMaker そのもののサイズが大きくなってしまいます。(ディスクサイズの圧迫に繋がる)
*動画は自動再生する設定も可能です。
*PDFは自動表示する設定も可能です。設定すると次のようにPDFの内容を FileMaker 上で閲覧できます。
たまに使うタイプ2撰
時刻
時刻の形式で格納するタイプです。具体的には 99:99:99(時:分:秒)の形で格納されます。
「12」など数字だけ入れると「12時間」という扱いになります。
時刻タイプは数字と記号のコロン(:)とマイナス(-)だけ入力できます。
他の文字はエラーになって入力することすら出来ません。
タイムスタンプ
日付と時刻をスペース区切りで格納するタイプです。日付だけでも、時刻だけでもエラーになります。
特殊なタイプ2撰
計算
常に自動計算されるフィールドです。そのため、人間による手入力はできません。「常に自動計算」といっても2通りあって、値変更までは結果そのままの保存パターンと、使用される際にリアルタイムに計算される非保存パータンがあります。
ここでは詳しく書きませんが、上の図の例だとレコードのソートで順番が変わると非保存パターンは計算結果が変わります。
かつて「FileMaker は使うほど遅くなる」という悪評が多かったですが(ちゃんと作れば遅いことはないです)、その辺は次の「集計」で少し触れます。
集計
指定のフィールドを自動的に合計してくれる便利なフィールドです。合計の他にも平均値、カウント、合計に対する比、などを集計できます。
集計フィールドは、他のフィールドと違って少し特殊な使い方になります。
ここでは詳しく書きませんが、ご要望がもしあれば記事にしたいと思います。*ご要望があればお問合せからお知らせ下さい ▶お問合せはこちら↗
かつて「FileMaker は使うほど遅くなってくる」という悪評がちらほら聞こえていました。
それは、「計算」タイプの非保存パターンと「集計」タイプ、この2つのフィールドによる影響がほとんどかと思われます。
それらのタイプの性質をあまり考えずに使うと遅くなる場合があります。例えばトラクターは高速道路ではなく農作業場で最大のチカラを発揮することを農業者は知っています。
性質を知って有効活用できれば、非常にパワフルで便利なフィールドです。知識と経験を深めてみてはいかがでしょうか。
その辺も JBI のサポートでは解りやすく実践的にお教えしていますので、詳細は概要ページまたはお問合せにてお尋ねください。
この他、FileMaker には「グローバルフィールド」という更に超特殊なフィールドがあります。
このフィールドについてはこちらで詳しく書いていますので、よろしければご覧ください。▶ FileMakerのグローバルフィールドの特徴と使い方↗
なぜタイプを選ぶのか・考える必要があるのか
さて、ようやく核心の内容に入りました。「なんでワザワザ数字や日付を選ぶ必要があるんだ?」「全部テキストタイプのフィールドでいいんじゃないの?」と思うことはないでしょうか。(僕は思ったことあります^ ^)
それはそれでアリかもしれませんが、やっぱりタイプを指定した方が便利で有効なことが多いです。
その辺のことを書いてみたいと思います。
内部的にうまいこと忖度してくれている
日付・時刻・タイムスタンプの日時系がタイプとして分かりやすいので、これらを解説してみます。
上述したように、これらのフィールドは適した形式で入力しないとエラーになります。例えば日付なら『「2013/12/25」のような形式に変更しろ』と訂正を求められます。
その代わり、正しくスラッシュ区切りで形式を合わせて入力してくれれば、日付に関しては様々な利便性をあなたに提供しましょう、ということになっています。
例えば、あなたは「2021/03/15」の100日前をサッと計算できるでしょうか?1000日前は?5000日前は?
日付タイプになっていれば、「2021/03/15 - 100」のような単純な計算式で算出できます。(実際には「(フィールド)- 100」のような感じで使う)
*データビューア機能を使って計算してみた
他のデータベースやアプリは日付の計算をするために色々準備をしたり考えることが多かったりします。(僕が知る限りです。現状は簡単になっているかもしれません。)
それが単純な計算でできるのですから、制作効率という面では(作業時間や修正時の解析など)大きなメリットがあります。
また、日付タイプになっていると日付関連の関数を便利に使えるメリットも出てきます。関数が使えると例えば閏年の計算も自動でやってくれたりします。
Date 関数というものを例にしてみます。「 Date ( 2 ; 29 ; 2022 ) 」と指定すると、自動的に「2022/03/01」を算出してくれます。(2022/02/29という日付は存在せず、28日+1 で3月1日を自動算出)
*関数について記事のご要望があればお問合せからお知らせ下さい ▶お問合せはこちら↗
人間がアレコレ考えなくても良いというのは非常に大きなメリットと言えます。(少なくとも僕はそう思います)
日時系が分かりやすいので特化して書きましたが、数字タイプやオブジェクトタイプもそれぞれ専用の処理を内部的に用意してくれています。
内部的に用意してくれているメリットを最大限に享受するため、やはり適正なタイプを指定して、適正なデータを格納するのが使いやすいデータベースになります。
オブジェクトタイプは専用にする必要がある
「オブジェクト」タイプは上述の通り、画像や動画、PDF などのファイルを格納できます。
「ファイル」というのは機械語で作られたもので、文字列や数字のデータとはそもそも違います。画像や PDF を表示させたり、動画を再生できるようにも設定できるなど、まさに「ファイル」に特化したフィールドです。
*同じオブジェクトのフィールドを並べたレイアウト。右側を FileMaker 上で再生できる設定にした。
画像や動画、PDF などの「ファイル」を格納する場合にはオブジェクトタイプが必須です。テキストタイプや数字タイプには「ファイル」を格納することはできません。
テキストと数字では検索やソートの結果が変わる
数字が入っているように見えるフィールドでも、テキストタイプと数字タイプでは内部的な扱い方は違います。それがよく解るのが検索やソートです。
例を見てみましょう。「ナンバー」フィールドを用意して適当に数字を格納しておきます。
ナンバーフィールドを、まずは数字タイプにします。
このナンバーフィールドで「1」を検索してみると、1件だけヒットしました。
今度は「ナンバー」フィールドをテキストタイプに変更します。格納されている数字データは同じです。
今度も「1」で検索してみます。すると、3件ヒットしました。
テキストタイプの場合、数字であっても内部的にはテキスト扱いになります。そのため「1」が含まれる "テキスト" が検索され、3件がヒットしたのです。
最初の数字タイプの場合は、「1」という数字は1つしかないため、1件だけが検索でヒットされました。テキストタイプと数字タイプが内部的に別物として処理されている証拠です。
これはソートでも似たようなことが起きます。
ナンバーフィールドを数字タイプにしてソートをすると、きれいにソートされます。
ではナンバーフィールドをテキストタイプに変更するとどうなるでしょうか。
なんと、頭の文字で判定さたソートになり、「1, 10, 14, 2, 29 …」のように並んでしまいました。
テキストタイプなのか数字タイプなのか、どちらを選んでいいか分からない時は検索やソートのことを考えてみると選びやすいかと思います^ ^
まとめ
なぜフィールドを作る時にタイプを選ぶのか、何となくでも伝わってくれれば嬉しいです。データベースやプログラムが未経験の場合は、タイプと言われても最初のうちはよく分からないかもしれません。
制作経験が積まれていけば理解していくことと思いますが、最初のところでつまづいているときなど、この記事が何かしらのヒントになれば幸いです^ ^
【こちらもどうぞ】
制作初期の疑問解消を目指す記事をまとめました ▶
今日も良い一日を♪
Blogger Comment
Facebook Comment