(5)Twitter対応


 多くのユーザーから要望のあったTwitterへの書き込み機能も初めて装備した。記事の要約を表示する画面で、右上の機能ボタンを押すとアクションシートが登場(写真11)。Twitterに記事のタイトルを投稿できる(写真12)。デフォルトのハッシュタグは「#itprojp」。書き込みに成功すると、そのユーザーの直近の書き込みが5件だけ表示される。

写真11●右上の機能ボタンを押すと出てくる
[画像のクリックで拡大表示]
写真12●Twitterに投稿
[画像のクリックで拡大表示]


 Twitterに投稿するには、TwitterのユーザーIDとパスワードの入力が必要である。認証の仕組みに「OAuth」を使っており、TwitterのユーザーIDとパスワードのデータは、アプリ側ではなくTwitter側で持つ。アプリでユーザーIDとパスワードをキャッシュしているわけではないので、ユーザーとしても安心感があるだろう。


 例えば、初めてTwitterに投稿する場合は、アプリ上にTwitter側のアカウント認証サイトを表示する。いったんTwitter側に認証されると、アプリはTwitter側に「アクセストークン」を発行してもらえる。このトークンをアプリ内のキャッシュとして保存。2回目以降はトークンを使うため、認証の必要がない。もちろん、これらはアプリ内部の仕組みの話であってユーザーは「アクセストークン」という言葉を一切理解する必要はない。


 Twitterのアカウントを変更したい、リセットしたいということもあるかもしれない。その場合は「設定画面」で「起動時にTwitter IDをリセット」を選べばよい。このスイッチがONになっている場合、ITproアプリは起動時に、上記のアクセストークンをクリアーする。

(6)libxmlを使ってパース処理を高速化


 このほか、直接ユーザーの目には見えないが、内部の処理を改善したところもある。その一つがRSSデータのパース処理である。


 従来のITproアプリでは、XML文書からデータを抜き出すパース処理に、Objective-C用のフレームワークが持つ「NSXMLParser」というオブジェクトを用いていた。詳しくは、こちらを見ていただきたい。


 簡単にいうと、iPhoneアプリの開発では、XMLデータのパースに「NSXMLParser オブジェクト」を用いる方法と「libxml2 ライブラリ」を用いる方法がある。前者は使いやすく、後者は高速である。ITproアプリ1.xまでは、NSXMLParserを用いていたが、2.0ではlibxml2を用いた。それにより、パース処理の高速化を図った。


 ただ、実際にタイムを計測したところ、パース処理高速化の効果はわずかか、ほとんど体感できないという結果となった。ネットワークからのダウンロードにかかる時間が大半を占めており、時間帯などによるネットワーク応答速度の誤差の方が、パース処理高速化による差より大きいからだ。


 メモリーの消費量もなるべく抑えるようにした。iPhone OSでは、バッテリーに負荷がかかるガベージコレクション機能は無効になっている。iPhoneハードウエアが搭載する物理メモリー容量も大きくない。ITproアプリ新版では、新機能を加えつつもメモリー消費量を従来のバージョンと同じレベルに抑えるようにした。従来のバージョン1.xではホームボタンを押すと再起動が必要だったため、メモリー消費の点では有利だった。しかしサスペンド状態で常駐する新版では、メモリー問題がより深刻。このためメモリー消費量の多いUIWebViewなどの採用を避ける、オブジェクトをなるべく再利用する、などの方法で極力メモリー消費量を抑えた。「全文を表示」ボタンを押すと、アプリ内に「WebView」が現れる従来の方法ではなく、別アプリのSafariを起動させているのはそのためだ。


 ただ、オブジェクトの再利用などメモリー消費を抑える工夫には多少危険なところもある。iPhone OSはメモリー不足時に、アプリが所有しているオブジェクトを解放してしまうことがあるからだ。アプリ側でこれを想定した処理を実施しないと異常終了する。新版ではこれを防ぐ処理を施したが、クラッシュが頻発するようなら早急に修正版をリリースする必要があるだろう。


 以上、さまざまな新機能が加わったが、ユーザーから見るとまだ不十分な点はある。例えば、ネットにアクセスしないと追加文を読めないことや、ランキング表示がタイトルのみである点などである。今回は、RSSデータを配信するサーバー側には手をつけておらず、アプリ側の修正だけだったためこうした不便さは多少残った。将来的にはサーバー側もバージョンアップしトータルとして使い勝手を高めていく可能性はある。