2017年05月10日

iアプリを支えたかった技術 その1

1.iアプリで使われていた邪道な技術

 先日、「Androidを支える技術」の感想を書いたところですが、その昔、私がiアプリを開発し公開していた頃、私なりに…というか、野良iアプリ(ドコモの公式サイト以外で配布されていたアプリをこのように言いました。)開発者の間では、それなりの邪道な技術がありました。

  当時のiアプリは、セキュリティが大変厳しく、データ保存などはもってのほか、着信履歴や電話帳の取得なども今のandroidで許されることは、ほとんどできませんでした。特にデータ通信に関しては、自分のアプリをダウンロードして来たサイトにしか接続できないようになっており、そのためか、iアプリを対象としたウィルスは、一部存在していたようですが、ほとんど聞きませんでした。

 そのため、野良アプリ開発者の間では、どうにかしてこれらの制限を回避する方法が、ひたすら探求されていた訳です。

 そこで、今回は、もう誰も振り返らないこれらの技術ですが、「Androidを支える技術」に張り合って(張り合えないって(^_^;))、自分の記憶として書き留めておきたいと思います。

2.画像ファイルを利用したデータ保存

 iアプリにとって、データ保存の方法が正式に存在しないというのは、かなり致命的でした。個人のデータを蓄積するスケジューラアプリなどは、こつこつと書き溜めておいた数カ月の予定が、アプリの不具合や、誤ったアンインストールによって一瞬にして消滅してしまいます。私も何度かデータを失い、バックアップが取れていたらなぁと悔しい思いをした経験があります。

 当時のiアプリがその外部に書き出しを許されていたのは、画像の保存だけでした。カメラアプリでは撮影したデータを保存することができていました。

 そこで、当時の野良アプリ開発者は、ここに目を付けることとなります。

 当時許されていた画像の種類は、GIFとJPGでした。

 GIF画像のフォーマットを研究してみると、そこには、コメントブロックという、画像を作成したアプリ名とか作成時間やカメラの絞りの値とかの情報を書き込めるところがあるのに気が付きます。これを利用できないかと思いました。

 そこで、画像エディタを使い、手始めに1ピクセルのGIF画像を作成してみました。次にこれを byte の配列としてiアプリの内部に保持し、このコメントブロックの位置にそのままiアプリのデータをテキストで書き込んでみました。当初はうまくいきましたが、データが大きくなるにつれ、GIF画像が壊れて作成できなくなりました。

 ここで、GIFの公式ドキュメントをよく見てみました。GIFのコメントブロックのフォーマットは、先頭1バイトが長さ、後に続く1〜255バイトがデータで、最大長255バイトとなっています。つまり、大きなデータは256バイト単位に分割する必要があることがわかりました。

 理屈はわかりましたので、この正式なGIFフォーマットにそってデータを作成し、このコメントブロックにおさめてやればiアプリからGIF画像として書き出すことで、iアプリのデータが外部媒体に保存できるようになりました。

 しかし、当時は、やはり機種によっては正式フォーマットに従っていてもGIF画像作成に失敗することがありました。機種によってはiアプリからGIF画像に書き出すときに、余計なことに、折角書き込んだコメントブロックにカメラの絞りなどの撮影状況を書き込んでしまうものがあったのです。これはどうしようもありませんでした。

 そこで、もうひとつ許されていたJPGは利用できないものかと思いました。これも公式ドキュメントを読んでコメントブロックに書き込もうとしたのですが、野良アプリ作成の先駆者達の情報を探してみると、単に1ピクセルとして作ったJPG画像の後に、テキストデータを付け足すと保存可能とのことでしたので、やってみるとうまくいきました。

 ですので、当時は、あちこちの友人からドコモのガラケーを預かっていろいろとテストしてみました。その結果、GIFが利用できる機種とJPGが利用できる機種、両方利用できる機種があることが判明しました。そこで、iアプリの中では、機種毎に条件分岐して画像の種類を振り分ける方法をとった訳です。

 実は、この機種毎のテストこそ、大変な時間と労力がかかりました。

 今は懐かしい、古き良き時代の話でした(^^)

今も持っているテスト用のガラケー

garakei_list.png
続きを読む
posted by 【なかま】 at 15:15 | Comment(0) | android