FDSメンバ限定での提供ですが、分離モデルが必ずしもベストプラクティスではない、というふうになっていくのかどうか、興味があるところです。Keefeさんの記事を紹介します。少なくとも私はわくわくしています。いうのも、こういう技術ネタを見るとおたくモードに入ってしまうので。最初に、データ移行が必要となる一般的な利用シナリオを2つあげます。デプロイ(本番移行):カスタムAppを複数回に分けてリリースする。そのときに、前の版からデータを取り出し、新しい版に入れ込む。復元:ファイルが壊れた場合に、クリーンなバックアップクローンに戻す。17より前は、データ移行の手法は通常、スクリプトによるインポートで行われていましたが、時間がかかる上に機能に制限がありました。上記のデプロイの場面で驚くほど役立ちます。このツールは破損したデータを魔法のようにきれいにしてくれるわけではありませんが、復元の場面でのデータ修復処理をスピードアップするのに役立ちます。migrated.fmp12)にデータ(アカウントと値一覧を含むことも可)をコピーします。DMT(と勝手に略すことにします)は、従来のマイグレーション戦略に関わる課題を次のように解決しようとします。FileMakerのアプリケーション層をバイパスし、データ(およびその他の関連要素)を1つのファイルから別のファイルに、テーブル/フィールドを照合しながら直接コピーします。この照合の基準については後述します。利点DMTは高速スクリプトによるマイグレーションは、時間がかかりレコードをインポートスクリプトステップに依存します。大規模なデータセットの場合、データのインポートには非常に時間がかかることがあります。大きなレコードセットとテーブルの列数の多さは、両方ともインポートを遅くする可能性があります。大きなテーブルが多数あるソリューションでは、マイグレーションに何時間もかかる場合もあります。上記のようなデプロイや復元の場面では、通常、作業のための時間枠が制限されます。デプロイは通常、数時間で行われます。16時間より長くかかる場合(これは十分にありえます)は、週末に実施する必要があります。週末の作業者はデータ移行中にファイルにアクセスできません。この時間的制約によって、デプロイが失敗したときに復元する時間も少なくなります。マイグレーションを再実行する時間はありません。DMTはアカウントとパスワードをコピーするスクリプトによるマイグレーションでは、あるファイルから別のファイルにアカウントを移動することはできません。実際、古いファイルから最新ファイルに移行するとき、FileMakerのスクリプトではFileMakerのユーザーアカウントをまったくコピーできません。17より前のバージョンでこの問題を解決するためには、通常ユーザテーブルを使用します。すべてのユーザアカウントに対応するレコードを持ち、レコードにはアカウント名が含まれています(ただし、セキュリティ上の理由からパスワードは含みません)。データをインポートした後、新しいファイルでアカウントを再作成できますが、その場合はデフォルトのパスワードを設定することになります。このプロセスは面倒でエラーが発生しやすく、ユーザには混乱を招くことになります。パスワードを再変更する必要があるからです。他の方法もありますが、それらはすべて何らかの欠点があります。DMTにはFileMakerアカウントをあるファイルから別のファイルにコピーするオプションがあり、正しく使用するとこの問題を完全に解決できます。ユーザは、以前に使用したのと同じ認証で新しいソリューションにログインすることができます。「最初のログイン時にパスワードを変更する」などの強制的なしくみはありません。DMTは値一覧をコピーするスクリプトによる移行では、あるファイルから別のファイルに値一覧をコピーすることはできません。DMTには、カスタム値を使用した値一覧をあるファイルから別のファイルにコピーするオプションがあります。これは、カスタム値を使用した値一覧が開発者によって管理されていない場合、つまりエンドユーザによって編集されている場合に便利です。Toolはコマンドラインインターフェイス(CLI)ツールです。(Windowsの場合)で実行します。FMDataMigrationという名前のファイルが、指定されたフォルダにあり、それをシェルから呼び出します。Macではファイルは以下のように表示されます。Finderでファイルをダブルクリックすると、ターミナルのウィンドウが開き、図のようにアプリケーションとその使用方法を説明するテキストがウィンドウに表示されます。入力すると、Macの場合と同じテキストが画面に表示されます。これを一つずつ見てみましょう。options>]FMDataMigrationを呼び出すときは、最低でも2つの引数を指定する必要があります。:データをコピーする先のクローンファイルのパス。このファイルは未開封でなければなりません。DMTはこれをチェックし、無効な(開かれた)クローンであった場合には実行を拒否します。ソーフファイルのパス。開いていないクローンファイルのパス。migrated”がつく。デフォルトではDMTは既存のファイルを上書きしない。デフォルトではDMTはソースファイルの値一覧をコピーする。デフォルトではDMTはソースファイルのアカウントを書き込む。Modeが指定されると、DMTは新規ファイルを作成するときに、ターミナルに処理の詳細情報をステップごとに出力する。Modeが指定されると、DMTは出力をターミナルに表示しない試してみよう!ここからの説明では、Macのターミナルを使用します。ステップ1ZIPファイルをダウンロード*し、デスクトップに解凍します。内容は以下のとおりです。Contacts.fmp12は、いくつかのレコードがあらかじめ入っているFileMaker17スターターテンプレート(連絡先)です。Clone.fmp12は、Contacts.fmp12ファイルの未開封のクローンです。ToolのUnix実行ファイルで、これからコマンドを送信する対象です。Syntaxにはコピーして使える(パスの変更が必要)構文が入っていてすぐに試すことができます。ステップ2ターミナルを検索して起動します。DockからLaunchpadを起動して検索すると、簡単に見つけることができます。起動すると、次のようなターミナルウィンドウが表示されます。Keefeではないと仮定して)、ターミナルに次の行を貼り付けます。-vEnterキーを押す前の端末ウィンドウは以下のようになります。ステップ4Enterを押します。Mode)を使用したため、端末ウィンドウに次の出力が表示されます。大量の文字が出力されます。この中身については後ほど説明します。その前に、実際に何が起こったかを見てみましょう。Demoフォルダに戻ります。migrated.fmp12という新しいファイルができています。17で開き、内容を確認してみます。これで終了です!操作手順の概要は以上です。この具体例では注意すべき点がいくつかあります。使用した2つのファイルは完全に同一のもので、ロールバック/リストア型のシナリオにあたります。DMTは、似ているが同一ではないファイル間でのデータ移行も可能です。マイグレーション型のシナリオにも対応します。これについてはパート2以降で説明します。操作の概要が理解できたところで、いくつかの実験をしてみましょう。以下について試してみてください。Migrationヘルパーファイルを作成するを参照してください。Toolについて価値のある情報を提供できたと願っています。17へのアップグレードについて相談したい場合は、今すぐお問い合わせください。Subscriptionのメンバのみ利用することができます。このシリーズのデモファイルを試すには、FDSにメンバ登録してコマンドラインツールをダウンロードする必要があります。