mixi engineer blog

*** 引っ越しました。最新の情報はこちら → https://medium.com/mixi-developers *** ミクシィ・グループで、実際に開発に携わっているエンジニア達が執筆している公式ブログです。様々なサービスの開発や運用を行っていく際に得た技術情報から採用情報まで、有益な情報を幅広く取り扱っています。

Android の Commons な知見を集めたライブラリを作りました

こんにちは。今日も元気に Android アプリの開発をしています、横幕です。
最近は、アプリで画像処理をゴリゴリとするのが楽しくなってきました。端末も進化してきており、メモリ搭載量も飛躍的に増えてきているので、そろそろ 64 bit 対応の空気を感じつつ有ります。

さて、私はこれまで、4 つの Android アプリ開発プロジェクトに携わってきました。mixi 公式クライアントアプリmixi コミュニティ公式クライアントアプリ、そして今現在はノハナにジョインして、フォトブックアプリ年賀状アプリに携わっています。
新卒入社以来配属から2年半ほど経ち、その中で得た知見を、Android-Device-CompatibilityAndroidTraining といった形で公開してきましたが、今回新たに、Android アプリを開発する中でよく遭遇する、あるあるネタを詰め込んだ Amalgam ライブラリを公開しましたので、こちらの紹介をさせていただきたいと思います。

nohana/Amalgam - GitHub

https://github.com/nohana/Amalgam

http://nohana.github.io/Amalgam/

アプリ開発をしていると、何度か同じコードを書く場面が出てくると思います。

たとえば、AsyncTaskLoader を用いて非同期処理をするようなアプリで、DialogFragment を使って ProgressDialog を表示し、LoaderCallbacks#onLoadFinished(Loader, D) に戻ってきた時にその DialogFragment を消す、というケースはよくあるものだと思います(そして、LoaderCallbacks#onLoadFinished(Loader, D) では直接 DialogFragment#dismiss() が呼べないので、Handler を挟んで…という定型文があちこちに…)。

それ以外にも、Cursor や I/O Stream といったリソースの取り扱いとして、try-finally ブロックで確実に close させるという作法があったり、Android 特有のもので言うと、Context から SystemService に係るオブジェクトを取得したい時のコードなども、頻出コードだと思います。

これまで開発に携わったプロジェクトの中でも、そういったよく使うコードをまとめた HogehogeCommons や FugapiyoCore のようなライブラリプロジェクトを作ってきました。

Amalgam は、そういった HogehogeCommons や FugapiyoCore に入れられるような「あるある」コードの寄せ集めプロジェクトとして公開しました。

今回の Amalgam は、GitHub 上に Maven リポジトリを配置しています。Gradle での依存関係解決ができる初めてのライブラリとなります。ぜひご活用下さい。