iOS開発におけるパターンによるオートマティズムに関して

iOSアプリって勝手なイメージですけど、webアプリよりもFLASHの方が近いかなーと思っています。なのでFLASHやってたころのProgressionの知識と、最近のRails周りの知識に照らし合わせながらのメモ的な感想的な何かです。

1. パターンとは何か

この本で言うパターンの説明。デザインパターンとかフレームワークなどではなく、スニペットのようなものと理解しました。

2. アプリ設計のパターン

アプリ設計を3つのフェーズで行おうという提案。私が普段やっているのもこんな感じですね。

  • 機能設計
  • ユーザーインタフェース設計
  • クラス設計

MVCの考え方

ビューはモデルに依存とありますが、Railsとかだとコントローラーに依存しているようなイメージがあって、その辺違うのかなーと思いました。モバイル端末だと、ビューはデータ表示のみで独立しているからですかね。

  • モデルは、他のレイヤから独立している
  • ビューはモデルに依存しており、コントローラから独立している
  • コントローラは、モデルとビューに依存している

アプリコントローラ

共通のアプリコントローラを最低1つ用意する。アプリの起動時、終了時の処理などを記述する。

3. モデルのパターン

2つのパターンを定義することを推奨している。

  • モデルマネージャクラス
  • モデルオブジェクトクラス

モデルオブジェクトクラス

情報を保持することだけに限る。

  • 情報の保持
  • IDの作成
  • アクセッサの提供
  • 保存と読み込み

モデルマネージャクラス

インスタンス化したモデルクラスを管理する。シングルトンで管理。これもProgressionのデータ管理手法と似ている。Progressionにおいては、データの管理方法は定義されていなかったが、Progression使っているひとと、シングルトンで管理するよねーというお話した記憶があるし実際私もそうやっていました。

ただ当時は、モデルとモデルトマネージャクラスちゃんと分けてなかったので、ちゃんと役割分担する方がよりオブジェクティブだなと感じました。

役割は以下。

  • モデルマネージャの参照の取得
    • 自身をどこからでも参照できるようにするってことですな。
  • モデルオブジェクトの集合の管理
    • データベースでいうとテーブルの保持的なイメージ
  • モデルオブジェクトの操作
    • データベースで言う、テーブルの操作的なイメージ
  • モデルオブジェクトの集合の保存、読み込み
    • データの永続化
    • 永続化したデータの読み込み

モデルマネージャーの定義は、モデルオブジェクトの階層構造を考慮して上層の部分を定義すると良い。

モデルオジェクトクラスのパターン

イメージ的にはRubyでいうDataMapper的な感じ(使ったことないけど)でインスタンス変数で情報の属性を保持する。

インスタンス変数

indentifierプロパティを用意することで各インスタンスを容易に参照可能とする。これ、Progressionでも各インスタンスにid付けられて便利だなーと思っていたのと似ている件が先に浮かんだだけど、テーブルでいう主キーですね。ふむふむ。

  • indentifierはCore FoundationフレームワークのCFUUIDを使う
  • インスタンス変数はretainして、このクラスで保持する

保存と読み込み

  • NSCodingプロトコルに準拠することでファイルへの保存対応が可能となる。

モデルオブジェクトマネージャクラスのパターン

管理しているモデルオブジェクトへアクセスする手段として以下のメソッドを定義する。配列に対する操作ですね、これ。

  • 追加
  • 挿入
  • 削除
  • 移動

4. メモリ管理のパターン

  • iOSでのCocoa Touchではガベージコレクタを利用することが出来ない
  • Cocoa Touchでは参照カウンタという手法を使って、オブジェクトを管理する

インスタンス変数とオーナーシップ

  • インスタンス変数は基本、retainしておき保持する
  • デリゲートとなるオブジェクトは保持しない

setterの注意点

  • セットしたい値と現在の値が同じ場合、何も考えずにreleaseして retainしなおすとクラッシュするので注意

relase

  • releaseしたらnil代入する

dealloc

  • 各インスタンス変数のreleaseを呼ぶ

5. ビューコントローラのパターン

ビューコントローラのライフサイクルを理解せよ、というお話から始まる。

ビューコントローラのライフサイクル

  • initWithNIbName or initWithCoder
  • loadView
  • viewDidLoad
  • viewWillAppear
  • viewDidAppear
  • viewWillDisappear
  • viewDidDisappear
  • dealloc

viewWillAppearでメモリ不足の場合に

  • didReceiveMemoryWarning
  • viewDidUnload

でアンロードされる。

初期化

initWithNibName:bundle と initWithCoder がある。後者はIBで配置したときに勝手に呼ばれる。共通のinitメソッドを用意しておき、それを呼ぶようにしておくのが良い。

ビューに関連づけが行われるのは、viewDidLoadのタイミング。アウトレット参照が接続されているのでビューに対する初期化はここで行う。nibファイルを利用しない場合はloadViewのタイミングで、viewを自分で設定する。

ビューコントローラの表示

アニメーションの開始前がviewWillAppear、終了後がviewDidAppear

ビューコントローラの隠蔽

アニメーションの開始前がviewWillDisappear、終了後がviewDidDisappear

ビューの解放

メモリ不足のとき、didReceiveMemoryWarning, viewDidUnloadの順に呼ばれるが、viewDidUnloadとdeallocはinitの逆でアウトレットを解放するための共通メソッドを用意しておき、それを呼ぶようにしておくのが良い。

ビューコントローラの配置

出来るだけよけいなインスタンス保持をせずに、オーナーシップを破棄してしまうのがよい。

  • autorelaseしてから、ナビゲーションコントローラに入れる
  • autorelaseしてから、モーダルビューとして表示する

6. テーブルのパターン

テーブルはCocoa Touchの中核をなす、データソースとデリゲートを利用している。

UITableViewとUITableViewCell

テーブルのカスタマイズは基本、UITableViewCellで行う。

テーブルのMVC

  • UITAbleView, UITableViewCell
  • UIViewController
  • モデルマネージャークラス

モデルのインスタンスとUITableViewCellが1対1となると膨大なメモリを食うのでモデルマネージャクラスを利用してUITableViewCellを再利用する。

セルのカスタマイズ

  • みためはサブビューであるcontentViewをカスタマイズする

セルの更新

  • 単純にreloadすると状態までリセットしてしまう
  • 値だけを更新するメソッドを用意すると良い

7. 通知のパターン

3種類の通知

  • デリゲートによる通知(1対1)
  • キー値監視による通知(1対多)
  • NSNotificationによる通知(多対多)

8. ネットワークのパターン

  • 同期通信はメインスレッドで行わず、サブスレットを生成する
  • 同時に複数の通信を行い効率化する
  • ネットワークアクセス状況を適切に表示する

コントローラから、コネクタ、レスポンスパーサという階層でネットワーク処理を構造化するとよい。基本は非同期通信で実装すべき。

レスポンスパーサ

実際にHTTP通信を行いレスポンスをパースする。

コネクタ

レスポンスパーサを管理し、複数通信の状態を管理する。

主にコードが中心の章。写経した方が良さそうです。

9. iPadへの対応

この本の内容に沿ったパターンで開発していれば、iPad用アプリコントローラを記載するだけで完了。

感想

iOSアプリの開発における設計思想の1つとして大変参考になりました。FlashでProgressionに出会ったときに似ている感じですね。iOSアプリ技術者から1日みっちり講義を受けたような感じで、そう考えると2,940円とか安いもんです。

外部リンク

  • サンプルデータダウンロード
  • HMDT Co.,Ltd.のページ

七草セット!

f:id:pinkstrawberryflavor:20160109091316j:image

根がある人は。。。

f:id:pinkstrawberryflavor:20160109091325j:image

育てます!(笑)

f:id:pinkstrawberryflavor:20160109091336j:image

バジルも入れようよ!と勝手にベランダのバジルをむしり取るリス君。。。
キャベツも入れて九草粥!(笑)

f:id:pinkstrawberryflavor:20160109091346j:image

弱った胃を休める為の七草粥なのに。。。
おせちの錦玉子と一緒に!(笑)

粥でなく七草スープご飯になってま〜す♪(笑)
あっ!九草スープご飯(^^;;

f:id:pinkstrawberryflavor:20160109091400j:image

1位目指してます!
1日1ポチしていただけるととっても嬉しいです♪

↓ ↓ ↓


人形・ぬいぐるみランキングへ

ブログランキングの一度したポチ、一週間後にはなくなっちゃうんです。。。

いつもポチ!ありがとうございます♪

ちょっとダークなネコちゃんラインスタンプ販売中♪

f:id:pinkstrawberryflavor:20150626231246j:image

もしっ!気に入っていただけましたら♪是非!使ってください(≧∇≦)
「ダークなピンクにゃん」
かわいさを最大限に利用するダークなねこちゃんスタンプ。おしゃれとお菓子とねずみのぬいぐるみが大好きな猫ちゃんで、りすのようなモフモフしっぽがトレードマーク。
ストアURL↓
http://line.me/S/sticker/1093762

掲示板閉鎖

2018/07/03

自分のサイトのレンタル掲示板ですが、閉鎖いたしました。利用者も少ないし、無料ならではの制限もあるし、変な書き込みが増えて削除がめんどうだし(←これが一番の理由かも)。それに、こちらがコメント可能となっていて、最近はもっぱらここばっかり更新してますから、そういうことに。

今まで書き込みしてくださったみなさま、ありがとうございました。ログはちゃんと保存しました。今後とも、よろしくお願いいたします。

 

 しょうこと申しますᕦ(ò_óˇ)ᕤ

 ギリ20代女子です!

 

 文章を書くこと、文章を読むことが大好きです。

 これからよろしくお願いします(^ ^)

カンボジア在住日本人の方がとても面白い企画をやっています!

それがこちら!


MISS CSA | Beauty Contest

 

カンボジアにも可愛い子がたくさんいます!ほんとに。

f:id:shinpsonkun:20141102144341j:plain

特に右の子なんて最高ですね!紹介して!ww

一度サイトを覗いてみてくださいね☆

今日は中国輸入セミナーに突入してきます!

 

順位下がってきました!みなさんのお力でクリックお願いします! 

にほんブログ村 海外生活ブログ カンボジア情報へ
にほんブログ村


海外旅行(アジア) ブログランキングへ

 なんとかチャプター5-7まで終了。

 それがこれ。

f:id:orangekujira:20160718212237p:plain

 そして、つぎからモデルとなったイラストと見比べてバランスの確認と調整するんだけど、イラストと併せた写真がこれ。

f:id:orangekujira:20160718212402p:plain

 う~ん・・・。ちゃうなぁ(T-T)

 イラストに比べると全体的に細身やし、ポーズもイラストの方がもっと胸を突き出してるし、スカートももっと立ってるし、右手の裾のほうもふわっとなってたりと色々ちゃう・・・

 

 アニメとか漫画とかのキャラをフィギュアで再現するということが、どんだけ大変かということを思い知らされます・・・

 へこんでいても仕方ないので、ちょっとずつでも頑張りますか・・・


 目黒爆弾娘、鹿鳴館で行われるアイドルイベントで、主にロック系といいますかハードタイプの楽曲をやってるアイドルがメインで出るイベントで、なかなかに魅力的なんですが、ややチケット代が高いのと告知がゆっくりなのであんまり行けなかったりする。

爆音少女症候群
 本来3人組なのかな?今回は2人。ハードな楽曲ながらニャンニャン言ったりところどころに
甘噛み系な瞬間があるのがポイントか?ただそこら辺のメリハリが今ひとつな感じもあって、ややインパクトにかける気も。3人だとまたいろいろ違う気もする。

NEXT少女事件
 最近のお気に入り。これまたハードな楽曲ながらアイドル然としてるところが魅力なんですが、段々とハードな方向にシフトしていってる感じがあるのが気がかり。とはいえ、ファン側も一緒にフリコピしたりケチャしたりと、激しいヲタ芸祭りみたいな雰囲気はやっぱり好き。あと何しろ曲がいい。新しい曲はちょっと微妙だけど。

sugartrap
 エモ、というより情熱系といった方がいいか。まさにアツいステージといった感じ。曲も最初に聴いた時はけっこうハードに聴こえたんだけど、どちらかというと昭和歌謡的な雰囲気もあったりして、案外ポップというかロマンティックな要素があって、そこが好みの分かれる所かも。

ハニーゴーラン
 大坂?の2人組。MCはまさに関西といった感じでしたが、ウケてたかというと微妙。曲もかなりアイドル然としていて、このメンツの中に入るとややウキ気味か?個人的にもちょっときつかった(笑)。

北風インパクトChoque!
 名前いつのまにかChoque!ってついたのね。アツいパフォーマンスが特徴的なグループで、ある意味暑苦しいといってもいいかも(笑)。曲がやや単調なのが気になる。もう少しメンバー間の色分けあるといいのかもしれない。

絵恋
 相変わらず強烈な個性というかパフォーマンス。なんつうか、全てを置いてく感じというか、数多いるアイドルの中にいても孤高の人感が素晴らしい。天然系キテレツキャラの多いアイドル界ですが、ここまで計算しつくされたキテレツさというかキャラの濃さを演出できるという意味で絵恋ちゃんの右に出るモノはいない気がする。あと何気に曲がいいんだよね(笑)。

夢幻レジーナ
 いろいろ話はきいてましたが、思った以上に80年代ジャパニーズメタル感がすごくてある意味すごくおもしろい(笑)。もう少し成りきり感があるともっといいと思うけど、やり過ぎるとファン減りそうだしなあ(笑)。

NECRONOMIDOL
 随分前に観た時はヘタウマ系というか暗黒系ってネタ?という感じのパフォーマンスでしたが、今や立派な暗黒系。曲もパフォーマンスも堂々たるもので、とにかくハード。その分アイドル然とした部分は少ないですが、これだけクオリティ高ければ言うことないかも。

 ということで、各グループの持ち時間もけっこうたっぷりでなかなかに充実したイベントでした。いいライブだった。

Học nấu ăn gia đình với món sủi cao hấp dẫn thơm ngon bổ dưỡng thưởng thức là mê này nhé. Hiện tại SG trời mưa lớn , và thực sự ánh mặt trời đang bị che lấp bởi một màu không được sáng , hiện tượng mây dày đặc kết dính lại tạo thành một bức tường bông không lồ, chặn những tia nắng đang cố gắng len lõi để vượt qua được rào cản . như vậy cả gia đình có thể cùng nhau nấu món sủi cảo để có thể hòa quyện với nhau .

f:id:hocnauankun:20150907191644j:plain

Sủi cảo là món bánh không còn lạ lẫm với mọi người nữa bởi nó là một món ăn vặt rất phổ biến và cực kỳ được ưa chuộng. Bởi vậy, ngoài với cách làm truyền thống là hấp thì Sủi cảo còn được biến tấu theo nhiều cách làm khác và nhiều nguyên liệu khác. Và dựa trên những cách làm cũ trước đây, mình sẽ hướng dẫn các bạn cách làm món Sủi cảo kim chi cải thảo HQ chiên giòn vô cùng hấp dẫn thơm ngon. Khi ăn món Sủi cảo kim chi cải thảo HQ chiên giòn các bạn sẽ thấy vỏ bánh hoành thành vàng thơm giòn rụm, thịt hộp kết hợp với vị chua cay ngọt ngọt của kim chi cải thảo HQ khiến cho món ăn mang một hương vị khác lạ và cực kỳ cuốn hút. Các bạn hãy thử làm theo công thức đơn giản dưới đây, mình chắc chắn rằng sẽ không làm các bạn thất vọng.

Nguyên liệu làm món Sủi cảo kim chi cải thảo HQ chiên giòn cho 4-5 người ăn:
- 1 lọ kim chi cải thảo HQ khoảng 400g ( tùy theo ý thích mà các bạn chọn loại kim chi cải thảo HQ cho phù hợp nhé)
- 1 lon thịt hộp
- 1 quả trứng gà
- 1 gói lá Sủi cảo
- 225g kem pho mát
- Dầu hạt cải hoặc dầu thực vật tùy loại
Hướng dẫn học nấu ăn với món Sủi cảo kim chi cải thảo HQ chiên giòn cho 4-5 người ăn:

f:id:hocnauankun:20150905190848j:plain

Bước 1: sơ chế nguyên liệu làm món Sủi cảo kim chi cải thảo HQ chiên giòn.
- kim chi cải thảo HQ các bạn đổ ra bát và chắt bỏ phần nước đi nhé, nếu như những lá cải thảo hay củ cải quá lớn thì các bạn hãy cắt nhỏ chúng ra nhé để khi chúng ta gói bánh sẽ đơn giản hơn.
- Trứng gà các bạn đập ra bát và chúng ta sẽ tách riêng lấy phần lòng trắng trứng.
- Thịt hộp các bạn sẽ dùng một chiếc nạo và nạo vụn thịt như trong hình nhé.
Bước 2; các bước thực hiện món Sủi cảo kim chi cải thảo HQ chiên giòn.
- Đầu tiên, chúng ta sẽ tiến hành làm nhân bánh nhé.
- Các bạn chuẩn bị một cái bát lớn và cho vào các nguyên liệu sau: kim chi cải thảo HQ , kem pho mát, thịt nạo vụn,.
- Sau đó, các bạn dùng thìa dặm nhuyễn các nguyên liệu lại với nhau nhé, sao cho chúng ta thu được một hỗn hợp nhân bánh mềm, khá nhuyễn và quyện đều lại với nhau.
- Bước tiếp theo, các bạn trải một tấm lá Sủi cảo ra mặt bàn và múc một muỗng nhân vừa đủ vào trong.
- Đồng thời, các bạn dùng một chiếc chổi nhỏ phết một lớp mỏng lòng trắng trứng lên các viền lá hoành thành, như vậy chúng ta sẽ gói bánh dễ hơn và lá Sủi cảo cũng không bị bung ra.
- Các bạn gấp lá hoàng thánh lại theo hình tam giác, hình vuông hay tùy theo ý thích của các bạn.
- Các bạn tiếp tục làm tương tự như vậy đối với phần nhân, phần lá Sủi cảo còn lại nhé.
- Bước cuối cùng, chúng ta sẽ chiên Sủi cảo.
- Các bạn bắc một cái chảo sâu lòng hoặc một cái nồi nhỏ lên bếp, cho dầu ăn vào làm nóng, nhiệt độ chúng ta thu được để chiên bánh vào khoảng 200 độ C nhé.
- Khi dầu ăn sôi, các bạn cho từng gói Sủi cảo vào chiên trong ngập dầu.
- Trong quá trình chiên, các bạn chú ý lật Sủi cảo thường xuyên để không làm Sủi cảo bị cháy nhé.
- Khi Sủi cảo đạt được màu vàng đẹp mắt thì các bạn vớt chúng ra ngoài cho ráo dầu.
- Các bạn có thể cho Sủi cảo vào một vài lớp giấy ăn để thấm hết dầu ăn đi.
- Trình bày Sủi cảo kim chi cải thảo HQ chiên giòn ra đĩa, thưởng thức ngay khi còn nóng các bạn nhé.
- Các bạn có thể chấm Sủi cảo với tương ớt, sốt mayonnaise hay nước mắm pha tỏi ớt đều rất ngon.
Lưu ý khi làm Sủi cảo kim chi cải thảo HQ chiên giòn:
- Các bạn có thể thay thế thịt hộp bằng dăm bông, thịt nguội, xúc xích tùy theo ý thích nhé. Tuy nhiên, khi chúng ta dùng thịt hộp thì sẽ tạo nên một độ ẩm nhất định trong bánh giúp cho bánh không bị khô, thịt cũng rất mềm, rất ngon.
- Khi chiên Sủi cảo các bạn cần điều chỉnh nhiệt độ cho phù hợp. Như khi lúc chiên ban đầu thì các bạn mở lửa lớn nhưng khi về sau khi nhiệt độ đã tăng cao thì các bạn cần giảm nhiệt xuống.
- Bên cạnh đó, các bạn cần chiên Sủi cảo trong ngập dầu. Như vậy giúp cho Sủi cảo vàng đều các mặt và không bị thấm nhiều dầu. Và để đỡ tốn dầu thì các bạn nên sử dụng chảo sâu lòng hoặc các bạn có thể chiên trong nồi cơm điện loại nhỏ.
- Sủi cảo kim chi cải thảo HQ chiên giòn với hương vị đặc biệt do có sự kết hợp từ kim chi cải thảo HQ , thịt và kem pho mát. Sủi cảo vừa cay cay ngọt ngọt, vừa có độ béo nhẹ do được kim chi cải thảo HQ trung hòa nên rất dễ ăn, rất dễ nghiền.

Như vậy chúng ta đã vừa hoàn thành xong món Sủi cảo kim chi cải thảo HQ chiên giòn rất đơn giản đúng không các bạn. Vào thời tiết màu đông se lạnh thì những món bánh như thế này rất phù hợp, nó sẽ giúp cho cơ thể bạn thấy ấm áp hơn rất nhiều đó. Hãy học cách làm và chiêu đãi mọi người món Sủi cảo kim chi cải thảo HQ chiên giòn ngon tuyệt cú mèo này nhé.

Chúc các bạn thành công và ăn ngon miệng với món Sủi cảo kim chi cải thảo HQ chiên giòn!

藤田溜池

2018/03/10

4/22、山形県大江町、藤田溜池に行ってきました。
3回目。(→1,2)


f:id:kazu_ma634:20170518001428j:image:w400
堤体。


f:id:kazu_ma634:20170518001429j:image:w400
天端*1。


f:id:kazu_ma634:20170518001430j:image:w400
f:id:kazu_ma634:20170518001431j:image:w400
手軽に溜池の近くまで下りれる。

*1:ダムの一番上の部分