のほほん停留所

つぶやきのなりそこないの溜まり場

potatotips #34にブログ枠で行ってきました

potatotips #34に行ってきましたので、気になったiOSに関する発表をいくつか抜粋してまとめました。

ブラウザアプリ「Smooz」を作る中で会得したWKWebviewのTips

speakerdeck.com

UIWebviewに比べてWKWebviewはクラッシュ率が下がりセキュリティが上がりました。昨今のiOSではUIWebviewはDeprecatedになりWKWebviewに移行していく流れになっています。それで、実際にWKWebviewを採用した際のTipsに関する発表でした。

WKWebviewで表示しているWebページ上のリンクのタッチアップイベントはクライアント側から検知できるのですが、デフォルトではタッチダウンのイベントを取得できません。回避策としてはクライアント側で座標を検知して、JSでその座標にリンクがあるか判定してクライアント側に返すといった方法を取ったそうです。また、WKWebviewで表示しているページのJSをデバッグしたいとき、SafariのWebインスペクタ機能でデバッグできるというTipsも紹介してくださいました。

5分でわかるSE-0116(id-as-any)

speakerdeck.com

Swift2ではObj-Cのid型はAnyObject型として表現されているが、Swift3からはAny型として表現されるようになりました。この変更の理由や何が変わるのかといった発表でした。 github.com AnyObjectは参照型の型全般を表すもの、Anyは値型、参照型含めた型全般を表すものです。Obj-Cのid型はオブジェクト型で、Swiftの値型はオブジェクト型ではないので、ブリッジ可能な型はこれまでは暗黙的にオブジェクト型に変換されていました。しかし、Swift3でSwiftの値型からObj-Cのid型にブリッジできるuniversal bridging conversionが実装されました。これによりAnyObjectへの依存が排除することが出来ました。

Useful Command Line Tools in Swift 3

speakerdeck.com

Swift3でコマンドラインからPlaygroundを作成するコマンドツールを作成するという発表でした。コードレビューの際に書き方が気になったりするときにPlaygroundで挙動を確認してコメントするといったことがけっこうあり、このツールを作成したのはXcodeからPlaygroundを開くのはかなり面倒だというのがモチベーションだそうです。作成自体はCarthage/Commandantを参考にして作成したそうで、かなり気軽に取り掛かれそうな印象を受けました。こういった業務効率化のツールはどんどん作って共有していきたいですね。

github.com

Layered Architectureで各層の依存関係解決をSwinjectを用いて行う

speakerdeck.com

Layerd Architectureの層間の依存は疎にすべしという原則を実現するためにSwiftのDIフレームワークであるSwinjectを採用した設計に関する発表でした。各層でContainerを用意して、提供しているprotocolに実際に使われる具体クラスをセットします。これにより、依存する側が全く具体クラスを知らなくてよいので、各層が知る必要がないことが染み出さないように出来ます。また、テストしやすいことやシングルトンに依存した設計から解放されることも利点としてあげていました。

5分でApple Pay

qiita.com

PAY.JPApple Pay対応をしてみたといった発表でした。2016/10/25にApple Payが日本でも利用できるようになり、iOS App, Safariでも利用できます。既に決済ゲートウェイを利用していれば、PAY.JPを使う必要はないのですが、SDKが公開されておりサンドボックス環境でテストできるので、始めるのは簡単だそうです。なので、アプリ内の支払いでApple Payを採用したいときはPAY.JPを導入するのが良さそうです。

まとめ

potatotipsに参加するのは初めてですが、どの発表内容もレベルが高くてとても面白かったです。今度はネタを探して発表枠で申し込もうと思います。