Android開発者が知らないと損をするXXのこと - ReDo

2013年9月22日

Android開発者が知らないと損をするXXのこと

klp.jpg
※目指せ100。

○小判は猫に渡したくない

「便利なライブラリとかOSS集を教えて欲しい」と、たびたび聞かれるのですが、実際のところ動かして評価しないと分からないんですよね。教えてもキーワードのみ鵜呑みにして使い方間違ってる人とか多くて、結局試行・評価をそれなりのスピードで回せる人じゃないと使いこなせないというか...。

ですが、「知ってる・知らないというゼロイチの差はあるだろう」という指摘をもらい、またどれだけ知っているかのチェックリストとしては使えるのではないだろうか、ということで並べてみることにしました。

使ったことが無いのは挙げていませんが、いかんせん数年経ってますので状況が変わっていたらすいません。

以下、リスト。

【Java・Android】
Apache Commons
http://commons.apache.org/
「5行+エラー処理」を1行に済ませてくれるUtil群が主体。
IO、Lang、Codecあたりは手放せません。

Support Libraryより
http://developer.android.com/tools/support-library/index.html
新しいAndroidで追加されたAPIを古いAndroidでも使えるようにしたライブラリ。v4, v7, v13の3種類があり、それぞれAPI Levelを表しているため、「Android1.6以降をサポート」「Android2.1以降をサポート」「Android3.2以降をサポート」の意となる。
ActionBarSharlock
 ActionBarを2.xでも使えるようにするライブラリ、ActionBarSharlockがSupport Libraryにマージされました。
ViewPager
 http://developer.android.com/training/animation/screen-slide.html
 左右スワイプでPage(Fragment)を切り替えることができる。Pageに追従して滑るタイトルのPageTitleStripや、タップでそのPageに移動するTabであるPagerTabStripもサポートされている。
Navigation Drawer
 http://developer.android.com/design/patterns/navigation-drawer.html
あたりがSupport Libraryとして含まれている。守備範囲が広いためわかりにくいが標準(公式?)機能として漏れなく把握しておくべき。

zxing
https://code.google.com/p/zxing/
1次元/2次元バーコードライブラリ。QRコードもいけるが、マイクロQRには対応していない模様。

Android Smart Image View
http://loopj.com/android-smart-image-view/
非同期URL読み込み対応のちょっと便利なImageView

Android-Universal-Image-Loader
https://github.com/nostra13/Android-Universal-Image-Loader
http://qiita.com/chuross/items/e3ca79065d9b67716ace
非同期URL読み込み・キャッシュ・拡大縮小込みのもう少し便利な画像読み込みライブラリ

volley
http://y-anz-m.blogspot.jp/2013/05/google-io-2013-android-volley-easy-fast.html
http://www.adamrocker.com/blog/341/volley-easy-fast-networking-for-android.html
高機能な通信関連ライブラリ。

jsoup
http://jsoup.org/
HTMLパーサ。

DevAppsDirect
https://play.google.com/store/apps/details?id=com.inappsquared.devappsdirect
Androidのライブラリのデモ集。主にUIまわりのライブラリ探しやUIアイディアの勉強にどうぞ。
しばらくさわっているとすぐわかるけど玉石混交な上にデモでうまく動いたからといってアプリにうまく組み込めるかどうかは別のためあしからず。

API Demos
(Android SDKまたはADT-bundleインストール先)/sdk/samples/android-18/legacy/ApiDemos以下あたりに入っている、名前の通りAndroidのAPI Demo集。他のSampleと比較してこれはサンプル単位がActivity1つに閉じているため、初心者でも混乱せずに参考にできる。

Samples
なお、API Demosと同改装に同梱含まれている他のSampleは比較的トリッキーなコードを含むことが多いため、(Androidの、というよりはプログラミングの、という意で)初心者にはオススメしない。新しいAPIが来たけどdocだけではイマイチ実装がよくわからない際に参考にする。Android Studioベースで生まれ変わろうとしている気配があるのでEclipseの人はlegacy配下を参照のこと。

Mozc/Google日本語入力 Android版
http://googledevjp.blogspot.jp/2013/03/google-android.html

Twitter4J
http://twitter4j.org/ja/index.html
「Twitter4J は Twitter API の Java ラッパです。」

N2 TTS
http://www.kddilabs.jp/products/audio/n2tts/product.html
「音声合成ソフトウェア「N2」TTSライブラリ」Intent経由で使用可能、そもそもAndroidは英語であれば標準APIにTTSがあることを皆よく忘れている。

Maps Android API v2
https://developers.google.com/maps/documentation/android/?hl=en
Google Map APIをAndroid使うやつのv2。色々v1とは違うことに注意。Androidでない無印とも違うことにも注意。

本家デスクトップ用と比較すると少しライセンスが緩いが、Play Serviceが必須なため、そのあたり都合が厳しい際にはOpenStreetMapの検討を。

OpenStreetMap
http://osm.jp/
「OpenStreetMap(OSM)は、道路地図などの地理情報データを誰でも利用できるよう、フリーの地理情報データを作成することを目的としたプロジェクトです。」

XStream
http://xstream.codehaus.org/
http://netbuffalo.doorblog.jp/archives/4415606.html
マッピング設定ファイルが不要でシンプルなXMLシリアライズライブラリ。
SimpleよりはXStreamの方がオススメ。

GSon
https://code.google.com/p/google-gson/
http://www.ne.jp/asahi/hishidama/home/tech/java/google/gson.html
JSONとJava Objectをとにかく簡単に変換してくれる。

巨大なコンテンツリストデータ等、長い場合には読み終わるまでUIを更新しないなんて恥ずかしい作りはまずいので、その際にはJsonPullPerserで。

JsonPullPerser
https://github.com/vvakame/JsonPullParser/wiki/JsonPullParser_ja
「JsonPullParserは、JSONを逐次解釈するPullParser 本体 と APT を組み合わせたライブラリです。」

android-gifview
https://code.google.com/p/android-gifview/
「AndroidでGIFアニメーションを再生します。」

OpenCV
http://opencv.org/
画像処理ライブラリ。多数の言語サポートで多数のOSをサポート。カメラキャプチャまわりも一緒にまるめてくれるため、便利な時と融通が効かない時があるため、そのあたりはNDK含め適材適所で。

nfc-felica
https://code.google.com/p/nfc-felica/
http://d.hatena.ne.jp/Kazzz/20110122/p1
「Android 2.3からサポートされたNFC API(一部隠されたAPI)を使ってFeliCaカードにアクセスするためのクラス群を提供します。 FeliCa SDK等の専用のライブラリィを必要とせずにFeliCaカードにアクセスし通信を行うことができます。」

【Native絡み】

ffmpeg
http://www.ffmpeg.org/
http://ja.wikipedia.org/wiki/FFmpeg
livav
http://www.libav.org/
動画フォーマット変換で有名なマルチメディアフレームワーク。高機能かつ(ライセンスまわりで)複雑なため、クローズドな試作以外のお仕事ではどうしても利用難易度が下がらない玄人向け。

openssl
http://www.openssl.org/
SSL/TLSプロトコルのOSSな実装。暗号化ユーティリティ。Java/Androidは比較的暗号化まわりはよくI/Fが揃っていて問題ないですが、NDK等を利用の上他PFと実装をそろえたいときになど。


【ノウハウ・外部サイト・サービス】

Androidソースコード検索サービス
https://sites.google.com/site/devcollaboration/codesearch
オープンソースとしてのAndroidソースコードのバージョン別検索サイト。

Android Drawables
http://androiddrawables.com/
バージョン別Drawableリソース集。たまにhiddenになってて使えないのでsdk/platforms/android-18/data/resあたりから自分のプロジェクトにコピーして使う。

Android Asset Studio
http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html
Launcher icon等画像素材ジェネレータ。SDKにもついてますが。

Deploygate
https://deploygate.com/
apk配布・ログ収集・アップデート開発向けサービス。
Google PlayのDeveloper consoleでもβ配布とかGoogle plusグループ限定の配布等、一部機能被りあり。

ACRA
https://github.com/ACRA/acra
アプリケーションクラッシュレポートをGoogleDocにあげるライブラリ。

クラッシュのUncaughtExceptionHandlerによるcatchとロギングについては
throw Life:Androidアプリのバグ報告システムを考える
http://www.adamrocker.com/blog/288/bug-report-system-for-android.html
を参照。

Google Analytics Native Application
https://developers.google.com/analytics/devguides/collection/android/?hl=ja
アクセス解析サービスGoogle AnalyticsのNativeアプリ向け。

ひしだま's 技術メモ Java
http://www.ne.jp/asahi/hishidama/home/tech/java/index.html
すいません、こういうサイトの紹介は外そうと思ったのですがここだけはゆるしてくだちい。

【IDE/SDKの機能・ツール】

Javadoc
http://www.atmarkit.co.jp/ait/articles/1105/19/news127.html
JavaAndroidも公式のAPIがJavadocでできている。
クラス・メソッド・変数宣言に対して決まった書式でコメントを書くと、決まったフォーマットのdocが出力できる、というのが本来の目的だが、今はIDEのサポート(マウスカーソルをあてたら説明が表示される)とか、ある程度人と共通した方式でコメントがかけるということの方が重要。

AOSP標準コーディング規約とフォーマッター
http://source.android.com/source/code-style.html
https://android.googlesource.com/platform/development.git/+/master/ide/eclipse
読んでない人はAndroid開発するな。コミット前にフォーマットしない人はプロジェクト参加するな。

CheckStyle
http://checkstyle.sourceforge.net/
http://greety.sakura.ne.jp/redo/2011/12/android-checkstyle.html
静的解析ツール、と書くと勘違いする人がいるので、「コーディング規約順守お助けツール」が正しい。
緩いルールで100%守らせるか、厳しめのルールで参考にするか、使い分けを。

FindBugs
http://findbugs.sourceforge.net/
http://d.hatena.ne.jp/hoxo_m/20120405/p1
こちらも静的解析ツール、という扱いにすると悲劇の元になるので「コードレビューお助けツール」として使うこと。

JUnit/Android JUnit
http://www.ne.jp/asahi/hishidama/home/tech/java/junit.html
http://www.atmarkit.co.jp/ait/articles/1112/16/news137.html
素のJUnitとAndroid JUnitは使いわける。Testcase
AndroidTestCaseActivityInstrumentationTestCase2の違いは把握しておくこと。

monkeyrunner
http://developer.android.com/tools/help/monkeyrunner_concepts.html
uiautomator
http://developer.android.com/tools/help/uiautomator/index.html
「自動テストツール」ではなく、「操作自動化スクリプトフレームワーク」であることに留意。
どれも一長一短でxUnitなUTテストツールとは別と考えること。

Google USB Driverがあればだいたいの実機では追加ドライバインストールが不要。
http://note.chiebukuro.yahoo.co.jp/detail/n128056
WindowsだけUSBドライバのインストールが必要、とたまに勘違いされているが、Google USB Driverさえ入れておけば概ねこの手順でandroid_winusb.infを書き換えれば認識する。
まれにそれでも動かないので(ベンダ初デバイスでVENDOR IDが未登録等)add-onを探すフリしてadb_usb.iniを書き換える。(参考:[Android] adb_usb.ini の正しい書き方 http://tande.jp/lab/2012/02/1649
LinuxやMacではこのあたりのノウハウは不要。

Android Screen Monitor
http://www.adakoda.com/adakoda/android/asm/
「Android 端末(実機、またはエミュレーター)の画面をリアルタイムで PC 上に表示するツール。」
OSSなので+αを自動化したい際には自分で改造する。

CLOC
http://cloc.sourceforge.net/
Perl製開発量測定ツール。1ファイルでコマンドラインから動作、C/C#/C++/Java/XML/Obj-cに対応しているため、「言語毎に違うツールを使って差分は無いのか?」というくだらないツッコミを回避できる。

コメントする