さつきのつきあたり

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

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

あけましておめでとうございます(2ヶ月経過) 今年もちょいちょいいろんなことを発信していければと思います。

タイトルの通り、2/22(木)にpotatotips #48にまとめ枠で参加してきました。 毎度まとめるまでに時間がかかりすぎていることをお詫びしたいです。運営さんすみません。

今回はRettyさんのオフィスでの開催。 毎度思うのですがどこもオフィスがほんとおしゃれ。

登壇者一覧

今回は以下の方々が発表されていました。発表順に紹介(敬称略)

  • kNagadou / テスト実行時に不要な初期化コードを実行しないようにする
  • take_e10 / Android Instant Apps対応した話
  • niba1122 / Androidチームにコンバートされてから半年、いかにしてAndroidエンジニアになったか
  • TachibanaKaoru / Time for Xcode Behavior
  • TakeSemba / リリースを自動化した話
  • YuyaHorita / Heckelの差分アルゴリズムについて
  • e10dokup / Contact AppっぽいSticky Headerをつくる
  • shu223 / Metal Acceleratedかどうかを調べる方法
  • magiepooh / APIのデータのマッピングを約18倍速くした話
  • koako / アプリの翻訳管理を楽にする
  • horie1024 / Alexa、APKを配布して
  • hirothings / iOSフレームワークViperのススメ
  • taptappun / RuntimePermissionChecker
というライブラリを作った

以下でそれぞれの発表について軽く触れていきます。iOSのものはスライドだけを。

kNagadou / テスト実行時に不要な初期化コードを実行しないようにする / iOS

  • スライド

speakerdeck.com

take_e10 / Android Instant Apps対応した話 / Android

  • スライド

自分も昨年テーマにしたInstant Appsの話。 LIFULLのサイトへアクセスすると、instant apps版が実際に試せました。 Instant Apps化する際のハードルは、やはり何と言っても4MBというサイズの壁のよう。 module切って、含めるコードをできるだけ少なくすることはもちろん、一番効果的なのが画像のようなメディアファイルをいかに小さくするかが勝負。VectorDrawableにするのが効果的かしら? 他にもサポートしていない機能があるなど制約は多いですが、ブラウザ経由の流入でもアプリと同等の体験を提供できるのは大きいと思う。 もっと事例が増えるといいなと感じた。

niba1122 / Androidチームにコンバートされてから半年、いかにしてAndroidエンジニアになったか / Android

  • スライド

speakerdeck.com

まだAndroidに転換して半年しか経っておられないniba1122さんが、どうやってAndroid周りの学習をしてきたかという話。 Udacityというeラーニングのサイトを活用して、Androidの基礎的な部分から中級者程度の内容を学んだとか。 eラーニングサイトってお金掛かるとばっかり思ってたので、コースによるけど実は無料のもあるんだよという事実にびっくり。 ブログは書かれたタイミングが古かったりすると参考にできない場合があるので、そういうところを活用するのはアリだと思った。 そしてKotlinの学習は言わずと知れた赤べこ本で。日本語なのもあって、やはり赤べこ本は強い(確信)

TachibanaKaoru / Time for Xcode Behavior / iOS

  • スライド

speakerdeck.com

TakeSemba / リリースを自動化した話 / Android

  • スライド

speakerdeck.com

gradle-play-publisherというプラグインを活用して、alphaリリースしちゃうぞ、という話。 apkをuploadするだけじゃなく、リリースノートを更新したりすることもできてしまうという便利さ。 さすがに本番リリースは手動にしているようです(自動だとさすがに怖い)。この発表の後の方でも、「自動」という単語がキーワードになる発表があったように、上手に組み合わせればなんでも自動化できる世界だなと改めて感じた。

Playストアにリリースしているアプリを持っているわけではないですが、時間見つけてこの類の自動化はトライしてみたいです。

YuyaHorita / Heckelの差分アルゴリズムについて / iOS

  • スライド

not upload

e10dokup / Contact AppっぽいSticky Headerをつくる / Android

  • スライド

speakerdeck.com

RecyclerViewを装飾して、連絡先appみたいに頭文字が左側に常に表示されているようなheaderを実現するために試行錯誤した話。 RecyclerViewの各Itemに対して装飾するためのItemDecorationクラスがあり、特定のメソッドをoverrideすることで頭文字を描画するための領域を確保したり、実際何か描画する処理を実装したりしています。 今回は文字の描画をしていて、単に表示するとがちゃがちゃしてしまうのと、描画して欲しいのは頭文字が同じitemのうち一番先頭だけで良きなので、その辺の調整方法を細かく説明していました。

shu223 / Metal Acceleratedかどうかを調べる方法 / iOS

  • スライド

speakerdeck.com

magiepooh / APIのデータのマッピングを約18倍速くした話 / Android

  • スライド

speakerdeck.com

特定の端末だけでやけに処理が遅かったので、いくつかの対策を試した結果だいぶ早くなった、という話。 jsonパーサを変えてみたり、objectをstringで置き換えてみたり、重複データを共通化して受信データを減らすなどの対策のおかげで、20sec -> 2.9secという改善を達成、さらに大量のデータ取得部を別に切り出したおかげで1.2secまで18倍まで改善(裏技っぽい?w)

大事なのはどの程度改善したかというよりも、意外と基本的な部分が原因でパフォーマンスに悪影響を及ぼしている可能性が十分にあって、比較的簡単な改修(apiが返すデータはクライアントだけではどうにもならないけれど)で大幅改善が見込めるという点。 apiとか通信周りって、手を加えた場合にクリティカルなバグを起こす可能性が高いためになかなか気軽に改修とは行かないけれど、余裕がある時にパフォーマンス分析/改善はやれると良いのかなと思った。

koako / アプリの翻訳管理を楽にする / iOS

  • スライド

speakerdeck.com

horie1024 / Alexa、APKを配布して / Android

  • スライド

speakerdeck.com

今回のpotatotipsでいちばん面白かった発表。 Alexaに「apk配布して」って話しかけると、裏で処理がリレーしていって最終的にdeployGateに上がるというもの。 自動化されているというのも面白いですが、alexaのスキル開発が思った以上に簡単にできるという点も驚きでした。 発表ではapkの配布でしたが、Takusemba氏のauto releaseも活用すれば、話しかけてalpha releaseなんてことも…?

hirothings / iOSフレームワークViperのススメ / iOS

  • スライド

speakerdeck.com

taptappun / RuntimePermissionChecker
というライブラリを作った / Android

  • Qiita

qiita.com

Android 6.0以降採用されたRuntime Permission。これまでであれば、AndroidManifestに記述しておく方式だったのが、必要になったタイミングで権限の許可を求める方式になったわけですが、この処理を忘れてしまうことが多々。 紹介していたライブラリでは、1行ぺっとしておけばあとはよしなにやってくれるというものでした。 いくつか同じようなライブラリあった気がしますので、他に比べて良さがあれば使ってみるのはありかもしれないです。

参加してみて

久しぶりに勉強会参加したのですが、やはり他の方の発表聞くのは面白いですね。 勉強になる面もあるし、興味をそそられることもあるし、場合によっては自分の環境での実戦投入できるようなものもあり、非常に有意義な時間だったと思う。懇親会苦手マンですが、そんなことは気にせずバシバシ参加しようと思う、というかします。

会場提供していただいたRettyさん、ありがとうございました。 次回はメルカリさんで開催です。 potatotips.connpass.com 応募者多数ですと3/5に抽選がされます。次はスピーカーで行きたいゾ。