hunachi’s diary

Android studio でお勉強してます。

potetotips #54 に参加してきました!!

こんばんは,ふなちです!!

今日は,

「potatotips #54 (iOS/Android開発Tips共有会)」

にブログ枠で参加しました(((o(*゚▽゚*)o)))

主催はeureka, Inc. さんでした.

f:id:hanahanahunachi:20180823235652j:plain

写真撮るの下手でほんとすいません。゚(゚´ω`゚)゚。(なんかInvisible reCAPTCHAとかの画像認証?の写真みたいになってしまった...

 

ではでは今回のAndroid枠のTipsをまとめて行きたいと思います!!

iOS枠Tipsにも良いものは沢山あったのですが,私が知識をまったく持ってなくてデマを書きかねないので今回も遠慮させて頂きます \ゴメンナサイ/

また,誤った記載がある場合は即Twitter等でリプ飛ばしてください. 

1日でできる!ARCoreことはじめ by zukkey

speakerdeck.com

github.com

↑スライドとサンプルコード

Unityじゃなくて,Android Studioを使って,ARCoreを使おうぞ!と言うLTでした.

Unityに普段あまり触れてないな私みたいな人には朗報!!

ざっくりした実装の流れとしては,シーンを生成して,それにNode(モデル)を追加する.そして,その追加したNodeは移動,縮小,拡大,回転,が可能なのだそうです.デモでは,ドロイド君が沢山生成されて大きさを変えられたり,していて可愛かったです(((o(*゚▽゚*)o)))

また,円柱とか直方体とかは標準で用意されており,ViewRenbableを使って,簡単に表示する事ができるそうです.

ARCoreめっちゃ気になってたので,このLT聞けてよかったです!

今すぐにでも試したかったのですが,私はEssential PhoneとZenphoneしか持ってないので諦めました。゚(゚´ω`゚)゚。

ARCoreサポート端末一覧:Supported Devices  |  ARCore  |  Google Developers

 

 OculusGoの開発Tips by h-godai

Oculus Goのアプリの開発に関するLTでした.

※Unityにほんとに詳しくない&記憶を頼りに書いているのであまりかけてないです.

Oculus GoはAndroid端末なのでUnityで開発できるそうです!

Oculus Goアプリ開発において大切なのはfps問題だそうです.fps遅いと酔っちゃうみたいです🌀🌀

あまりにも重くなるような処理を有効にするようなチェックボックスのチェックはちゃんと外したり,あまりUserが気づきにくい無駄な処理等をしないように工夫すべきだそうです.例えばshadowの処理とかコントラストとかの処理はできるだけ省くべきだそうです.

Oculus Goせっかく持っているので私も何かしら活用したいです..

uber/motif by shaunkawano

speakerdeck.com

github.com

 ↑スライドと今回のLTをするきっかけとなったツイートとライブラリ.

Uber製DIライブラリのmotfiについてのLTでした!

motifって?

  • ネストされたスコープのために最適化されたシンプルなAPI
  • 実際の依存性注入のためのDaggerのコードを生成してくれる!
  • 絶賛開発中だよ!!(● ˃̶͈̀ロ˂̶͈́)੭⁾

実際にmotifを使ったコードからDaggerのコードを生成!

詳しいコードはスライドに乗ってるから省きます!

@Scopeと@Objectだけで,ComponentからModuleまで複雑なDaggerのコードを生成していて凄いです...

あと,@Exposeを使うことでサブコンポネントに公開するかしないかを選べちゃいます.@Exposeをつけたものはサブコンポネントに公開されます.

スライドの例で行くと,ChildScopeでRetrofitのインスタンス使いたいぽよ!って時に,もし@Exposeをつけてないとエラーが出現🐜そこで@ExposeをつけたらOK!エラーは消えます💥

アノテーションの種類も多く覚える事が多いDaggerに比べ,覚えなきゃいけない事が少なく学習コストが低いmotifはとても便利そうです.

使うかどうかはちゃんと概念(哲学)理解してからにしような!だそうです.

Androidにおける歩数取得とバックグラウンド制限 by KensukeIzumi

speakerdeck.com

www.slideshare.net

Androidで歩数取得をする方法には

  1. Google Fit APIを使う
  2. SensorLisrenerを使う
  3. 加速度センサーを使ってゴリゴリ

があるそうです.

上の項目ほど,簡単で.精度を高めたいなら下の項目の方法を使用すべきだそうです.

加速度センサーを使う方法は,かなり大変なので採用しなかったそうで,はたまたGoogle Fit APIも採用しなかったそうです.

Google Fit APIを採用しなかった理由は,Google Fitアプリと歩数が異なってしまうからだそうです(やばい).発表後詳しい話を聞いたところによると,そもそも歩数を計測する仕方がGoogle Fit APIGoogle Fitアプリ間で異なるそうです.Google Fitアプリではローカルでよしなに歩数を計測し,Google Fit APIではまた別のロジックでクラウドを介して色々やっているみたいです.だからGoogle Fitアプリと歩数が違う!と言う声をなくすためにも,SensorLisrenerを使うを使って実装したそうです.

ただ,SensorLisrenerを使うにしてもバックグラウンドで実行すると,Dazeモード(省エネモード)等に気を使わなくてはならず,AlermManagerを使って歩数取得をしているサービスが終了しそうになったら復活させると言う処理で代用していたそうです.という訳で,ForgroundServiceを使おう!って話でした.ただ,ForgroundServiceはどうやってUserから止められないよう工夫するかがネックになってくるそうです.

Android,省エネ大事精神がすごいのでdeveloperにとってはちょっと大変です...Pからはバックグラウンドが使えなくなっちゃうし...にゃーん🐱

Ripple再考 by yiwaisako

Rippleって言うのは,タップしたらぽわんって円が広がるエフェクトのことです,

公式ドキュメント:RippleDrawable  |  Android Developers

これの実装の仕方についてのTipsでした.

API 21から追加されたものですが,Lollipop(API level 21)では気をつけなければいけないことがあるようです,

例えば,ボタンのみにrippleをつけたい場合には,

<android.support.v7.widget.CardView
android:layout_width="368dp"
android:layout_height="wrap_content">

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</android.support.v7.widget.CardView>

みたいな感じでFrameLayout(CardViewはFrameLayoutを継承してるのでOK)でtextを囲んだ物をButtomにしたり,drawbleリソースを定義する際には,rippleタグだけじゃなくitemタグの方にも色を指定してあげないとちゃんと動かないそうです.

 

Share apk via Bitrise  by kaelaela

speakerdeck.com

Share apk via Bitrise - Speaker Deck

↑スライド.このリンクに必要なリンクが全て書いて下さってるので超親切🙏🙏

タイトルの通り,bitrise+slackでapkを配布しよう!というLTでした.

apkをテスターさん等に配布するとき大変で無駄なコストがエンジニアにかかるのを避けたい!という気持ちからこのやり方を導入したそうです.

必要なのは,

  • Bitrise start Build step
  • Deploy to Bitrise.io step
  • Send a slack Message step
  • 簡単なshell script

だそうです!こんだけ!!!!

詳しい設定の仕方はスライドに丁寧に書いてあるので読むといいと思います.

私も最近,apkを友達にdeployGateを通して配布していたのですが,urlを教えなければならず,バージョンが変わるごとに毎度毎度リンク生成→コピペを繰り返していたので次はこの方法を導入したいです.

あとで聞いたのですが並列実行はこの資料の通りにやるだけじゃできないそう?なので,スライドの更新?楽しみです!!

Android/iOS端末間でデータを送る。BLEで。by coffeegyunyu

www.slideshare.net

 AndroidiOS間でBLE通信を行う方法についてのLTでした.

BLTは一気にたくさんのデータを送ることが無理🙅‍♀️なので,データを細かく分割して送信したり,その送信ではリクエストを沢山飛ばす関係で時間がかかったりする為色々工夫しなくてはなりません.

でも,MTU(Maximum Transmission Unit)を調整することで最適化が可能に!

Android -> iOSでデータを送る時(スライド6ページ)

iOS -> Androidでデータを送る時(スライド9ページ)

のやり方で行われるそうです.

ちなみにAndroidはMTUを取得できるAPIがあるのですが,iOSではMTUが取得できないのでAndroid側からMTUを知るしかないようです.

最後に,端末の割いてきなMTU取得方法を知っている方教えてください.との事です🙆‍♂️

まとめ

他にも,iOS枠のTipsでは,U+202E(Right-toLeft override, RLO)のお話とかもあり,勉強になった.

potetopisに参加するのは3回目なのでそろそろ発表すべきかなぁとか考えてます...いつかチャンスがあれば...

 

懇談会

f:id:hanahanahunachi:20180824023435j:plain

↑ピザ,美味しかったです!

 

f:id:hanahanahunachi:20180824023440j:plain

インターンで超お世話になっているへいへいさんまえかわさん(すごく仲良しで楽しそうなので羨ましいです!)

 

懇談会では他の方ともお話させていただけてそこでも新しいことが学べたりして楽しかったです!

eurekaさん運営さん,ありがとうございました🙇‍♂️

 

(読み直していない為,誤字脱字多いと思いますがご勘弁を。゚(゚´ω`゚)゚。)

あとあと,実はリベンジLTしたいスライド持っているのでいい感じの勉強会とかありましたら教えてください☆