さつきのつきあたり

やってみたことをそのままメモするところ

potatotips #42 に参加してきました

ブログまとめ枠なのにまとめるのが遅くなってしまいました。

potatotips.connpass.com

今回のpotatotipsはクックパッドさんのオフィスでの開催でした。 自分はオーディエンス枠の補欠#1でしたが、ぜひ参加したかったのでちょうど空いていたAndroidのブログまとめ枠に鞍替えして参加してきました。

前回に続き、今回もTogetterに当日の様子がまとまっているのでそちらもあわせてどうぞ。

togetter.com

Android Tipsまとめ

以下に各発表者のスライドなどをまとめていきます(敬称略)

ビルドを早くした話 by amyu_san

speakerdeck.com

ネイティブの開発者なら毎日欠かさず実行しているであろう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

speakerdeck.com

新しく出たCircle CI 2.0にTryしたら、使いやすく、思った以上に速くていい選択肢だったという話。

CI is 苦行

  • 遅い
  • OutOfMemory問題
  • ノウハウが属人化しやすい(?)

Circle CI 2.0

  • Dockerサポート!
  • 速い、爆速
  • OOM解消

あまりCIにしっかり触れたことがないのですが、結構ネックになりそう?な環境構築を、公式が提供してくれているyamlにちょっと手を加えるだけでできるのは魅力的かも。

Groupieを使ってみて by stsn_jp

docs.google.com

groupieはRecyclerViewを拡張して便利にしたUIライブラリ。

github.com

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.xmlandroid:supportsPictureInPicture="true"と宣言した上で、PIPモードへ移行するメソッドを呼ぶだけ。簡単!

検討事項としては、

  • PIPモード時に何を表示して何を表示しないのか
  • 状態保持をどうするか これらについて気をつける必要がありそうだとまとめていました。

Oが動くNexusバイス持ってないのですが、端末調達して実際に試して見たいなあ…

Play Billing Library by ssoejima

www.slideshare.net

なかなか聞けない課金周りのライブラリの話。

Billingサービスを使うまでの基本的な実装の手順についてLTされていました。

まだライブラリがDP1の段階なので、プロダクトに適用するにはまだ早いかな?とのこと。

これまた今までやったことない領域なのですが、課金周りは大変だという話をちょいちょい聞くので、このライブラリで少しでも改善されればなと思いました。

CustomView in Kotlin by e10dokup

speakerdeck.com

先日のGoogle I/Oで正式サポートが発表されたKotlinでCustomViewを作る話。

Kotlinで書いたCustomViewのあれこれがJavaからどう見えるのかだったり、Kotlinならコンストラクタやリスナーパターンをスッキリ書けるぞ!といった話をしていました。

同一のプロジェクト内で、KotlinコードとJavaコードが共存できます。したがってJava→Kotlinの移行は、一時的なコードが増えるかもしれませんが段階的に行うことができます。みなさんぜひKotlin化しましょう(白目)

真面目な話、赤べこ本がめちゃ売れるなどKotlin周りが盛り上がって来てますので、結構前からちょいちょい使ってた身としては今後に期待ですね。

RxJavaを1.x -> 2.xに移行する話 by uzzu

speakerdeck.com

プロダクトのRxJavaを2.x化した(最近無事終わった)時の話。

RxJavaの大きな変更点であるNullの非許容化。 移行の際もやっぱりここがネックになるようで、置き換えられるオペレータは置き換えて、ダメなら自作Optionalで対応。ここ(null非許容化)を真っ先に対応するのが吉と話していました。

また、移行の際有用だった神ツールとして、RxJava2Interopというライブラリを紹介されてました。

github.com

プロダクトによってはまだまだ1.x使っているものも多いと思うので、このtipsは2.x化する際に思い出してまた読みたいと思いました。

Androidのセキュリティ良くなってきた話 by nein37

speakerdeck.com

Androidのセキュリティにまつわる話。

6.0以降、アプリの各種権限を必要になったときに都度取得するように変更になるなど、悪い開発者からユーザを守るべくいろいろと対策が講じられてます。

Oでは権限ダイアログ表示時のオーバーレイ表示を禁止されるようで、偽装された権限ダイアログを出すことが難しくなるそうです。

一方で、Androidにはユーザ補助サービスというものがあり、

  • 画面上に表示されている情報の取得
  • 画面への操作

などが可能になっています。

LTでは、サンプルアプリにユーザ補助サービスの権限を渡した瞬間、ゴリゴリとそのほかの権限を取りに行く様子が確認できました。おそるべし。

ユーザとしては、それが本当にユーザ補助サービスの権限を必要としているのか、注意深く見極める必要がありそうだとまとめていました。

iOS Tipsまとめ(タイトルとスライドリンクのみ)

iOS11でのHEVC動画のHLS配信 by YuyaHorita

スライド確認中

CoreMotionを使って気づいたこととiOS11での新機能 by tattn

speakerdeck.com

簡単に激安感を表現するライブラリを作りました by hirose_yudai

speakerdeck.com

海外カンファレンスに招待された事情 by pancake

speakerdeck.com

AutoLayoutのデバッグを少しだけ賢くやる by hiragram

スライド確認中

Swift4 で進化した Range by ezura

gitpitch.com

Introducing Feedback Tool - Ajimi by nakajijapan

スライド確認中

Vision Framework by Motoki Narita

スライド確認中

参加してみて

社内で開催される勉強会にはよく参加していたのですが、業務を切り上げて参加したのは今回が初めてでした。 Androidだけでなく、iOSのtipsも聞くことができたのは自分の知識という面でも良いことですし、社内のエンジニアと話すときのきっかけとしても使えそうだなと思いました。(仲が悪いわけでは全くないですが一応)

会場と非常においしいご飯とお酒を提供してくださったクックパッドさん、当日発表したみなさま、ありがとうございました。また次も参加できればと思います。