愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

長らくiPhone派だった僕がiPhone 4sからNexus5に機種変更した10の理由

タイトルは釣り。携帯の機種変、そんな程度のことに10個も理由があってたまるか。

が、機種変更したのは事実だ。理由は、

  1. 個人的に、「iPhoneはもうダメだな」と思ったから。理由は色々あるが、iPhone 5cとか、フラットデザインとか。
  2. Androidアプリの方に技術的興味を寄せたかったから。iPhoneを普段使いつつAndroidアプリを作れないこともないが、やはり自分自身が毎日メインの端末として触っていないとよろしくない。

とかそんなところ。

Nexus5は現状e-mobileへ他キャリアからMNPするのが一番安いのだが、これがなんとsoftbankからだと月額にして他より1500円くらい損になるのだ。払ってもいいんだけど何か気に食わないのでsoftbankからb-mobileにMNPしてNexus5自体はGoogle Playから買うことにした。simは↓。

日本通信 bモバイル スマホ電話SIM フリーData マイクロSIM [AM-SDL-FDM]

日本通信 bモバイル スマホ電話SIM フリーData マイクロSIM [AM-SDL-FDM]

これの基本プランに高速通信3GB?プラン?みたいのを追加して月額が3300円くらい。softbankの時に比べると、安い。月3GBの通信量制限については、自分はほぼ一日中wifiに繋がる環境にいるので問題にならないだろう、と判断した。実際その通りになった。

b-mobileを始めとするMVNO(要はキャリアじゃないけどキャリアの回線借りてる事業者)のsimを使ってsim freeの端末を安めの月額で使う、ということに何となく不安を抱いている人もおられるだろうが、今のところ全く問題ない。むしろ、キャリア御三家と直接契約するメリットってなんかあんのか?という気分だ。おそらくは、「パソコンは日本のメーカーのやつじゃないと安心できない」みたいな謎の安心感に近い何かが、一番のメリットなのだろうが。

特に、b-mobileにMNPする際に全てがネット上の手続きで済んだのは良かった。これが例えば店頭に出向いてMNPしていたら、例によってクソみたいな営業トークを聞かされるところであった。くわばら、くわばら。

Nexus5自体については、非常に満足している。iPhone 4sより全体的にサクサク動く。長らく「Android端末みたいなクソを使う奴らの気がしれんな」と思っていたが店頭で触って「Nexus5は今までのやつらとは違うな」と思った僕の見立てに間違いはなかったようだ。なので、どっちかというとAndroidに転向した、というよりNexus5に転向した、というのが正しいのかな。今でもほとんどのAndroid端末はクソだと思ってるし。

まあそんなわけで、結論をまとめると

  • softbankからMNPしてNexus5を使うならb-mobileがおすすめ。
  • キャリアとの直接契約にはあまりメリットないよ。お金かかるだけだよ。
  • Androidはクソばかりだけど、Nexus5は可愛いよ。

ということでした。

追記: 続きではないが、続きに近い内容。なぜ俺たちは2014年にもなって電話回線なんぞに金を払わなければいけないのか - 愛と勇気と缶ビール

gitのbranch ruleを決める際の個人的チェック事項

プロダクションリリースの前は適当でいい。適当にfeature branch切ってガンガンmasterにmergeしてdeployすればいい。変更の種類によっては直接masterにぶち込んでしまえばいい。スピード感が大切な時期なので、いちいちbranch ruleを定めてそれを遵守すること自体が時間の無駄。

プロダクションリリースからそれ以降は、

  1. プロダクションにはmasterとか特定のbranchではなくtagを切ってそれをdeploy。切り戻す先は一つ前のtag
  2. プロダクション以外の環境には特定のbranchをdeploy。切り戻すというか修正の仕方は適宜。

という感じにする。それに加えて、「feature branchを現在の最新安定版にmergeした状態で結合testが出来るbranch」があるとよい。「それってmasterじゃね?」masterではない。masterをこの目的に使うと、「feature branchをmasterにmergeしたはいいものの、なぜか動かないんだぜ状態」の時にmasterからbranchを切れなくなり、万が一の時のhotfixがし辛くなってしまう。 (tagからbranch切る?なんかやだなあ、それ)

例えばgit-flowではdevelop branchがそのbranchに相当する。「特別にそれ用のbranch作らなくても、git pull origin masterとかでfeature branchを最新に追い付かせればいいじゃん?」という考え方もあるが、それだと複数のfeature branchを特定のreleaseにまとめたい時に厳しくなる。が、それで問題がないような開発サイクルであればそれでもいい。

というわけで、どういうbranch ruleをとるにせよ

  1. 「最新安定版はどれか」が明確であり、問題発生時にどこに切り戻せばいいか分かる
  2. 最新安定版相当にfeature branchを取り込んだ状態のtestが出来る

という2条件が最低限満たされていればよいのではないか。後は好み + 開発サイクル次第な気がしている。

入門Git

入門Git

golangのいいところ

っていうのは、恐らく、「おめーらはうだうだ言うかもしんないけど、俺らの経験から言えばこの言語機能はこれ位で実用上はそこまで問題ないし、その上で充分効率的に実装できるわー」という非常にレベルの高い割り切りなんだろうなー、と。

The Go Programming Language Phrasebook (Developer's Library)

The Go Programming Language Phrasebook (Developer's Library)

まだ全部読み切ってないけど、↑はどうやら中々いい本です。

日本語訳は(Amazonのレビューを全面的に信用するのはありえないと思いつつも)地雷の可能性があるので原著の方がよいでしょう。

2014年度版 ScalaでAndroidアプリを作るの術

前略、ScalaでAndroidアプリを作るのは超簡単ではないが、ロケット工学ほど難しくはない。Javaを除くJVM言語族で最も環境が整っているといっても過言ではないだろう。

android-pluginよ、さようなら

ScalaでAndroidアプリを書くとなると、大体の場合は

jberkel/android-plugin · GitHub

を使うことになるのだが、なんかこのplugin、微妙にハマりポイントが多くてしばらく触っていないと動かせなくなっていることが多い。おそらく僕のsbt周りの知識が浅いせいもあろうが、僕は別にビルドツールの勉強がしたいのではなくアプリが作りたいだけなので、こういう所にはあまり時間を使いたくないのである。

android-pluginは時代遅れ!とまで言う気はないが、今なら他にも選択肢がある、ということは覚えておいて損はない。

android-sdk-pluginよ、こんにちは

で、まあ上記のブツがいけてないので、最近はScaloid作者のオススメっぽいこっちを使ってみることにした。

pfn/android-sdk-plugin · GitHub

作者が言うところの、android-pluginとの違いは以下。

https://github.com/pfn/android-sdk-plugin#differences-from-jberkelandroid-plugin

今のところ、悪くない。android-pluginに何らかの理由でウンザリした経験のある方は使ってみてはどうだろうか。

ライ麦畑でつかまえて

ついでに、どうせなのでScaloidも使っておくといいだろう。これによってFuture使えない問題も解決する(残念ながら僕はまだ使ったことないけど、おそらく解決しているのだろう)。

pocorall/scaloid · GitHub

ちなみにこれと同系統のものにPositronic Netがある。

rst/positronic_net · GitHub

これのEvent Handlerの書き方などは好きなのだが、> 突然のORM < だったり最近あまり開発が行われていない風味だったりなので、今から乗っかるのは止めておいた方が無難だろう。

だからどうって訳じゃないが、既にScalaで書いたAndroidアプリを10個くらいGoogle Playに出している僕の言うことなので、android-sdk-pluginとScaloid、試してみてもソンはない。

追記

giter8のtemplateも一応作っておいたよ!

zentooo/android.g8 · GitHub

50 Android Hacks 開発現場ですぐに役立つヒントとコード

50 Android Hacks 開発現場ですぐに役立つヒントとコード