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の規約と一緒にチェックしておきたい。