GPLv3に基づく自由なソフトウェアとしてソースコードを以下で公開しています。
https://github.com/laiso/Ti-HatenaNotify/
もともと「あなたへのお知らせ」っていう、はてなワイドのノティフィケーション機能みたいなものがあって、それの新着をチェックしたり閲覧するブラウザ拡張を公開していて
それのモバイル向けアプリにあたるもの。
はてな社が公式でつくるかなーと思ってたけど特に需要がないのか出てこないので自分で作りはじめていた。
モバイルクロスプラットフォームツールの評価がてら最初はPhoneGapで作りはじめてたんだけどWebViewの読み込みを中断したりハンドリングするデフォルトの方法が用意されてなくて正直こんなんの為にネイティブエクステンション作りたくもないのでTitanium Mobileに移行した。JavaScript部分から手をかけていたのですんなり移行できた。
先週アプリが一応できたのでApp Storeで配布できるようAppleにレビュー申請してみたんだけど
HatenaNotify for iOS、アップルレビューに出したらリジェクトされた上に「おまえあのさぁ、シンプリシティと機能が少ないのはまた別のわけよ? 私たちアップルは顧客に対して??」と説教がはじまった
という結果になってしまったのでレビュー通す為だけに機能増やすのもやりたくないので一旦ソースごと配布ウェアにすることにした。
FAQ
- どうやってインストールするの?
- iOS Developer Program契約している開発者向け。
- App Storeリリースは無理?
- 有用な機能増やせばレビュー通るかもしれないけど、とくに思いつかない。なんか思い付いたら https://github.com/laiso/Ti-HatenaNotify/issues へ投稿しといて。Androidの方は完成すればリリースできそう。
- プッシュ通知機能ないの?
- 半分はい。iOSはアプリがバックグラウンドに入ってから10分ぐらい新着を監視してる。その後にOSに停止される。Androidも同じくバックグラウンドでずっと監視してるはずなんだけど安定してない、iOSより制限ないので本当はOSの起動時に常駐で監視したいんだけどまだやってない。
- なんでサーバーからプッシュしないの?
- 「あなたへのお知らせ」は外部の開発者が使えようAPIが公開されてない。ログインした本人のセッションで取得してるのでパスワードでも預らない限り無理だし預りたくない。
- どうしたらプッシュ通知機能が提供できるの?
- 欲しい人が「あなたへのお知らせ」を外部の開発者が取得できるようはてな社へリクエストする→はてな社がAPI公開する→アプリが対応する。という感。もしくははてな社がこれと同じようなアプリをリリースするなら可能だと思う。
- 公開されてるソースコードを使って勝手にリリースしていい?
- GPLv3に基づく自由なソフトウェもごもご――
簡単なソースコード解説
以下は興味ある人ように…
全体の構成にAlloy Framework を使ってる。
これはTitanium Mobile SDKの上のレイヤーのアプリケーションフレームワークといった感じでRailsとかBackboneとかFlex/Java GUIプログラミングとかのフレイバーが元ネタ不明だけどいいとこどりな感じで提供されてる。
といっても今回のアプリは1画面しかないの全然MVC構造化支援の仕組みを使っていない。
プレゼンテーションレイヤー(XML)とスクリプト(コントローラーということになってる)を切り離せただけ。
- https://github.com/laiso/Ti-HatenaNotify/blob/master/app/views/index.xml
- ビューの宣言にあたる部分
- https://github.com/laiso/Ti-HatenaNotify/blob/master/app/styles/index.tss
- ビューの装飾にあたる部分
- https://github.com/laiso/Ti-HatenaNotify/blob/master/app/controllers/index.coffee
- コントローラー相当のファイルにビジネスリジック含めてべた書き。CoffeeScriptで書いた
上記の3ファイルでほとんど実装されてる。太ってきたらモデル・コントローラーの整理はすればいいかとか考えてる。あとテストも書いてない。