Claris FileMaker 2023 – Get ( アプリケーションバージョン ) の比較計算式 Tips

Claris FileMaker 2023 の Get ( アプリケーションバージョン ) は 20.x.x

Get ( アプリケーションバージョン ) や、Get ( ホストアプリケーションバージョン ) 関数ですが、
Claris FileMaker Pro 、 Claris FileMaker Server 、 Claris FileMaker Go 、 Claris FileMaker WebDirect 、 Claris FileMaker Data API などは、
2023.x.y ではなく、20.x.y になります。
2023年4月25日にアメリカで発売されたときのバージョンはそれぞれ、
Pro 20.1.1、Server 20.1.1 でした。

FileMaker Pro リリースノート
FileMaker Server リリースノート

Claris プラットフォームでの Get ( アプリケーションバージョン ) は 40.x.x

そしてもう一つ並行して開発されている、
Claris Pro 、 Claris Server 、 Claris Go 、 Claris WebDirect 、 Claris Data API などは、
40.x.y になります。
2023年4月25日現在でのバージョンはそれぞれ、
Pro 40.2.1、Server 40.3.1 です。

このバージョンはおそらく内部的には 19.6.y に相当する機能をもっています。
さらに今後 Claris FileMaker 2023 と同等機能を持つバージョンのリリースで、
また数字が上がると思われます。

Claris Pro リリースノート
Claris Server リリースノート

バージョンの比較計算式を作る時は将来を見据えて?

ここからは余談として読んでいただいて構いません。
開発者自らがバージョンの比較計算式を作る場合がよくあります。
例えば GetLiveText 関数は最近の 19.5 からの機能なので、

GetAsNumber ( Get ( アプリケーションバージョン ) ) >= 19.5

と比較する計算式によって、条件分岐することが多くあったと思います。

しかしこれからは、将来を見据えて次のことを考慮しなければなりません。

  • 20.x.y の x 部分が 2 桁になるかもしれない
  • Claris プラットフォームに乗り換えたときに動かなくなるかもしれない
20.x.y の x 部分が 2 桁

バージョン 19 が、19.6 までアップデートされてきたように、
20.1 からスタートしたバージョンも、20.2、20.3 とアップデートされ、
もしかして、20.10、20.11までアップデートされていくかもしれません。

Get ( アプリケーションバージョン ) が 20.x.y の場合、
GetAsNumber ( Get ( アプリケーションバージョン ) ) は
20.xy という数字になります。
20 が整数部分、xyが少数部分になり、
比較としてこれまで歴代のバージョンでは x 、y 部分が2桁になることがなかったので問題ありませんでした。

しかし、たとえば、20.3.2 と 20.10.1 では 20.10.1 の方が後のバージョンなのに、
数字としては 20.101 の方が小さい、
つまりは、 20.101 の方が古いバージョンと判定されてしまいます。

Claris プラットフォームに乗り換え

Claris プラットフォームはもう Pro 40.2.1、Server 40.3.1 まで上がっています。
GetAsNumber ( Get ( アプリケーションバージョン ) ) で取得した現在の 20.11 という数字と、
内部的には 19.6 までの機能しか有しない 40.2 では、
20.1 の方が新しいバージョンなのに数字が小さい、
つまり 20.1 の方が古いバージョンと判定されてしまいます。

Claris プラットフォームへの乗り換えは、
特に開発に手を加えなくてもファイルのドラッグ & ドロップ で可能です。
しかし、バージョンの比較計算式は入念に調査して修正する必要があります。

じゃあ、とりあえず今ならなんて書く?

  • 20.x.y の x 部分が 2 桁の想定はやっておいて損はない?
  • Claris プラットフォームに乗り換え はその時の調査が漏れないようにしておきたい

上記の考えから、私個人的な思いつきレベルの計算式は次のとおりです。
カスタム関数にしておくと良いと思います。
きっと今後誰かがシンプルな式を考えてくれるはず、、。

Let([ /* 現在のバージョンが Target より古い場合は 1 、同じか新しい場合は 0 */
Target = "20.1"
; TarMajor = Int( Target )
; TarMinor = GetAsNumber ( GetValue ( Substitute ( Target ; "." ; "¶" ) ; 2 ) )
; SysMajor = Int ( Get(アプリケーションバージョン) )
; SysMinor = GetAsNumber ( GetValue ( Substitute ( Get(アプリケーションバージョン) ; "." ; "¶" ) ; 2 ) )
];
Case (
SysMajor >= 40 ; "見つかりません"
; SysMajor > TarMajor ; 0
; SysMajor < TarMajor ; 1
; SysMinor < TarMinor
))

 

 

 

【 余談 】
最近下記リンク先への流入増大したいこともあり、
流入量が多いとブログの価値が高まりますます投稿を加速していきたいと思います。
リンク先を開いていただけると大変助かります。
Claris International Inc. (日本語)
ご協力いただけましたら幸いです。