読者です 読者をやめる 読者になる 読者になる

techium

このブログは何かに追われないと頑張れない人たちが週一更新をノルマに技術情報を発信するブログです。もし何か調査して欲しい内容がありましたら、@kobashinG or @muchiki0226 までいただけますと気が向いたら調査するかもしれません。

StreamAPIをAndroidで使いたい時にRxJavaとLightweight-Stream-APIどちらを選べばいいのか調べるため計測してみました

Androidのアプリ開発をする際にJava8のStreamAPIを使いたいと考えることがあると思います。 2016/11/12時点では次の2つのライブラリでSteramAPIを使うことを可能とします。 Lightweight-Stream-API RxJava StreamAPIを外部のライブラリで実現した際に遅いと…

AndroidのライブラリプロジェクトでHugoのログを表示する

Androidのメソッドの呼び出しなどでログを表示をアノテーションが付与されているメソッドの呼び出し時に呼び出し時の引数の表示とをログに表示するライブラリです。 ただしAndroidのライブラリプロジェクトではビルドの設定の関係でログが表示されません。 …

Annotationを自作する

普段Androidアプリの開発を行っている際に、何の気なしにAnnotationを使用していましたが、ふとその仕組みが気になりました。 Annotationを利用することで二重化を防いだりコード量を減らせたりといった利点もありますが、個人的には使いすぎると可読性が下…

AndroidのPercelデータを自動生成するAutoValueを使ってみる

Googleがautoというライブラリ群の中にあるAutoValueというデータクラスを自動生成するライブラリがあります。 このAutoValueではJavaの一般的なデータクラスの生成しかできないためAndroidのインターフェースのParcelableを実装したものを自動生成すること…

Android 7.0 Nougatのマルチロケールについて

Android 7.0 Nougatから、マルチロケールが採用され、それに合わせてシステムのロケール選択のロジックが変更になったようです。 developer.android.com 今回は、以下の公式ドキュメントを参考に、マルチロケールを選択できるようになることで何が変わるのか…

QuantumFluxを使ってContentProviderを作成する

AndroidのContentProviderを作るときにsqliteを使っているケースがほとんどだと思います。 しかし昨今のORMではsqliteを作るのは簡単ですが、ContentProviderでの適応が難しいケースが多々あります。 そこでContentProvider用のORMとしてQuantumFluxというの…

Android 7.0 Nougatでクイック設定(Quick Setting)を追加する

Android 7.0 Nougatで新しく追加されたTile APIを利用することで、クイック設定(下図)を自作することができます。 developer.android.com developer.android.com 今回は上記リンクを参考に、クイック設定の追加方法について見ていきます。 TileServiceを作…

AndroidのWindowManagerでViewを表示するときのIMEの制約

Androidのアプリを作っている時にどの画面よりも手前にViewを表示したい時にWindowManagerを使って特定の指定レイヤーに対してaddViewを行うケースがあります。 しかし、このaddView時に発生するIMEの表示の制約があるのでそれをご説明します。

Android 7.0 Nougatの新しい外部ストレージアクセスを試してみた。

Android 7.0 Nougatでは新しい外部ストレージへのアクセス方法が提供されました。 developer.android.com developer.android.com これまでAndroidで外部ストレージにアクセスするには、ManifestファイルにPermissionを定義し、さらに6.0からはパーミッション…

Spinnerのデータとしてenumの配列を使用する場合のTIPS

Spinnerの表示データとしてenumを使用したときに引っかかった罠があったので共有したいと思います。 Spinnerとは Spinnerは複数の選択肢から一つの要素を選択するためのUIを提供するWidgetです。 詳しいことはDeveloperサイトを御覧ください。 developer.and…

Android Studioにコードジャンプするログを作る

Androidのstacktraceなどでコードジャンプするログが表示されています。 コードジャンプ自体はAndroidStudioの機能になるのですが、ログの作り方を工夫することでコードジャンプすることができるログを作ることができます。 そこで今回はコードジャンプする…

RxJava Mathを使って最大・最小・平均・合計を計算する

RxJavaを最近使うことが多くなってきてストリームに流れているデータ内の最小値と最大値を取ることができないか調べておりました。 そうするとRxJavaのMathというのがありそれで実現できたのでそのやり方とMathの機能についてごしょうかいします。

AndroidライブラリからアプリケーションプロジェクトのBuildConfigの値を参照する

Androidアプリ開発の際にオープンソースのライブラリを組み込むことが多いと思います。 そういった中でアプリのデバッグの時にはライブラリのログを出したいとかデバッグの時だけこういった挙動をしたライブラリがほしいことかがあります。 そこで今回はaar…

FirebaseのRealtime Databaseを利用してみる 〜その2〜

前回に引き続き、FirebaseのRealtime Databaseについてです。 今回は、前回保存したデータをクライアント上から参照してみます。 Realtime Databaseはその名の通り、データベースに変更があった場合に、それをリアルタイムにクライアントに反映させることが…

Retrofit2のレスポンスをmockに置き換える Retrofit-Mock編

前回の記事では、MockWebServerを使用してサーバ自体をMockに置き換えた。 blog.techium.jp 今回はRetrofitMockにてResponseの内容をMock化する方法を使う。 build.gradleの修正 // レスポンスのパースにgsonを使用 compile 'com.squareup.retrofit2:convert…

ContentProviderアクセステスト用ライブラリPantomimeを公開しました

Androidの開発を行うにあたってContentProviderへアクセスする場合にContentProviderの中身が動的に変化する場合にテストを書く場合に同じ環境にならなくてユニットテストが失敗したりすることがあります。 そこで今回作ったPantomimeを紹介します。

FirebaseのRealtime Databaseを利用してみる 〜その1〜

FirebaseのRealtime Databaseを利用してみました。と言っても、まだデータを登録しただけなので、導入編といった感じです。 Realtime DatabaseはFirebaseがクラウド上に提供するNoSQL型のデータベースです。 今回はこのRealtime Databaseを利用して、データ…

Retrofit2のレスポンスをmockに置き換えるMockWebServer編

ユーザー登録画面など、ネットワーク通信を伴う画面のUIテストするとき、実際のサーバへアクセスしては、テストが意図した結果にならないことがあるだろう。 MockWebServerを使用することで、サーバへのアクセスを回避し、かつ、必要なレスポンスを返すよう…

Realm JavaのRealmQueryをループで使ったらヒドい目に遭ったという話

先日からAndroidアプリの開発でRealmを使っていますが、今回はRealmの仕様なのかバグなのかよくわからない挙動にハマってヒドい目に遭ったというお話。 歴戦のRealmerには既知の問題かもしれないので何か情報をお持ちの方は適宜突っ込んでもらえると助かりま…

Realm.writeCopyTo(File f)で.realmファイルの確認を簡略化する

前回の記事ではRealm BrowserでRealmのデータをGUIで確認する方法を紹介しました。 今回はRealm Browserでデータを確認する際の手順を簡略化する方法を紹介します。

Realm Browserで.realmファイルの中身を確認する(Android編)

Realmを使用する時に、実際に作成したDBの情報を確認する方法としてRealm Browserを使う方法とStetho-Realmを使う方法があります。 今回はAndroidでRealmのデータを作成後、Realm Browserで.realmファイルの中身を確認する方法を紹介します。

「Dribbbleのぬるぬる動くメニューUIのアイデア10選」からDelivery Card(FoldingCell)を試してみる

Dribbbleのぬるぬる動くメニューUIのアイデア10選という記事を見たので、実際に試してみました。 今回はこの記事の中で紹介されている「Delivery Card」を実現するためのFoldingCellを実装します。 www.youtube.com

Google Nearby Messages APIを使ってみる〜実際使ってみた編〜

前回の記事でNearby Messages APIのセットアップまでを紹介した。 blog.techium.jp 今回は実際にAndroid端末でメッセージの送受信を確認する。 動作確認に使用した端末はNexus 5 、Nexus 5x、全てのコードはActivityに実装した。

ETC1を使ってデータ量を少なくする

Androidで画像リソースを利用する場合はPNGが多いと思いますが、PNGは可逆圧縮のフォーマットのためどうしても一定サイズ以下にデータを小さくできません。 そこでよく行われるのPNGを最適化して使ったり、WebP、JPGなどが良くあります。 最近ではVectorDraw…

AndroidStudioをビルドする

Motivation AndroidStudioの機能デバッグしたいんだけど、と前々から思ってたので時間とれたついでに試してみた。 ソース読んだりするのもIDEに食わせると楽できるのでオススメ。 Motivation repo sync Java6とJava8のインストール Intellij CEのインストー…

JackでDagger2が使えるようになった

先日、JackでDagger2が使えないという記事を書きましたが、なんとJackでもDagger2が使えるようになりました! Dagger2だけじゃなくannotation processingが使えるようになりましたので、他のツールも動くようになりました。 なぜ動くようになったかというとG…

RxJava:Error Handling Operatorを使ったエラーハンドリング方法を理解する

RxJavaではObservableでExceptionが発生した場合、デフォルトではそのObservableを監視しているObserverのonErrorメソッドが実行され、出力元のObservableが終了します。 想定外のエラーが発生して処理を続行することが困難な場合はonErrorで適切な後処理を…

The experts' guide to Android development toolsで紹介されてたASショートカット(気になったのメモ

Motivation Google I/O 2016のセッションを少しずつ消化しているのだけれど、「The experts' guide to Android development tools」のセッションで紹介されていたAndroidStudioのショートカットが有用っぽいので備忘録がてらまとめておく。 とりあえず「ctrl…

AppLaunchCheckerを使って初回起動を判断する

Androidアプリを作るにあたって初回起動を判断する必要があると思います。 よくあるケースとしてははじめて起動した時にチュートリアルを表示して、2回目以降はチュートリアルを出さないようにするなどの処理を考えたりするときに判断が必要になります。 一…

RxJava:doOnEach系メソッドでObservableのライフサイクルを理解してデバッグに役立てる

今回はRxJavaのdo〜系メソッドを使ってObservableのデバッグに役立てる方法を紹介します。

MaterialDesignのLoading中のProgressを作る

Motivation Material Designのガイドラインのコレが気に入ったので、汎用的に使えるようにFragmentで書いてみた。 Progress & activity - Components - Google design guidelines Motivation Progress Barを実装する FadeIn/FadeOutを実装する Activityから…

昼/夜のテーマを切り替える

AndroidではUiModeManagerを用いると端末自体のモードを切り替えることができましたが、アプリ内のテーマやリソースを切り替えることができませんでした。 最近になってAndroidのSupport Libraryに端末モードの切替に応じてUIのテーマやリソースを切り替える…

RxJavaのFiltering Operatorの使い方をまとめてみた

ReactiveExtenstionの根本的な概念としてObservableとOperatorがあります。前回はRxJavaをより深く理解するためにObservableの生成メソッドをまとめてみました。 今回は前回に続いて、Observableから流れてきた値をフィルタするFiltering Operatorの使い方を…

Cloud Test Labを使ってテストしてみる

Androidのアプリを開発するうえで様々な端末やバージョンに対応する必要があります。 しかし、端末とバージョンを網羅的にテストするには費用がかかってしまうため基本的に個人の力で網羅するのは現実的ではありません。 そこでGoogleが提供しているCloud Te…

RxJavaのObservable生成メソッドを一通り試してみた

RxJavaを使いこなすためにはObservableを理解することが欠かせません。今回はより深くRxJavaを理解するためにObservable生成メソッドの挙動を調べてみました。 RxJava(というかReactivePrograming)については、以前も紹介した以下の記事が大変分かりやすかっ…

AndroidでFlexboxLayoutを使ってViewを並べる

FlexboxLayoutなるものが出たというのをチラッと見たので、どんなものなのか試してみました。 github.com FlexboxLayoutは、CSS Flexible Box Layout Module をAndroidに持ち込んだものらしい。 しかしまだバージョンが0.1.2(昨日は0.1.1だった)ということで…

ViewPagerにIndicatorをつける

Motivation Indicatorつけたいやん!!と思い立ち、これでイケる! と思った後に「あ、ライブラリありそう」とググったら見つけて 「あっ。。。」ってなりました。 実装は参考程度に、下記ライブラリを使うのが良いのではないでしょうか。 github.com Motivati…

Android-ObservableScrollViewでパララックスなスクロールを実装する

Android-ObservableScrollViewはScrollViewやListViewなどのスクロール可能なウィジェットのスクロール状態を取得して、スクロールに関するイベントをハンドリングできるようにするためのライブラリです。 このAndroid-ObservableScrollViewを使用することで…

Stethoのdumpappを使ってアプリの情報を取り出す

Androidアプリを開発する際にアプリ内のデータにアクセスして何が保存されているかを取得してデバッグを効率的にできるようにすることは多々あると思います。 そこで今回紹介するのはStethoというFacebookが開発したライブラリのコマンドラインツールの作り…

Android で Local 通知するライブラリ

Android で Local 通知するライブラリ Android で Local 通知するライブラリ 作りたいもの リポジトリ 構成など 実装

RxAndroid x Retrolambdaでモダンな実装を試す

前回はRxAndroidでリアクティブプログラミングに入門するために、ダブルクリックイベントを検出するサンプルを作成しました。 実際にやってみた感想として、リアクティブプログラミングのコンセプトは非常に便利だと感じましたが、単純にJava単体で実装する…

Retrofit2でDigest認証の鯖とやりとりする

Motivation 対Digest認証を持つサーバーとお話することがあったので。 AndroidだとApacheのHttpClientがお亡くなりになったことで情報が色々入り交じってる。 今時だとOkHttp+Retrofit(2系からはokHttpを持ってる)を利用することが多そうなので、この環境で…

Android向けライブラリ用README

Android向けライブラリ用README Android向けライブラリ用README READMEの必要性 記載する内容 例 今後

RxJavaのmapのエラーハンドリングをする

RxJavaを使った場合によく活用されるであろうmapでエラーが発生した時の操作についてご説明します。 mapはObservableのストリームで渡される要素一つに対して実行する処理を記述するもので、その処理途中でエラーが発生した時のExceptionをハンドリングして…

RxAndroidでダブルクリックイベントをキャプチャする

2週ぐらい遅れてる感はあるが巷で話題のReactiveProgrammingなるものに入門してみたので導入方法と簡単なサンプルを備忘録として残しておきます。今回試したのはRxAndroidです。

AndroidでDagger2を使ってDIする。

今回はDagger2の使い方について解説していきます。 Dagger2は、Dependency Injection(以降DI)を利用する上で便利なライブラリです。 ここではData Bindingの解説で作成したアプリを改造し、武器を装備して雪山に出かけた上に攻撃をしてみます。 少し説明が長…

Retrofit2.0でホッテントリのRSSをパースしてみる

前回はRetrofitではてなAPIを叩いて取得したJSONをパースしてリスト表示してみました。今回はもう一歩進んで、はてぶホッテントリのRSSフィードを取得してリスト表示する、簡易ホッテントリリーダーを作ってみた話です。 最終的なサンプルは前回作成したプロ…

Data Bindingを使ってみる その6

さて、またまた今回も公式に従ってData Bindingを見ていきます。 今回はBindingAdapterアノテーションを使って、ImageViewに画像を表示する属性とSetterを追加します。 今回は例として、画像のURLをセットすると画像をロードして表示する属性をImageViewに付…

Android:Retrofit2.0ではてなAPIとおしゃべりしてみた

Androidでネットワーク通信するアプリを作る際、少し前まではVolleyを使うのがイケてるAndroiderの嗜みだったようですが、最近ではどうやらRetrofitがその地位を奪いつつあるようです。 ということで遅ればせながらイケてるAndroider目指してRetrofitをお触…

Data Bindingを使ってみる その5

今回は、Data BindingをRecycler Viewで使用してみます。サンプルとしては、TextViewを一つ持ったレイアウトをリスト形式に並べて表示してみるようにします。 RecyclerViewはAndroid 5.1 Lollipopから追加されたUIコンポーネントで、その名の通りViewをリサ…