ソフトウェア開発メモ

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

iOS

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

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

プロトコルについて

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

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…

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

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

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

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

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

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

Store Kit CRCカード

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

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

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

NSOperationと逐次的凝集

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