potatotips #42 に参加してきました
ブログまとめ枠なのにまとめるのが遅くなってしまいました。
今回のpotatotipsはクックパッドさんのオフィスでの開催でした。 自分はオーディエンス枠の補欠#1でしたが、ぜひ参加したかったのでちょうど空いていたAndroidのブログまとめ枠に鞍替えして参加してきました。
前回に続き、今回もTogetterに当日の様子がまとまっているのでそちらもあわせてどうぞ。
Android Tipsまとめ
以下に各発表者のスライドなどをまとめていきます(敬称略)
ビルドを早くした話 by amyu_san
ネイティブの開発者なら毎日欠かさず実行しているであろうbuildを短縮しようという話。
- Gradleのバーションを
4.0
にupする - gradle.propertiesで
org.gradle.caching=true
これで2分→1.5分に短縮
- 特定のGradleタスクの時だけ、
minSdkVersion=21
にするように変更
これで1.5分→1分にさらに短縮
会社のプロダクトとかだとなかなか簡単に変更できないかもしれないですが、サクッと検証して適用できるなら積極的にしてみたいと思いました。 待ち時間長すぎてビルド中にお手洗い行ったりドリンク取りに行ったりして無駄待ちしないようにしてるぐらいですからね。
Circle CI 2.0 by Keisuke Kobayashi
新しく出たCircle CI 2.0にTryしたら、使いやすく、思った以上に速くていい選択肢だったという話。
CI is 苦行
- 遅い
- OutOfMemory問題
- ノウハウが属人化しやすい(?)
Circle CI 2.0
- Dockerサポート!
- 速い、爆速
- OOM解消
あまりCIにしっかり触れたことがないのですが、結構ネックになりそう?な環境構築を、公式が提供してくれているyamlにちょっと手を加えるだけでできるのは魅力的かも。
Groupieを使ってみて by stsn_jp
groupieはRecyclerViewを拡張して便利にしたUIライブラリ。
RecyclerViewよくありそうな、
- Header
- ContentsGroupHeader
- Contents
- Footer
みたいにいくつものLayoutを用意してる場合に起きる、if/switchによる処理の分岐の面倒さから解放される。 さらに、Databindingとも相性がよいとのこと。最高っぽい。
ただ、Groupの階層を重ねるとパフォーマンスに影響がでるようなので、注意が必要。
Groupieに限らず、Deep&Narrow
ではなくShallow&Wide
なレイアウトを心がけないとですよね。
Android O (Picture In Picture) 入門+実装例 by Kenichi Kambara
www.slideshare.net
Android O から標準搭載となるPicture in Pictureの話。
もともと端末メーカが独自に開発して搭載されてる機種(Galaxyとか)もありましたが、Oからは晴れて標準になります。
PIPモードを有効にするだけであれば、AndroidManifest.xmlでandroid:supportsPictureInPicture="true"
と宣言した上で、PIPモードへ移行するメソッドを呼ぶだけ。簡単!
検討事項としては、
- PIPモード時に何を表示して何を表示しないのか
- 状態保持をどうするか これらについて気をつける必要がありそうだとまとめていました。
Oが動くNexusデバイス持ってないのですが、端末調達して実際に試して見たいなあ…
Play Billing Library by ssoejima
www.slideshare.net
なかなか聞けない課金周りのライブラリの話。
Billingサービスを使うまでの基本的な実装の手順についてLTされていました。
まだライブラリがDP1の段階なので、プロダクトに適用するにはまだ早いかな?とのこと。
これまた今までやったことない領域なのですが、課金周りは大変だという話をちょいちょい聞くので、このライブラリで少しでも改善されればなと思いました。
CustomView in Kotlin by e10dokup
先日のGoogle I/Oで正式サポートが発表されたKotlinでCustomViewを作る話。
Kotlinで書いたCustomViewのあれこれがJavaからどう見えるのかだったり、Kotlinならコンストラクタやリスナーパターンをスッキリ書けるぞ!といった話をしていました。
同一のプロジェクト内で、KotlinコードとJavaコードが共存できます。したがってJava→Kotlinの移行は、一時的なコードが増えるかもしれませんが段階的に行うことができます。みなさんぜひKotlin化しましょう(白目)
真面目な話、赤べこ本がめちゃ売れるなどKotlin周りが盛り上がって来てますので、結構前からちょいちょい使ってた身としては今後に期待ですね。
Firebase Dynamic Links by Sam
RxJavaを1.x -> 2.xに移行する話 by uzzu
プロダクトのRxJavaを2.x化した(最近無事終わった)時の話。
RxJavaの大きな変更点であるNullの非許容化。 移行の際もやっぱりここがネックになるようで、置き換えられるオペレータは置き換えて、ダメなら自作Optionalで対応。ここ(null非許容化)を真っ先に対応するのが吉と話していました。
また、移行の際有用だった神ツールとして、RxJava2Interop
というライブラリを紹介されてました。
プロダクトによってはまだまだ1.x使っているものも多いと思うので、このtipsは2.x化する際に思い出してまた読みたいと思いました。
Androidのセキュリティ良くなってきた話 by nein37
Androidのセキュリティにまつわる話。
6.0以降、アプリの各種権限を必要になったときに都度取得するように変更になるなど、悪い開発者からユーザを守るべくいろいろと対策が講じられてます。
Oでは権限ダイアログ表示時のオーバーレイ表示を禁止されるようで、偽装された権限ダイアログを出すことが難しくなるそうです。
一方で、Androidにはユーザ補助サービスというものがあり、
- 画面上に表示されている情報の取得
- 画面への操作
- チェックボックスなどの操作
- 文字入力
などが可能になっています。
LTでは、サンプルアプリにユーザ補助サービスの権限を渡した瞬間、ゴリゴリとそのほかの権限を取りに行く様子が確認できました。おそるべし。
ユーザとしては、それが本当にユーザ補助サービスの権限を必要としているのか、注意深く見極める必要がありそうだとまとめていました。
iOS Tipsまとめ(タイトルとスライドリンクのみ)
iOS11でのHEVC動画のHLS配信 by YuyaHorita
スライド確認中
CoreMotionを使って気づいたこととiOS11での新機能 by tattn
簡単に激安感を表現するライブラリを作りました by hirose_yudai
海外カンファレンスに招待された事情 by pancake
AutoLayoutのデバッグを少しだけ賢くやる by hiragram
スライド確認中
Swift4 で進化した Range by ezura
Introducing Feedback Tool - Ajimi by nakajijapan
スライド確認中
Vision Framework by Motoki Narita
スライド確認中
参加してみて
社内で開催される勉強会にはよく参加していたのですが、業務を切り上げて参加したのは今回が初めてでした。 Androidだけでなく、iOSのtipsも聞くことができたのは自分の知識という面でも良いことですし、社内のエンジニアと話すときのきっかけとしても使えそうだなと思いました。(仲が悪いわけでは全くないですが一応)
会場と非常においしいご飯とお酒を提供してくださったクックパッドさん、当日発表したみなさま、ありがとうございました。また次も参加できればと思います。