potatotips#41に参加してきました!

potatotips#41にAndroidブログ枠で参加してきました!
今回はヤフーさんの会場でした。イベントスペースの隣には話題のLODGEがあり、とてもオシャレな感じでした(今度行ってみたい)

f:id:sasamihoo:20170620225851j:plain

Android

Physics-based animation

qiita.com

@rkowaseさんによるPhysics-based animationの紹介でした。
Physics-based animationはGoogle I/O 2017 の Android Animations Spring to Life で発表された Physics-based Animations (物理ベースアニメーション)というものです。
たとえばspring animationではバネの伸縮が表現できるそうです。今回の例ではdroid君がばねでビヨンビヨンしている例が載せられていました。かわいいですね。
このバウンス・剛性の設定は変えられるようです。
見た感じでは物理ベースの方がなんとなく自然な感じがしました。
使い方はspring animationオブジェクトを生成してanimationをスタートさせるだけなのでシンプルですね。
そのほかのanimationの種類についても詳しく説明がのっておりました。

visual studio for mac でXamarin入門しました

speakerdeck.com

@kumamo_toneさんによるvisual studio for mapの紹介でした。
visual studio for Macが最近正式リリース(2017/05/12)されたとのことで、試しにXamarinを使ってみた感想・使い勝手などの紹介でした。
Xamarin Studioとほぼ同じような仕様になっており、Xamarin以外にも使えるそうです。インターフェースはmac風なのでmacを使っている人にとって馴染みやすくなっており、ただvimodeがないのは少し残念ですね…。
Xamarinについて使った感想としては、async/awaitが使えることで、通信部分がスッキリ書くことができるそうです。XAMLエディタについてはプレビューのみで手書きしなければいけない部分がつらいそうです。
その他の紹介としてXamarin Workbooksの紹介がありました。Markdownでドキュメントが書け、コードブロックごとにシミュレーターで実行していけるもので、(Jupyter Notebookっぽいと私も思いました)実際にデモで紹介していただけました。
オススメの書籍・web資料なども紹介されていたので、少し触ってみようかなと思いました!

icon fonts in XML

@a2kaidoさんのicon font in XMLについてでした。
アイコンをフォントとして表現できるもので、https://material.io/icons/にアイコンの種類などが挙げられていました。
良い点としては、svgなので軽いというのが挙げられます。
main/assets/material_icon.ttfにiconを配置し、カスタムビューを配置することで実現できます。
design tabで表示できないという問題点がありましたがsupport library26からはTextViewのなかでfont familyを指定できるようになっているので、その部分で指定してあげることできちんと表示することができます。
iOSの方でもresourceに配置し、labelの設定をすることで表現することができます。
iOSの画面でもドロイド君が(!?)表示されることが確認されていました。

AsyncLayoutInflator vs litho

speakerdeck.com

keithYokomaさんの発表でAsyncLayoutInflaterとLithoについてでした。
AsyncLayoutInflaterとLithoとどっちがinflateするのが早いのかということで実際に検証をしてみたというお話でした。
AsyncLayoutInflaterはxmlをbackgroundスレッドで生成してくれることで、UIスレッドがブロックされるのを防げるという利点があります。
Lithoに関してはjavaのコードで宣言的にlayoutを書いてくれるということでAsynchoronous layoutを使用しており、UIをmeasure/layoutする部分はbackgroundスレッド、描画の部分はUIスレッドでやってくれるものです。
今回の計測方法としては、1つのViewGroupの中に10,000のTextViewを入れ、inflateして時間を計測するというものでした。
AsyncLayoutInflaterのxmlはTextViewの羅列ですごい感じになっており、一方Lithoは宣言的に書けるのでスッキリとした感じになっていました。
1回目では、Lithoはscrollできるものの中に入れることを想定しているため、ものすごい計算を始めてしまい中止…
2回目では親にscroll viewを追加してあげて再勝負!
結果はAsyncLayoutInflaterが平均4秒、Lithoが平均20秒という結果になりました。
Lithoはまだbeta版なので今後に期待というところだそうです…!

Android Font Updates

speakerdeck.com

@uecchiさんでAndroid Fontについてでした。
Downloadable Fonts・Google phonts・font providerについてのそれぞれの紹介をしていただきました。

  • Fonts in XML

    • フォントをリソースとして利用できる!
  • Downloadable Fonts

    • フォントをfont providerを通じて取得
    • いいこと
      • apkを減らせる
      • インストール率の改善
    • 使い方
      • font familyからmore fontsを選択するだけ
      • コードからも呼び出せる
      • M以下のandroidではfont providerが落ちて使えない
      • Google fonts には有償fontが含まれない
  • Emoji Compat

    • Emoji Compat Libraryでシステムフォントに登録されていなく、tofuになったものを->絵文字に!
    • EmojiAppCompatTextView, EmojiAppCompatEditText,EmojiAppCompatButtonが用意されている
    • CustomView, TextViewでも対応することができる
  • まとめ
    • custom fontがよりお手軽に
    • apk(リソース問題)を減らすことが可能に
    • Emoji Compatでkitkat以上で最新の絵文字が表示可能に…!

swagger-codegenpojo生成

@kgmyshinさんはswagger-codegenについての発表でした。
swaggerをサーバーサイドに使用している場合、pojoを自動生成してくれるという便利なツールですね。
apiがネストしているときなどには大変便利ですね..!

Instant Apps

www.slideshare.net

@bina1204さんはinstance appについてのご紹介でした。 Instant Appsの使い方・実際の導入方法などを紹介していただきました。導入にあたり、update error -27というエラーが出た際の対処法・またapkファイルが4MB以下という規定についてもお話いただきました
android studio 3 canary 4にするとbuildできなくなってしまうという問題にぶつかっているそうで、どなたか解決された人を募集しているそうです…

自動テストが無ければDeviceFarmを使おう

androidの最後はToshiyuki Hirataさんで、テストの自動化についてでした。
テスト自動化ツールとして、代表的なものについて実際に検証し、比較してみたものに関してご紹介頂きました。

  • openSTF
    • テストコードがない
    • android monkeyテストツール(monkeyみたいなテスト….)
    • リモートデバッグができる
    • タッチイベント・モーションイベント
    • アプリ以外の部分も叩いてしまう(音量などを勝手に…)
  • AWS Device farm
    • ランダムにアプリを動かす(モンキーテスト)
    • Event count・event throttleを設定することができる
    • テスト結果
      • loginできなかった
  • Firebase Test lab/Robo
    • テストのタイムアウト
    • 最大深度の設定
    • カスタムログインを入れてくれる
    • テスト結果

loginを自動でテストするのはなかなか難しいんですね。。

iOS

App Startup Time Optimization and Monitoring

speakerdeck.com

@d_dateさんでWWDCにて紹介されていたApp Start Timeについての紹介でした。
去年から行われているセッションで、App Startup Time: Past, Present, and FutureOptimizing App Startup Timeなどで動画を見ることができるそうです。

UIテストコードの保守性を上げるリファクタリング

speakerdeck.com

@tobi462さんで、テストコードのリファクタリングでした。
コードを共通化することも大事ですが、共通化した結果どこでエラーが起きているかわからなくなっては調査コストがかかってしまいます。
今回はXCTAssertの指定をすることにより、fileとlineの指定・エラーの位置を変えることができるようになり、どこでエラーが起きているのか判定できるようになるそうです。これはUIテスト以外でも使えるそうです。

iOS で View 用に Entity を Struct に変換するってそれ Protocol で出来ることではないんでしょうか

qiita.com

@yimajoさんで、『iOS で View 用に Entity を Struct に変換するってそれ Protocol で出来ることではないんでしょうか』でした。
発表スライドに#potatotipsのtimelineがリアルタイムで流れており、スレイドの一部とかぶってしまい、一時会場が笑いに包まれていました(お寿司が流れてきた時の写真を収めたかった…)
structに変換する際にコストがかかってしまうため、protocolで解決できないのか?というお話でした。

Hashableを誤解していました

speakerdeck.com

@takasekさんで、HashValueについてでした。アルゴリズムをきちんと知っておくことで、実装においても正しい判断をすることができるというお話でした。
アルゴリズム図鑑というアプリがあるらしく、ダウンロードしてみたところそれぞれのアルゴリズムのフローが可視化されていてとてもわかり易かったです。

SwiftPM - コマンドラインツール入門

speakerdeck.com

Nonchalantさんで、アイコンの解像度書き出しツールについての発表でした。 解像度ごとにアイコンを書き出す作業を自動化してくれるツールをリリースし、もうすぐ1000starに届きそうとのこと…!! Homebrewからお手軽にインストールすることができます。
そしてSwiftPMの紹介がありました。SwiftPMはAppleが提供しているCocoaPodsのようなライブラリ管理ツールで、外部ライブラリを利用してコマンドラインツールも作成可能だそうです。
Package.swiftに具体的な設定ファイルを記述していくのですが、依存ライブラリも書くことができるので便利な点・swiftで書くことができるので、学習コストも低い点がよいとのことです。

How I struggle with SiriKit

speakerdeck.com

@tachibanakaoruさんでSirikitについてでした。実際にアプリでSirikitに対応する際に様々なつらみがあるそうです。
そしてAppleの担当の方も「僕達も困っている」らしいです…。

懇親会

今回はなんと美味しいお寿司を用意して頂きました!!! が、食欲のあまり写真を撮り忘れてしまったのでイメージ画像にて(ごめんなさい)

f:id:sasamihoo:20170620225231j:plain

前回に引き続きブログ枠にて参加させていただきました。 登壇者の方の様々なtipsを聞くことができ、とても充実した時間を過ごすことができました。 会場・美味しいお酒・お寿司を提供していただいたヤフーさん・登壇者の皆様・懇親会でお話ししてくださった方々・参加者の皆様ありがとうございました! また次回も参加できたらと思っております!