携帯アプリ用のAPIを開発中...

概要

ようやくソフトサインの業務に参加してから初めてプログラムらしいプログラムが書ける事になった。ものは携帯アプリ用のWeb APIで、クライアント側のライブラリっぽいもの付き。


サーバ側はPython + Djangoにしようと思ったんだけど、将来的にベトナム人に委譲する事考えて結局相変わらずのPHPになった。クライアントサイドはJAVA。MIDP2.0/CLDC1.1のJ2MEですな。


フレームワークはせっかくCake使ったプロジェクト走らせてるんだから、Cake1.3をテストかねて使ってこうかなと思ったんだが、管理システムとかじゃないからScaffoldされてもどうしようもないっちゅーか。
むしろこの手のシステムにはコスト(実行速度という意味の方)高すぎるだけじゃね?という。


ということで悩んだ結果、mod_rewriteと自作でControllerとActionくらいは識別出来るしょぼいのを作る事にした。Viewをどうするかは検討中。DB部分はただのラッパがかぶさってるだけで今んとこModelもなし。
変えたくなったら変えようかなぁ程度で。
DBは後でDjangoがきてもCakeがきてもRailsがきてもいいよう、一応例の規則に従っては作ってる。この仕様は時々キーが二つになっちまうのが残念だけどね。


作っているものについては公にしていいか不明なのでとりあえず内緒。

手こずったところ

複合できない

サーバのデータからクライアントのデータにしないといけないんだけど、J2MEってreflectionないのな。クラスを名前から生成するだけで精一杯っぽい。
ということであんまり汎用的なSerializerの生成はやめて、本アプリに特化した感じに。データフォーマットはJSONっぽくいこうと思ったんだけど、動的配列もVectorしか提供されておらず面倒だったので、配列以外は一行完結の独自形式にした。強いて言えばyamlっぽい。
しかし独自ばっかし。


しかも携帯アプリの容量考えると個別にSerializer作ってソースコード肥大化させるとマイナスっぽかったので、API別に解析コードをペタペタ書くことに。
ってか、組み込みプログラミング系って容量考えるから基本汚くなるよね。
モデルクラスすら除外して配列地獄で返そうかと思ったんだが、ベトナム人と相談したところそのくらいはなんとかなるだろうということでモデルは6個くらい作っといた。頑張れ携帯アプリ。このくらいは許してくれ。

J2MEしょぼい・・

SplitもURLEncodeも無いから基本この辺は自作・・。あともう一個くらいhtmlspecialcharsみたいな処理が必要だが、これはまだ作ってない。改行とか来たらあぼんしちゃう。まあ作るけども。
仕様書調べるのが面倒だったので、Google Code Searchで見つけたものを仕様書兼サンプル代わりにアレンジしながら作る感じで。後ですり合わせるけど、URLエンコードの仕様見るのはめんどいなぁ。


なんやかやで、相変わらずJAVAプログラミングはストレスたまるねぇという話。

サーバ側

は、特に無し。
独自なんでモデルどうしよっかなぁとか、Viewどうしよっかなぁとか、色々設計部で趣味に走りそうな気分を抑えながらやるのが大変なくらい。

感想

今回は実装期間が1週間しかなかったから警戒したんだけど、余裕もって終われそう。余ったら趣味に走りたいんだけど、別件を土日含めて5日間放置ししてるから最低限やってそっち処理に回る予定。これは今日中に片付けたいな。


今日終われば合計でざっと三日。
CakePHPは調べるのに時間かかるせいか我ながら遅い気がしていて、最近pptやxlsばっか作っててプログラミング能力落ちたんじゃねーのと心配したけど、三日でノウハウ無いJ2ME部分含めて終わればぼちぼちだろ。
いつも通りスーパーハッカーでもなければ凡庸でもない俺のプログラムという感じ。


日本側がなんか別件にかかってるのかレスポンスがほとんどなく、プログラムに集中できたんでそこそこ楽しめた。
こういう仕事は楽でいいのぅ。