【たすけて】Dagger2の導入でつまづく【ハマった】

Dagger2を自作のAndroidアプリに導入する中で躓いたことをまとめようと思います。現在進行形でハマっているのでこれからも加筆修正が入る予定……

前提条件

  • Kotlin
  • Android Studio2.2

✓ハマりその1 そもそもaptが動かなくて困る

アノテーションプロセッシングがうまく動かなかったみたいだったのですが、今回はKotlinを使っているのが原因だったようです。結果的にkaptを利用することにより解決できました。

✓ハマりその2 Activity内でInjectしてもうまく注入されない

これはまだ未解決で結構激しくハマっているのですが、ComponentやModule等を定義した状態で、依存性を注入したいlateinit varで定義したフィールドに@Injectアノテーションを付けActivityのonCreate内でInjectメソッドを呼んでも正しく依存性が注入されていない結果、そのフィールドを参照したときに例外が発生してクラッシュするという問題にぶち当たっています。 とりあえず目下これをなんとかしたいと思っているのですが、なんとかなったらここに追記しようかと……

追記

これは僕の根本的な勘違いが原因だったようです。 正しい理解としては以下の様なものになると思います(@yuyakaidoさんありがとうございます!)

  • Component内のInjectメソッドは依存性を注入する対象を指定する
  • ModuleはComponent内のInjectメソッドで必要とされるものに対して(注入する中身)providerを定義する

ここらへんの理解が曖昧だったため上記のActivityを引数に取るメソッドを用意しなかった結果コケてしまったみたいでした。

FreeNAS機を組んだ

FreeNAS機を組みました。 WD Red 3TB*6でRaid Z2を組んでいます。

一台引っこ抜いて遊んでみたりしましたが少なくとも大丈夫そうです。

今のところ有り余っているストレージ容量を何に使うか、それは多分写真とかに当てられるんじゃないかなあと思っています。あとMacのTimeMachineのバックアップ先にも指定しました。それでも多分余るのでまあゆっくり使っていこうと思います。

あ、あとブートドライブに指定してミラーリングしてあるUSBメモリのうち一方がすぐ脱落してたんですが、別のUSBメモリに取り替えたら正常に動き出しました。

HHKB Pro2を買った

HHKB Pro2を買いました。

友人がType-Sを使っていて遊んでいた墨無刻印モデルを安く譲ってくれたのですが、これはもっと早く買っとけばよかったと思います。

お決まりの無刻印でキーがどこだかわからないということも何度か発生してはいるのですが、どちらかというとそういうときには適当にキーを 押して正しいキーを探すタイプの人間なのでそこまで困ったりはしていません。

一日使ってやっと慣れてきたところなので、これからガッツリ使っていこうと思います。

譲ってくれた友人氏ありがとうでした。

HomeBrewでcurl: (51) SSL: certificate verification failed (result: 5) になって困った

HomeBrewを使ってるのですが、先日brew updateした時にcurl: (51) SSL: certificate verification failed (result: 5) とのエラーが出て全部ソースからビルドしようとしてたので困っていました。

似たような問題はいろいろなところであるらしく、ぐぐったらいろんな解決法が引っかかったのですが結局一つを除いてどれも効果がありませんでした。

export SSL_CERT_FILE=""

が唯一効果があった解決法です。個人的メモ。

Android端末の通知で光る富豪的BLEスカート作った

意味の分からないタイトルですが、タイトル通りです。 NeoPixelを搭載したスカートと、Raspberry Pi Zero、それとAndroid端末で、Android端末に届いた通知に応じて光るスカートを作りました。

動機

www.makuake.com こういうのを見てドール用にも欲しいなと思いました。

やってみた

ただ光らせるだけじゃ面白くないし、かと言って本家の機能と被っても面白く無いのでいつでもすぐそばにいてくれるドール的には同じいつでもそばにある携帯と、そこに届く通知によってなんかできないかと思いました。

Android端末の通知にはテーマカラーが設定できます。実際に使われている中では、Twitter公式が青だったりSoundCloudがオレンジだったりしますが、アイコンの背景の色と同じだと思います。そんなわけでそこから色を持ってきて、NeoPixelをその色で光らせるようにしました。

実ははじめ、BLE Nanoを使ってやろうとしていたのですが、どうしてもBLEが有効な状態でNeoPixelを点灯させることができず諦めてそこらに転がってたRaspberry Pi Zeroを使うことにしました。とても富豪的。まあそれでも$5で買えるし気にしない方向で……

USB接続のBluetoothドングルを変換アダプタ経由で繋いで使っています。サイズが大きくなってしまいましたがしょうがない。

RasPiの中では、Node.jsとBlenoを使ってBLEを待ち受けし、Pythonのコードを呼び出してGPIOを操作するという超残念仕様。PythonでBLE Peripheralとして動作できるライブラリがあればよかったのに。

Android端末側ではNotificationListenerServiceを利用して通知バーの変更を監視し、変更があった場合通知のカラーをRaspberry Pi Zeroに送信するという実装にしました。

動いてるところ↓

ESP-WROOM-02とWS2812

やってみようと思ったけどサンプル動かすまでに結構時間がかかりました。以下雑な自分用メモ

使ったもの

ハマリポイント

  • 電源足りない
  • ピンが固定されて指定したものと違うことがある

こうしたら動いた

NeoPixelBus<NeoGrbFeature, NeoEsp8266BitBang800KbpsMethod> strip(PixelCount, PixelPin);

としてpin02につなぐ 電源のほうは別に取る