愛と勇気と缶ビール

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

アンサイクロペディア・ブラウザ2というアプリをScalaで作ってGoogle Playに出した

https://play.google.com/store/apps/details?id=com.nilsoft.Unreader2

以前にも作っていた、アンサイクロペディア専用ブラウザ的なものです。

しばらく前に家のマシンをArch Linux/半自作PC からOS X/Mac miniに移行した際にそれまで作っていたAndroidアプリのsign key (~/.keystoreに作ってたもの) を全消滅させました。
二度とアプリをアップデート出来なくなって悲しかったので、2と銘打って同じようなものを作った次第です。

アプリ的には特筆すべき点も何もないのですが、今回の自分への課題設定として

  1. Android4.x系の新しいfeature(特にAction Barとか)に慣れる。
  2. Scala on Androidな開発にInteliJ IDEAを使ってみる。
  3. Scaloid (pocorall/scaloid · GitHub) を使ってみる。

というものがありました。メインはやっぱり「作り方がもう分かってるアプリで、4.x系への肩慣らし」ですね。

1.については、こないだ「Android4.0以上が搭載されている端末が日本全体で50%を超えた」とのニュースを見て、「50%超えたなら、もうそれ以下のは見捨てていいや。どうせ今後もっと増えるし」と決めたからです。企業だとあり得ない選択ですが僕は趣味で作っているので、今後何らかのアプリを作る際は全部4.0以上対応にして新し目の機能もガッツリ使って可能ならそれをウリにしていきたい次第。

2.については、元々Java/Eclipseめんどい、という比較的消極的な理由でScala/Vimで開発していたのですが、最近はXcodeを触ったことで「IDEもよくね?」という拘りなきマイルドな気分になってきており、特にiOS/Android開発みたいな「コアライブラリががっつり存在していて、それに乗っかって作るもの」についてはIDEによる支援があった方がありがたいので、InteliJ IDEAデビューしてみました。Android開発では「これこれのクラスのこれこれのメソッドをオーバライドする」みたいなケースが多いのですが、InteliJ IDEAは元々のJavaシグネチャをよしなにScalaのそれに置き換えた上でオーバライドするコードを生成してくれます。中々賢いです。今のところCommunity Edition(無料)の機能で問題なく開発できており、Saleがあれば有料版のライセンス買ってもいいかな…?ぐらい。個人的には、Scala on Androidな開発はこれをもって大分こなれてきた感じ。SBT ConsoleもlogcatもIDEAから使って、ストレスなく開発できる環境が整いました。

3.については、元々はPositronic Net (rst/positronic_net · GitHub) を使ってみる予定だったのですが、あまり開発が盛んでなさそうなのでScaloid (pocorall/scaloid · GitHub)にしました。以前はAndroid API周りをScala的に書きやすいようラップするのを意図的に避けていた(それに依存しすぎて、Javaで書けない = 一般的なAndroid開発のスキルとして意味がなくなっては困るので)のですが、以前よりAndroid周りの知識も増えたので、元々のAPIを分かった上で使うなら別にいいか、と。

同じものをJavaで書いたわけでもないので「Scalaだから短い」とは言い切れませんが、アプリ全体は400行くらい、そのうちオレオレSQLiteラッパーライブラリ(not ORM)が100行くらいです。後者はそのうち固まったら公開するかもしれません。