データベースのカスタムアプリケーションの作成（比較）

ネットワークで利用して、データを複数のPCから共有するカスタムアプリケーションを作成する場合の、メリット・デメリットを比較します。
FileMakerってどうなのよ、と検討している方が対象です。（2018/6 時点）

- FileMaker + FileMaker Server
- .NET Framework+ Microsoft SQL Server

この2つのプラットフォームで比較します。

   ○　良い
  △　普通
  ×　悪い

○△×は、この2つの環境における、相対的な比較です。
空欄の部分は、その知見に欠けるので評価していません。


|                         |FileMaker	            |.NET Framework	  　　  |
|:------------------------|:------------------------|:------------------------|
|コスト（4人以下で共有）	|×	| △(Microsoft SQL Server Expressなら無料）|
|コスト（5人以上で共有）	|△	|△		|	
|開発環境	|×（貧弱）	|○（優秀）	|
|複数人による同時開発	|×（できないに近い）	|○（優秀）	|
|開発速度	|○（極めて速い）	|×	（FileMakerと同じ事をしようとしたら、3倍以上の時間がかかる）	|
|機能追加・改良	|○（容易）	|△	|
|学習コスト	|○	|×	
|データベースの機能以上のことを行う	|×	|○	|
|ネットの情報	|×	|○	|
|iPhone,iPadからの利用	|○		|  |
|データベースの破損、その回復	|×	|  |

##コスト（4人以下で共有）
FileMakerはバージョン17で、ライセンス体系が変更になりました。ランタイム版も廃止間近になりその代替も無く、FileMakerProも無くなりました。要は全体的に値上げです。
そのため、4人以下で、FileMakerを利用するには、初期導入費用が高く付き、コストの点で利用しやすいものではなくなりました。
なんらかの社内業務に対して、独自のアプリを作成するには、FileMakerは、今も昔も、高速開発ができます。また、新しく始めるにあたっての学習コストも.NETよりは小さいです。このメリットをふまえて、費用を許容できるなら、FileMakerを選択するのは充分有りですし、ExcelのVBAでは無く、業務の片手間に使いやすいアプリを作成するには、FileMakerは最適な選択肢だと思います。
ただし、今までの、FileMaker社のライセンス体系の変更を見ていると、ライセンス体系の変更が今後も続き、利用するにはサーバーを含めて5ライセンス以上からという、個人とリトルビジネスを完全に切り捨てたモデルも考えられるので、将来の展望に不安を感じるなら、選択肢からはずした方が良いかもしれません。個人向け・小規模向けに展開していたFileMakerでしたが、バージョン7以降にサーバー版が出てからは、中規模・大規模向けにフォーカスする戦略のように思えます。

また、ソフトウェアのライセンスの他に、Cloudを利用するか専用のサーバー機が必要です。専用のサーバー機は、Windows Server 2012 Standard以降かMac OSが条件です。（2018/6/29追記）

##コスト（4人以下で共有 .NET）
Microsoft SQL Server 2016 Express を利用するには、少なくとも、Windows Server 2016 Essentialsが必要になります。
2016 Essentials搭載の⼩型サーバーは、16万円程度で購入できます（2018/6時点）。ただし、SQL Server 2017 Express は、2016 Essentialsをサポートしていません。
現時点では、2台以上のPCで共有するには、SQL Server 2016 Express +　Server 2016 Essentialsの組み合わせが、候補になるでしょう。
コストは、○から△に変更しました（2018/6/29）

##FileMakerでの開発環境
開発用のスクリプトエディタは貧弱です。
例えば、変数名の変更は、一括でできないため、一つ一つ手作業で置き換える必要があります。
カスタム関数のエディタも、使いにくく良いものではありません。
デバッガも使い勝手が悪いです。
バージョン管理もできず、ソースの比較も出来ません。
開発環境は、不満だらけですが、それでもなお、高速で開発できるのですから、不思議ですね。

##開発速度
FileMakerの最大の利点は、これです。これがなければ、FileMakerを利用する意味は無いでしょう。
.NET + SQL Serverの組み合わせで同じ事をしようとしたら、開発期間は3倍以上かかるでしょう。

##.NETによる開発
FileMakerのデータベースと同じ事をするとして、例えば、・WPF　・EntityFramework　・Microsoft SQL Sever　の組み合わせで作成します。
出来ることに制限がほぼ無いため、学ばなければいけないことが極めて多く、単純なデータベースアプリを作成するまでへの敷居が高いです。難しいです。

私の場合、Windows Formアプリから、WPFアプリへ移行しましたが、学習コストは実感で2倍以上かかります。Formアプリに比べて出来ることが格段に増えたこと、XAMLという言語も必須なこと、などが原因です。逆に、WPFを利用せず、旧来のFormアプリのままで良いなら、もう少し楽にできるでしょう。

##学習コスト
とにかく動けば良い、というものを作ってしまうには、FileMakerは得意です。ただし、それを基にして、だんだんと拡張して機能を増やしてゆくには、FileMaker独特の考え方を学ぶ必要があります。リレーションの利用方法、大規模な構造のための、アンカーブイモデルや、セレクターコネクターモデル、分離モデルなど、先人の知恵で開発されてきたモデル、データの整合性を保証するためのスクリプトの仕組み。最終的にはこれらの事柄を学ぶ必要があるでしょう。導入の学習コストは低いですが、大規模な構造を目指すなら、学ばなければならないことは、それなりにあります。

##データベース機能以上のこと
FileMakerはデータベースに特化しているため、それ以外のことは不得意です。例えば、ファイル操作などできないこともないですが、複雑になり、行うには他の言語を利用した方が容易です。その場合、FileMakerと他の言語とを学ぶ必要がありますから、当初から、データベース以外の機能も必要になることが想定されるなら、最初から、.NETで作成しておけばいいのでは、という考え方でもいいかもしれません。

##ネットの情報
FileMakerでの技術的な事柄は、なんらかの解決策を得るでしょう。先人の知恵を参照したり、質問したり、でおおむね解決できます。それより問題なのは、ビギナーから、中級・上級レベルにステップアップするための、日本語での、体系的な技術情報がネットには不足していることです。
例えば、アンカーブイモデルについての詳細で的確な日本語の解説はネットには無く、英語の情報にあたって理解する必要があります。（アンカーブイモデルは、その開発者自身はすでに使っていませんが、よく使われるモデルです。）

##データベースの破損
FileMakerの弱点として、サーバーを利用しないと、データが破損しやすいです。
サーバーを利用せず、1台のPCに、FileMakerをインストールして運用している場合、不意のWindowsの強制終了などで、データベースは破損します。修復コマンドがありますが、これは修復後、そのデータを壊れていないFileMakerのファイルに移動させるために利用するもの（マニュアルに書いてあります）で、不正に終了した場合のファイルを修復してからそのまま利用することは安心できるものではありません。データベースの破損を回避するために、専用のサーバー、UPSの利用など、可能な限り安定して運用できるよう環境を整える必要があります。安定した運用を行うために環境を整えるのはSQL Severでも同じ事ですが。