「iOS開発におけるパターンによるオートマティズム」
前回の第2章【アプリ設計のパターン】では、
設計の大まかな内容と流れについて学習しました。
設計にもちゃんと「パターン」があり、
それを土台に設計すれば良いというお話でしたね。 *01詳細は本を買ってちゃんと読もう!本当にお勧めの本です!!
で、今回読む章は…
第3章【モデルのパターン】
前章で、クラス設計はMVCと呼ばれるアーキテクチャに従って行う事を学びましたが、今回は、その中の「M(モデル -Model-)」について学びます。
3.1 モデルの設計
3.1.1. モデルに求められるもの
「モデル」とは何か?
どの様な役割をもつものなのか?
そのためには、どんな性質を持つべきなのか?
が書かれています。
私は当初、MVCアーキテクチャと3層構造アーキテクチャの区別が、
いまいちついていませんでした。
が、前章と今回で、とりあえずモデルの役割が何か?については、
理解出来た気がします。 *02勘違いの可能性もあるわけですが。
モデルは、アプリの扱うデータと、それを制御する仕組みを提供します。
【データ層(3層構造アーキテクチャ)との違い】
ここが3層構造アーキテクチャの「データ層」と異なる点です。
3層構造アーキテクチャのデータ層は、基本的にデータの格納庫です。
が、MVCアーキテクチャのモデルは、データ制御の仕組みも提供します。
それは、保存・読出しに応えるメソッドであったり、
データベース問合せの結果セットオブジェクトへの参照であったりします。
逆に、データ層とモデルに共通している点は、
遣り取りするデータがどう扱われるのかについて一切関知しない点です。
【クラス構造としての特性】
モデルは基本的に独立して存在するクラスです。
残るビュー、コントローラのいずれにも依存しません。
具体的には、ビュー、コントローラ、
いずれのヘッダファイルもインポートしないのがモデルです。
3.1.2. Core Data を使うか否か
Core Data とは、Cocoa touch が提供するデータ管理用フレームワーク。
これを使用すると、データ管理が大変に楽になる。
XML, バイナリ, SQL などを扱う事が可能で、
特にSQLは大きなデータを扱うときに有効。
取り扱うデータサイズが数MBを超えるなら、Core Data の利用は必須。
ただし、データフォーマットをしっかりと固めておく必要がある。
3.2 モデルオブジェクトクラスとモデルマネージャクラス
3.2.1. 2つのクラス
モデルレイヤは2つのクラスで構成する。
1)モデルオブジェクトクラス
2)モデルマネージャクラス
モデルオブジェクトは、実際にデータを保持するクラス。
モデルマネージャクラスはモデルオブジェクトの集合を管理するクラス。
3.2.2. モデルオブジェクトクラス
モデルオブジェクトクラスに求められる機能について。
1)情報の保持
2)ID
3)アクセッサ
4)保存と読み込み
持たせない機能についても言及。
・情報を処理・編集するような機能は持たせない。
・情報の処理・編集などはコントローラレイヤに持たせる。
3.2.3. モデルマネージャクラス
モデルマネージャクラスに求められる機能について。
1)モデルマネージャクラスの参照
2)モデルオブジェクト集合の管理
3)モデルオブジェクトの操作
4)モデルオブジェクト集合の保存と読み込み
3.2.4. サンプルで使われるモデルクラス
サンプルであるRSSリーダアプリの作成を例に、
モデルオブジェクトクラスとモデルマネージャクラスの定義について説明。
【おまけ】そろそろXcodeの出番
次回から、ようやくXcodeを使って、
実際にコードを書きながら体感することになりそうです。
ただし、この本はプロジェクトの作成方法などのXcodeの使い方は、殆どみあたりません。
なので、その辺りは別の本やネット記事を参考に進めることになりそうです。