Celeste Engineer

Androidとか自転車とか

RecyclerView の item に focus が当たったことを検知する

やりたいこと 旧来の AdapterView (ListView や GridView など)でいうところの OnItemSelectedListener と同じように、RecyclerView がもつアイテムにフォーカスが当たったときにその情報をコールバックする方法です。 方法 RecyclerView には OnChildAttach…

ツールド東北

ツールド東北に同僚と参加してきました。 出場するのは日曜日の南三陸コース。前日に民泊のお家に到着して、そこから受付をしに自転車を組み立てました。 石巻の会場にはSubaru XV が!上には Bianchi の自転車が乗っかっていて、よさそう(小並感)と思いま…

嬬恋キャベツヒルクライムに参加してきた

今年からサイクリングイベントに参加し始めてはや3回目の大会となりました、群馬県嬬恋村の万座ハイウェイを自転車専用に貸し切って開催された嬬恋キャベツヒルクライムに参加してきました。 cabe-hill.net 距離は約20kmで1000mの標高差を登ります。平均勾配…

NuAns NEO Reloaded 使用感

Nexus5X から次の端末を探しているときに NuAns NEO Reloaded がリリースされたのを機に乗り換えて、2ヶ月ほどが経ったので使用感を書き残しておこうと思います。 概ね Vanilla Android なので、Nexus シリーズのリファレンス機に慣れていれば特に違和感なく…

SMS が相手に届いたかどうか判定する

SMS や MMS と言ったメッセージのやりとりの仕組みには、Delivery Report という機能があります。SMS をおくると、キャリアが Delivery Report を送り主に返します。この Delivery Report を見ることで、SMS が相手に届いたかどうかが分かります*1。 SMS や …

RxJava 1.x -> 2.x: Observable.OnSubscribe<T> から ObservableOnSubscribe<T> へ移行する

RxJava 1.x には Observable の static なインナークラスとして Observable.OnSubscribe がいました。Javadoc にあるとおり、Observable を subscribe したときに呼ばれるメソッドを定義するためのフックになるクラスです。 RxJava 2.x ではインナークラスで…

ビーナスライン

最近は毎日30度超えの真夏日で、自宅から日帰りで行って帰ってこれる場所では暑すぎて熱中症待ったなしだと思ったので、電車輪行の練習も兼ねて長野県茅野市から松本市に至るビーナスラインを走ってきました。 電車での移動距離もそこそこあるので、特急に乗…

<merge> タグをつかったレイアウトのプレビューを期待通りに表示する

Issue Fragment を使わず View をベースにしてレイアウトを組むと、Fragment と同じような役割をもった CustomView を作ってレイアウトを組みます。 このとき CustomView は何かしらの ViewGroup を継承することになりますが、そのレイアウトファイルのルー…

Kotlin でかいた interface を Retrofit に食わせたときのエラーに対処する

TL; DR Kotlin & @Body · Issue #1805 · square/retrofit · GitHub 問題 Retrofit で REST API のクライアント実装を生成する時、Kotlin で書いた interface を渡すとき、メソッドにジェネリクスを使った引数がいるとまれに次のようなエラーメッセージを吐き…

Robolectric 3.4 RC3 で dependencies の ArtifactId が変わります

Robolectric にはいくつかのサブプロジェクトがあり、それぞれに dependencies を追加する必要があります。Robolectric ではサブプロジェクト名が ArtifactId になっています。 そして 3.4 RC3 から ArtifactId が変更になったものがあります。主には、robol…

Wercker での Android アプリの CI を速くするポイント

CI の速さは開発のプロセスを高速化する上で重要です。Android アプリのビルドはどうしても時間のかかる部分が多く数分から十数分の時間を要してしまいますが、工夫次第では数十秒から数分の短縮が可能です。 プロジェクトの規模や構成にもよるので一概にす…

ツールド美ヶ原

先月たまたま申し込み期限ギリギリに申し込んだツールド美ヶ原に行ってきました。 激坂があり、それを乗り越えた先には雄大な自然!気持ちよさそう!!楽しそう!!!という勢いで申込んだわけですが、梅雨真っ盛りとあって天気は週間予報からあまり良くなく…

Again: AsyncLayoutInflater vs Litho #potatotips

前回 は実装が悪くて完全に Litho が負けていましたが、ある程度動かせるものができたので、potatotips で発表してきました。 speakerdeck.com 結論から言えば、これでもやはり AsyncLayoutInflater のほうが速いです。「Litho は既存の XML によるレイアウ…

Robolectric の依存を事前に解決してテストにかかる時間を短縮する

起こったこと Robolectric を使って JVM 上でテストを動かす場合、次のようなエラーログを目撃することが稀によくあります。 com.sample.SampleTest > sampleTestCase STANDARD_ERROR Downloading: org/robolectric/android-all/6.0.0_r1-robolectric-0/andr…

富士ヒルに参加してきた!

人生初の自転車イベントとして、富士ヒルクライムに参加してきました。普段から山を登りに行くのは好きなのと、完走者が多いということで、3月にシュッと申し込みをしていました。 知人が宿等のアテンドをしてくれたので、自分は移動手段と運転を担当しまし…

AsyncLayoutInflater vs Litho

先月の shibuya.apk で Litho の発表があり、非同期でレイアウトの展開(draw 以外の部分)をやってくれる機能をもっているということで、AsyncLayoutInflater と Litho で勝負したらどっちが速いかを確かめたくなったので、結果を書いておこうと思います。 …

android:windowBackground に指定する BitmapDrawable の位置を指定するときに気をつけること

Android アプリで SplashScreen を作る場合、android:windowBackground をつかうことでレイアウトを読み込まなくてもスプラッシュ用の画像を表示できます。レイアウトを待たなくてもよいので、アプリの起動直後からスプラッシュ画像が見えてよい、というのが…

Context#startActivity からすぐに Activity が起動しないパターン

前提条件 Service から次のように Activity を起動しようとした時、直近 5 秒以内に他の Activity を Home キーで閉じていると、startActivity の呼び出しからすぐには Activity が起動しません。 // this は Service Intent intent = new Intent(this, Some…

都民の森に登ってきた

今日も自転車でヒルクライムでした。今日は以前話をしていた人たちと都民の森へ! 昼に武蔵五日市駅にあつまって、そこから都民の森へ行って帰ってくる行程です。以前は武蔵五日市から檜原街道の途中の交差点を上野原にむかって登っていったことがあるのと、…

子の権現に登ってきた

本当は子の権現に行くつもりはなく、国道299号を秩父まで行って、そこから奥武蔵グリーンラインを走ってみようかなと思っていたのですが、途中で財布を忘れたことに気が付き、じゃあ子の権現に行ってそのまま帰ろうということで子の権現に行くことになったの…

potatotips #39 に行ってきた

技術書典2 では TechBooster から Colorful Android のコンテンツの一つとして DroidKaigi で発表した WindowManager の内容 + Android O の話を書き書きしましたが、その Android O の部分の抜粋 LT をしてきました。 speakerdeck.com 「Android O Preview …

shibuya.apk #13 行ってきた

shibuya.apk #13 で"Automation with Wercker and Container Builder"というタイトルで発表をしてきました。 speakerdeck.com Wercker をつかった Android アプリの CI は以前から取り組んでいたものですが、実運用をしている上で困ったところを Google Cont…

Android O で WindowManager の振る舞いが変わる

先日の DroidKaigi 2017 で発表した「Building my own debugging tool on overlay」のなかで、WindowManager で取り扱うレイヤについて触れた部分がありますが、Android の次バージョンである O から使用できなくなるレイヤ、代替レイヤについてのアップデー…

DroidKaigi 2017 に登壇、運営、参加してきた

運営についてのブログ記事はDroidKaigi 運営における Twitter 運用のあれこれ - Celeste Engineerにまとめましたので、この記事では主に登壇者としての立場の話をしようと思います。 登壇 30分枠にして内容てんこ盛りのゼロから始める黒魔術の入門から実運用…

DroidKaigi 運営における Twitter 運用のあれこれ

3/9と3/10の2日間にわたって DroidKaigi 2017 が開催されました。おこしいただいた皆様、ありがとうございました。 自分はカメラを構えて写真を撮ったり、Twitter でお知らせを流したりしていました。当日は #DroidKaigi が非常に盛り上がっていて、数分でTL…

DroidKaigi 2017 で "Building my own debugging tool on overlay" と題して登壇します

タイトルの通り、3月9日〜3月10日にかけて開催される DroidKaigi の2日目、Room 2 で 11:50 から “Building my own debugging tool on overlay” という題目で登壇します。 Android で開発者向けに提供されているオプションのなかでもオーバレイで各種情報を…

28 になりまして

誕生日の日付に変わるタイミングを渋谷で迎えたのは初めてではないでしょうか。TGIF してたらそんな時間になりました。 今年も DroidKaigi を運営メンバーとしてやっていくので、さらなる Android パワーをつけていくつもりなのですが、このところは久々にイ…

potatotips #37 行ってきた

わーい!potatotips #37 の Android まとめブログだよ。たーのしー! potatotips #37 (iOS/Android開発Tips共有会) - connpass 発表内容 1. kaelaela - greenDAO2ObjectBox ObjextBox という、greenrobot 製の新たな ORM かと思いきや、データベースエンジン…

あけましておめでとうございます

本年もよろしくお願いします

2016 Year Review

年の瀬ギリギリですが振り返りエントリを書いておこうと思います。 2016年もあっという間でした。年始にはアメリカにいたのですが、その間に体調を崩し、治らぬまま帰国したところ初雪が降る早朝の寒さに叩きのめされ風邪をひきました。幸先悪いなぁとは思っ…