Titaniumでお小遣いを稼げるiphoneアプリをリリースしました

ずっと更新していませんでしたが、
いくつかアプリをリリースしたりしていました。
WebViewを使った小さなアプリはちょこちょこ出したりしたんですが、
今年になってやっと大きなアプリがリリースできたのでその時のお話でも。
なおアプリは全部Titaniumで作成しています。

会社のアプリの宣伝ですw
Repoアプリ
お小遣い稼ぎ で検索すれば出てきます。

アプリはざっくりいえばお小遣いアプリでして、
記事を投稿したらそれに応じた報酬がもらえる仕組みになっています。
ただ、この投稿ってのが曲者でして、
クライアントによって細かい要望が一杯あるので、
それに臨機応変に対応するようにPC版では専用管理画面でフォームを自動作成して、
それをJSONに吐き出しています。

同じことをアプリでも求められていたので、
PC版と同じJSONを受け取ってアプリ上でフォームを作成していたんですが
まさかのメモリが足らないという。。。

10文字から20文字の間の○○というワードが入った文章、
350文字以上の○○というワードが入っていて、かつ○○という文字が入っていない文章
などの複数のフォームがあり、
回線が弱いことの多いアプリでは都度POSTしてチェックするわけにもいかないので、
書き込み終了と同時にチェックをする形にしていました。
そのため、一つのフォーム必ずeventListenerがついていて、
しかもそれが割と色々とチェック(必須ワード、NGワード、文字数など)をするので
フォームがたくさんあると旧型のiphoneとかでは描画がおかしくなります。
特に書き込み最中に(ソフトウェアキーボード表示中)に残りの画面をスクロールしたりした際には
結構な確率で描画がおかしくなりました。(ビヨンビヨンってなったのでビヨンビヨン現象とか言ってましたw)
ここら辺はEventごとの処理をまとめてなるだけ短く綺麗に書くようにしたり、
一部はあきらめてPOSTした際にチェックするようにしたりしました。
それでもまだiphone4とかでは発生したりするんですが、
一応少し待ったり画面を切り替えたりすれば(ようはメモリにきちんとロードされれば)
表示できるので、一旦Ver1としてリリースしています。

またそれ以外に
Ti.APP にカスタムイベントを追加して、それを後で着火する形で書いていたのですが、
いらなくなった時に手動で消す必要があるので、無駄なメモリを使いやすいので、
なるだけ作成した画面自体にカスタムイベントを追加するように書き換えたりしました。

また、案件一覧を表示する際も検索出来るように色々とTableRowにワードを追加していたんですが、
これがまた重い。。
案件タイトル、ディスクリプション、タグをくっつけたものをオブジェクトのプロパティに入れて
それを検索対象にしていたんですが、
こいつのせいで、100件とかを超えたテーブルになるとスムーズにスクロールできない
(表示されていない部分がメモリから落ちているかんじ)
になってしまっていたので、
これも全部きっぱり排除しました。
っていうかまずは快適に使えるように検索機能自体も削除しちゃいました。

とまあ、今回はメモリ不足に悩まされまくったアプリですが、
Ver2ではこれにローカルDBをつけてキャッシュとかもしようと考えているので、
さらに重くなりそうで今から気が重いです。。