こんにちは。リナークのニシザワです。
この記事では、弊社が開発プラットフォームとして採用しているClaris FileMakerのポテンシャルについてお伝えいたします。
一般的にClaris FileMakerでは、基幹系システムに代表される大規模なソリューションには適さないという論調が一部では散見されていました。
その要因として検索が遅い。そして、表示に遅延が発生し、規模の大きなシステムには適していないといった評価が聞こえてきます。
当然、大規模という表現も人それぞれで評価が異なると考えています。
ただし、これはClarisプラットフォームの代表格であるClaris FileMakerの正しい評価とは言えません。
それは、AmazonやGoogleといったITサービスの先端企業であるプラットフォーマーで利用されているシステムをClaris FileMakerで開発及び運用をすることは難しいでしょう。
しかし、常時数百クライアントが接続するようなソリューションをClaris FileMakerで私たちが開発し、 そして運用されているお客様もいます。
そのシステムは「案件〜見積〜受注〜設計〜計画〜BOM〜資材〜製造〜物流〜在庫〜請求〜入金管理」という基幹業務を一気通貫で対応したソリューションです。
そして、Claris FileMakerの公式ホームページでは、FileMaker Proであれば検証値で500、最大許容量で2,000の接続が可能となっています。(2023年2月時点)
このように接続面からみると基幹系業務に直結する規模のシステムレベルをClaris FileMakerで十二分に対応できると私たちは判断しています。
ただし、そのためにはシステム全体の設計を高度化することやそれに伴う開発技術が必要になってきます。
この記事ではClaris FileMakerで大規模、かつ拡張しやすいソリューションを開発するときに実践している取り組みについてお伝えします。
データ中心アプローチを用いて忠実なデータモデリングで実装する。
データモデリングとは「データを構造的に整理し、ビジュアルなモデルに表現することにより、データを効率的に扱えるようにすること」です。
また、一般的にデータモデリングはリレーショナルデータベースの設計で利用します。そのデータを構造化してER図と呼ばれる図法でモデル化し、リレーショナルデータベースの構築を効率化します。Claris FileMakerもリレーショナルデータベースであるために、そのデータモデリングは「DOA(DataOrientedApproach:データ中心アプローチ)」で提唱されているモデリングで設計します。
一部Claris FileMakerの特性を考慮した設計は必要になりますが、基本的なモデリングは忠実に設計するべきです。
Claris FileMakerの特性としてローコード開発が可能であり、モデリングや正規化をせずともシステム開発が可能であり、小規模なシステムを簡単にリリースすることが可能です。
しかし、数十人、数百人が同時に利用し、かつ基幹業務に直結するシステムではデータモデリングに基づいて忠実に設計・開発されているかによって、拡張性や応答性能に大きな差が生まれてきます。
また、ウォーターフォール開発に代表される旧来のシステム開発では、ビジネスロジックの変更に合わせてシステムを変更するようなことは非常に嫌がられる傾向があります。
ただし、Claris FileMakerでは上記のように難しいと言われるビジネスロジックの変更に伴うシステム変更が発生した場合でもデータとレイアウトやスクリプトが直結しているために、一般的にデメリットと言われていることがメリットになり得ます。
これはClaris FileMakerの開発生産性の高さによって担保されており、そこが大きなアドバンテージでもあると考えています。
そのために、ビジネスロジックの変更に合わせてモデリングを変更することは頻繁に発生します。そのために手数だけで言えば増えることにはなりますが、その実現性に於いてはClaris FileMakerの生産性が非常に高く、ビジネスの変化に柔軟に対応できる開発プラットフォームであると言えます。
データとUIを格納するファイルを分離する。
これは一般的に「分離モデル」と呼ばれる開発手法です。
データとはClaris FileMakerで言うところの「レコード」になります。そのレコードを纏めているモノがテーブルになります。このように物理的なデータが格納されているファイルをデータファイルと呼んでいます。
その物理的なデータが格納されているテーブルと、それ以外のオブジェクトであるレイアウト、スクリプト、カスタム関数、値一覧などが格納されているオブジェクトに分離します。格納されているデータをコントロールしたり、ユーザーインターフェースに表示するオブジェクトをUIファイルと呼んでいます。
このようにデータファイルとUIファイルを分離することのメリットは、テーブルの構造に変化がなく、レイアウトやスクリプトなどといった変更点のみだった場合に、UIファイルのアップデートだけで作業が完了する点です。
また、Claris社から2018年に「FileMaker Data Migration Tool」がリリースされました。これは、「データ移行ツール」になり、データファイルやUIファイルのデータ移行の作業が簡略化され、効率的に移行作業をすることができます。
しかし、分離モデルにすることで、小規模な修正や機能リリースであれば、UIファイルのアップデートだけで作業が完結します。また、分離することのメリットとして「データの保護」があります。
このように分離モデルを採用するメリットは大いにあると考えています。
Claris FileMakerのメリットは、小さく始めて大きく育てることができることです。そのために、小規模な機能追加、修正機能が実装されるたびに長時間に渡ってシステムが利用できない状況にすべきではないと考えます。
そのためにも分離モデルを採用すべきです。
トランザクション、マスタ、サマリ系でファイルを分割する。
これは分離モデルのデータファイルを、その用途によってファイルを分割することです。
すべてのデータを1つ、もしくは秩序なく増やすのではなく、データファイルの中で「トランザクション」、「マスタ」、「サマリ」系の3つに分割することです。
トランザクション系
システムが稼働することで随時発生する情報が永続的に増加するデータのことです。
例えば、見積・受注・発注・計画・実績・売上・請求・入金といったデータが対象になります。
トランザクション系に属するデータの特徴は、更新頻度が高いことです。ということは、ファイルへのアクセスが多く、ストレージへのフラグメントが発生することが予想され、そのリスクとしてデータ破損の可能性が高いことが考えられます。
また、データが肥大化することでバックアップに時間がかかることが予想されます。そのためにバックアップから復旧するときにも時間がかかることになります。
そして、トランザクション系では部門、もしくはデータの特性によってファイルを分割することを推奨します。
例えば、資材系の入出庫、在庫管理は生産部門になります。商品系の入出庫、在庫管理は営業部門になります。このようなデータ管理は、目的や部門が異なるデータをファイル分割の目安になります。
マスタ系
比較的更新頻度が低く、商品や取引先など実在する情報であることが多いデータです。
例えば、「商品マスタ」、「取引先マスタ」、「スタッフマスタ」、「品目マスタ」などという基本的な情報になります。
このマスタ系はレコードの更新頻度は低いですが、多くのレイアウトやスクリプトから参照されるデータになるために、常にアクセスされている情報であり、FileMakerServerのメモリに展開されていることが望ましいデータになります。
また、トランザクション系のデータのようなフラグメントが発生することは好ましくありません。そのために、トランザクション系とマスタ系は分離すべきであり、健全なデータ管理の上では分離することをオススメいたします。
そして、このマスタ系へのアクセスは一定の権限があるユーザーに対して許可されるべきデータであり、誰もがアクセスして更新できるようなフリーアクセス状態は避けるべきです。これは、様々なデータに紐付く基幹となるデータであり、そのデータが頻繁に更新されるようであれば、それはマスタではなく別の管理方法を検討すべきであります。
そのような観点からセキュリティ上の管理を厳格にすべきデータに分類されます。
サマリ系
人間が見やすいデータにした状態、つまり「非正規化」にしたデータです。
例えば、日別、営業所別の売上集計、棚卸集計になります。
サマリデータはトランザクション系データの集計結果です。そのために、トランザクションデータをリアルタイムに検索し、集計すれば必要な情報を取得することが可能です。しかし、集計対象のレコード数が数百万、数千万といった単位になると、都度その集計に時間がかかります。また、サーバーやネットワークに対する影響が発生し、負荷が非常に高くなります。その結果、ソリューション全体のパフォーマンスに影響し、応答性の低下、延いてはサーバーの稼働停止を引き起こす原因になり得ます。
そのために、サマリ系はバッチ処理と言われる定期的に実行されるスクリプト等で、トランザクション系とマスタ系から集計に必要なデータを纏めて、Claris 特有の検索機能に考慮した「非正規化」のデータとして集計結果を生成します。
システムの拡張性ができるようにClaris FileMaker Serverを利用する。
システムは複数の人が利用することで、本来のポテンシャルを発揮します。ひとりで利用するようなシステムは演算機の延長であり、本来のポテンシャルが引き出せず、また業務全体の効率化には直結しません。
そこで弊社の構築するシステムは、Claris FileMaker Server、もしくはClaris FileMaker Cloudを利用しています。これは開発段階からクラウド環境でシステム開発を実施し、その開発中の機能をユーザーさんにテストしていただき、そのフィードバックを素早く開発に活かすことで現場に直結したシステムにします。
また、利用者の増減やシステムの規模によって、サーバーのスケールアップや複数のサーバー展開などと連携し、そのシステムに適切な対応をしていきます。
これは「小さく始めて大きく育てる」には、Claris FileMakerを最大限活かせるメリットであり、このようなスケールアップができる環境と非常に相性が良いです。
さいごに
今回はClarisプラットフォームのポテンシャルについてお伝えしました。
大規模のソリューションを開発ができる、かつ小さく始めて大きく育てることができること。つまり、拡張性が高いシステムが生産性が高いプラットフォームで開発できることは、Claris FileMakerのポテンシャルがあることを意味しています。
しかし、「規模が大きい」とは人それぞれの解釈です。今回の「規模の大きい」とは基幹系システムで数百名のユーザーが利用できる環境を提供している弊社の解釈になります。
それでも現代のビジネスではスピードが早く、そのビジネスに直結したシステムを開発する場合に、目的を達成するためのシステムを素早く実現できることは、現代に求められている一つではないでしょうか。
そして、インターネットで一部言われているようなClaris FileMakerに対する大規模なソリューションは適さない、検索・表示が遅いといったことは、上記を最低限実施していないソリューションの評価であり、Claris FileMakerの内部的な理解、そして一般的な開発プラットフォームで用いる技術をClarisプラットフォームに活かすことで、基幹系システムのような複雑な業務の領域でもClaris FileMakerのポテンシャルを最大限発揮することができるでしょう。
この記事にご興味を持たれた方は、こちらの記事もおすすめです。