読者です 読者をやめる 読者になる 読者になる

TitaniumMobile勉強記

Web系エンジニア向けのキャリアアドバイザーやってましたが現在はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連(Node.js、Titanium)あたり

TiQiita ver1.2を近いうちにリリースします

TiQiita ver1.1をリリースしたのがこのエントリによるとかれこれ半年ほど前になりますが、TiQiita ver1.2を近いうちにリリースする予定です。

ver1.2での機能について

上記エントリで

当面は他にやりたいことがたくさんあるのでver1.2の開発は当面おあずけにしようと思ってますが、実装するとすると

はてブへの投稿時にコメントをいれられるようにする

・Qiita&はてブへの投稿と同時に、Evernoteへの投稿も出来るようにする

・フォローしてるユーザの個々の投稿情報を取得してから投稿日順にソートする部分の実装見直し

・左側メニューでフォローしてるタグを折り畳んで表示できるようにする

・(気が向いたら)Android対応

という感じですかね

とアイデアらしきものをまとめていましたが、

  • はてブへの投稿時にコメントをいれられる
  • Qiita&はてブへの投稿と同時にtwitterへもポスト可能

というのが主な追加機能になります。

利用するユーザさんからすると、どうでもいい部分ですが、今回の1.2で

  • 内部のキャッシュ処理の見直し(Ti.App.PropertiesからSQliteへの変更)
  • 広告モジュールをAdMobからNendへ変更

というのが変更になりました。

ver1.2では内部処理を大きく見直しをした

はてブへの投稿時にコメントをいれる機能はそれほど難しくないし、Qiita&はてブへの投稿と同時にtwitterへもポストするのもTiPlatformConnectを使えば それほど難しくないというのも感覚的にはわかっていたので、平日に1日2時間程度費やして、2週間もあれば完了するかと見積もっていました。

実際は、自分の見積りが甘く、作業期間としては1ヶ月半ほど費やしました。。

なんでそんなに時間がかかったかというと、自分が書いたコードだけど、機能追加しづらい設計になっていることに気づき、全体の80%ほど、具体的には、UI部分とController的な部分を書き換えた結果こんなに時間がかかったのかと思ってます。

内部処理をどう変更したか

一度取得したQiitaの投稿情報をローカルにキャッシュする際に、これまではTi.App.Propertiesを使って、

var json = 'xx'; // QiitaAPIを通じて取得した結果
var QiitaItems = Ti.App.Properties.setString("QiitaItems",json)

のような形で処理をしていたのですが、Ti.App.Propertiesの値を実際に格納するファイルサイズがなぜか数MBとかになるケースがあり、後々不具合になるかと思って、SQLiteを利用する形に変更しました

あとは、これまでGoFデザインパターンで、特にCommandパターンを適用させて実装してたのですが、結果としてcontrollers/以下に、多数のController的なファイルが存在しており、どうも気持ち悪い感じになっていたので、それを止めました。

現在のディレクトリ構成としては

Resources
├── app.js
├── controllers
│   └── mainContoroller.js
├── lib
│   ├── Ti.Google.Analytics.js
│   ├── jsOAuth-1.3.3.js
│   ├── moment.min.js
│   ├── momentja.js
│   ├── twitter.js
│   ├── hatena.js
│   ├── underscore-min.js
├── model
│   ├── cache.js
│   ├── hatena.js
│   ├── loadConfig.js
│   ├── qiita.js
│   ├── qiitaUser.js
│   └── twitter.js
└── ui
    ├── activityIndicator.js
    ├── image
    ├── android
    └── iphone
        ├── configMenu.js
        ├── detailWindow.js
        ├── listView.js
        ├── mainWindow.js
        └── menuTable.js

というような形になり、スッキリしました。なお、test/以下にJasmineのテストも一応あるのですが、前回からほとんど更新できてなかったりします。。

なお、今回内部処理を見なおした結果、Android向けに作るにも、ui/android以下に該当のファイルを作成していきつつ、Controller側の処理を一部見なおせば、おそらくOKな状態になったかと思います。

今後、1.3に着手する時には、iOS7対応と並行して、Android対応も実施しようかなと考えてます。

少し前にリリースしたアプリを継続してメンテナンスし続けるコツというのを書きましたが、やっぱり使ってるユーザさんの利用状況というか使い方がわからないと、メンテするのがちょっとつらいかなと思ってた、このマイナーアップデートによって、今後メンテしていくモチベーションが少しは改善されるんじゃないかと思ってます