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

ichily.blog

{ "${it} is always there :)" }

2017/03/31 の週記もど記

人類には面倒くさ過ぎた

URLのこと。ぞろぞろと連なる文字列を打ち込みたがる物好きなど大しておらず、アプリアイコンクリックで遷移できれば、URLなんぞ見たくもないのではないか。 しぶしぶ覚えたり、分厚い電話帳とにらめっこしていた、電話番号が連絡先付き携帯電話の普及とともに意識されなくなったように。

espresso

espressoでのテスト時、AlertDialogで good というボタンを設定している時、それを押す。というテスト。 ソフトウェアキーボードが表示されていると(それで隠されていなくとも)失敗するのでperform(closeSoftKeyboard())する。

Android

今更ながらFCMを用いた通知を実装することになった。
公式ドキュメント通りに10.0.1でやったらFirebaseMessagingServiceを継承したクラスでhandleIntent(p0: Intent)のオーバーライドを求められた。
しかしそんな記述はなさそう。
???と思いつつ10.2.1にしたら消えた。

compile 'com.google.firebase:firebase-core:10.2.1'
compile 'com.google.firebase:firebase-messaging:10.2.1'

FCMを用いた通知のうち、トピックはブログやチャンネルを購読するイメージ。

FirebaseMessaging.getInstance().subscribeToTopic("test") // testを購読
FirebaseMessaging.getInstance().unsubscribeFromTopic("test2") // test2の購読解除

複数購読もいける。

色々

2017/03/15 の週記もど記

MMOについて

最近のMMOはストーリーが有るのが主流で、プレイヤーは主役にされてしまっている感がある。
世界は勝手に進んで行き、ストーリーに絡むクエストはやってもやらなくても構わない形にして欲しい。 主役になるか、脇役になるか、通行人Aになるか、そういう自由がないな。 などと考えていた。

色々

KotlinでMockitoを使うだけの話

概要

Kotlin使ったらMockitoさんがキレたのでMockMackerプラグインを入れた。

経緯と詳細

最近Androidアプリ開発でうだうだしているので触っているKotlin。良い感じなのだが、すべてのクラス・メソッドがfinalになるのでMockitoさんがキレる。

Mockito cannot mock/spy following:
  - final classesMockito cannot mock/spy following:
  - final classes
    ...

もーヒートアップしないでくださいよ。

Webでこの話を追うと、当初この問題で行われたアプローチが3つ。

  • クラスを全部 open にする
    テストのためだけにコード変更するのやだなあ

  • インターフェースにしよう
    テストのためだけにコード変更するのやだなあ

  • PowerMock使え
    Mockito2以降への対応が今一つでゴリゴリ例外が飛んでくるやだなあ

という感じでTestRunnerを拡張して解決する人が現れ、そうこうするうちにMockitoがMockMakerというのを実装した(Mockito 2.1以降?)のでこれを使うのがよさげ、という流れっぽい。

dependencies {
    ...
    testCompile 'junit:junit:4.12'
    testCompile 'org.mockito:mockito-core:2.7.15'
    androidTestCompile 'org.mockito:mockito-android:2.7.15'
    ...
}

こんなんで。

あと、test/resources/mockito-extensions/org.mockito.plugins.MockMakerというファイルに公式サイトにある通り書き込んで保存。
What’s new in Mockito 2 · mockito/mockito Wiki · GitHub

うまくいくので、PowerMockが使われているプロジェクトをKotlinに変換してみたらしんでしまった。なんだっけ、Could not copy test/resources/mockito-extensions/org.mockito.plugins.MockMaker to build/...みたいなこと言ってた気がする。後で何とかしよう、まずは軽率に例外を投げるPowerMockとMockito2.xのペアを泣き別れさせるべくPowerMock部分を全部削って*1、、とかやっているうちに動くようになってしまった。なんで。

切り分けは気が向いたら。

その後

素直に動いているっぽい。

恐怖のアフィリエイト

Kotlinスタートブック -新しいAndroidプログラミング

Kotlinスタートブック -新しいAndroidプログラミング

*1:そしてなぜか全部削れてしまう

2017/02/28 の週記もど記

うぐあ案件

NASAが発表した「TRAPPIST-1の系外惑星群」のインパクト - クマムシ博士のむしブロ この辺の話でうぐあーとなっていた。
太陽系から40光年というところがまたうぐあ案件である。なんか届きそうな気がするが、それは今じゃないし、生きてる間でもないのではないか。

ちょうどこんなものを読んでいる。

五〇億年の孤独:宇宙に生命を探す天文学者たち

五〇億年の孤独:宇宙に生命を探す天文学者たち

全く関係ないが、「~年の孤独」と言うと「百年の孤独」という称号を付けていた某MMOの有名プレイヤーを思い出す。

Twitter

題名のない展示会

最近は題名のない展示会というのに少し参加させていただいていた。

タイトルを伏せた作品(絵・写真・曲など)に対して、見た人が引用RTでタイトルを呟くというもので、なかなか面白い。

同じものを見て違うことを考える・・というのも面白いが、「パッと見てこうだと思ったけどこの部分とか違う感じでそのタイトルはどうか」というところで、立ち止まる人と立ち止まらない人がいるのも面白い。そもそも参加の形態として、絶対に一つのタイトルしかつけない人、多数のタイトルをつける人、2~3の異なる視点からつける人、などが有るのも面白い。

日本人は四季フェチという話

ここから始まる。

海外の話は置いとくとして、日本語での四季についてはなるほどなと思った。
「創作物の中でやたらと雪が降るけど、人口密集地のみなさんのとこそんなに降らなくね?」も、実体験としては雪が積もった記憶は大してなくとも、冬と言えば雪が割と大事なのかもしれない。
氷は虐げられている気がする。夏のイメージが強いのだろうか。

色々

FabricでTwitterに投稿するアレ

概要

statusesService.update("tweet", ..., Callback<Tweet> callback) ではなく
statusesService.update("tweet", ...).enqueue(Callback<Tweet> callback)

経緯と詳細

公式ドキュメント通りだけど、打ち込むのめんどい、、とぐぐった時出てくるお手軽Fabric入門してみた的なものはどれも現状と引数が違うぽい*1ので。

statusesService.update("tweet", ..., Callback<Tweet> callback) ではなく
statusesService.update("tweet", ...).enqueue(Callback<Tweet> callback)

実際動かしたものも一応(ただしKotlin)。

val statusesService = Twitter.getApiClient().statusesService
statusesService.update(tweetText, null, false, null, null, null, false, false, null).enqueue(object : Callback<Tweet>() {
    override fun success(result: Result<Tweet>) {
        Log.d("debug", "success")
    }

    override fun failure(exception: TwitterException) {
        Log.d("debug", "failure")
    }
})

その後

この件については問題なし。

Oauthはじめ、お手軽にアクセスできるのは良いんだけど、Twitterクライアントを作るためのものではなく、ちょっとTLとか組み込むのが便利というものなので、色々やろうとすると自分で実装する部分が増えていく感。

恐怖のアフィリエイト

Kotlinスタートブック -新しいAndroidプログラミング

Kotlinスタートブック -新しいAndroidプログラミング

*1:しかしかなり最近の記事でもこうだし、こちらがなんか間違ってるのだろうか

2017/02/13 の週記もど記