FileMakerのスクリプトパフォーマンスチェッカー


はじめに

FileMakerのスクリプトのパフォーマンスを計測するためのFileMakerカスタムAppを作成し、FM-1グランプリに投稿しました。予選は通過しましたが、投稿後の改修について公開するために、この記事を作成しました。もし、要望があれば、Appの使い方、App内容の説明なども記事にしたいと思います。

カスタムAppの概要

FileMaker - Script Chronograph(FM-SC)は、ファイルメーカーのカスタムApp開発時に、スクリプトのパフォーマンスをチェックするためのスクリプト実行時間計測システムです。計測したデータはデータベースとして保存できるので、同じスクリプトで違う環境下の比較をすることも可能です。統計値として、平均値、不偏標準偏差を表示していますが、rawデータも保持しているので、データをエクスポートしてExcelなどで解析させることも可能です。

FM-1グランプリ投稿版からの改修

  • 使い方の「次回起動時に表示しない」チェックが、ファイル単位で記録されていたものを、ファイルを起動した端末単位で記録されるようにしました。
  • 使い方のページめくりをアニメーション化。
  • 計測されるスクリプトの引数として、1からcycle数までをカウントする自然数を設定しました。
    • 引数がない場合と比べて、わずかにベースの負荷があがりました。1000cycleで1msecほど。
    • やっぱり使っていると、これあった方がよいな、と思うことが多々ありますね。
  • スクリプトの選択で、スクリプトワークスペースで表示されている順で表示されるようにしました。
    • fm-aid.comの動的値一覧のソートを参考にしました。
    • ゼロ幅スペース文字の文字数でソートさせる上記の方法だと、100個を超える値一覧では想定通りに並ばないため、fm-aid.comの値一覧の表示がおかしくなるを参考に、次のようなカスタム関数を作成しました。ゼロ幅文字を使った10進数表記ができるので、実質的な限界なし。右から左に記載する言語では使用できません。
    • スクリプトを100個ぐらい作る可能性があるなぁ、と思って作成したのですが、作った後に、実際に100個もスクリプトを作るヒトもいないかな?とも思いました。
ConvertToZeroWidthFrom( %sortingNumber )

// Purpose
//   値一覧のソート用に番号を見えなくする。
// Parameter
//   %sortingNumber = ソート順を示す数値。
// Notes
//   数値は、最大桁数で左桁数をゼロ埋めしておく必要がある。

Substitute ( %sortingNumber;
  [ 0; Char ( 8203 ) ]; // ZERO WIDTH SPACE
  [ 1; Char ( 8204 ) ]; // ZERO WIDTH NON-JOINER
  [ 2; Char ( 8205 ) ]; // ZERO WIDTH JOINER
  [ 3; Char ( 8206 ) ]; // LEFT-TO-RIGHT MARK
  [ 4; Char ( 8234 ) ]; // LEFT-TO-RIGHT EMBEDDING
  [ 5; Char ( 8237 ) ]; // LEFT-TO-RIGHT OVERRIDE
  [ 6; Char ( 8289 ) ]; // FUNCTION APPLICATION
  [ 7; Char ( 8290 ) ]; // INVISIBLE TIMES
  [ 8; Char ( 8291 ) ]; // INVISIBLE SEPARATOR
  [ 9; Char ( 8292 ) ]  // INVISIBLE PLUS
)

ダウンロード

GitHubからダウンロードできます。

更新履歴

  • version 1.4 (2021/11/08)
    • 共有して使用した場合の動作に最適化しました。
  • version 1.3 (2021/10/27)
    • 計測中にプログレスバーを表示させるようにしました。
  • version 1.2 (2021/10/06)
    • サーバー上とクライアントでスクリプトを実行させて比較できるようにしました。
    • グラフでの比較ができるようにしました。
    • 母集団としての標準偏差から不偏標準偏差(不偏分散の平方根)に変更しました。
    • 「3条項BSDライセンス」の表示をしました。  
  • version 1.1 (2021/09/24)
    • 多言語サポートを導入しました。
    • カスタムメニューを見直しました。
  • version 1.0 (2021/08/23)
    • FM-1グランプリ初投稿版。