FMCakeMixのUser Guide.pdfを参考に、CakePHP x FileMakerでWebアプリの作成方法を紹介する。FX.phpに添付されているFileMakerファイルをベースに、1回目から5回目でPaginationを使った一覧画面の実装方法を紹介した。今回はCakePHP, FMCakeMixの規約に沿って、実際にFileMakerデータベースを構築してみるところからスタートしてみよう。

Hello, FMCakeMix! チュートリアル / 1から作るFMCakeMix用のFileMakerファイル

FMCakeMix(CakePHP)は「設定より規約(convention over configuration)」という考え方をもとに開発がおこなわれている。CakePHPの規約を習得するには最初にすこし時間がかかる。しかしこれをマスターしておくことで、チームによる開発・意思疎通が容易となり、さまざまな恩恵を受けることが可能だ。あたらしいFileMakerデータベースを作成する前に、これらの規約を簡単に紹介しておこう。

CakePHPの規約はおもに次の4種類。

ファイル名・クラス名の規約

ファイル名はアンダースコア記法(underscored)をもちい、クラス名にはキャメル記法(CamelCased)をもちいる。

種類 クラス名 ファイル名 備考
コントローラ FileMakerTrainingController file_maker_training_controller.php ファイル名に「_controller」が含まれる
モデル FileMakerTechnical file_maker_technical.php  
ビュー FileMakerConference file_maker_conference.php  

モデルとデータベースの規約

モデルのクラス名は単数形でキャメル記法をもちい、CakePHPのモデルに対応するテーブル名は複数系でアンダースコア記法をもちいる。

モデル名 テーブル名
Author authors
Book books
Client clients
Project projects
BigPerson big_people

各テーブルには主キーとして「id」フィールドを作成しておく。

hasMany(1対n), belongsTo(n対1)中の外部キーは、関連するモデルの名前末尾に「_id」をつけたものとなる。書籍(Book)が著者(Author)に属する(belongsTo)場合、booksテーブルはauthor_idを外部キーとしてauthosテーブルのデータを参照する。

コントローラの規約

コントローラのクラス名は複数系でキャメル記法をもちいる。ファイル名と同様、末尾にControllerが付く。リクエストでアクションを指定しなかった場合、デフォルトではそのコントローラのindex()メソッドが実行される。また、コントローラ関数名の先頭にアンダースコア(_)を付けることで、そのメソッドを隠蔽することが可能。この場合、そのメソッドは内部処理でのみ利用できる。

ビューの規約

対応するコントローラの関数に合わせた、アンダースコア記法をもちいる。BookControllerクラスのindex()は、/app/views/book/index.ctpをビューテンプレートとして使用する。

ここまでの命名規約をまとめる。

種類 名称 ファイルパス
データベースのテーブル books -
モデルクラス Book /app/models/book.php
コントローラクラス BookController /app/controllers/books_controller.php
ビューのテンプレート - /app/views/books/index.ctpなど
主キー id -
他テーブルで使用する外部キー book_id -

次回、実際にFileMakerファイル、テーブル、フィールドの作成について紹介しよう。

既存のFileMakerファイルをFMCakeMixでWebアプリ化するには

FileMakerをバックエンドにしたWebアプリケーションの場合、筆者の経験上「既存リソースをWebアプリ化し、Webブラウザ・FileMaker Proクライアント両方からデータを操作できるように」というニーズがおおいように感じる。この場合、FileMakerの既存の帳票レイアウトやデータ加工スクリプトをそのまま保持できつつ、Webから別のアプローチでデータを閲覧・投入・集計をおこなえる。FileMaker自体がデータベースを簡単に設計・改修できることから、実装開始から運用開始までの時間も比較的短時間ですむ。

このような既に出来上がっているシステムをFMCakeMixでWeb化するとなると、テーブル名や主キーの名称がCakePHPの規約に沿わず、CakePHP/FMCakeMixの便利な機能を100%発揮できない場合がある。こういった場合モデルの属性を使用して、デフォルトの動作を変更することが可能だ。FMCakeMixで既存FileMakerデータベースをWeb化する場合は、CakePHPの規約と一緒にチェックしておきたい。