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

画竜点睛を衝く@mapyo

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

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プログラミング

GMOペパボを退職した

本日でGMOペパボを退職となります。有給消化的なやつで最終出社は12月の末頃だった。 4年間くらい在籍させていただきました。

入社する前〜今日まで何やってたか、大きめの仕事を中心にざっくり振り返ってみる。長くなりそう。。。

入社前

製造業の社内SEとして働いていた。 多少はプログラム書いたりSQL書いたりしてたけど、基本は協力会社さんにお願いして作ってもらってた。

自分でもっと何か作れるようになりたいなぁと思ったので、転職を決意。 自社で作ってるところを中心に探してたけど、バリバリプログラムを書いていたわけではないので、 転職活動はなかなか大変だった気がする。

面接では昔過ぎてあまり覚えてないけど、自分で作ったしょぼいAndroidアプリを見せたり、ブラウザにURLを入力して、そこから後の事をなるべく詳しく教えてくださいとか、好きな食べ物なんですか?とか聞かれた気がする。完全にふわっとしか覚えていない。

当時と今を比べてみると、採用のハードルが当時よりかなり上がっていて、当時の僕が今受けたらとてもじゃないけど、内定を頂く事は出来なかっただろう。プログラマーとしての経験も未熟な僕を拾って頂いた事に本当に感謝しかありません。

入社直後

カラーミーショップというサービスのエンジニアになった。PHPer。最初はいろいろと大変だった。

  • 今まで仕事でWindowsを使っていたけど、Macを使うことにした事。
  • プログラマーとしてバリバリ仕事するの初めて
  • Web系企業初めて
  • 当時はgit-svnが使われていて、svnもgitもちょっとしか触ったことなかった状況でgit-svn使う感じ

大変だったけど、やりたくてその環境に身をおいていたので楽しかった。

右隣に座ってた方に本を貸していただいてめっちゃ勉強になった。

左隣に座ってた方にgit-svnのよく使うコマンドを教えていただいて、非常にありがたかった。

最初に担当した仕事が、管理画面からtwitterで呟いたら、そのショップさんのショップページのサムネイルがサービスページに表示されるというやつで、普通に開発するだけじゃなくてtwitter api叩いたり、webページのサムネイルをいい感じに撮るようにしたりと、それなにり大変だった気がする。

1年目

メルマガプラスというオプションを作った。 既存サービスとは完全に独立した形で作ることになっていたし、 サーバサイドのプログラマは僕1人だったので、ゼロから何かを作るという貴重な経験が出来た。 開発環境を作って、あーだこーだ話しながら動くものを作って、本番環境にDeployする仕組みを整えて。などなど、いろいろ出来てよかった。

定期購入の機能も作った。

そういえばプライベートでは、Chrome拡張機能を作ったりしてた。

mapyo.hatenablog.com

このブログのネタ元になった、吉高由里子をすぐ見れる拡張機能を作った人と4年目に一緒に仕事するとは思いもしなかった。 Chrome拡張機能つながりで、業務をちょっと楽にする拡張機能とか作ったりした。細かい改善とか、みんながちょっと便利になるものを作るのが好き。

いろいろと改善したい改善したいと言ってたら、システム周りの改善するチームが出来て、そこでいろいろと改善する人になった。

2年目

一番大きいのはこれ。

mapyo.hatenablog.com

大変だったなー。

これについて、ペパボテックカンファレンスで発表した。

mapyo.hatenablog.com

3年目

一番大きいのはこれ。

www.slideshare.net

mysqlバージョンアップした時以上に大変だった。 これをネタにPHPカンファレンスで発表できたのでよかった。

3年目の終わりの方からminneに異動して、それと同時にAndroidエンジニアになった。 個人的にAndroidアプリ勉強したり作ったりしてて、それをアピール出来たのがよかったんだと思う。

チームが変わった事や、サーバサイドエンジニアからモバイルエンジニアになったので、 いろいろと変化が大きかった。

4年目

Android一色な1年だった。 やっぱり、家で個人的にやるのと仕事でやるのとでは成長のスピードが全然違う。

DroidKaigiで発表することも出来た。

www.slideshare.net

今年のDroidKaigiでも発表出来る事になったので、よかったら見に来てください〜

雑誌に寄稿する機会も与えてくださって貴重な経験が出来た。今後、こんな機会はもうないかもしれない。

mapyo.hatenablog.com

最後に

ざっくり振り返ってみた。4年間いろいろあったなぁ。 職業プログラマーとしては最初の会社だったので、 プログラマーとしての姿勢というか、考え方について教えて頂いた気がする。

ペパボは本当に働き心地がよかった。 しがない僕を拾って頂いて、感謝の気持ちしかありません。 すごいエンジニアの人がいっぱいいて、いい刺激になったし勉強になった。 有給もかなりとりやすいし、休日出勤は4年間で2日しかなかった。

ペパボの皆様、本当にお世話になりました。ありがとうございました!!

次は

引き続きAndroidエンジニアとしてやっていく気持ちでおります。 また落ち着いたら何かしら書こうと思います。たぶん。

念のためwish listのリンク貼っておきますね。

http://amzn.asia/69jk2oI