potatotips #44 の iOSブログまとめ枠で参加させていただきましたのブログです。
eureka さんのオフィス。アクセスがとても良く、ブログまとめ枠なのに遅刻とかヤバいなと思いながらギリギリの電車に乗ったのですがなんとか間に合いました。
おしゃれ。なんか写真?とか飾ってある。おしゃれ‥
電源タップも用意していただいて大変ありがたい。あと良いスピーカーが良い位置にあって聞きやすかったです。
エウレカのエンジニアさん、みんな人当たりいいんだよな。
— Daiki Matsudate (@d_date) 2017年10月25日
社員さんの人柄も良い(個人の感想です)。
以下発表内容です。間違いや気になるところなどあればご指摘ください。埋まっていない資料は公開されたのを見つけ次第反映します。
アプリ内でWebAPIを抽象化するためのフレームワークAbstractionKitの紹介 / hiragram さん
APIリクエスト周りつらいのでAbstractionKitというのを作った。WebAPIを構造化して定義するためのフレームワーク。
結果取り出すときは:
SingleResponse<User>.init(json:json).result → User
みたいな感じで取り出せる。
配列は:
ArrayResponse<User>.init(json:json).result → User
無を取り出したい場合は:
EmptyResponse.init(json:json).result → Void
統一的!プロダクト寄りの視点でVASILYさんのブログにも書かれているようです。
iOSアプリに導入したプロトコル指向なAPI抽象レイヤーの設計 - VASILY DEVELOPERS BLOGtech.vasily.jp
感想
アプリ、API叩いてつらくなるケースがほとんどだと思うので、言語もいい感じに進化してここらへん楽になるといいなぁと思いました。
Showcase Library について / YuyaHorita さん
カルーセル表示を簡単にするライブラリをつくった。
サイズ、間隔、方向、動き方(直線的ではなく、にゅっと動くとか)などがカスタマイズできる!具体的な使いかたや使い道を紹介。
感想
円軌道のカルーセルなどを簡単な設定で作れるのは面白いなーと思いました。
kazuhiro4949/PagingKit を見たときも思ったんですけど、UIライブラリ使うと便利だけど完全に見た目がそのライブラリの表現できる幅に制限されるという問題があるので、こんな風にカスタマイズ性を重視した作りになっていると使い勝手良さそうだなぁと思いました。
Introduction Differ / Yusuke Takahashi さん
Flux と RxSwift でアプリ作る。tableViewの内容を書き換えて更新処理するようなものを考える。
Flux、Virtual DOMとは相性良いのだろうけど、iOSだと単純に作ると毎回全体reloadしてしまってパフォーマンス的に微妙だったり、アニメーションが走らなかったりしてUX的にも微妙。
tonyarnold/Differを使うとそれらがいい感じにバランス良く解決できるよーという話でした。
これはcorin8823さんのデモ。
感想
Differ、Flux使わない場合でも便利そうと思いました。UITableViewの更新パフォーマンスに悩んだときは参照しなおしたいです。
WKWebViewのキャッシュについて調べた / hotpepsi さん
www.slideshare.net
WKWebViewでblobsが肥大化する件について、実機とシミュレータで調べた。
Appleは意外とちゃんとオープンソースでデータを公開していて、 https://opensource.apple.com から見ることが出来る。WebKit2は https://opensource.apple.com/source/WebKit2/ っぽい。
iOS8は肥大化しない、iOS9の肥大化しない、iOS10もソースは同じっぽいけど何故か肥大化する。WWDCで直接開発者に言ってみた。
「なんか困るんだけど」
— どくぴー (@e10dokup) 2017年10月25日
→開発者「たしかにそのとおりだね」
→キャッシュがアプリサイズに含まれなくなった← New!#potatotips
iOS11ではキャッシュがアプリサイズに含まれなくなったので良くなった!めでたし
感想
競プロが趣味のiOSエンジニア珍しい気がする #potatotips
— Kazumasa Kumamoto (@kumamo_tone) 2017年10月25日
ソースを参考に解決をスタイル、WWDCで直接開発者に聞いていくスタイルに強さを感じました。つよい
入力を型で表現する / Motoki Narita さん
メルカリカウルで出品するとき、「バーコードを読み込む」「タイトルから検索する」方法がある。
出品ボタンを押すと、カメラが起動して、バーコードを読むと、ISBNから商品を検索してくれたりする。
これ、そこそこ複雑だが、入力は1つの型で表現している。
Inputを、データとenumのセットのstructで宣言しておく。こうすることによって、データと画面処理を分離しやすいし、今後入力のバリエーションが増えることがあっても同じ型で表現することができる。
感想
いい感じに製品紹介が含まれておりメルカリカウルをまんまとちょっと使いたい気持ちになってしまいました‥w 個人的にキャッチーなタイトルで楽しみでした。型で表現できることはどんどん型で表現していきたいですね。
carthage verify / r_plus さん
Cartfile.resolveを更新してコミットしてpushするのだが、果たしてチームメンバーはちゃんと追随してくれるのだろうか?CocoaPodsの場合は保証する仕組みがある(Manifest.lock)。
色々試行錯誤した結果、commitishとCartifle.resolveを比較しればいいのでは?となった。というかこれ本家で提案されているのでは?となった。
調べてみた提案されていたが、carthage自体でやんないほうがいいよねとなりcloseされていた。
その提案してくれていた人がCarthage/workflowsにcarthage-verifyというシェルスクリプトを追加してくれていた。Build Phases にこれをつっこむと、diffがあればビルドエラーにしてくれる。速度もBuild Phasesに入れていいレベルで、0.08秒とかで終わるレベル!
感想
Carthage単純に便利だから使っていて、ビルドできなくなったらなんとなくupdateするみたいな適当な使いかたしてたけど、たしかに動いているように見えて挙動が変わっている可能性もあり、追随を保証する仕組みはたしかに欲しいところだなぁと思いました。
ここらへん詳しくないのだけど、とても分かりやすく聞きやすい発表でした。
ARとFaceTracking / TachibanaKaoru さん
ARKit本当に簡単。Xcodeにテンプレートあるし、ARSCNViewなどのオブジェウクとを作るだけで動画処理などしなくて良い。
描画エンジンを選択できて、SceneKit、SpriteKit、Metal、だけでなくUnity(専用のプラグインがある)、Unreal Engineも。
ふしぎの国のアリスARというのがあって、結構面白い。
AR Face Detection も簡単に使える。iPhoneX、前面にカメラ以外にも色々ついていて、顔になんか照射して顔の深度情報を取得できたりする。顔の情報が取れたらdelegateで内容が取り出せる。ただし実機のみ…iPhoneXほしい!
感想
こういうの聞くとなんだかんだiPhoneX触ってみたさ出てきますね。
ふしぎの国のアリスAR面白そうなので触ってみようと思います。
iOSのCorner Rounding Strategy / Shunki Tan さん
丸く画像をくり抜くのにどうやってパフォーマンスよくするかという話。
今日の話のソースはここ。
CALayerのCornerRadiusはパフォーマンスが悪い。なぜかというと、毎フレームクリップ処理のためにレンダリングが走っている。角だけのViewを作って、かぶせるとパフォーマンスが良い。
感想
個人的に英語の記事をわかりやすく解説してくれる発表は単純にありがたかったです。cornerRadius普通に使いまくってる気がするのでパフォーマンスに影響が出ていないか心配になってきました。
さいごに
懇親会でPairsアプリの細かい挙動の指摘をhiragramさんがエウレカのエンジニアさんにしてるのとか見たりしてワイワイしました。
メルカリの薄い本をかけてじゃんけん大会!#potatotips pic.twitter.com/fRAiAdEAHr
— Kaoru (@TachibanaKaoru) 2017年10月25日
なんか隣でじゃんけん大会もやってました。
完全に私事ですがブログ枠で、今回はじめて当日中にpostすることができました(日付は変わってしまいましたが)。
前々回はじめてpotatotipsでブログまとめしたときは、あまりにブログ慣れしていないが故にTwitterは追えずツイートも出来ず、ブログまとめるのには丸2日ぐらい掛かっていているという惨状でした(大したこと書いていないのに…)。
しかしさすがに連続でブログ書くとちょっと慣れてきた感じがあり、今回はちょいちょいツイートしつつ、DMとか返しつつ、ブログの材料も時間内に割りとメモることができました。まだまだ不慣れ感はありますが…
potatotips、個人的には出ることで学びと成長を感じれる勉強会なので本当に助かっています。今後も参加していきたいです。