和紀Comments※このページの最後に、私達が担当し、そして大成功を収めたアジャイル開発プロジェクトの実践事例の解説動画無料プレゼントをご案内しています。お見逃しなく!「もう少し効率的に、そしてより高度なFileMakerソリューションが開発できるようになりたい...」もしあなたがこのように思われていれば、こちらでご紹介する8つのステップは、あなたにとってとても役に立つ情報です。こちらのページでは、初歩的なアプリケーションを開発できるようなった開発者が、より本格的なFileMakerソリューションを開発するための8つの準備ステップを解説しています。私達は当初、FileMaker以外の一般的に普及している開発プラットフォームでソフトウェアを開発していました。とある御縁から、FileMakerプラットフォームでの開発に携わるようになり、現在は全ての開発をFileMakerプラットフォーム上で行っています。今でこそあらゆる開発要求にもFileMakerで対応できる私達ですが、最初は数レイアウト、数テーブル程度の小規模な開発案件からスタートしました。修得する必要が出てきました。こちらでは、実際にFileMakerでシステム開発を開始した技術者が、より大規模で信頼性の高いシステムを構築するために必要となる実務的なステップを8段階に分けて説明したいと思います。このステップは、実際に私達が経てきたステップを、より洗練したものとなります。目次1:FileMakerServerの開発者ライセンスとFileMakerTrainingSeries応用編を入手する。Explorer7:開発フレームワークを決定する。8:開発プロジェクトをスタートするまとめお問い合わせ共有:1:FileMakerServerの開発者ライセンスとFileMakerTrainingSeries応用編を入手する。最初のステップは、FileMakerServerの開発者ライセンスとFileMakerTrainingSeries応用編のテキストを入手するステップです。実はこれが極めて重要なステップで、これらのリソース無しでは本格的な開発には移行できないと言っても過言ではございません。それでは実際にFileMakerServerの開発者ライセンス、及びFileMakerTrainingSeries応用編のテキストを入手する方法を解説します。FileMakerCommunityへ入会します。Subscriptionを購入します。Subscriptionの購入には、年間9,000円の購読料が必要となります。Subscription」のリンクボタンが表示されるようになります。こちらのリンクボタンにある「特典にアクセス」をクリックすると、メンバーシップページに移動します。そのページに、購読者特典で配布されるFileMakerServerインストールプログラムのダウンロードボタン、そしてインストールキーが表示されます。そこからインストールプログラムとインストールキーを入手することが可能です。このページでFileMakerTrainingSeriesの応用編の電子ファイルをダウンロードすることが可能です。多くのFileMaker開発者は、既にFileMakerCommunityへの入会は終わっていると思います。Subscriptionの定期購読を開始して、FileMakerServerの開発者ライセンスとFileMakerTrainingSeriesの応用編を入手して頂きたいと思います。2:FileMakerProAdvancedを購入し本格的なソリューション開発に耐えうる開発環境を準備するFileMakerProAdvancedとFileMakerServerの組合せは、本格的な開発を開始するにあたって絶対に必要となる組合せです。FileMakerProAdvancedは、FileMakerProが持つ全機能にプラスして、スクリプトデバッガ・データビューア、データベースデザインレポート等、開発者をサポートするための機能がぎっしりと搭載されています。これらの機能は、ソリューションの開発者が日々使うものであり、これがないと開発生産性は恐らく10分の1以下になってしまいます。確かにFileMakerProAdvancedは、FileMakerProと比較すると価格的にそれなりの金額になってしまいます。後々の開発生産性のことを考えれば、これはかなり安い投資です。FileMakerProAdvancedは、AVLA(年更新型のボリュームライセンス)であれば、月額換算でたったの1,700円です。FileMakerProは、AVLAの月額換算費用が約1,000円で、その差は700円程度。月額たったの700円で10倍の生産性を得ることができます。次にFileMakerServerも、本格的な開発を始める前には絶対に揃えておきたいプロダクトです。FileMakerのソリューション開発は、FileMakerServerにホストしながら開発することを強く推奨します。これは、開発中のスクリプトが無限ループに陥ってしまった場合に、安全にスクリプトを停止したり、突発的な開発マシンのフリーズ等によって、開発中のソリューションにダメージを与えないことが最も大きな目的です。上記のような状況でfmp12ファイルが破損してしまい、あなたが3時間かかって書いたスクリプトが消えてしまったらどうでしょうか。精神的なダメージも経済的な損失もそれぞれ甚大です。いったことを未然に防ぐためにも、FileMakerのソリューションの開発は、FileMakerServerにホストしながら行うことが望ましいといえます。FileMakerServerは、先述したFileMakerCommunityサブスクリプションに入会すれば、実質無料で入手することができます。ここで入手できるのは開発者バージョンなので、同時接続数に制限があります。それ以外の機能は製品版のFileMakerServerと全く変わりません。この時、FileMakerServerをどのマシンにインストールするかの問題が出てきます。候補としては、開発者のローカルマシンか、開発専用のサーバマシンということになります。私達の推奨としては、やはり専用の開発サーバマシンを用意し、そちらにFileMakerServerをインストールする方を推奨いたします。開発者のローカルマシンにFileMakerServerをインストールして、そのサーバに複数の開発者が接続して開発をしていたとします。その時に、FileMakerServerが稼動していたマシンがフリーズしたらどうでしょうか。それまで作業をしていた複数開発者の作業が水の泡になってしまいます。システム開発の作業中は、スクリプトの無限ループや、効率の悪い計算式を書いてしまったことが原因で、CPUやメモリに対して最大瞬間風速的に過度な負荷がかかってしまうことがどうしても発生してしまいます。いった悲劇を避けるためにも、開発用のサーバマシンは必ず用意しておき、かつその開発用マシンにも定期的なバックアップやプログレッシブ・バックアップを設定しておくことを強く推奨します。開発サーバはクラウド上にインストールするという方法もあります。私達は、どうしてもお客様の数だけ複数の開発環境が必要なので、クラウド上に複数のFileMakerServerをインストールして、そちらで開発をしています。クラウド環境下であれば、必要のないときは、サーバをシャットダウンしておけば月額数百円程度の費用しか発生しません。開発環境であればそれほどハイスペックなサーバは必要としません。弊社では、NTTコミュニケーションズが提供するパブリッククラウドサービス「Cloud.n.(クラウド・エヌ)」を使用しています。サーバ1台あたりの月額費用は、1万円から2万円程度です。どんなにハイスペックマシンを1ヶ月フルに動かしたとしても、月額で2万円を超えることはありません。いずれの選択を取るにしても、FileMakerServerにソリューションをホストして開発するという大原則だけははずさないようにしていただきたいと思います。3:FileMakerTrainingSeriesで学習を開始、もしくは復習する新しい技術を学ぶスタイルは人それぞれ様々なスタイルやアプローチがあります。体系的に構築された実績のあるカリキュラムで技術を習得するというのは極めて重要な事だと思います。確かに今は、ネット上でいろんな情報をつまみ食いしながら、パイロットアプリを作っていくというスタイルもあります。実際に私達も初期の頃はその様な方法で、初歩的なアプリケーションを開発していました。そのネットから得た情報が本当に信頼できるものなのかは極めて疑問です。その情報を発信している技術者が極めて信頼性の高い、経験豊富な実力のある技術者であるなら良いのですが、そうでない場合はその人個人の小さな成功体験をシェアしているにすぎない可能性があるからです。FileMakerプラットフォームは、デベロッパーからユーザまで幅広い層が利用しているので、発信されている情報が玉石混交です。中には明らかに誤った解釈に基づいて発信されている「解決策」などが散見されます。活用していただきたいと思います。このステップで確実に身につけたい技術が、FileMakerの特徴である「テーブル・オカレンス」という特殊な仕様です。このテーブルオカレンスの動きと特徴をどれだけ深く理解できるかで、これから開発するソリューションのレベルが何倍にも変わってきます。このテーブル・オカレンスという概念は、他のRDBMSにはない概念であり、他の開発プラットフォームでの開発経験が豊富な技術者ほど、つまずいてしまう分野でもあります。この分野の学習を十分に行わないまま、過去に慣れ親しんできた従来の開発手法に固執すると、FileMakerが持つ開発生産性の高さや拡張性の高さといったポテンシャルが全く発揮できなくなってしまいます。ソリューションの動作自体も本来FileMakerが持っている能力とはかけ離れた、かなり低いレベルの能力になってしまいます。私達はよく、FileMakerプラットフォーム以外の開発で豊富な経験をもつ技術者から「FileMakerは遅い」という評価を聞くことがあります。実際にその技術者が作ったソリューションを見せてもらうと、わざわざ遅く動くように作っているとしか思えないような設計になっていることが非常に多いです。これは、FileMakerの動作特性や独自仕様を無視したソリューション設計が原因です。FileMakerプラットフォームの特性に合わせてほんの少しだけ手直しをしてあげると、そのスピードの変化に驚かれることがあります。このステップを省略すること無く、確実に学習を進めていっていただきたいと思います。4:過去に手がけたソリューションをFileMakerで開発してみるこれは一般的に「パイロット・プロジェクト」や「パイロット・ソリューション」とよばれる手法です。要は収益に直結するような本格的なソリューションをつくる前の事前学習として、FileMaker以外の開発プラットフォームでつくられたプロダクトを、そのままFileMakerで作るという試みです。この過程で、一般的な開発プラットフォームとFileMakerプラットフォームの違いが、より臨場感をもって理解できると思います。この段階で、少なくとも以前開発したより短い時間で開発ができなければ、このステップのひとつ前のステップと合わせて、より学習を深める必要があります。このステップを省略すると、実際のプロジェクトでかなり大きなトライアンドエラーを繰り返すことになります。そのソリューションはつぎはぎだらけの「パッチワーク・システム」になってしまいます。実際には使用しないテーブルやフィールド、スクリプトやレイアウトのゴミが残留してしまう「残念なソリューション」になってしまう確率が非常に高くなるということです。実際の業務で使用するソリューションは、後々の拡張性や柔軟性を確保しておくためにも、できるだけシンプルで美しい状態にしておくことが望ましいです。トライアンドエラーは、可能な限りこのステップで済ませておくことをお勧めします。このステップは本格的なソリューション開発へ移行する・しないの試金石にもなります。以前作ったソリューションを開発した時よりも、長い開発時間がかかるということはFileMakerを使うメリットがあまりありません。この段階で、少なくとも以前開発したより短い時間で開発ができなければ、このステップのひとつ前のステップと合わせて、より学習を深めるべきです。対象のパイロット・アプリケーションの規模や複雑性、及び動作環境にもよりますが、少なくとも以前開発した時の半分程度の時間で開発できるようにならないと、本格的なソリューション開発へ進むにはリスクが大きいでしょう。このステップでは同時にiPad/iPhoneで動くアプリケーションを開発してみましょう。現在はデスクトップアプリケーションで動いているアプリケーションを、「もしこれがiPadであれば...」と仮定して、GUIの設計をiPadに最適化して再実装してみる経験は、本格的なソリューション開発に向けて幾つもの気付きを与えてくれることでしょう。5:優れたオープンソースソリューションから上級開発者の技術を学ぶ私達が本格的なFileMakerの開発を始める時に、一番の助けとなったのが、実は優れたロックフリーのオープンソースソリューションです。オープンソースなので、デバッガとデータビューアを使えば、ソリューションの振る舞いを詳細に追うことができます。ここでは、私達が学習の過程で、非常に得るものの大きかったオープンソースのソリューションを公開しているサイトを3つご紹介したいと思います。SeedCodeLLC.こちらにはSQLExplorerというオープンソースのソリューションが公開されています。このSQLExplorerの開発目的は、FileMaker開発者がSQLの記述を学習することとなっています。このSQLExplorer。実はハードコーディングに頼らない抽象化されたSQL文を生成してくれるなど、実際の開発でも常に手元においておきたい開発サポートツールのひとつです。こちらのソリューションでは、FileMakerのソリューションにJavaScriptで書かれたデータグリッドコントロールを埋め込むテクニックが使用されています。残念ながらFileMakerには、一般的な開発プラットフォームではかなりポピュラーなデータグリッドコントロールが提供されていません。このロックフリーアプリケーションから学べるテクニックを使って実装することが可能です。Yourself)なスクリプトの書き方、モジュール分割のコツ等、その気になれば学べることは極めてたくさんある優れたロックフリーソリューションです。Magazineこちらは、3ヶ月数千円の定期購読料はかかってしまいますが、FileMakerで本格的なソリューションを開発する上で有益な技術情報が解説動画とサンプルソリューションがセットで公開されています。解説動画とセットで配布されているサンプルソリューションはロックフリーで、その中身を解析することが可能です。こちらは、ソリューションの解説動画が付いているので、単純なロックフリーソリューションよりも、より早く、そしてより深く開発者の意図と技術を学ぶことができます。Petrowsky氏の発音は極めて明瞭で表現もシンプル。我々ノンネイティブの開発者にも十分に理解可能な発音、表現、そしてスピードで素晴らしいコンテンツを届けてくれます。FMStartingPointこちらはFileMakerソリューションの生命線とも言えるリレーションシップグラフのマネジメントが学べるソリューションです。本ソリューションで画かれているリレーションシップグラフは美しく理にかなった構造になっています。私達は、このソリューションで使われているテーブルオカレンス・グループの命名規約を、ほぼそのまま使わせて頂いています。それほど素晴らしいソリューションです。先にも書いた通り、FileMakerのソリューションは、テーブルオカレンスとリレーションシップグラフをどれだけマネジメントできるかで、開発効率もソリューションの性能も大きく左右されます。こちらのソリューションには、その問題を解決できるヒントが満載であり、ぜひ一度紐解いてみる価値のあるロックフリーソリューションです。6:開発環境をより充実させるためのサードパーティツールを入手するパイロットプロジェクトを進め、同時にロックフリーのアプリケーションを解析しながら学習を進めていくと、より開発環境の充実を求めたくなるはずです。スクリプト内部で使われている変数名を一括で置換したい、ソリューションそのものの内部構造をよりメカ的に解析したい、商用バージョンと開発バージョンの差分を抽出したいといった、多くの統合開発環境には普通に実装されている開発サポート機能の必要性を強く感じてくるはずです。FileMakerProAdvancedは残念ながら、標準的にこのような機能が提供されていません。サードパーティ製の開発サポートツールを導入することで、このあたりの弱点を補完することができます。ここでは、私達が普段使用しているサードパーティ製の開発サポートツールを4つご紹介したいと思います。Assistantこちらは、スクリプトステップの文字列検索や置換をサポートするツールです。あるプレフィックスで始まる変数を検索し、その変数名を一括置換したり、各スクリプトステップを確認しながらのステップ・バイ・ステップによる置換をサポートします。最新バージョンではリレーションシップグラフ内の文字列検索も可能になっている。この機能は、大規模なソリューションを開発する時に非常に有用です。FileMakerプラットフォームにおけるリレーションシップは、第2のコードと呼ばれるほどソリューション全体のコントロールに大きな影響があります。関わらず、文字列検索の機能が実装されていないので、特に規模の大きなリレーションシップグラフのマネジメントには苦慮します。このツールのおかげで開発効率は非常に高くなります。シングルユーザラインセンスが195USDと少々値は張ってしまうが、それでもこのツールから得られる恩恵を考えれば、開発者としては手元においておきたい有益なツールのひとつでです。BaseElementsBaseElementsは、FileMakerProAdvancedから出力可能なXML形式のデータベースデザインレポートをインポートすることで、対象ソリューションの内部構造をデータベース化してくれるソフトウェアです。このデータベース化により、FileMakerの内部オブジェクトの相互関係を全て明らかにすることができます。あるテーブルのあるフィールドが、どのスクリプトでどのように使われているか、どのレイアウトでどういう表示のされ方に使われているかを、メカ的に解析することが可能となります。これは、実際のプロジェクトにおいて、ある機能を修正したいといった時の影響範囲の調査時に役立ちます。この機能が無ければ、正確な影響範囲の調査はまず不可能ですし、本質的な価値を生まないバックログ作業に膨大な時間を要することになります。このBaseElementsの特筆すべき機能は、バージョン間の差分をレポートする機能です。商用バージョンには無くて、開発バージョンには存在するスクリプトやフィールド、もしくはその逆の差分をメカ的に抽出可能なのです。これも実際のプロジェクトにおいては極めて有用な機能です。私達にとってはもはや、BaseElements無しでは、本格的なソリューション開発は不可能と言っても過言ではないほどの必須ツールになっています。こちらは1ユーザラインセンスが63,000円とそれなりの金額にはなってしまいますが、それでも本格的なソリューション開発には欠かせないツールであり、直ぐに元が取れる金額でもあります。チーム開発の場合にはボリュームディスカウントもあるので、導入することを強く推奨します。5ClipManagerは、FileMakerの各オブジェクトのライブラリ化をサポートするツールです。どんなソリューションでも使用するカスタム関数や、標準化されたスクリプト、標準化されたデータベーススキーマといったオブジェクトを、ひとまとまりにして管理することができます。私達は、このClipManagerに、社内標準のカスタム関数やスクリプト、及びデータベーススキーマを登録し、開発者間で共有しています。登録したオブジェクトには、コメントなども残すことができるので、簡易的なバージョン管理に使用することも可能です。チーム開発のシーンでは欠かすことのできないツールです。ExplorerSQLExplorerは、FileMakerプラットフォームのバージョン12から実装されたExecuteSQL関数に記述するSQL文を効率的に、スペルミス無く記述することをサポートするツールです。同時に、テーブル名やフィールド名をハードコーディングしない抽象化されたSQL文を生成することも可能です。抽象化されたSQL文をつかうことは、ソリューションの拡張性や柔軟性を担保する上で極めて重要なことです。私達が開発するソリューションでは、FileMakerの特性をできるだけ活かすために、SQLの使用は最低限にとどめています。DISTINCT句等でユニークな値一覧を簡単に取得したい場合や、参照頻度の高いレコードセットを予め関数化(オブジェクト化)したい場合などにSQLを用いることがあります。この場合、先にも書いた通り拡張性と柔軟性を担保するために必ず抽象化されたSQL文を記述するようにしています。その抽象化SQL文の記述にはこのSQLExplorerを用いています。こちらは先述したとおりフリーウェアなので、導入することに躊躇は必要ないと思います。7:開発フレームワークを決定する。開発フレームワークとは、システム開発全体のライフサイクルをマネジメントするためのルールです。一般的にはウォーターフォール手法、プロトタイピング手法、スパイラル手法、アジャイル開発手法といった方法論が挙げられます。ここで注意しなければならないことは、ウォーターフォール手法は絶対に選択してはいけないということです。日本の開発現場では未だにウォーターフォール型の開発が主流になっており、多くの経験ある技術者もこの手法に慣れ親しんでいます。開発手法の書籍を手にとっても、特に伝統的な名著ほどウォーターフォール型を前提とした開発手法が解説されています。ウォーターフォール型の開発手法を選択してしまうと、FileMakerがもつ柔軟性や開発生産性を十分に発揮することができません。このウォーターフォール開発は、アジャイル開発手法と比較して3分の1程度の成功率なのです。私達が推奨する開発手法は、ICONIXプロセス、そしてジャイル手法の中でも最も普及している「スクラム」とよばれるフレームワークのハイブリッド型です。ICONIXプロセスは、日本ではあまり馴染みのない開発手法かも知れません。FileMakerプラットフォームとの相性が良い開発手法です。この記事の一番最後に参考書籍のリンクを掲載しておくので、もしご興味があればぜひ手にとっていただきたいと思います。「スクラム」については、その源流が日本の製造業にあり、日本人のメンタリティに良く馴染む開発手法です。今注目を集めているアジャイル開発手法の中でも、スクラムは一番の実践例があり、書籍も豊富なので、情報を入手するのにそれほど苦労をすることはないと思います。私達のサイトでも、今後スクラムに関する情報は積極的に発信していきたいと思っています。ICONIXプロセスについては、弊社のブログでもICONIXプロセスに関する情報を発信しています。こちらもご参照いただきたいと思います。ここで大事なことは、システム開発のライフサイクル全体を管理できる「ルール」を選択し、そして実践するということです。まずいのは、ルールを定めずただなんとなく開発することです。これは地図を持たずに旅に出る行為と同じで、確実に目的地へたどり着くことが極めて難しくなってしまいます。小規模なソリューションの開発であれば問題は少ないでしょう。大きく本格的なソリューションの開発では、必ず開発フレームワークを導入し、それに沿った開発を行うことをお勧めします。8:開発プロジェクトをスタートするここまでくれば、本格的なソリューションを開発するための準備は十分に整っているはずです。あとは、実際の開発から経験値を増やし、確実に学習しながら前に進んでいくことで、素晴らしい成果を得ることができると思います。開発の過程では、技術的にわからないことや、思ったような性能が出ないこともあると思います。そんな時は、経験豊富な技術者やコンサルタントにサポートを仰ぐのもひとつの解決手段になるでしょう。実は私達も、FileMakerプラットフォームにおける開発をはじめた最初の頃は、経験豊富なセンパイFileMaker技術者から多くの技術支援をいただきました。この技術支援が無ければ、今日これだけの開発技術を修得することはほぼ不可能だったと言えます。フォーラムには、著名な開発者もたくさん発言しているので、もしかしたらあなたの問題を解決するためのヒントを与えてくれるかもしれません。全国には「FileMakerユーザ会」というオフラインの勉強会コミュニティもあり、ここでも様々な活動が行われています。ここでは、著名な技術者と出会う非常に良い機会です。時間をつくってこのようなコミュニティに参加しましょう。1点、ご注意いただきたいことがあります。それは、コミュニティに参加している高度な技術をもったプログラマに、節操無く解決策を求めないということです。有能な技術者は、ある日突然有能になったわけではありません。長い時間のトライ・アンド・エラー、そして莫大な時間とお金の投資をしてきて今の実力を得ることができたのです。いった部分に敬意を払って、失礼のない態度を心がけてほしいと思います。まとめこのページでは、FileMakerプラットフォームで初歩的なソリューション開発ができるようになってきた開発者、及び開発チームが、より大規模で信頼性の高いシステムを構築するために必要となる実務的なステップを8段階に分けて説明してきました。ここに上げたステップを、順番に全て踏む必要は無いかもしれません。どこかのステップを省略すれば、何らかの形でその代償を払うことになる可能性が極めて高いと言えます。私達は、これまで多くのFileMaker技術者をサポートしていきましたが、特に他の開発プラットフォームを経験しているプログラマやSEほど、このステップを省略したがために大きな代償を払っているケースをいくつも見てきました。システム内製化の目的は、あくまでも経済的な合理性に基いて、収益性向上に貢献するソフトウェアを素早く開発し、そして利用しながら継続的に改善していくことにあります。目先の問題にとらわれて、大局を見失わないようにしたいものです。そのためには周到な準備と、十分な学習が必要です。この8つのステップを参考に、あなたのプロジェクトの成功を祈願いたします。本記事の中で触れたICONIXプロセスを学ぶための書籍を2冊紹介させていただきます。少々古い本ではありますが、いずれも極めて普遍的な内容で書かれているので、本書から学ぶことはベテラン技術者でも非常に多いと思います。41,879Amazon.co.jpで詳細を見るお問い合わせこの記事でご不明な点やわかりにくかった点はございませんか?私達はシステム開発の内製化をサポートする専門家として、より皆さまのお役に立てる情報を発信していきたいと思っております。「こんなことで困っている。「こんな情報が知りたい。「具体的なサポート内容が知りたい。」など、システム開発の内製化に関することであればお気軽にお問い合わせください。※このページの最後に、私達が担当し、そして大成功を収めたアジャイル開発プロジェクトの実践事例の解説動画無料プレゼントをご案内しています。「アジャイルソフトウェア開発の概要はわかったので具体的な事例を知りたい。」そう思ったことはございませんか?私達は数年前から、アジャイル開発プロジェクトに取り組み短期間で顧客満足度の高いシステムを構築してきました。この無料プレゼント動画では納期の3週間前には全ての開発を完了したという非常に成功したアジャイル開発プロジェクトの実践事例をご紹介します。BMWジャパンやDOLCE&GABBANAジャパンといった外資系企業、及び東証一部上場企業において、情報システム部門の立ち上げから基幹システムの企画・開発・運用まで幅広い経験と実績を持つ。2006年にフリーエージェントのITコンサルタントとして独立。株式会社ライジングサン・システムコンサルティングを創業する。現在はFileMakerプラットフォームとアジャイル開発を用いたシステム開発の内製化をサポートしている。