さつきのつきあたり

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

Potatotips #43 に参加してきました

前回に引き続きブログまとめ枠で参加してきました。

potatotips.connpass.com

Android Tipsまとめ

以下に各発表者のをまとめていきます。(敬称略)

Annotation Processing by TakuSemba

speakerdeck.com

タイトル通りAnnotation Processingに関する話。 Annotation Processingを導入することで、同じコードを何度も書かなくてよくなります。

Annotation Processingの要素は以下の通り。 - Annotation - Processor

スライドで、あるモデル(Userクラス)のビルダーパターンが例として上がっています。 モデルごとにビルダークラスを書くのは骨が折れますが、Annotationを定義したクラスとProcessorを実装したクラスを用意すれば、あとはよしなにやってくれるというわけです。

サンプルコードも用意しているようなので、興味があれば見て見ると良さそうです。

github.com

Kotlinコルーチンで作ってみる画像ローダ by e10dokup

speakerdeck.com

Kotlinのcoroutineを利用してみた話。

そもそもcoroutineとは - 中断・再開が可能な関数 - Kotlin1.1で試験的に実装されている

async(){}.await()とすると、{}で囲った内側の処理が完了するまで後続の処理が中断されるようです。

ただ、正直にそのまま使えるかというとそうでもなさそう(今回の画像ロードに関しては)で、拡張関数を定義したりして実装をスッキリさせていました。

できるのならコードはスッキリさせたい派としては、簡潔に書けるのはアドだなと聞いていて思ってました。 ただまだexperimentalなので、まずは標準ライブラリ入りしてくれるのを楽しみにしているしかないですね。

Androidで動画編集アプリの技術選択 by daasuu

speakerdeck.com

Androidでの動画周りの技術に関して一通りまとまっていました。 - エンコード - 動画の撮影 - 動画のプレビュー

よく聞くFFmpegOpenCV、OpenGLESなど選択肢は幅広いものの、 - どのような用途で利用するか - どの程度の機能が必要なのか - カスタマイズに対する柔軟性 - 導入・学習コスト などなど、要件にあった技術の選択が重要だなと思いました。

OpenGLESと聞くと「うっ、頭が…」となりそうなぐらい(?)学習コストが高そうなイメージですが、そのぶん一通り機能を抑えることができるので、あれしたいこれしたいに応えることが可能になります。 凝った実装を目指すのであれば、MediaCodec & OpenGLESが最良の選択でしょうか。

ViewPagerの遷移アニメーションをカスタマイズする by hkusu

qiita.com

Pagerのアニメーションに関するLTでした。 VidePagerのアニメーションはViewPager.PageTransformerを実装したクラスを作成して、setPageTransformer()でsetすることでカスタマイズ可能とのこと。

Qiitaの記事にアニメーションの動作イメージと実装例がいくつも掲載されています。 結構自由にカスタマイズできるようなので、自作アプリで導入してみたいと思いました。

ちょうど最近、業務でActivityの遷移アニメーションについて色々やっていたのですが、activityよりも低コストで導入できそうだなと思いました。 よかったら私の記事もどうぞ(宣伝)

qiita.com

dagger2のSubComponentとdependenciesの使い分け by tsuyoyo

www.slideshare.net

DIライブラリであるDagger2に実装されている、subcomponentとdependenciesをどう使い分けるか?という話。

SubComponentは、あるコンポーネントAに対して、コンポーネントBに@SubComponentをつけることで親子関係を定義できる。 dependenciesも、SubComponentと同等の機能が提供されるが、SubComponentとは違い複数のcomponentを指定できるので、階層構造を実現したりできる。

SubComponentは親子関係のみという制約があるせいか、どちらかと言えばdagger2初心者の自分でも理解がしやすかったです。ただ、スライドにもある通り、使い所や理解が進むともっと複雑な関係を実現したくなってきてSubComponentでは役不足になるので、dependenciesを使うことになると思います。

QiitaでDagger2に関する記事があるようなので、こちらも見ると良さそうです。

qiita.com

参加してみて

  • マネーフォワードさんには初めてお邪魔しました。ビルのセキュリティがしっかりしていました。
  • ガラス張りの入り口、ミーティングや自由なスタイルでの開発ができそうな広いセンターアイランド(?)があり、オフィスの奥にあるスペースが会場でした。
  • なかなかうまく交流できないマンなのですが、今回はAndroidの方とも、iOSの方ともお話ができたのはよかった。
  • メモしながらtwitterで実況して記事を起こすのは結構大変。また今回も遅くなってしまいました…
  • 素敵な会場の提供と円滑な運営をしてくださったマネーフォワードさん、ありがとうございました!