わけもなく「よし、Androidアプリが作りたいぜ」と昨年のクリスマスに思ったので、年末からどわーっと勉強し直して、どわーっと作りました。「あんたは実家に帰ってきてもいつもパソコン触っとるねえ」と家族に白い目で見られました。
https://market.android.com/details?id=com.nilsoft.unreader
面白いコンテンツがあるのに、SmartPhone用のビューがないサイトって結構あると思います。アンサイクロペディアとかその一つですね。なのでSmartPhone用にコンテンツを変換するプロキシ作って、WebViewかぶせてやるぜ!見やすいぜ!とか、そういう感じですね。WebViewは色々面白いですね。(スクレイピングとかこの世のやりたくないことベスト50くらいには入りますが、wikiはHTMLの構造が安定しているので比較的安心です)
真面目にGUIツールキット的なものの上にのっかって何かを作ったことってあまりないんですが、やっぱりAndroidのはWeb開発っぽいところもありつつよくできてるなーと思います。ネイティブアプリをいじっていると、WebのUI等についても微妙に見方が変わりますね。
技術的なことをいうと、アプリ側は僕がJava苦手の会なのでScalaでへろへろっと書いて、Proxy側はやっぱり書きやすいのでPerlでぴろぴろっと書いています。Server::Starter + Starletでhot deployうまうまです。生成したデータは紆余曲折あって今はRedisにキャッシュしていますが、やっぱMySQLとかもっと柔軟なデータストアに入れておいた方が色々できたかな、と後悔気味です。当たり前ですがデータモデル周りは一度作ってしまうと中々動かせないので、素敵に後悔できますね。
現在の課題としては
- 機能が思いつかないのでメニュー2個空いてる
- とりあえずpreforkにしちゃったけど、こういうproxyはevent modelにしないと相手の出方次第ではすぐプロセス埋まって死ねる(timeoutしてもえーんだけど)
- Plackの上にうっすく被せただけの自作なんとかの上に作ってしまったので、ちゃんとしたwebappにリファクタリングしたい
とかでしょうか。
ネイティブアプリは新しいバージョンをあげても反映に時間がかかるし、ユーザが必ずアップデートするとも限らないのがやっぱり気になりますね。アプリケーションの更新/改善をすぐさまユーザに届けられることがやっぱりWebの強みなんだなー、と改めて思いました。