2017-01-01から1年間の記事一覧
はやりのビッグウェーブ*1に乗って2017年を振り返りたいと思います。 ちなみに、1月のツイートを遡るだけでも随分な数になったし、何を思ってそれを言ったのかよく覚えていないものもたくさんあってちょっと後悔しています。 1月 Android でうるう秒見てみよ…
もともとのモチベーションとして、Java で Either を扱いたくて色々探していました。 そのなかで RxJava との運用もカバーしてくれている RxEither を見つけたのですが、あいにく RxJava 1.x で止まっていたので RxJava 2.x に対応させてみることにしました…
明日から C93 が始まりますね。TechBooster から Android モダンプログラミングという新刊が出ますが、そのなかにある RTL 対応の章を担当しました。 techbooster.github.io この章を見れば RTL 対応に必要なことが大体網羅できるはずです。よくあるレイアウ…
諸君、私は戦争が好きだ: wids.net 作ってみました。 諸君、私はAndroidが好きだ 諸君、私はAndroidが好きだ 諸君、私はAndroidが大好きだ クラッシュが好きだ ANRが好きだ 機種依存問題が好きだ 激安端末が好きだ 売れないタブレットが好きだ アメリカで 日…
前まで使っていた EOS Kiss X3 が天寿を全うしまして、新しいのほしいなと思っていたときに神楽坂つむりさんのブログ記事を読んでフルサイズよさそうだな?と思っていたところ、フルサイズはいいぞという声をTwitterでも頂いたので、自転車もあることだしあ…
SparseArray は Android のフレームワークにあるコレクションの一種で、Integer を key にした HashMap よりもメモリ効率がよいとされるコレクションです。 SparseArray には 2 通りの値を取り出すメソッドがあります。一つはSparseArray#get(int)もう一つは…
いい具合にトラブってしまったのでメモです。 クラスの定義にはいくつかの種類がありますが、あるクラスの内部にネストした(入れ子になった)クラスを定義することができます。このとき、修飾子として static をつけたネストしたクラスと、それがないネスト…
次のような RxJava1 のコードを RxJava2 に移行することを考えます。 import rx.Observable; // RxJava1 private Value nullableValue; public Observable<Value> observeValue() { return Observable.fromEmitter(emitter -> emitter.onNext(nullableValue)) .filt</value>…
この記事は SHIROBAKO Advent Calendar 2017 の 17 日目の記事です。 adventar.org SHIROBAKO には木佐さんという自転車が趣味のアニメーターさんがいます。えくそだすっ!のときには、落合がカナンの人と話をしているところを目撃したり、8 カット上げたこ…
この記事はBeer Advent Calendar 2017の9日目の記事です。 adventar.org きっかけ なにがきっかけでチョコレートビールの存在を知ったのかは忘れてしまいましたが、その後たまたま見かけたアニメでも取り上げられていて、なるほどこれは良さそうと思いアドベ…
potatotips #45 にて WebView と題して発表してきました。 speakerdeck.com 概要 ChromeCustomTabs の登場で使い所が限られてきている WebView ですが、法的情報(プライバシーポリシーや規約など)の簡素な静的 HTML を表示するために手軽に使えるため、意外…
RTL(Right To Left; アラビア語などの右から左へテキスト等をレイアウトする必要のある環境)対応にはいくつかのステップがあります。 単にレイアウトの属性を RTL に対応したもの(gravity や margin、padding や RelativeLayout の各種属性を Left/Right で…
概要 Android Framework に数ある Drawable のなかでも、View の状態に応じて使う Drawable を切り替えることのできる StateListDrawable は多くの人が使っていると思います。ListView のアイテムの背景、ボタンの背景などインタラクションをする View に対…
懐かしいゲームというのはこれのことです。 store.steampowered.com 内容は、60年代の米国とソ連が宇宙からきた未知の資源を巡って太陽系の惑星やら衛星でドンパチするという完全に硬派でシブいSFゲームですが、発売当時(98年)のPCでもモリモリ動く3Dのファ…
やりたいこと 旧来の AdapterView (ListView や GridView など)でいうところの OnItemSelectedListener と同じように、RecyclerView がもつアイテムにフォーカスが当たったときにその情報をコールバックする方法です。 方法 RecyclerView には OnChildAttach…
ツールド東北に同僚と参加してきました。 出場するのは日曜日の南三陸コース。前日に民泊のお家に到着して、そこから受付をしに自転車を組み立てました。 石巻の会場にはSubaru XV が!上には Bianchi の自転車が乗っかっていて、よさそう(小並感)と思いま…
今年からサイクリングイベントに参加し始めてはや3回目の大会となりました、群馬県嬬恋村の万座ハイウェイを自転車専用に貸し切って開催された嬬恋キャベツヒルクライムに参加してきました。 cabe-hill.net 距離は約20kmで1000mの標高差を登ります。平均勾配…
Nexus5X から次の端末を探しているときに NuAns NEO Reloaded がリリースされたのを機に乗り換えて、2ヶ月ほどが経ったので使用感を書き残しておこうと思います。 概ね Vanilla Android なので、Nexus シリーズのリファレンス機に慣れていれば特に違和感なく…
SMS や MMS と言ったメッセージのやりとりの仕組みには、Delivery Report という機能があります。SMS をおくると、キャリアが Delivery Report を送り主に返します。この Delivery Report を見ることで、SMS が相手に届いたかどうかが分かります*1。 SMS や …
RxJava 1.x には Observable の static なインナークラスとして Observable.OnSubscribe がいました。Javadoc にあるとおり、Observable を subscribe したときに呼ばれるメソッドを定義するためのフックになるクラスです。 RxJava 2.x ではインナークラスで…
最近は毎日30度超えの真夏日で、自宅から日帰りで行って帰ってこれる場所では暑すぎて熱中症待ったなしだと思ったので、電車輪行の練習も兼ねて長野県茅野市から松本市に至るビーナスラインを走ってきました。 電車での移動距離もそこそこあるので、特急に乗…
Issue Fragment を使わず View をベースにしてレイアウトを組むと、Fragment と同じような役割をもった CustomView を作ってレイアウトを組みます。 このとき CustomView は何かしらの ViewGroup を継承することになりますが、そのレイアウトファイルのルー…
TL; DR Kotlin & @Body · Issue #1805 · square/retrofit · GitHub 問題 Retrofit で REST API のクライアント実装を生成する時、Kotlin で書いた interface を渡すとき、メソッドにジェネリクスを使った引数がいるとまれに次のようなエラーメッセージを吐き…
Robolectric にはいくつかのサブプロジェクトがあり、それぞれに dependencies を追加する必要があります。Robolectric ではサブプロジェクト名が ArtifactId になっています。 そして 3.4 RC3 から ArtifactId が変更になったものがあります。主には、robol…
CI の速さは開発のプロセスを高速化する上で重要です。Android アプリのビルドはどうしても時間のかかる部分が多く数分から十数分の時間を要してしまいますが、工夫次第では数十秒から数分の短縮が可能です。 プロジェクトの規模や構成にもよるので一概にす…
先月たまたま申し込み期限ギリギリに申し込んだツールド美ヶ原に行ってきました。 激坂があり、それを乗り越えた先には雄大な自然!気持ちよさそう!!楽しそう!!!という勢いで申込んだわけですが、梅雨真っ盛りとあって天気は週間予報からあまり良くなく…
前回 は実装が悪くて完全に Litho が負けていましたが、ある程度動かせるものができたので、potatotips で発表してきました。 speakerdeck.com 結論から言えば、これでもやはり AsyncLayoutInflater のほうが速いです。「Litho は既存の XML によるレイアウ…
起こったこと Robolectric を使って JVM 上でテストを動かす場合、次のようなエラーログを目撃することが稀によくあります。 com.sample.SampleTest > sampleTestCase STANDARD_ERROR Downloading: org/robolectric/android-all/6.0.0_r1-robolectric-0/andr…
人生初の自転車イベントとして、富士ヒルクライムに参加してきました。普段から山を登りに行くのは好きなのと、完走者が多いということで、3月にシュッと申し込みをしていました。 知人が宿等のアテンドをしてくれたので、自分は移動手段と運転を担当しまし…
先月の shibuya.apk で Litho の発表があり、非同期でレイアウトの展開(draw 以外の部分)をやってくれる機能をもっているということで、AsyncLayoutInflater と Litho で勝負したらどっちが速いかを確かめたくなったので、結果を書いておこうと思います。 …