Cluex Developersブログ

株式会社Cluexでは、子育てをするママのためのメディア - mamanoko(ままのこ)をRuby on Railsで運営しております。

potatotips#44に参加しました!(iOS編)

今月勉強会に色々参加させて頂いている高島(Takasy (@takattata) | Twitter)です。
前回Money Forwardさんで開催された

potatotips.connpass.com

に参加した際にすごく良かったので、今回エウレカさんで開催された

potatotips.connpass.com

もブログ枠で参加してきました!

f:id:cluex-developers:20171026080141p:plain

会場はお洒落で、Wi-Fiだけでなく電源も提供されていて、勉強会では珍しいなと思いました。

今回は弊社のエンジニアの井戸田くんがAndroidブログ枠で参加していたので、iOSブログ枠だった自分はiOSの発表だけに記載を留めさせて頂きますね。 Androidは乞うご期待でお願いします。

ありがたいことにtogetterにまとめてくださっている方がいらっしゃったので貼っておきます。 togetter.com

間違っている箇所等ありましたら、気軽にコメントにお願いします!

アプリ内でWebAPIを抽象化するためのフレームワークAbstractionKitの紹介

speakerdeck.com

ひらり (@hiragram) | Twitter さん

VASILYさんのテックブログにも書いていらっしゃるとのことで、併せて読むとなお良しです。 tech.vasily.jp

紹介されているAbstractionKitはこちら github.com

APIリクエスト周りで困ったことがまだ特になく、発表を聞いている時は話の内容がよく理解できませんでした。

  • CleanArchitectureでレイヤー分かれているからAPIリクエストが点在することはない
  • 基本的にデータは画面間を跨がない

あたりのおかげでしょうか。
同じように分からなかった方は、ブログで流れを追ってからスライドを見ると良いと思います。

  1. EndpointDefinitionというプロトコルを使用して、エンドポイントを定義する。(=エンドポイントのモデル化)
  2. 通信ライブラリと1の橋渡しとなるGenericRequest構造体を作る
  3. 抽象レイヤーとして機能する部分を作る(2を使って取得した結果からどうするかを記述する)
  4. 他画面へのデータ反映の為にブロードキャスト用のストリームを準備して、受け取りたい時に購読する

これは後ほどソースを読み込ませて頂こうと思いました。勉強になります。
スライドのまとめページの「AbstractionKit + APIKit + RxSwiftの説明時間あったらします(多分ない)」は是非ともして頂きたいなぁ。

Showcase Library について

(まだ資料があげられていなかったので、資料が上がり次第更新させて頂きます。) github.com

「UIViewが5つ横に並んでいて、これを無限スクロールでカルーセル表示したい」
を簡単に作る為に作ったライブラリの紹介でした。
横だけでなく、縦や円状の動きなどにも対応していました。
X/Y軸に-1~1で範囲を持ち、動く方向を指定できるとのことです。
図や動画など、視覚的に理解を促進するスライドだったので、資料上がるのが楽しみです。
これも後ほどソースを読み込ませて頂きたいと思いました。

Introduction Differ

speakerdeck.com

corin (@corin8823) | Twitter さん

ちょうど一週間前にもCA.swift #4 - connpassで発表されていたのに、今回も発表されていました。すごい。
Fluxでの設計についてはその時の資料を参照されると良いと思います。こちらの発表も面白かったです。
speakerdeck.com

UITableViewのリストから1行削除する時、reloadDataを走らせてテーブルごとリロードするとアニメーションしないし、1行の更新なのに全て更新されるのが微妙、という点から、
github.com こちらの紹介をされていました。

デモはこちら github.com

Fluxでアプリ作ってみたいと思うので、その際に参考にさせて頂こうと思いました。

WKWebViewのキャッシュについて調べた

www.slideshare.net

hotpepsi (@hotpepsi) | Twitter さん

競技プログラミングが趣味な強者です。
iOS10でWKWebViewのキャッシュが原因でユーザーのアプリの使用量がすごいことになったところから調査が始まったそうです。
調査する時の勉強にもなりそうだと思いました。
WKWebViewがオープンソースだということも知りませんでした。いずれ読んでみたいです。
各OSでのWKWebViewの調査結果が載っていて、iOS10で肥大化したのはバグではないかとのことでした。
バグレポートに書く + WWDCで開発者に伝え、iOS11ではキャッシュがアプリの使用サイズには含まれなくなったそうです。
「同じAPIでも、内部実装や挙動が変わることがある」というのを忘れないようにしようと思いました。

入力を型で表現する

speakerdeck.com

Motoki Narita (@motokiee) | Twitter さん

KAURUの製品情報の取得がサクサクですごく触ってみたくなるデモから始まりました。
この出品画面がそこそこ複雑で、今後入力経路が増えることも考えて、複数の入力を1つの型で表現するようにされた話でした。
データの有無で判別するとかでなく、入力の型自体で分けるのは分かりやすくて良いなと思いました。
まとめにも書かれていらっしゃいましたが、「データ自体の処理と画面の処理を分離しやすい」のは良いですよね。
ソースをたくさん貼ってくださっていて、具体的な実装方法が分かるので、スライド必見です。

carthage verify

speakerdeck.com

r_plus (@r_plus) | Twitter さん

CocoaPodsしか使ったことがないのでピンと来なかったのですが、Carthageではライブラリに追随していない時にはビルドエラーになるという仕組みが標準ではないそうです。
その問題にどうアプローチしていったかの話でした。
結論としてはCarthage/workflowsにあるcarthage-verifyスクリプトを使うとCocoaPodsと同じことが実現できるそうです。
Carthageを使う時の為に覚えておこうと思います。

余談ですが、コントリビュータのいけしょー (@ikesyo) | Twitterさんが素敵なツイートをしていらっしゃっいました。

AR FACE DETECTION

speakerdeck.com

Kaoru (@TachibanaKaoru) | Twitter さん

ARKitの紹介や現在iPhoneXのみ利用可能な顔認証の話でした。
ARの敷居は低く、どちらも実装が非常に簡単とのことです。
Xcode9のテンプレートプロジェクトから立ち上げて動くので、たしかにすぐ出来そうだな、と思いつつ、SceneKitやSpriteKitを触ったことがないので、そこのインプットも考えると優先順位が後回しになっていく現状がありますね...。ですが、やはりARKitは触っていきたいな、と改めて思わされる内容でした。
どういう仕組みで動いているのかが分かる発表だったので、是非スライドをご覧ください。
紹介されていた不思議の国のアリスARは触ってみようと思います。(かなりウサギが怖いですが。)

iOSのCorner Rouding Strategy

speakerdeck.com

Shunki Tan🤔 (@shunkitan) | Twitter さん

紹介されていたドキュメントはこちら Texture | Corner Rounding

スクラムマスター。懇親会でチーム開発についての話聞いてみようかと思って完全に忘れました...。
CALayerのcornerRaduisは毎フレーム、レンダリングが発生しているとのことで、極力使うのは避けようという話でした。
Cornerの種類を挙げ、ハイパフォーマンス順に実現の仕方を紹介してくださいました。
紹介されていたドキュメントのフローがすごく分かりやすかったです。
アプリのパフォーマンスを上げないと辛くなった時に手をつけようと思います。

終わりに

以上、iOSの発表だけですが、1つ1つの内容が濃かったなと感じます。
ブログを書くと内容を振り返らざるを得ないから良いですね!
参加した勉強会は今後なるべく記事にしていこうと思いますので、今後ともよろしくお願いします。

ちなみに、KAURUチームが書いた薄い本の仁義なきじゃんけん大会では敢え無く負けました。

We're hiring!!

弊社ではWeb / ネイティブアプリエンジニアを募集しております。
ご興味がありましたらお気軽にご連絡下さいませ!
エンジニアの方、ぜひ情報交換しましょう!

www.wantedly.com

www.wantedly.com