読者です 読者をやめる 読者になる 読者になる

ソフトウェア開発メモ

日々のソフトウェア設計、実装で考えている、気づいた事を書いています。それが真実か否かは保証しません。悪しからず。

iOS

NSPredicateを使って、ドメイン駆動設計でいう「Specification」を表現する。

はじめに ご存じのとおり、iOSのNSPredicateクラスは配列をフィルターしたり、Core Dataでフェッチするための条件に使う物です。 条件文は複雑になり読みづらいですが、ドメイン駆動設計で言う「Specification」に基づいて、抽出条件を連想しやすいコンスト…

プロトコルについて

クラスを独自に分類してみました。 分類例 AVVideoCompositing:責務を表す? UITableViewDataSource:ロール、人工品? UITableViewDelegate:ロール、人工品? NSTextLayoutOrientationProvider:責務を表す? NSURLAuthenticationChallengeSender:責務を表す…

AV Foundationのドメインモデル

はじめに iOS、リバースモデリングの勧め。 - 概念構築メモ iOS、リバースモデリングの勧め。 - 概念構築メモ で言及したとおり、iOSのフレームワークはドメインモデルの宝庫である。そこでAV Foundationについてどういう思想で成り立っているか調査した AV …

UIKit クラス階層について雑感

はじめに Cocoaはオブジェクトコンポジションの考え方を大胆に導入した世界初のフレームワーク*1だけ有って、他のプラットホームよりもクラス階層は浅い。標準フレームワークにおいて5階層を超える状況は私が知る限りない。 で、急に話は飛ぶけど、アップル…

HeathKit CRCカード(作成中)

HKBiologicalSexObject HKBloodTypeObject HKHealthStore HKObject HKSample HKCategorySample HKCorrelation HKQuantitySample HKWorkout HKObjectType HKCharacteristicType HKSampleType HKCategoryType HKCorrelationType HKQuantityType HKWorkoutType …

iOS、リバースモデリングの勧め。

良いソフトウェアを作るには既存の出来のいいソフトウェアを調査/研究する事が必要。特にまわりにできる人がいない限りどこからかよい見本を見つけなければならない。 その点、iOSの各種フレームワークは見本の宝庫。デザインパターンの元ネタとして有名なUI…

iOS クラス探訪、〜Object、〜Entityクラス編

はじめに モデル系フレームワークのエンティティ系オブジェクトの基底クラスを表す。NSManagedObjectが有名。 内部で使っているであろう永続化機構(SQLite or Core Data?)に関連したメソッドを提供している事が多い。各属性の列挙アクセス、変更した属性値を…

オブジェクトの責務について

オブジェクト(クラス)の責務は以下の順番から考えると腹にうまく落ちて行く感じ。 情報(インスタンス変数、プリミティブ型やValue Object)を把握する責務。 協力者(関連オブジェクト)に仕事を指示する責務。 直接の協力者、あるいは外部のオブジェクトから…

iOSクラス探訪 〜Store/〜Library系クラス編

前回に引き続き、色々調べてみる。 ドメイン駆動設計でいうリポジトリクラス?。名の通りエンティティ系オブジェクトを貯蔵し、各問い合わせに応じて取り出し、保存を行うタスクを持つクラスが多い。この名前を持つクラスも外部に提供するサービスがクラスに…

iOSクラス探訪 〜Request系クラス編

iOSは今では巨大なプラットホームでいろんなジャンルの色々なクラスがある。そこでクラス名の観点からそのクラスがどんな特徴、役割を持つのか調べてみた。 まずは、〜Request系クラス編。文字通り要求を表すクラス。とはいってもクラスの性格や役割は各々の…

SKPaymentQueueクラスの責務について考察

SKPaymentQueueには支払い行列管理の他にダウンロード商品のダウンロードを開始、一時停止、再開、中止するメソッドがある。いわば2つの顔がある。 クラスの責務が超過気味じゃないか?、SKPaymentQueueとSKDownloadQueueの2つに分けるべきじゃないと思う…

Store Kit CRCカード

はじめに 書いて見た。実際に文章に起こすと難しい。 SKDownload 商品ダウンロード ロールステレオタイプ 情報提供役? 情報把握責務 App Storeからダウンロード可能な商品を表現します。 その商品のダウンロードの進捗状況、ダウンロード先のファイルパスを…

Game Kitのクラス概念について

Gameプログラミングはやった事がなく。昔、Xevilというlinuxのオープンソースを勉強がてらに読んだのと、つい最近、仕事が暇だったのでSprite Kitを使ってブロックくずし(のようなものを)作ったぐらい。んで、Game Kitを構成するクラス概念は調査すると面…

NSOperationと逐次的凝集

今までクラスの凝集度は通信的凝集になるべきだと無意識に思いこんでいた。いわゆるデータ構造の詳細(=インスタンス変数)を見せないためのクラス。クラスを作る意味としてよく挙げられますね。そうではなくて、クラスは複雑な手続きや処理を隠すためにも…