T2 トレインスポッティング

 安定のトレインスポッティングクオリティ。面白い。

 

この世界の片隅に

 ケレン味を抑え叫びも少なめでディティールにこだわった演出に感動

 

シークレット・オブ・モンスター

 架空の世界のお話。美少女って感じの男の子が、家庭教師の若妻のおっぱいに欲情したりしながら最後にヒステリー爆発させます。で、この変態がカリスマ独裁者になったとさという終わり方。何を言ってるのかわからねぇと思うが、俺も何を言ってるかわからねえ。頭がどうにかなりそうだった…、催眠術だとか超スピードだとかそんなチャチなもんじゃあ断じてねえ、もっと恐ろしいものの片鱗を 味わったぜ…

 まあ、見て損はないんじゃないかと。

 

シークレット・オブ・ハロウィン

 BL映画でした。トーマの心臓的な。主人公は女の子もいけるんで純粋無添加ではない。

 

ハンズ・オブ・ストーン

 石の拳、ロベルト・デュランの半生を描いた映画。シュガー・レイ・レナードとそんなやりとりあったのね的な。

 

機動戦士ガンダム0080 ポケットの中の戦争 1、2、3

 磯光雄監督の作画を見たくて。て言っても第1話しか担当してないみたいっす。話が面白かったんでそのまま全話見た。

 てかさあ、普通鹵獲した敵兵器そのままほっぽらかさないよ。

 

劇場版 ソードアート・オンライン -オーディナル・スケール-

 ファントムブリットの回が好きなんで、映画版も見て見た。

 

ひるね姫 〜知らないワタシの物語〜

 絵柄が好み。岡山の話なのに、なぜか香川まで瀬戸大橋渡って高松空港に行くのはなぜだ?

 

Huluオリジナル「エンシェンと魔法のタブレット〜もうひとつのひるね姫〜」

 ひるね姫と同じキャラクタを使って、ひるね姫の中で出てくるおとぎ話側を描いた話。

 

ムーンライト

 ガチムチ親父二人のBL映画でした。ちょ、そういう話だったの?

 ラ・ラ・ランド抑えて賞とったって聞いたから、どんなんかな〜と観てみたら。

 映像がいいです。リアルなのに幻想的っていうか、観ておくべきだとは思う。

 

手紙は憶えている

 連れ合い無くした上に余命宣告された爺さんの、ナチの残党狩り行脚です。

 おじいちゃん、ちょっとボケ入ってます。

 

新・ゲッターロボ 1ー6

 ゲッター者なんで。

 

CYBORG 009 CALL OF JUSTICE Vol.1、2、3

 前作までのCGIと、うってかわったロリ造形フランソワーズが見もの。

 

アイヒマンの後継者 ミルグラム博士の恐るべき告発

 アイヒマンテストやった博士の話。スタンレー・ミルグラム博士ってスモールワールド現象実験をやった博士だったのね。

 おすすめ。
 スモールワールド現象:知り合い関係を芋づる式にたどっていけば比較的簡単に世界中の誰にでも行き着くという仮説。
 
劇場版 艦これ
 久しぶりの艦娘。ちょっとシリアス寄りでスーパー北上様も大井っちも活躍しません。関係ないけど、これの艦隊戦観てる時にプロジェクターのランプが破裂した。パーンて、後方からえっらいリアルな破裂音がしたなと思ったら画面が真っ暗に…
 まだ1000時間くらい寿命があったんだけな〜。アマゾンで交換用互換ランプを購入。
 

WXIII  機動警察パトレイバー

 なんとなく。観てなかったので。特車二課ほぼ出ません。面白かった。映画版の1、2より人狼のテイストに近い。
 

沈黙-サイレンス-

 基本、原作に忠実ですよ。かなり補足的な終わり方になってるけど。原作のブツって切れる感じの終わり方も好きだけど、映画もこれはこれでいいんじゃないかと。
 
 映画の前に読んで「原作の方が!原作の方が!」って言いたい! 
 バーナード嬢曰く。より

 最後に一言「アダム・ドライヴァーああああ」
 観るべし!
 

神のみぞ知るセカイ ROUTE 1.0ー6.0

 原作が面白かったので。

 

ダゲレオタイプの女

 ホラー映画?

 黒沢清監督だからね。ぶれないっす。面白かった。

 

鬼畜大宴会
 思わずツィートしてしまった。

https://twitter.com/reborn_xcc/status/904231240668037120

 

ANTIPORNO

 アングラ劇見てるみたいだった。まーアングラ劇観た事ないんですけどね。

 

ボヤージュ・オブ・タイム

 ナレーション無くてもいいような。IMAXで観たいなー。

 

ニュートン・ナイト/自由の旗をかかげた男

 南北戦争時のアメリカ南部の変わり者のおっさんの話。実話らしい。
 
アイ・イン・ザ・スカイ 世界一安全な戦場
 遠隔操作兵器が進化したら最終的にこうなるよね。面白かった。
 
LUPIN THE IIIRD 血煙の石川五ェ門 上、下巻
 小池健監督のファンなんで。「次元大介の墓標」よりこっちの方が好きだな。出てくる車が格好いい。エンディングの絵に惚れ惚れ
 
ヒトラーの忘れもの
 第二次世界大戦後のデンマークで、ドイツ軍兵士たちに地雷撤去をさせた史実をベースにした話。地雷撤去はマジ大変ですわ。
 
傷物語 〈II熱血篇〉〈III冷血篇〉
 熱血篇が一番好き
 
モンスターストライク THE MOVIE はじまりの場所へ
 モンストってどんなんだろって感じで借りてみた。
 
ガール・オン・ザ・トレイン
 あぶねーよ、この女。原作がミステリー小説らしい。映像に引き込まれる。
 おすすめ!
 
ハンナ・アーレント
 アイヒマン裁判の傍聴記事を書いた実在の人の話。面白かった。
 
ミュージアム
 セブンの日本版って感じで、宗教色が抜けてホラーテイストが加わってます。面白かった。というか妻夫木聡?
 
GANTZ:O
 大阪篇好きなのよ。ちゃんと「こう見えても卓球やってたんや」「空手やっとるんや、通信教育やけどな」も言ってくれた。
 
機動戦士ガンダム THE ORIGIN IV
 シャーがララァと出会ったり黒い三連星とランバラルがモビルスーツ開発のテストパイロットとして登場したりします。続きも観ないと。
 
ダンジョンに出会いを求めるのは間違っているだろうか OVA
 温泉回です。
 
エイリアン 4
 観てなかったので。アメリの監督さんです。
 

スター・トレック BEYOND

 スター・トレックなんで。面白かった

 

真ゲッターロボ対ネオゲッターロボ

 だからゲッター者なんだってば。

 

テルマ&ルイーズ

 ブッチキャシディ&サンダンスキッドの女性版的な。新人の頃のブラビも出てます。

 

アメリカン・ビューティー

 中年の危機。BL入ってます。2回目のレンタル。どうでもいいけどクリス・クーパーってジュディ・デンチっぽいよね。

 

ディーふらぐ! 第2ー6巻

 一応、全部見ようかと。

 

チャイナタウン

 名作なんでね、一応おさえておこうかと。ジャックニコルソン好きだし。
 

64-ロクヨン- 前・後編

 こんな挑発的な記者いるのかな〜。

 

エクス・マキナ

 怖ぇ〜、人工知能怖ぇ〜。面白かった。みるべし!

 

RWBY Volume2 (前・後編)

 一応、Volume1からの続きという事で。

 


 

AD

ガンガンガンガン

テーマ:

 若い命が真っ赤に燃えて〜♪

 50代前後でないとわからないフレーズで、こんにちは。

 それとも、もしかして、スパロボ大戦あたりでも流れてて意外にメジャー?

 

 というわけで、私のツィッターをフォローしてる人は知ってると思いますが、定期検診で大腸ガンが見つかってしまいますた。便を使った大腸ガン検診でちょっと怪しいってなって、改めて大腸カメラをやって見つかったんだよね〜。

 最初はポリープかなんかだろと思ってたらガンですわ。

 ガンガンガンガン。

 

 定期検診を3年サボってて、久しぶりだったので結構進行してた。

 とりあえず小腸と大腸の連結部切り取って、つなぎ直しますね〜。

 

ここら辺を切り取った。ファックス

ちなみにこの画像はEssential Anatomy 5

 

 ということで11月28日に入院、30日に手術しました。

 入院と同時に点滴つながれて絶食、下剤の2日間。腹切るんでね、綺麗にしないとダメなんよ。

 

まさかこの状態が20日以上続くとは…

 

 手術自体は全身麻酔であっという間だった。

 始めますね〜て言われたと思ったら終わりました〜でその間6時間ですわ。

 内視鏡用に4つの穴開けて、腸を外にひきづり出してつなぎ直すために切り開いたのがヘソの部分。

 

これは現在の状態。ヘソ下のセクシーなホクロは元々だ

 

 で、手術後はチンチンに管差し込まれて身動きできない状態で2日間の点滴のみの生活なんだけど、これがやたらしんどかったのよ。

 吐き気するし、身体中の穴という穴から点滴が吹き出すくらい身体中が点滴で満たされてる感じでムカムカして胃液吐いたりして、えらいしんどいな〜と思ってたら十二指腸潰瘍でした。

 腸をつなぎ直したせいで痛み止めが常時注入されてたので、十二指腸の痛みに気づかなかったんだよね。

 手術後二日目から食事が始まって、いまいち食欲ないな〜、まあ、4日何も食わなけりゃ胃も小さくなってるわなとか思いつつ、4回目の食事で吐き戻して、血が混ざってたんで胃カメラしたら発見された。

 おかげでまた点滴オンリーの生活に逆戻り。結局12月20日まで入院する羽目になりました。

 途中で点滴が血管から漏れ始めて、PICCっていう血管に細い管入れて首のあたりの太い血管まで伸ばして、点滴液注入するってやり方に変えたりと大変だった。

 

PICCだと管が細すぎるんで、電動ポンプ使って点滴液を送り出すのよ

 

 最後には腕、こんなんなりました。

 

ミ・ミギーが侵入してきた

 

 リンパ節がステージ3という、マックスの4の一歩手前なので、来年から半年は抗がん治療。

AD

リブートキャンプ by Swift 目次

 

 というわけで、画面をUIViewControllerごと切り替えるのが、iOSアプリの流儀なわけですが…

 切り替えた先でユーザーが何かを指定した場合に、どうやってそれを切り替え元に知らせるのか?

 例えば今回なら、表示した地図でユーザーに移動先を選択してもらうって利用形態(格好つけてユースケースと言ってもいい)が考えられるけど

注意)あんま普段からカッコつけてると、自分でも気づかないうちに「EC、ソーシャルメディアとリアルを融合させたオムニチャネル活用により、個々の顧客のニーズに合わせた新たなカスタマー・ エクスペリエンス…」とか喋り出してしまうようになる。

 

 その場合、地図表示担当のMapViewControllerから戻ってきたViewController側は、MapViewControllerコントロール下でユーザーが選んだ目的地をどうやって知ればいいのか?

 

 

 MapViewController側でユーザーがおこなった操作を、ある程度ViewController側も把握したいわけで、これは前に紹介したターゲットアクションデザインパターンと同じくオブジェクト間の連携問題となります。

注意)ターゲットアクションデザインパターンがわからん人は「タップしてドン」を読みなさい。

 こういったときにAppleが推奨してる作法が、デリゲートデザインパターンっす。

 

デリゲートデザインパターン

 ターゲットアクションデザインパターンが、イベントが発生した時用の

 

  連携オブジェクト(ターゲット)

  連携メソッド(アクション)

 

の2つを連携先に登録するやり方だったのに対し、デリゲートデザインパターンは、最初に

 

 イベントA発生時は、連携オブジェクトのメソッドAを呼び出す

 イベントB発生時は、連携オブジェクトのメソッドBを呼び出す

   ・・・

 

といった取り決めをしておいて

 

  連携オブジェクト(今回ならViewController)

 

だけを連携先(今回ならMapViewController)に登録するやり方です。

 この連携オブジェクトのことをデリゲート(delegate:イベントに対する動作を委譲する相手)と呼びます。

 なので、デリゲートとなる連携オブジェクトはあらかじめ取り決められたメソッドを装備してないダメってことになります。

 

 

 

 例えば次のような取り決めをしたならば

 

取り決め:

 MapViewControllerは地図画面でユーザーが目的地をタップしたら

 

  func selectDistination(name:String);

 

 というメソッドで、連携先に目的地の名前を知らせる。

 

MapViewController側から見てデリゲートとなるViewController側ではselectDestination(name:)メソッドを用意しておく必要があるわけです。

class ViewController: UIViewController {
   ・・・
  func selectDestination(name:String) {・・・}
}

 

 でもってMapViewControllerでは、デリゲートを特定するためにViewController型のプロパティを用意し外部から指定可能にしておく。プロパティの名前はなんでもいいんだけど、わざわざ関係のない名前にしてもしょうがないので普通はdelegateって名前にします。

class MapViewController: UIViewController {
    var delegate:ViewController?
  ・・・
}

注意)ViewController後ろの?の意味がわからん人は「アンラップしてチン♪」を読みましょう。

 

 こうしておいてMapViewController作った時に、次のようにViewControllerをdelegateプロパティに設定してやれば

class ViewController: UIViewController {
    ・・・
    @objc func showAsView() {
        let mapViewController = MapViewController()
        mapViewController.delegate = self
        self.present(mapViewController, //  mapViewControllerに切り替え
            animated: true)    //  切り替えはアニメーションさせる
    }

 あとはMapViewController側で地図画面タップされた時に、目的地名を決めてselectDestination(name:)を呼び出してやればいいわけですよ。

class MapViewController: UIViewController {
    var delegate:ViewController?
  ・・・
    @objc func tap(tapGestureRecognizer:UITapGestureRecognizer) {
        let location = tapGestureRecognizer.location(in: self.view)
                   ↓とりあえず、タップ位置を名前にする
        self.delegate?.selectDestination(name:"\(location)") 
    }

 

注意)UITapGestureRecognizerが何かわからん人は「タップしてドン」を読みましょう。

 

 こうするとViewControllerは、MapViewControllerの地図画面上でユーザーが指定した目的地を知らせてもらえることになるわけです。

class ViewController: UIViewController {
   ・・・
    func selectDestination(name:String) {
        print(name)  ←コンソールに名前を出力
    }
}

サンプル:

http://tetera.jp/xcc/book-sample/delegate-pre.zip

 

 

 

 ちなみに

 

     "\(location)"


というように、文字列中に  \( (バックスラッシュとオープンバーレン)と ) (クローズバーレン)で挟んでプロパティ名を書くと、そのプロパティの値が文字列として設定されます。結果として、例えばlocationのx、yに[100, 200]が設定されていたら

 

     "(100.0, 200.0)"

 

て感じの文字列になり、これがコンソールに出力されます。\(プロパティ名)は、どこでも使えるので、こんな感じでもいい

 

     "location は \(location) です"

 

この場合、

 

     "location は(100.0, 200.0)です"

 

という文字列になる。

 

 ただ〜、これだとまるで汎用性がないわけでして…

 MapViewControllerのdelegateプロパティに指定できるのはViewControllerオブジェクトか、その派生オブジェクトしかできないってことになっちゃうんですな。

 で、そこらへんに汎用性を持たせるために、Appleが提唱するデリゲートデザインパターンでは「これこれのイベントが発生したら、連携先オブジェクトの、このメソッドを呼び出す」という取り決めを、プロトコルとして表現しておき

protocol MapViewControllerDelegate {
    func selectDistination(name:String)
}

注意)プロトコルがわからん人は「重箱の隅をつつくようにネチネチと進めてみる」を読みましょう。

 

 連携先は、このプロトコルを採用するものとする。

class ViewController: UIViewController, MapViewControllerDelegate {
   ・・・
    func selectDistination(name:String) {
        print(name)
    }
}

 ということにしたんですな。

 こうすると、MapViewController側はViewControllerではdelegateプロパティとして、ViewControllerじゃなくプロトコルであるMapViewControllerDelegate型を指定することができ

class MapViewController: UIViewController {
    var delegate:MapViewControllerDelegate?
   ・・・

サンプル:

http://tetera.jp/xcc/book-sample/delegate.zip

 

 

 MapViewControllerDelegateを採用したオブジェクトなら、どれでも指定可能になるわけです。

 なので、例えば次のようにして目的地選択専用のオブジェクトを用意することだってできる。

//  MapViewControllerDelegateを採用した別クラス
class AltDelegate : MapViewControllerDelegate {
    func selectDestination(name:String) {
        print("タップ位置は" + name + "です")
    }
}

class ViewController: UIViewController, MapViewControllerDelegate {
   ・・・
    //  別のデリゲートオブジェクト
    let altDelegate = AltDelegate()
    
    @objc func showAsView() {
        let mapViewController = MapViewController()
        mapViewController.delegate = altDelegate
        self.present(mapViewController, //  mapViewControllerに切り替え
            animated: true)    //  切り替えはアニメーションさせる
    }

 self、altDelegate、どちらでもdelegateに設定可能。

 

サンプル:

http://tetera.jp/xcc/book-sample/delegate-alt.zip

 

 

 こんな感じでプロトコルとその採用を導入することで、かなり汎用性が出てくるわけです。これがデリゲートデザインパターン。

 

 あと、慣例としてデリゲート側プロパティにはweakをつけます。

class MapViewController: UIViewController {
    weak var delegate:MapViewControllerDelegate?

 これは、自分はdelegateに指定されたオブジェクトを所有しないという意思表示です。逆に言えばweakをつけてない場合は、delegateに指定されたオブジェクトはMapViewControllerオブジェクトに所有されることになり、MapViewControllerオブジェクトが存在する限り、勝手に消滅したりはできなくなります。

 これ自体は、MapViewControllerにとってありがたい事なんだけど、一点だけ懸念事項があって…

 それはdelegateで指定されるオブジェクトが、MapViewControllerオブジェクト側を同じようにプロパティで所有してた場合です。

 こうなると互いに所有しあって、いつまでもオブジェクトが消滅できなくなる可能性が出てくるんですな。

 

 

 オブジェクトは用が済めば静かに退場するのが礼儀というものなんですが、互いに所有しあってると、どちらも消滅しようとしても消滅できなくなるんですよ。

 

 

 

 オブジェクトを用意できる最大数はiPhoneの機種によって違うけど、いずれにせよ限界はあるわけで、古参がいつまでも居座り続けるのは良くないです。

 ここら辺を防ぐためにweakをつけます。

 

 

 で、weakをつけたプロパティは設定されているオブジェクトが消滅するときはnilが設定されることになるので、利用するときに毎回アンラップして使うのが安全ってことになります。

 これはすでに実装済み。

class MapViewController: UIViewController {
   ・・・
    @objc func tap(tapGestureRecognizer:UITapGestureRecognizer) {
        let location = tapGestureRecognizer.location(in: self.view)
        self.delegate?.selectDestination(name:"\(location)")
    }

 最後に、weakをつけられるプロパティには条件があって、オブジェクトでないとダメなんですな。そのためプロトコルを定義するときにAnyObjectを採用します。

protocol MapViewControllerDelegate : AnyObject {
    func selectDistination(name:String)
}

 これでプロトコルMapViewControllerDelegateはクラスでしか採用できなくなり、結果、MapViewControllerDelegate型は必ずオブジェクトが設定されることが保証されweakがつけられるようになります。

 もっとも、このプロトコルをObjective-Cでも利用できるようにしたいなら、その点を保証するためのキーワード@objcをつけることになり、このキーワードには暗黙裡にAnyObjectを継承させる指定も含まれるので

@objc protocol MapViewControllerDelegate {
    func selectDistination(name:String)
}

と書くのがよく見られる書き方ってことになります。

 

サンプル:

http://tetera.jp/xcc/book-sample/delegate-weak.zip

 

というわけで、これでAppleの3大オブジェクト連携手法が出揃ったわけですな。

 

 ターゲットアクションデザインパターン

 通知

 デリゲートデザインパターン

 

 ここら辺を理解できたら、大概のサンプルは何やってるかわかるんじゃないかと思われ。あとはストーリーボードってことになるけど、これはまた次回。

 

AD