Droid Kaigi DAY.01 (Mar 9th, 2017) 参加レポート
殴り書いてるところは暇見て直す予定
下記を見ずに5Fに行かず建物の周りをぐるっと周りました。
-
始まる前はすごい並んでました。
-
https://github.com/DroidKaigi/conference-app-2017
droidkaigi2017 公式アプリのソースコード
-
ドリンク飲み放題
-
バリスタっぽい人がおしゃれなコーヒーを作ってくれる。飲んでないけど。
-
弁当もらえる
-
電源はあるが前の方の席だけ
-
お菓子コーナーにお菓子とマフィンがあり自由にお取りください。
-
企業ブース色々
-
Room1からRoom6まであり聞きたいセッションを選んで受講する。
-
#droidkaigi, #droidkaigi1, #droidkaigi2,
#droidkaigi3, #droidkaigi4, #droidkaigi5, #droidkaigi6,
受講したセッションについて記載していきます。
- 10:40 - Room3 逆引き マテリアル デザイン
- 11:50 - Room1 minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
- 12:40 - Room1 インスペクションとAndroid Lint Custome Ruleによる、単一責任実装の実践
- 14:20 - Room3 Data Bindingで開発を気持ちよくしよう
- 14:50 - Room5 Android Resources Refactoring
- 16:00 - Room5 Exploring new Android layouts
- 17:10 - Room1 Viewを動的に変化させるアプローチ
- 18:00 - Room3 What's New in RxJava 2.0
感想
- マテリアルデザインガイドライン読む
- DataBinding便利
- PullRequest template いいね
- デザイナー欲しい
Room3 10:40 - 逆引き マテリアル デザイン
-
定期的に更新されているので、whats-newも確認してください。
ガイドラインは絶対に従わないといけないものではなくて
ガイドラインを踏まえたオリジナルのデザインを実装してください。
-
日本語もあるので、まだ読んでない人は読んでください。
Components - Grid lists
タッチフィードバック重要!
画像や文字を含んだアイテム上にタッチフィードバック
タップしてから0.1秒でも何も反応がないと人間はストレスに感じる
カスタマイズのやり方
ググってQiitaにのってるのをコピペしたらこの講義の意味がないので
ドキュメントを見たり、ソースコードを見てカスタマイズするやり方を教えます。
@style と ?attr は 何が違うのか
FABの色がどこから来ている
明示は Widget.MyApp.FloatingActionButton
暗黙は .FloatingButton
とか
styleもテーマも同じ
keyとvalueでマッピングしてるだけ
?attrはテーマで定義されているものをとって来てください
elevation
FABとsnackbarは8
snackbarが出るとFABがかぶる
CoordinatorLayout
dodgeInsetEdges
同じエレベーションのものの場合に避けることができる
layout_insetEdge 避けさせることもできる
anchor gravity
behavior
状態の変化を動かす
パッと画像が大きくなるものを作りたい
今、アニメーション中なら逆回転
Transition API
API レベル 19
Animatortion
様々なTransition
ビジビリティを変えたい
motion - choreography
pathmotion
transition propagation
まとめ
マテリアルデザインガイドラインを読む
what's new を読む
アニメーション中の時間が長すぎると良くない
Q & A
ネストするフラグメントもサポートしているのでバグがあったら報告してください。
Android プラットフォームサポートライブラリ
b.androind.com
11:50 - Room1 minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
モックを作成してUnit Test
Local Unit Testの方がInstrumented testより早い
Google Play
段階的な公開というのがある
20%リリース
2営業日50%リリース
2営業日後100%リリース
12:40 - Room1 インスペクションとAndroid Lint Custom Ruleによる
14:20 - Room3 Data Bindingで開発を気持ちよくしよう
14:50 - Room5 Android Resources Refactoring
リファクタリング
2016 1 - 2017 2
なぜ、私はこれについて話したいのか
スタディサプリ、Quipper
インドネシア、フィリピン、メキシコ
複雑なリソース
- 似てるテーマとスタイル
- 名前の規則がない
リファクタリングの手順
colors.xml, dimens.xml
extracted theme style
colors.xmlとdimens.xmlにまとめる
- colors
color palette
グレスケール
naming rule, bad naming
色はデザイナーによって定義される
- colors_new.xml を作る
小さいPRを送るのが良い
大きいとコンフリクトするから
1歩1歩やっていく
- dimens.xml
dimens_base.xml
dimens.xml
elevation
prefix
space space_16px
デザイナーと毎日MTGしたり、Slackで質問したりする
- theme.xml
android:windowBackground テーマを設定する
product flavor
PullRequest template
- styles.xml
いくつかに分割する
styles_~~~.xml
style_login.xml
style.xml
Button.Primary
style_settings.xml
- drawables
Naming Rule
name prefix
ic_{name}_{size}.png
ic_play_24.png
databinding adapter
Namine Rule
どうやって、エンジニアとデザイナーがコミュニケーションをとるのか
毎日のMTGで質問する。詳細なデザインについて、ごめん
私は、あなたの質問にこたえてますか?
16:00 - Room5 Exploring new Android layouts
ConstraintLayout
FlexboxLayout
new layout
16ms これって何でしょう?
60fps, 30fps
16ms または、ないか
what happens view is drawn
measure
determines the size
layout
determines the location
draw
draw itself on the screen
階層構造
深くない
linear layout
ConstrainLayout
RelativeLayoutに似てる
ビューの連携
sibling view
parent
guideline
view must have at least two Constraint
performance
ConstraintLayoutの方が従来よりパフォーマンスが少し良い
Chains
Creating a Chain
Weighted Chain
アニメーションが簡単にできる
FlexboxLayout
Advanced LinearLayout
Main axis, cross axis
example attributes
change direction
-
https://github.com/googlesamples/android-ConstraintLayoutExamples
-
https://developer.android.com/reference/android/support/constraint/ConstraintLayout.html
layout_flexGrowを適用する前は画像が縦に並ぶけど余白ができる
適用したあとは画面にうまいこと違うサイズの画像を当てはめてくれる
flexbox 0.2.5 stable
17:10 - Room1 Viewを動的に変化させるアプローチ
DataBinding
ConstrainLayout
アニメーション
AppBarLayout
テキストだけが動かせる
elevation
実装のイメージ
なにをトリガーとして動きをつけるのか?
どの座標とか大きさとか計算
ビューに反映する
CoordinatorLayout
タッチイベントが辛い
ネスティドスクロール
scroll, RecyclerView, AppBarLayout
viewの属性値
スクロール量の値を計算する
ViewPagerでの計算
position + positionOffset
0除算に注意
Viewに設定する属性値の計算DataBinding
DataBindingが強い
translationY
fabFactor * @dimen/fab_offset
FABの現れ方
DataBindingで計算できる
OnLayout Change Listenerのループ
CPUをじわじわ食う
上下のスクロールの際にアイコンに対して動いている
レイアウトエディタでxml触ると怒られる
LayoutParamsをいじるのはパフォーマンス的に悪い
18:00 - Room3 What's New in RxJava 2.0
イベントのシーケンスをストリームとして扱う
データがくると
データがくるたびに反応する
偶数のものを見つけて自乗したものを欲しいとする
関数型プログラミング
RxJava2
リアクティブストリームずに準拠した
れっきとした仕様
http://www.reactive-streams.org/
リアクター、アッカ
java9
フローAPI
javaの標準APIとして使われる
非同期のストリーム処理の
4つのインターフェースが定義されているだけです
publisher
subscribe
Obserbable
onSubscribe
どれくらいデータが欲しいか要求できる
イベントがくるたびにonNextが呼ばれる
onNextにnullが
rxjavaではonNextにnullを渡すことはできない
subscription
dorekuraのデータが欲しいか
Processer
pub, subを継承してるだけ
onSubscribe
with non block
バックプレッシャー
Backpressureはよく聞くけど何なん
なかったら、どういうまずいことが起こるか
pub データを貯めれるけど
オーバーフローしてしまう
どれくらい処理できるか、通知してくれる?
世の中のデータソースには2つある
ディスクの読み出し
subが要求するだけ返す
UIの
タップした瞬間にデータを返さないといけない
パッケージネームが変わったり
Backpressureを意識して使えるようになった
nullを使えなくなった。
NPE
toList/toMap
空リストかもしれませんけど
ファーストORデフォルト
条件を満たすものを返す
takeFirst
onCompleteして欲しい
オペレーター返す型が
single
completable
で済む
retrofitはsingleとcompletableをサポートしている
パフォーマンスがよくなりました
-
https://github.com/akarnokd/RxJava2Interop
そんなにコードが綺麗じゃないので、ちょっと使って見ようかなっていうのは良い
Search Structurally
Android Studio
Structural Search