CA.apk #2 に行ってきました

CA.apk とは

サイバーエージェントのメディアサービスを担当しているAndroidエンジニアによる勉強会です。
今回はじめての参加でした。

CA.apk #2 - connpass https://cyberagent.connpass.com/event/53438/

株式会社サイバーエージェント/並木 弥生さん/ダイエットを頑張った話/

容量が太ってしまったアプリをどうやって軽量化するか? というお話でした。

  • 「メソッド数が 64k を超えないように気をつける」

これは、ライブラリもカウント対象ですね、ぼくの遭遇した場面でのお話ですが、Google のライブラリを入れるだけで容易に超えるのがしばしばです…。
ちなみに万が一超えた場合には以下の対処を取ります。

64K を超えるメソッドを使用するアプリの設定 | Android Studio https://developer.android.com/studio/build/multidex.html?hl=ja

resource ファイルから大きな画像を取り除く or WebP にする、リリースビルドの minifyEnabled は true にするなど当然でありながらも見落とす原因を紹介して頂けました。

デザインツールの Zeplin はちょっと興味が湧いたので要検証…。

株式会社AbemaTV小形 昌樹さん/画面回転を支えるデータ保持

どのようにデータを保持したまま、画面回転処理を維持するか? というお話。

というのは、Android のばあい画面回転が発生すると Activity(1画面)を再生成するために一番最初のライフサイクル onCreate から処理が再度行われてしまうのです。

保持されたデータの取り出しを行うタイミングとして、ライフサイクルの onRetainCustomNonConfigurationInstance を利用するなどの知見が共有して頂けました。

株式会社7gogo/前川 裕一さん/やさしい画像ギャラリー改善tips

ユーザにとってやさしい画像ギャラリーを提供する tips についてのお話。

画像ギャラリー画面ではカクつきやロードの遅さに悩まされたり、Android 標準の画像ギャラリーを利用すると関係ないフォルダも見られちゃうし、デザインも変えられないという問題があります。

ユーザが何を目的として画像ギャラリーにアクセスするのか、それは直前に撮影した写真を共有したいのか? それとも沢山の画像ギャラリーを一目にみてからいくつかを取り出したいのか? などを考え、適切なデザインを提供することが大事。

またサムネイルの表示には、そのための MediaStore.Images.Tumbnails.EXTERNAL_CONTENT_URI を使いましょうという話もありました。インターネットなどで転がっているサンプルにはサムネイルではなくオリジナルの URI を使っているものもあるとか。

ただしサムネイルには回転情報がないので、その点は一手間必要だそうです。

株式会社サイバーエージェント/松村 勇輝さん/Screen rotation -横画面固定モードを搭載した話-

先の画面回転時のデータ保持とは違い、こちらは画面回転をどう制御するかというお話。

AbemaTV アプリはつい最近縦画面モードなるものを発表し、同時に横画面固定モードをアプリ内で切り替えられるようにしました。

アプリでの画面方向の固定系は、静的な場合には Activity 毎にちまちま AndroidManifest.xml に記述することになります。

// 縦画面固定だよ!
<activity
    android:name=".view.ExampleActivity"
    android:screenOrientation="portrait"> 

動的に変更したいという場合にこれでは不都合なので、その場合には Activity に生えている setRequestedOrientation を使ことになります。

また、android:screenOrientation に behinde を設定していれば前画面での向きをを引き継ぐことができ、不要な回転アニメーションでユーザ体験を損なわないようにできるとのこと。

ただし起動直後の最初の Activity には適用できないテクニックなので、画面回転は1回は許容する、という考えに基づいて開発されたそうです。 (必要な回転アニメーションと不要な回転アニメーションの切り分け)

オチ