【連載】iOS/Androidアプリ開発入門「サーバ連動アプリを開発しよう!」 (4) モデル実装
2015/03/12
みなさん、こんにちは!
第3回「(3) API実装」の続編です。
前回同様、本格的なアプリを開発するためには「何を知っておかなければならないか」「何を勉強すればいいか」を中心に書いていきたいと思います。
今回はモデルの実装を進めます。
早速はじめていきましょう。
モデルを実装する
(1) データベース設計と整合性をとる
モデルを実装するにあたり第1に大切なことは、データベース設計と整合性をとることです。
モデルの実装をデータベース設計と一致させることで、データの取得・加工・保存が大幅に楽になります。
本連載第2回「(2) 画面設計・データベース設計・API設計」において、データベース設計を以下の通りとしました。
id int(11) NOT NULL 主キー AUTO_INCREMENT text varchar(256) NOT NULL created datetime NOT NULL modified datetime NOT NULL
従って、サーバ側・アプリ側のモデルの実装もこれと整合性をとり、以下のようにします。
サーバ側(CakePHPの場合)
class Post extends AppModel { public $validate = array( ・・・(1) 'id' => array( 'rule' => 'naturalNumber', 'on' => 'update', 'required' => true, 'allowEmpty' => false, 'message' => 'Invalid ID' ), 'text' => array( 'rule' => array('between', 1, 256), 'required' => true, 'allowEmpty' => false, 'message' => 'Please input text' ) ); }
アプリ側(Androidの場合)
public class Post { int id; ・・・(2) String text; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getText() { return text; } public void setText(String text) { this.text = text; } }
ポイントは以下のとおりです。
(1) データベース設計にあわせて、モデルのバリデーションルールを定義する
(2) データベース設計にあわせて、モデルのパラメータを定義する
なお、今回は省略しましたが、created, modified
の2カラムもモデルに実装しておくとよいでしょう。
(2) プログラムはモデルに書く
モデルを実装するにあたり第2に大切なことは、プログラムはコントローラー(C)ではなくモデル(M)に書くというMVCの原則です。
モデルに書くプログラムの典型例は、以下のとおりです。
- (データベースやファイルから)データを取得する
- データを加工する
- データをバリデーションする
- データを保存する
今回の例では、次のようなプログラムをモデルに書いていきます。
サーバ側(CakePHPの場合)
class Post extends AppModel { public function add($data) { ・・・(1) $this->create(); return $this->save($data); } public function viewAll() { ・・・(2) return $this->find('all'); } }
アプリ側(Androidの場合)
public class Post { public boolean validate() { ・・・(3) if (text != null && text.length() > 0 && text.length() < 256) { return true; } else { return false; } } }
ポイントは以下のとおりです。
(1),(2),(3) コントローラーにこれらのプログラムを書かず、モデルに書く
こうしておけば、将来「2014年以前の投稿は表示しない」といった新たな要件がアプリに追加されたとき、モデルを1箇所修正すれば、すべての画面・機能に一括で反映されるようになります。
反対に、MVCの原則を無視し、$this->Post->find('all');
といったデータを取得するプログラムを様々なコントローラーに(コピペで)直接書いていると、新たな要件がアプリに追加されたとき、「いったいどことどこを修正すればいいんだ?」ということになってしまいます。
第4回のまとめ
APIの実装が終わったら、モデルを実装しましょう。
- モデルの実装は、データベースの設計と整合性をとる
- プログラムはモデルに書き、コントローラーには書かない
本日は以上です。
連載目次
iOS/Androidアプリ開発入門「サーバ連動アプリを開発しよう!」
(10) 開発の旅をうまく乗り切る(最終回)
(9) バックグラウンドでメール送信
(8) サーバの監視とデータのバックアップ
(7) リモートサーバ(本番環境)の構築
(6) ローカルでの単体・結合テスト
(5) コントローラーとビューの実装
(4) モデル実装
(3) API実装
(2) 画面設計・データベース設計・API設計
(1) 開発環境の構築