Hatena::ブログ(Diary)

naoyaのはてなダイアリー

August 01, 2013

HBFav2 をリリースしました

f:id:naoya:20130801203646p:image

1年以上前に HBFav という、はてなブックマークの「お気に入り」を読むための iOS アプリを作ってリリースしましたが、今回一から実装し直してバージョン 2.0 という形で先ほどリリースしました。App Store からダウンロード可能です。

HBFav って?

HBFav は、はてなブックマークで「お気に入り」に追加している、すなわちフォローしているユーザーのブックマークやコメントをタイムラインのようにして閲覧するアプリです。個人的にはてなブックマークで最も重宝しているのがお気に入り機能で、そのユースケースを中心にしたアプリが欲しくて作ったというのが元々の動機でした。

なんで作り直したの?

バージョン 1.0 はあまり時間の無い中コンセプト優先で作ったということもあってお世辞にも品質が良いとは言えない代物でした。重たいし、落ちるしで。

とはいえ自分自身ではずっとヘビーに使ってまして、iOS ホーム画面のドックの座席を獲得しているアプリです。そのうち一度抜本的に改善して品質の底上げを行おうと前々から思っていました。だいぶ時間が空いてしまいましたが、ようやくこれでいいかなというくらいに仕上がったのでリリースいたしました。

何が変わったの?

一番大きなところは速度と安定性なのですが、そこはまあ、昨今の iOS アプリで最低限満たすべき水準を満たしたくらいの話かなと思います。それだけでは面白くないので、インタフェースを見直した上、新機能も幾つか追加しています。

  • Readability による変換機能 (1.0 におまけ程度につけていたものを本格的な機能に作り込みました)
  • Twitter / Facebook / Pocket などへの送信機能
  • 人気 / 新着エントリーの閲覧機能

などなど、です。詳しくは ランディングページをごらんください。細かい所でははてなスターを表示するようにしたとかいうのも、ちょこちょこあったりします。

作り直しにあたって後方互換性を捨てた部分も幾つかあります。

  • 昨今の状況を鑑みて、(Pocket 機能をつけたので) Instapaper 投稿機能は廃止
  • 対応 iOS バージョンを 4 から 6.1 まで引き上げ

特に Instapaper 機能はばっさりいってしまったのですが、よく使っていたという方がもしいらっしゃいましたら教えてください。

結構間が空いてしまった

実は HBFav2 は、去年の初夏ぐらいに着手しはじめて基本的なところはすぐにできていたのですがドラゴンクエスト10が発売されて 諸事情あって開発が進まなくなってしまい、そうこうしているうちにやる気がなくなり放置になってしまってました。

ところが、RubyMotion もくもく会などでよく顔を合わせている @watson1978 さんが以前からバージョン 1.0 を使ってくれていて、ある日「2のリリースは楽しみにしているんですがいつになりますか?」と言われてしまいまして。ああ、楽しみにしてくれてる人もいるんだなあというので開発を再開するに至った・・・というのが経緯です。

RubyMotion もくもく会は月イチでやってもう一年くらい続いているのですが、その月に一回の機会に重たい腰を上げてちょこちょこと触っていたらだんだんやる気が出てきて、ここ一ヶ月くらいでピークに達して一気に仕上げることができました。もくもく会万歳です。

実装の話

2.0 の実装は全て RubyMotion で行っています。ライセンスはちょっとまだ曖昧 (すぐ決めます) なのですが、ソースは以下にありますので興味のある方はどうぞ。(テストないです、すみません)

前のバージョンは Titanium Mobile を利用してたおかげでラピッドに開発できてそれはそれで良かったです。ただ、自分の Titanium 力が足りず満足のいく品質に仕上げられなかったのが主要な原因でありつつも、TableView を多様するアプリでありながら Titanium のアーキテクチャに起因する限界でチューニングが行き届かずみたいなところもあり、RubyMotion に切り替えるに至りました。

RubyMotion は、Ruby で iOS アプリといっても Ruby VM が中で動くわけではなく、Objective-C ランタイムを使って Objetive-C 同様 LLVM でネイティブアプリとしてビルドされます。ので、一切のごまかしなく、ネイティブアプリです。RubyMotion のおかげで TableView を高速化するための様々なテクニック も素直に導入できましたし、UIRefreshControl や UIActivity など iOS 6 の新しい API も問題なく利用できました。RubyMotion 最高です。

この辺、宮川達彦さんとの Podcast (Rebuild、という名前がつきました) でも触れてみました。

開発の過程で色々と RubyMotion にまつわる知見も溜まったのでブログや Qiita なんかにまとめていこうかなと思ってます。

今後の展望

主要なユースケースは実装したし特に大きなロードマップとかは考えていないのですが、はてな側にこんな API があればもっとこういうことができる・・・例えばスターをつけるとか、アプリの中でフォローしたり外したりできるだろうなんてことはよく考えています。API に対応してもらえるか次第なのですが、どうやら iOS 向けの SDK が出るとか出ないとか(関西の iOS 勉強会で話題になっていたりする)らしいので、その辺の動向も追いながらちょこちょこアップデートをかけていこうと思います。

えー、そんなわけで、どうぞご利用ください。*1

*1:はてなブックマークをパブリックにしてないと使えない、というのを設定画面に注意書きするの忘れてました。すみません

mabotsmabots 2013/08/01 22:03 ついにでたんですね。いま私もひっそり作ってるのがあるので今度見せに行きます

naoyanaoya 2013/08/01 22:07 おお、じゃあ今度!