1. FM Paradise
  2. 実践編
  3. 日付を安全に扱うには?

日付を安全に扱うには?

日付は大事なキーワード

業務の管理において、「日付」は非常に重要なキーワードです。FileMaker(ファイルメーカー)に限らず、実に様々なところで日付が使われます。

販売管理では、見積書、納品書、請求書に必ず発行した日付が表示されますし、勤怠管理(タイムカード)では最も重要なフィールドの一つにこの日付があげられるのではないでしょうか。

FileMaker Pro Advanced(ファイルメーカー)の日付はどこから来るのか?

FileMakerでスクリプトや、計算式などで日付を挿入する場合、取得関数「Get(日付)」が使われると思います。この日付は何から取得しているのでしょうか?

この日付は、その関数を作動させているPCやFileMaker Goであれば、iPad、iPhoneの時計から取得されるのが基本です。

その値信頼できますか?

日付、タイムスタンプはこのように関数を作動させるデバイスから取得されます。これはいったい何を意味するのでしょうか。

システム開発の現場でなんらかの「値」を取得するとき、その「値」は信頼できるものかどうかを知っておく必要があります。

信頼できない、信頼できないかもしれない値の慎重になるべしです。この日付、タイムスタンプはまさにそれに類するものです。

なぜ、信頼できないのでしょうか? 信頼できる、できないの境界線は「改ざん」ができるかできないかという点です。

日付の元となる、デバイスの時計は、ユーザーが任意に変更することができます。また、iPad、iPhoneなどでは、意図せずに時間帯を変えてしまう場合もあります。

基本的に、「日付」を記録しておく場合、そのデータは非常に重要なものでしょう。例えば、納品書の日付が一日間違うことによって、請求書の金額が変わってしまうことにもなりかねません。

また、打刻の時刻に誤りがあれば、勤務時間や残業の計算に問題が生じ、経済的な損失にもなりかねません。

信頼性の高い時計とは?

これまでは、クライアントのデバイスは必ずしも信頼できないということをお伝えしてきました。では、信頼したいデータはどこから取得すればいいのでしょうか?

FileMaker ServerやCloudを運用している場合、取得関数「Get(ホストのタイムスタンプ)」を使用しましょう。ホストとは、FileMaker ServerやCloudのことです。

ホストの時計は、特定の管理者しか操作することはできません。一般のユーザー(クライアント)が変更できない値の為、信頼性があるとみていいでしょう。日付やタイムスタンプ、時刻が間違っていては困るという場面では、この関数を使用します。

また、この関数では、タイムスタンプしか取得できないので、下記のように工夫して、日付だけを取り出していきます。

GetValue ( Substitute ( Get(ホストのタイムスタンプ) ; " " ; "¶" ) ; 1 )

時刻だけを取り出したい場合は下記のようにします。

GetValue ( Substitute ( Get(ホストのタイムスタンプ) ; " " ; "¶" ) ; 2 )