B1 分離モデルに基づく請求書システムを作る(対象者:中級、7時間×1日)

 アプリケーションとデータを独立したファイルに分けて開発する手法を「分離モデル」と呼びます。本講は分離モデルに基づく請求書発行システムを作成する中級者向けのコースです。

 

 分離モデルにより、仕様変更やアップグレード時のデータ移行作業を削減し、保守性を高めることができます。 

 

 例えば、100個のテーブルを持ち10GBの容量がある非分離のデータベース対して仕様変更を行う場合、通常は開発版で開発を行い、完成後に開発版に運用版のレコードを取り込む作業が発生しますが、これにはシリアル番号の設定間違いや取込時の誤操作といったリスクがあるとともに、データ取り込みに要する時間(≒ダウンタイム)も膨大となります。

 

 これに対して分離モデル型のデータベースではデータとアプリケーションが分離しているため、テーブルに変更がなければ10GBのデータベースであったとしても、アプリケーションファイルを入れ替えるだけなので、作業は一、二分で終了します。テーブルに変更があったとしても、ほとんどの場合はリスクとダウンタイムを大幅に低減させることが可能です。

 

 本講は頻繁に発生する仕様変更に伴うアップグレード作業に悩まされている社内開発者の方に受講頂きたいコースです。

 なお、FileMaker 初心者の方は、先に 基礎I/IIコースの受講をお勧めいたします。

 

【講習内容】

  • 分離モデルとそのメリット
    • 非分離
    • アプリケーション/データ分離
    • アプリケーション/ユーザデータ/公開マスタ分離
    • ビジネスロジックのデータファイルからの分離
    • 分離モデルの実例(土屋企画の製品を参考に)
  • 分離モデルに準拠した開発 ~ 請求書システムを作る
    • 外部データソース参照設定
    • データファイル側で作成するオブジェクト
      • テーブルとフィールド
      • 計算フィールドやフィールドオプションを使用すべきか?
    • アプリケーションファイル側で作成するオブジェクト
      • リレーションシップ
      • レイアウト
      • スクリプト
    • TOとTOGの管理方法
    • スクリプトトリガを使用し、分離性を高める
    • 分離モデルの注意点
      • Sum(関連フィールド)の遅延 ― その対策
      • アプリとデータの両ファイルに必要なアカウントをどうするか?
      • ユーザ更新可能な値一覧をどうするか?
  • Q & A

【講師からのメッセージ】

  • 最近、非分離モデルのデータベースに対して大規模な仕様変更を行う業務を請け負いました。当システムは元々はお客様が自社開発され、1000人の社内ユーザが使用するものですが、大規模な改変を行うに当たり小社が開発支援をさせて頂くことになりました。本来であれば、既存機能も含め全てをアプリファイルとデータファイルに分離したいのですが、限られた予算と時間、既存機能を分離化するリスクなどを考え、既存機能はできるだけ温存し、新規開発部分のみを分離することにしました。 これであれば安定稼動している既存機能に影響を与える可能性を抑えながら、仕様変更が頻発しそうな新規部分についてはファイル入れ替えで秒殺アップグレードすることも可能です。 システムのおかれた状況に応じて、最適解を見つけなくては、と思う今日この頃です。(15/12/18)
  • 分離モデルで面倒なのがアカウントの管理。FileMaker 内蔵のアカウント管理機能を使用する場合、ファイル数分のアカウント管理が必要ですよね? 会社・組織の規模が大きかったり、分離モデルによりファイル数 が増えたりすると、アカウント管理は大変になります。そこでこの部分を Active Directory (の管理者)に任せてしまう、というのはとても楽ちんな方法です。 ファイルが増えても、全部AD(の管理者)にお任せ! 
      さて、 「分離モデルでファイルが増えると言っても、アプリとデータの2ファイルがあれば十分でしょ?」と突っ込まれるかもしれませんが、複数の方法(FMP、 IWP/WebDirect、カスタムWeb、XML、xDBC)でアクセスするような場合、セキュリティ上の理由からファイルを分けたほうが良いことも あります。例えば、XMLアクセスを許容する場合、XMLアクセス専用のAppXMLファイルを用意し、App/Data等のその他のファイルではXML アクセスを禁止することによりセキュリティを向上させます。 ということで、規模大きめなシステムでは、ファイル増もユーザ増も(あまり)気にしなくていい Active Directory/LDAP の利用を検討してみてください。(15/12/26)
  • 分離モデルにトライされた方や当方のBlogを熟読されている方><であればお気づきかと思いますが、分離モデルでSUM等の集計関数を使用するとコミットするまで正しい値が表示されません。例えば、売上伝票モジュールで売上明細の金額を合計しようとしてSum(売上明細::金額)とやってしまうと、コミットするまで合計値は計算されません。下記の13年5月のBlog記事「分離モデルにおけるSUM/ExcecuteSQL関数の問題と対策」では解決の指針を紹介していますが、本講ではBlogの解決指針に加え、最新の対応策をご紹介して参ります。この話題に興味がある方は、講習申し込み時に「集計関数のリアルタイム計算を詳しく!」と備考欄にご記入ください。(15/12/01)

(亀澤) 

 

FileMaker の分離モデル

FileMaker の分離モデル - 2
分離モデルにおけるSUM/ExcecuteSQL関数の問題と対策(13/05/14投稿)