【第22回】potatotips(iOS/Android開発Tips共有会) に参加しました! #potatotips

ブログまとめ枠で参加させて頂きましたので、まとめさせて頂きます。
potatotipsは初参加だったのですが発表が5分と短く、時間内に収めるのが大変そうでした。
その分、発表者が多く色々なトピックを聞くことが出来るので、大変ありがたいイベントでした。


connpass.com

さて、私はiOSサイドなのでAndroidな方は以下のまとめ等をご覧になると良いかと思います。

konifar.hatenablog.com

IBDesignable x PaintCode

メルカリの@86さんによるIBDesignable x PaintCodeと組み合わせの紹介でした。

speakerdeck.com

IBDesignableはXcode6から加わった機能で、細かいパラメータを設定できXcode上のStoryBoardなどで画面を確認できる機能です。
そこに、作成したデザインをコードで吐き出せるPaintCodeをdrawRectで読み込むことにより、手軽に画面を確認することが出来る合わせ技の紹介でした。

IBDesignableは動作が重いので、まだ実用できるかはプロジェクト次第だと思うのですが今後この点が改良されるとかなり活用できるテクニックではないかと思いました。

Introducing Cardio

メルカリの@kitasukeさんによるHealthKit複雑なのでライブラリを作った話でした。

www.slideshare.net

HealthKitはともかくクラスが多く扱うのが大変なのでラッパーを作った感じのようです。watchOSでバックグラウンド的なことをする場合は、HKWorkoutを使う以外では出来ないというのが印象的でした。Workoutに特化したという話もありましたが、おそらくHealthKitが複雑すぎてライブラリをシンプルに保つためには目的を複雑化しないなどの方針があったのかなと思いました。

HealthKitとwatchOSの知見が少ないので、勘違いしているかもしれないのですがWorkout系のアプリを作る上ではかなり強力なライブラリではないかと思いました。

My First tvOS

VOYAGE GROUPの@TachibanaKaoruさんによるtvOSでのアプリ開発に関する話でした。

www.slideshare.net

開発者的に重要だなと思ったのは、iOS9には似ているがAppDelegateの仕組みが違うのでソースがそのまま使えるわけではない話やタッチが無いので、それをどうUI/UX的に処理するか?などが気になりました。iCloud以外への保存は不可、アプリの配布サイズは200MBなどの制約もかなりきついように思いました。

会場的にもAppleTVアプリを作っている人はかなり少なかったように思いますので、まだまだ立ち上がりはこれからだと思います。

個人で開発したアプリがベスト新着に選ばれた話

株式会社ネクストの@mo_to_44さんによる担当者全部俺の話。

www.slideshare.net

ひとことで言うと「個人で開発したアプリがベスト新着に選ばれて嬉しいぜ」という話だと思います。一応、私も個人開発者でもあるので、むっちゃ羨ましい!!!という感じで聞いておりました。頑張ります。個人開発においての、モチベーションの保ち方やリリースするための工夫割り切りなどの話はとてもリアルな話でした。私の経験的にも、アプリをリリースできる人と、出来ない人の差はこのスライドに書いてあること以外にないなと感じました。Done is better than perfect.

Objective-C Generics

フリーランスの@gooichiによるObjective-CでもGenerics出来る話。

www.slideshare.net

私としてはもうSwiftで書いてるので、Objective-CでGenerics出来ても特に関係ないかなと思っていました。ですが、Objective-C側で例えば配列にGenericsを使うことにより、Swift側で使用した場合にAnyObjectではなく具体的なクラスが入っている配列が作れるなどは大変便利に思いました。

ライブラリをSwiftでフルスクラッチで書き直すのは大変すぎるけど、部分的でもSwiftで使いやすくするなどの対応が可能になりそうだなと思いました。

Swift 2.0でRxSwift、ReactKit、ReactiveCocoaを使ってみた

メルカリの@oobaさんによる、リアクティブプログラミングのお話。

speakerdeck.com

RxSwift、ReactKit、ReactiveCocoaを対比しながら解説頂いて、どれを選ぶかについて考える上で大変有難そうな資料になります。一長一短なので、どれを選ぶのかは難しいですが、資料最後で学習コストなど含めてRxSwiftかな?という話があり、私も感覚的にはそうかなと思いました。

ライブラリの選定での比較で、しっかり同一機能のコードを書き分けて比較している姿勢は素晴らしいなと思いました。

iOSエンジニア ハッカソン参加のススメ

satoshi0212 さんによる、三ヶ月前の自分が泣いて喜ぶハッカソンに参加した時の知見のお話でした。資料がアップロードされていないというか、GitHub以外のアカウントが見つけられなかったので、資料が追加できるかわからないのですが・・・とても良い内容です。

ハッカソンに参加すると人とのつながりが生まれて、その繋がりはかなり生きているというのが、発表を通してビシビシ伝わってきました。

「APIを叩いて取得したJSONを加工して画面に表示」できるとモテるらしいです笑 また、私自身もフリーランスなのですが確かにそこで生まれる繋がりはフリーランスにこそ必要なものだろうなと感じました。

Caffeで簡単本格ディープラーニングアプリ

@noradaikoさんによるディープラーニングな話。

www.slideshare.net

ディープラーニングよく聞くけどって何に使えるんだろうと思っていましたが、Caffeを使えば簡単に写真から何かを推定するアプリに活用できるようです。また、iOS上での識別処理が実用に耐える速度で動かせるというのが印象的でした。気になった方は、サンプルコードも提供いただいているので動かしてみると良いと思います。

Type Safe Assets Handling in Swift

株式会社サイバーエージェントの@tasanobuさんによる

www.slideshare.net

例えば、画像リソースを指定する場合や、StoryBoardのリソースを指定する場合に指定している文字列は間違っていてもコンパイルエラーが出ることはない。そこで、App Specific Enumを使い、リソース名を定数として扱うことでこの問題を解決する。だが、Enumで定義すると、もちろん画像を増やすたびに再定義する必要があり、そこでもミスが発生する余地がある。そこで、SwiftGenというライブラリを使うことにより自動生成する事で解決できるという話でした。

懇親会で伺ったのですが、発表できなかった内容として「SwiftGenのStoryBoard内のRootViewController以外のリソースを指定する方法に命名規則のようなものがあるから、既存のプロジェクトに導入した時に、一度SwiftGen側のルールに合わせる必要がある場合がある」(うろ覚え)があるそうです。

TinderUIとスクロール

takahito_morinaga_5 さんによるTinderUI風のスクロール出来る独自UIを作った話でした。
UIWindowでイベントをすべてハンドリングして、UIScrollViewの慣性処理と左右のフリック処理を共存させる手法はガチで気合だなと思いました。
タイトル聞いた瞬間から地獄そうだなと思ったのですが、やはり独自UIは地獄だなと思いました。
しかし、独自UIによりユーザ体験が向上するならチャレンジする価値はありますよね。
ホントお疲れ様でした!

まとめ

帰ってきてから、まとめたのですが発表を聞きながらまとめたほうが良かったなと後悔しました。終了とほぼ同時に書き上がってた、にこふぁーさんマジ何者なんだ!?さて、発表者の方々とても為になるTipsありがとうございました!