こんにちは, またくです。


DroidKaigi に行きました。初日の記録です。

逆引き マテリアルデザイン by @yaraki さん

Google の中の人のお話。マテリアルデザインのコンポーネントの組み合わせによる効果と, アニメーションの表現についてのお話でした。
自分が何かアクションをしたとして, 反応して返ってきたアクションが意味不明だったらそのアクションは全く意味を成しません。 マテリアルデザインはガイドライン化されているので, そこに色んな答えはあるんだろうなと思います。

また, Floating Action Button ってほとんど右下にあるよね〜ガイドラインではそこに置けとは言ってないんですけど〜という話を聞きましたが, 確かに!!


minneにおけるテスト〜リリース〜リリース後にやっている事の紹介 by @mapyo さん

あ〜ぼいらーさんだ~🤗🤗🤗 と思って聞いてました。
minne の開発スタイル, テストのあり方, リリースフロー, リリース後についてのお話です。 あくまでこれが正しいというスタンスではなく, これを機に議論が起こるといいなと思っていて, minneチームではふりかえりによって改善がなされていました。

普段うんうんと体感できる事柄が多かったですが, ぼいらーさんがいた時にちょうど研修中だったので, こういった背景を聞けたのはとても良かったです。


インスペクションとAndroid Lint Custom Ruleによる、単一責任実装の実践 by @robo さん

Android Studio における静的コード解析, メソッドを複雑にならないように設計するお話でした。
構文木解析について, 仕様書に沿うと手続き型になりがちだけど, オブジェクト指向に寄せて開発しようねという内容でした。 途中でも仰っていましたが, 資料が120ページあるので, 30分では収まらない密度の内容でした。



Data Bindingで開発を気持ちよくしよう by @oldergod さん

Google の Data Binding Library についてでした。
Data Binding って動的に Model と View を連携してくれる便利なやつっていう認識で, 実際に Angular.js とか Vue.js などを使ったことがあるわけではなかったので, 凄く興味深かったです。 Data Binding For The Win

Butter Knife という, Activity, View での findViewById を楽に書けるライブラリがあったと思うのですが, それを使わなくても公式のライブラリで事足りるのかなと思いましたが, 多分やっている人から見ればもっと利点はあるんだろうなあと感じます。っていうか, おっしゃる通り絶対開発気持ちよくなるわと心のなかでずっと言ってました。

公式が提供してる便利なものって, 何のフィルタもなく便利だと思っても良いはずなので, 積極的に使いたいなぁ〜と感じています。

実践アニメーション by @citrous さん

“Android animation” とかで検索すると色々出てくるけど, どうすれば良いの?という人向けへの一つの答えの提示でした。

ユーザーアクションへの明確なフィードバックをどう表現するかを考える際, 最近はある程度アプリの市場も成熟してきたので, ユーザーはシンプルなアニメーションでは物足りなくなってきたそうです。そうかな?と思いましたが, 多分この感覚は慣れによってごまかされているような気がして, 自分もきっと物足りないと思っているんだろうなと感じます。

そこで, 初中級者でもできるテクニックとして, ValueAnimator + CustomView の組み合わせを紹介しています。

ValueAnimator は API Label 11 からあって, バージョンで言うと, Android 3.0 で既に使えるようになっているものです。指定した値を, 指定した時間内で変化させるためのプロパティを作成してくれるもので, 実際にこんなアニメーションができるよ〜とデモ付きで発表してくれました。

ちょうど iOS でアニメーションを使いたいなと思ってよくわからぬ〜と思っていた時に, Spring というアニメーションを手軽に扱えるライブラリのコードを読んでいて, こう書けば良いのか〜という知見を得たので, ここは有名なアニメーションのライブラリのコードを見ながら, アニメーションのコードの書き方を学んでいきたいです。

Androidアプリ開発の体力づくり💪 by @operandoOS さん

Android これから開発したいけど, どうすれば良いの!?という人向けの優しく勢いのある発表でした。

デザインとか悩むと思うけど, まずは雑でも良いから公開すれば良いという言葉が最初にあります。

丁度僕もアプリを出そうと同僚のスンくんと開発していましたが, まさに最近スンくんから同じことを言われたのは記憶に新しいです。良いものを作るのは勿論大切だけど, 完璧を求めてしまうと絶対手に入らないのでいつまでも出すのに戸惑ってしまうのは勿体無い。ある程度雑でもストアに出してしまえば, ある種の高揚感と達成感が得られるので, 勢いが付いたのを覚えています。その辺のエモい話はスンくんにひとまず任せたいと思います。

Android は Material design guidelines を始め, 色んなドキュメントがありますが, YouTube にも非常に良い動画がたくさんあるそうです。僕自身, 動画から学ぶことってあまりなかったのでここは全く知りませんでした。

Android を仕事にすると, OS アップデート時への対応をする機会もあるだろうが, それにあたり以下のことが大切。 - Preview 版から OS をいじり倒すこと - SDK のバージョンが上がるとメソッドがなくなっていることがあるので, API document の Diff を読むこと - 日頃から Android API について敏感であること

このあたりは去年の発表の OSSの動向を捉えた実装方針 も読むと良さそうでした。めっちゃ聞きやすかったです。

How to remodel current testing environment by @red_fat_daruma さん

テストポリシーとストラテジーの話でした。
誰か @red_fat_daruma さんに同時刻でかぶってしまった @Nkzn さん の React Native の話を聞かせてやってくれー!と会場の人は思ったんじゃないでしょうか。

テストがどうあるべきかということを考える良い機会になりました。
テストをただ精神的保険とする開発になってしまっていれば, アプリケーションの動作の担保というよりは人間の精神安定としての割合が強くなってしまっているので, そのテストに意味はあるのか, 役割や意義は何かという質問に答えづらくなるかと思います。

3000 ms でタイムアウトするメソッドのテストがあったとして, その 3000 ms にどういう意味があるのかをぱっと見で理解するのは難しいです。適当に決めていたのかもしれないですし, 何か実際に計測して決められた値かもしれません。ここの処理を見直すことになった時に, 時間を増やして対応するのか, メソッド自体を見直すのかということについて, 個々の認識がずれていると, 修正するというステップに大きな障壁となってしまいます。

多分発表中にあった, Remodeling のステップをさっと考えられる域には達していないので, 事例を聞いてなるほどと思うくらいしかできませんでした。ですが, 普段当たり前に書いていたテスト, またその対象となるアプリケーションの設計に関して, より良いものか?という問いかけが多面的にできると, 段階がぐっと上がって開発も楽しいだろうなという印象です。

What’s new in RxJava 2.0 by @hydrakecat さん

非同期処理に役立ったり, 抽象化, ストリーム化というような特性が挙げられる Rx の Javaの処理系 RxJava が 2.0 ではどうなるのかというお話でした。

Java 8 だと Stream API があるけど, Android ではまだあれなので, RxJava 便利という印象しかなかったですが, Optional として扱えたり, Promise っぽく扱えたりと色々できるんですね。それこそ Data Binding あたりと一緒に勉強したいなという気持ちになりました。ひとまずは, RxSwift とかから手を出してみようかな。


会場はどこも大盛況でした。技術イベントであったことは確かですが, 色んなブースがあってお祭り感あふれるイベントでもありました。スタッフの方の対応や会場の環境がとても良くて, イベントを楽しむことができました。明日も楽しみです…!!