画竜点睛を衝く@mapyo

日々やった事をつらつらと書くブログです

BaseActivityは作らないようにしよう

割りとあってもいいかなぁー。という派だったけど、

konifar.hatenablog.com

メンバー個々の判断に委ねるといつか瓦解します。これはメンバーのスキル不足ということではなく、締切とのトレードオフを鑑みた結果、とりあえずBaseActivityに実装して回収されない、ということがあり得るからです。

確かにその通りだなーと思ってやっぱりやめようと思った。一番のモチベーションはCalligraphyをどうにかしたいなぁというものだったので、

Calligraphyを使ってフォントを変更したい場合は、Applicationクラスで初期化することも可能です。

という一文をみて、なるほどそれで解決出来るのかー。そんな事を思った今日この頃。

Betaでアプリを配信する

Crashlyticsはちょこちょこ使った事あるけど、Betaは使い慣れてないのでやってみた。 昔作ったサンプルアプリに導入してみた。

コマンドラインからBetaにアップしたい

Android Studioプラグインを使えばアップ出来るのだが、apkファイルを手作業で選択してアップする必要があったので異様にめんどくさい。以下のコマンドでアップする。既にCrashlyticsが導入済みであれば普通に使えるはず。

./gradlew assembleDebug crashlyticsUploadDistributionDebug

crashlyticsUploadDistributionDebugを実行すればよしなにビルドしてアップしてくれるのかと思ったけど、単純にapkファイルをアップするだけでビルドしてくれないので注意。

Release noteを自動的に入れたい

何も考えずにアップすると空欄になるので、どのビルド分がアップされたのか全然わからない。

gradleに以下のような感じで追加する

# defaultConfig配下に追加する
ext.betaDistributionReleaseNotes = getBranch() + getCommitLog()

static def getCommitLog() {
    return  'git log -n 1'.execute().text
}

static def getBranch() {
    return  'git rev-parse --abbrev-ref HEAD'.execute().text
}

これを入れると以下のようにRelese noteに入るようになってた。

f:id:mapyo:20170326134648p:plain

このプルリクで実際に動いてた https://github.com/mapyo/FindTravel/pull/2/files

Betaにアップした時に自動的に配信する

Betaは何もしないとWeb画面上でポチポチしないと配信されない??っぽいので、build.gradleに以下を追加する

ext.betaDistributionGroupAliases = "testers"

testersというグループにアップした時に配信してくれる。 ユーザを指定する時は以下のように書けばよさそう

ext.betaDistributionEmails="BetaUser@yourcompany.com, BetaUser2@yourcompany.com"

参考

Distribution with Gradle — Fabric for Android documentation

qiita.com

qiita.com

gitconfigで別ファイルの設定を読み込む

こんな感じで書く

https://github.com/mapyo/dotfiles/blob/master/.gitconfig#L1-L2

[include]
    path = .gitconfig.local

自分のホームディレクトリにこのファイルを追加しとくと、自動的に読んでくれる。 違う場所に置きたい時はpathを工夫すればいけると思う。

使う場面は、dotfilesをgithubにアップしてる時くらいしか思いつかない。。。

#potatotips #38 に参加してきた

potatotips.connpass.com

オーディエンス枠で当選したので参加してきました。

資料とか発表の内容については他の方々がもろもろまとめてくださってるのでこの辺をみるとよさそうです。

togetter.com

Androidのエンジニアが若干少なかったので今度は発表者として参加したいという気持ちが高まりました。。。たぶん。。

iOSの開発経験は全くないのでiOSの方が発表してると、どうしても頭に入ってこないので、何かしら勉強してちょっとは分かるようになりたいなぁ。

日々思うのですが、僕はAndroidiOSもサーバサイドもいろいろ出来るようになって、一通りの事を出来るようになって、あー。それね。ふんふん。と言えるようになりたい。 器用貧乏になってしまうとは思うんだけど、一通りの事を経験しておくことで全体を俯瞰して見れるようになりたいなぁと考えている今日この頃。

CircleCIで4G memory limit

結論として、

circleci.com

ここに書いてた事をやればよさそう。 いろいろぐぐって出てきた情報をやってみたけど、うまくいかなかったり、1回はうまくいくけど、それ以降はうまくいかないみたいな感じだった。

でももしかすると、今回もたまたま何回かうまくいっただけなのかもしれない。

以下の記事をみてみるとWerckerの方がAndroidのciを回していくにはいいのかなぁという感じもする。。

tech.vasily.jp

qiita.com

ciを回すという行為が続く限りciおじさんは誕生してしまうもんなのかもしれない。 もっとAndroidのciを楽に回す方法はないのかなぁ。

DroidKaigi 2017にて「minneにおけるテスト〜リリース〜リリース後にやっている事の紹介」というタイトルで発表してきました

droidkaigi.github.io

DroidKaigiとは、Android関連のでっかいカンファレンスです(雑)

https://droidkaigi.github.io/2017/timetable.html#session-6

「minneにおけるテスト〜リリース〜リリース後にやっている事の紹介」というタイトルで発表させて頂きました。

www.slideshare.net

minneを運営しているGMOペパボは既に退職しているのですが、前職のお話をさせていただきました。。。!

久しぶりに大人数の前で発表したので今まで以上に緊張したし、結構カミカミだったような気がする。。。 早めの時間帯に発表だったので、その後の発表はリラックスして聞く事が出来たので良かったですw

ウェルカムトークでもありましたが、実際に足を運んで話を聞いたり話たりするのってとてもいいですね!! ググって情報を得るのとはまた違った感じ。最近、ほとんど勉強会に行ってなかったのでまたちょこちょこ行きたい気持ちが高まってきました。

明日も引き続き楽しみです!!アフターパーティーも楽しみ!!

【追記・広告】

minneもスマートドライブも絶賛エンジニア募集中です!僕に声かけてもらえたら僕になにかいいことがあるかもしれません笑

www.wantedly.com

www.wantedly.com

RxJavaとKotlinをやってる

最近というか、ちょっと前からRxJavaとKotlinを同時にやり始めてて、初心者的な観点から、いろいろ思った事をメモ。

もともとは、なんとなく情報は追ってるつもりではあったけど、コードはガリガリ書いてなかった感じで、最近ガリガリ書き始めたというレベルです。まだわかってない事は多い。。。

用語が頭に入ってこない

Observer、Observable、observeOn。 Subscriber、subscribe、subscribeOn。 Flowable、Subject、Publisher。

などなど。いろいろな用語があって、その度に調べるんだけど、いまいち頭に残ってくれませんでした。 自分のメモに、Observerはこういうもの。というメモを残してわからなくなったらすぐに見て、少しずつ頭に残っていきました。

RxJava1系と2系の情報が混在している

RxJavaは去年の10月末にリリースされました。

そのせいか、ぐぐると1系の情報だったり、2系の情報が混在してて、あれ、動かない。。。?という事がありました。 アップされている情報の時期を見たり、RxJavaのバージョンが書かれていればそれを確認したりすることで、バージョンを正確に把握するように努めました。

github.com

このページに変更点が書かれているのでそれも見とくとよさそうです。ただし、大きな考え的には変わってはないと思うので、1系の情報が全く役に立たないというわけではないです。

言ってる事はわかるんだけど、やっぱりわからない

いろいろググると情報が出てくるんだけど、いざ書こうとするとあれ、よくわかんないな?という事が多々ありました。 これは体系的な知識が足りてないのかなぁと思って、まとまった解説された記事を探したところ、以下の記事に出会いました。

codezine.jp

最初は1系の情報が出てきますが、2系の情報も出てくるしわかりやすくてよかったです。 RxJavaリアクティブプログラミングという本が最近発売されたんだけど、この本への伏線なのかな?と思ったりしました。購入しました。(下の方にリンク貼っとくのでよろしくおねがいします)

よく出てくるカラフルな図の見方がよくわからない問題

マーブルダイアグラムというらしいです。よくわからなかったのですが、

先程の解説記事の http://codezine.jp/article/detail/9570?p=6

ここに説明が書いてあって、わかりやすくてよかった! というか、本家でもちゃんと英語で解説されてた

Observable (RxJava Javadoc 2.0.6)

これなんなの?問題

IDE使ってるといい感じに補完してくれるのはありがたいんですが、KotlinにもRxJavaにも不慣れな状態だと???になる事が多かったです。

たとえば、こういうやつ。

Observable.just("foo", "bar")
                .subscribe({}, {}, {})

こういうやつとか。

        Observable.just("foo", "bar")
                .subscribe(::println,
                        { it.printStackTrace() },
                        { println("onComplete") })

わからなかったので、Javaで書き直してみてどういう感じになるのか確かめてたりもしました。

カジュアルに実行して動作確認出来る環境を整えた

github.com

こんな感じでテスト実行して結果を確認出来るようにしました。 気になった時に簡単に動作確認出来て便利ー。

最後に

最近ブログ書いてなかったので、ネタを作って書いてみました。 RxJavaはいい感じにハマるとすごい気持ちよさそうな気がするので早くその高みに達したいです。 Rx便利!

また、全てがRxを使っていい感じに解決出来るというわけでもなくて、しっかり考えて使っていかないといけないなぁと思いました。とはいえ、まずは積極的に使っていかないとそれがどういう時にいいのか、悪いのかの判断がしにくいと思うので使っていきたいです。

最近はAndroidのView周りじゃなくてずっと裏側の部分をやってたので、Javaプログラマーだったり、Kotlinプログラマーな気分になってたりもしました。

引き続きRxJavaとKotlinやっていきます!!!!

以下の2冊の本を買っていろいろやってます。

RxJavaリアクティブプログラミング (CodeZine BOOKS)

RxJavaリアクティブプログラミング (CodeZine BOOKS)

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

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