第10回 FileMakerプラグイン作成の基礎
TRAN NGOC SON [著] 2008/05/08 12:35

1 2 →

はじめに

 今回は、FileMakerの機能を拡張するソフトウェア「プラグイン」の開発方法について、簡単なサンプルを元に作成方法を解説していきます。

プラグインとは

 プラグインとは、FileMakerに機能を追加するソフトウェアです。プラグインを利用すると、FileMakerの可能性をさらに広げることができます。

 例えば、弊社が販売している「GN-File」というプラグインがあります。これはFileMaker上でファイルのコピーなど、フォルダ・ファイルを操作できるプラグインです。FileMakerのスクリプトでは基本的にフォルダ・ファイルを操作することはできませんが、プラグインを追加することでスクリプトからフォルダ・ファイルを操作できるようになります。

プラグインの概要

 プラグインはクライアントのPCにインストールして利用します。拡張子は「fmx」です。プラグインの作成には、Windows版はCまたはC++、Macintosh版はXcodeを利用します。

今回作成するプラグインのバージョン
 プラグインはFileMaker 6以前と7以降、およびWindows版とMacintosh版で扱いが異なりますが、今回は、Windows版FileMaker 7以降のプラグインを対象とします。

サンプルを利用する

 まずは、FileMakerのインストールCDに含まれているコードテンプレートをビルドして、プラグインをFileMakerにインストールしてみましょう。

ビルドの方法

  1. コードテンプレートはインストールCDに含まれています。
  2. まず、CD内の「日本語エキストラ」フォルダをパソコンにコピーしてください。コピーが完了したら「日本語エキストラ\サンプル\FMExample\FMPlugInSDK\Example」フォルダを開き、プロジェクトファイル「WinExample.vcproj」を実行します。
     
  3. 次に、このプロジェクトをビルドしてください。これで、プラグインプロジェクトのビルドは完了です。

インストール方法の確認

  1. 「日本語エキストラ\サンプル\FMExample\FMPlugInSDK\Example」フォルダにある「WinExampleD.fmx」ファイルを「FileMaker\FileMaker Pro 9 Advanced\Extensions」フォルダにコピーします。
  2. FileMakerを立ち上げます。
  3. メニュー編集の環境設定を選択します。
  4. プラグインタブをクリックし、プラグインが正しくインストールされたことを確認します。
 

外部関数を作成する

 次は、簡単なプラグインのビルドの仕方を説明します。このプラグインに含まれる関数は次の通りとします。

  1. プラグインの実行中に、「Hello」 メッセージボックスを表示します。
  2. FileMakerから文字列を取得し、その文字列をFileMakerに返します。

 環境は次の通りです。

  • 言語: Microsoft Visual C++
  • 開発環境: Microsoft Development Environment 2003

作成手順

 次のステップを順番に行ってください。

  1. 「日本語エキストラ\サンプル\FMExample\FMPlugInSDK\Example」フォルダの「WinExample.vcproj」を実行してください。
  2.  
  3. 「FMPlugInExample.cpp」を開いて、下図のように新しいStringIDをインサートします。
  4.  
    // The following strings are usually not localized,
    // but it is your option.
    enum
    {
            kXMpl_AddStringID = 102,
            kXMpl_AppendStringID = 103,
            kXMpl_EvaluateStringID = 104,
            kXMpl_StartScriptStringID = 105,
            kXMpl_UserFormatNumberStringID = 106,
            kXMpl_FormatNumberStringID = 107,
            kXMpl_NumToWordsStringID = 108,
            kXMpl_VersionStringID = 109,
            GNEXT_HelloID = 110 // New StringID
    };
    
     
  5. 「FMPluginFunctions.h」を開いて、新しいFunctionIDを追加します。
  6.  
    // Function IDs
        enum
        {
            kXMpl_Add,
            kXMpl_Append,
            kXMpl_Evaluate,
            kXMpl_StartScript,
            kXMpl_UserFormatNumber,
            kXMpl_FormatNumber,
            kXMpl_NumToWords,
            kXMpl_Version,
            GNEXT_Hello // New FunctionID
        };
    
     
  7. 「FMPluginFunctions.cpp」に下記の関数を定義します。
  8.  
    FMX_PROC(fmx::errcode) Do_GNEXT_Hello(short /* funcId */,
     const fmx::ExprEnv& /* environment */,
     const fmx::DataVect&  dataVect, fmx::Data& results)
    {
        // System variable
        fmx::errcode errorResult = 0;
        // Store entered text
        fmx::TextAutoPtr    resultTxt;
    
        resultTxt->SetText(dataVect.AtAsText(0),0,
                           dataVect.AtAsText(0).GetSize());    
        
        // Show a hello message box
        MessageBox(NULL, "Hello", "Hello", MB_OKCANCEL);
    
        // Return value to FM
        results.SetAsText( *resultTxt, results.GetLocale());
    return(errorResult);
    } // Do_GNEXT_Hello
    
     
  9. 「FMPluinExample.rc」に定数の文字列をインサートします。
  10.  
    // This string table is usually not localized, but it is your option.
    //
    
    STRINGTABLE
    BEGIN
        102    "XMpl_Add( number1; number2 )"
        103    "XMpl_Append( textToAppend... )"
        104    "XMpl_Evaluate( calcToEvaluate )"
        105    "XMpl_StartScript( filename; scriptname )"
        106    "XMpl_UserFormatNumber( textOrNumber )"
        107    "XMpl_FormatNumber( formatString; textOrNumber )"
        108    "XMpl_NumToWords( number )"
        109    "XMpl_Version"
        110    "GNEXT_Hello( text )" // String constant
    END
    
     
  11. FMPlugInExample.cppに新たにコマンドをインサートします。
  12.  
    //GNEXT_HelloID
    Do_GetString(GNEXT_HelloID, name, true);
    Do_GetString(GNEXT_HelloID, prototype);
    err = fmx::ExprEnv::RegisterExternalFunction(*pluginID,
        GNEXT_Hello, *name, *prototype, 1, 1,
        regFunctionFlags, Do_GNEXT_Hello);
    
     
    外部プラグインのパラメータの最大と最小は赤字のように設定してください。また上記のコードブロックは必ずDo_PluginInit関数にインサートしてください。
     
     
     
  13. 「FMPluginFunctions.h」ファイルの外部関数を宣言します。
  14.  
    FMX_PROC(fmx::errcode) Do_vnext_Hello(short funcId,
        const fmx::ExprEnv& environment,
        const fmx::DataVect& dataVect, fmx::Data& results);
    
     
  15. 最後に 「サンプルを利用する」で述べたビルドとインストールを行ってください。

1 2
→
INDEX
FileMaker Proの機能を拡張するプラグインの作成
Page1
はじめに
プラグインとは
プラグインの概要
サンプルを利用する
外部関数を作成する
作成したプラグインでテストする
最後に
プロフィール
TRAN NGOC SON トラン グオク ソン

ベトナム、ホーチミン市出身。東京大学工学部卒。大学院に進学したが、ビジネスの道に惹かれ中途退学して株式会社ジーネクストに入社。

エクセル、ファイル、FTPなどさまざまな種類のプラグインを作った。2005年9月にアメリカのアリゾナ州に行われるFileMakerDeveloperConferenceでスキャナとエクセルのプラグインを紹介した。2008年1月にジーネクストと一緒にベトナムで子会社のV-NEXTを設立し、V-NEXTへのアウトソーシングを担当する。日本とベトナムの架け橋となれるように日々努力中。


注目の求人情報
コンサルタント/IT戦略コンサルティングファーム
経営情報活用支援、業務改革推進支援、IT 活用の企画および導入支援、新規事業立上げ支援等。...
コンサルタント/外資系戦略ファーム
シニア・マネジャーまたはシニア・エグゼクティブ <シニア・マネジャー> プロジェクトの進捗管理...
プロジェクトマネージャー/魔法株式会社
PC向けオンラインゲーム、携帯電話向けモバイルコンテンツ、パチンコ・パチスロ向けアミューズメントコ...

(最新日付順)
名前(ゲストの方もコメントをどうぞ):*
アイコン:
なし

内容(テキストのみ1200文字まで):*

投稿規定に同意して

スポンサーサイト

この記事のトラックバックURL: