PR

 iPhoneがiPod touchなどと比べて圧倒的に魅力的だったのは、スマートフォンならではのネットワーク接続機能のおかげだろう。3G回線やWi-Fiにより場所を選ばずネットワークを利用できるので、さまざまな場所や状況を想定してアプリケーションを構想可能だ。それにより、今までにない利用シーンを想定したユニークなアイデアのアプリケーションを作ることができた。

 開発においても、iPhoneのフレームワーク「Cocoa Touch」には、ネットワーク経由でのデータ操作を念頭に置いた便利なメソッドがある。例えば、XMLのパースを担当するNSXMLParserオブジェクトの[initWithContentsOfURL:]というメソッドである。

 これは、パーサーオブジェクトのイニシャライズ(初期化)時に、指定したURLから直接XMLを取得し、パース処理を行ってくれるという優れものだ。このメソッドを利用すれば、面倒なネットワークの接続処理などを一切気にせず処理を記述でき、手軽な実装が可能だ。

 このように、iPhoneアプリにおいてネットワーク接続は当然の存在として扱われ、簡易な実装も用意されている。そのため気軽に実装してしまいがちだが、現実はそう単純ではない。

 なぜなら、iPhoneユーザーはネットワークにつながっていることが当たり前と感じており、うまくつながらない時にも心地よい動作をしてくれるアプリケーションでないと不満を感じるからだ。

 このような不満を解消し、ユーザーにとって便利だと感じるアプリケーションを作るには、ネットワークが不安定な状況を想定した上で、ネットワークの切断が起きても利便性が落ちないアプリケーション設計を行う必要がある。

 まず、データのロード時や取得待ちの間にアプリケーションを止めてしまわないように工夫する。先ほど紹介したような便利なメソッドは同期処理でネットワークを介してデータを取得するので、ネットワークの状況によっては処理が停止してしまう。ネットワークが不安定な状況を想定すると、上記のような簡易メソッドを使うのではなく、非同期でネットワーク処理を実装すべきだろう。

 ネットワーク接続が切断している場合でも処理を継続させるには、ローカルにデータを置いておくことだ。そうすれば、(最新データではないかもしれないが)処理を継続できる。正常にネットワークが使えるときにはローカルデータを更新し、切断時には過去に取得したデータによって表示・操作を行うようにアプリケーションを設計する(図1)。

図1●ネットワーク切断時でも処理を継続できるようにデータをローカルに置く
図1●ネットワーク切断時でも処理を継続できるようにデータをローカルに置く

 iPhoneでのアプリケーション設計では、ネットワークの状態に対応したきめ細やかな設計を心がけるべきだろう。


亀本大地(かめもと だいち)
アシアル株式会社 エバンジェリスト
1981年生まれ。学生時代にPHPと出合い、その魅力に惹かれてアシアル株式会社に入社。それをきっかけに日本PHPユーザ会の運営にも参画するようになる。現在は、同社のWeb開発、スマートフォン開発を中心にしたシステム構築業務に従事し、特にiPhoneに関する執筆・講演なども多くつとめる。