SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

FileMaker Pro 実践チュートリアル(AD)

カスタム関数/プラグインによるFileMaker Proの機能拡張

第11回 FileMakerプラグイン作成の基礎

  • このエントリーをはてなブックマークに追加

3-3. 作成したカスタム関数の動作確認

 実際にこのカスタム関数がFileMaker Proの計算フィールドで使用できるかを確認してみましょう。

 カスタム関数の実験を行うために計算フィールドを作成します。 計算フィールドの作成方法については連載の第3回などを参照してください。

 カスタム関数の実験を行うために計算フィールドを作成します。[ファイル]メニューから[管理]-[データベース...]を選択し、「データベースの管理」ダイアログボックスを表示させます。つぎに新しくフィールドを作成したいテーブルを選択した状態で「フィールド」タブをクリックします。

 まず、引数用のフィールドを作成します。「フィールド名」欄に「元データ」と入力し、タイプは[テキスト]を選択し、[作成]ボタンをクリックします。同じ要領で、セパレータ用のフィールド「セパレータ」を[テキスト]タイプで、抽出位置用のフィールド「取り出し位置」を[数字]タイプでそれぞれ作成します。

 

 引数用のフィールド作成ができたら、作成したカスタム関数GetArgを使用するための計算フィールドを作成します。

 フィールド名は「取り出し文字列」、タイプは[計算]で作成します。計算フィールドは[作成]ボタンがクリックされると、計算式の定義用に「計算式の指定」ダイアログボックスが表示されます。

 計算式の一部としてカスタム関数を使用するために、関数リストにカスタム関数を表示させます。関数リストの上にある「表示」ポップアップから[カスタム関数]を選択すると、作成したカスタム関数「GetArg ( Data ; GetDataSep ; GetPosition )」が表示されます。

 関数リストから「GetArg ( Data ; GetDataSep ; GetPosition )」をダブルクリックすることによって、カスタム関数を選択することができます。

 
 

 次に、カスタム関数のそれぞれの引数に、先に作成した置いたフィールドを指定します。

GetArg ( 元データ ; セパレータ ; 取り出し位置 )

 引数の指定ができたら、ダイアログボックスの最下部にある「計算結果」ポップアップから[テキスト]を選択して、[OK]ボタンで「計算式の指定」ダイアログボックスを閉じます。

 

 ブラウズモードで、実際に引数に値を指定して実験してみます。

フィールド
元データ 富士山|桜島|浅間山|普賢岳|三原山
セパレータ |
取り出し位置 4

 各引数に値を設定し、フィールドを確定すると、「元データ」フィールドの「4」番目の文字列を抽出する指定になりますので、「取り出し文字列」フィールドには「普賢岳」が表示されます。

 

 このように、複雑な計算式であってもカスタム関数として定義してしまえば、計算フィールドやスクリプトステップ内の計算式をシンプルにすることができます。また、何より複雑な計算式をカスタム関数化することで、計算式の再利用が容易に行えるようになります。

3-4. カスタム関数の再帰処理

 カスタム関数の作成方法と簡単な使用方法について解説しましたが、カスタム関数内の計算式で同じカスタム関数を使用する再帰処理について触れておきます。

カスタム関数:PyramidText( Letter )
Let (
    [ Letterlength = Length ( Letter ) ] ;

    Case(
        Letterlength > 0 ;
            Letter &"ヲ" &
            PyramidText ( Left ( Letter ; Letterlength - 1 ) )
    )
)

 このカスタム関数は、引数「Letter」で指定された文字列から、1文字ずつ減らしながら改行区切りのテキストを作成します。

 例えば、引数「Letter」に「株式会社ジェネコム」と入力されていた場合、関数の戻り値は次のようになります。

株式会社ジェネコム
株式会社ジェネコ
株式会社ジェネ
株式会社ジェ
株式会社ジ
株式会社
株式会
株式
株

 このカスタム関数の特徴的な部分は、関数内の計算式で自分自身の関数PyramidTextを使用している所です。このようにカスタム関数の中で同じカスタム関数を実行できるので、同じ処理を繰り返して実行するような、ループ処理を行うことが可能です。

 上記の例では、カスタム関数PyramidTextの引数Letterの内容を、Left関数を使用して1文字分短くした値を引数にしてカスタム関数PyramidTextを実行しています。カスタム関数内の計算式では、引数Letterの内容を単に改行区切りで結合しているだけですので、上記の結果のように元の「株式会社ジェネコム」という文字列が1文字ずつ最後の文字まで短くなって結合されていくのです。

 カスタム関数の再帰処理はとても便利な機能ですが、再帰処理を終了させるタイミングも気にしなければなりません。上記の例では、「Case(Letterlength > 0 ;・・・」という条件判断を行い、引数Letterの長さが「0」よりも大きな値の場合には処理を行い、「0」になった場合には処理が実行されずにカスタム関数の計算式が終わるようになっています。このような処理になっていない場合には、不必要なループ(無限ループ)を発生させてしまいますので注意が必要です。

 ここまでは、カスタム関数の解説を行ってきました。

 FileMaker Proではこのようにカスタム関数として、FileMaker Proに新たな関数を登録することが可能なので、開発者が独自に作成したカスタム関数をデータベースファイルへライブラリ化しておくことで、システム開発の効率を高めることが可能です。

次のページ
4. 外部関数プラグインを使う

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
FileMaker Pro 実践チュートリアル連載記事一覧

もっと読む

この記事の著者

給前 悟郎(キュウゼン ゴロウ)

大学卒業後入社の企業で初めてFileMaker Proに出会い、主に社内システムの開発を担当。その後独立系ソフトウェア開発企業を経て、現在は(株)ジェネコムのスタッフとしてFileMakerによるシステム構築を手がけている。FileMaker 9 認定デベロッパ。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2475 2008/09/05 11:19

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング