2015年3月30日月曜日

アプリ開発に失敗した話

こんなの出来たよ!もいいけど、たまには失敗についても語ろうぜという企画です。

どんなアプリ(のつもり)だったか


WiFiSD カード上にインストールするWeb アプリケーションです。
 (※Windows Store Appでは無いです)

一般に、WiFiSD カード上の写真をブラウズする際、Exif情報を取得するには一度画像をホスト(PC・スマートフォン等)に転送する必要があります。1枚のサイズが数MB~数十MBになる最近のカメラではそれなりに時間が掛かります。

そこで、WiFiSD カード上でLua スクリプトによりExif 情報を抽出し、ファイルとして保存しておけば便利だろうと考えました。
画像1枚あたりのExif情報はせいぜい1KB程度ですから、カード内の画像全ての情報を取得し、Exif 情報…露出補正のEV値、シャッタースピード、焦点距離、使ったレンズ等でカテゴリ分け・並べ替えも現実的な話になります。

実際、自分が外でカメラ+WiFiSD カード+スマートフォン・タブレット で使う場合、「あの時EV すこし弄って撮ったあの写真を原寸で確認したい!」と思っても、それを「探す」には結局何枚も時間をかけて転送するか、又はカメラの小さい液晶で探すかしなければならず…これはあるべき姿では無いだろうという問題意識がありました。

なお、WiFiSD カード上にインストールし、基本インターネットには接続していないという形式上、所謂ストアのような支払や、広告表示等による収益化は困難です。
このため、このアプリについては…DLページにPaypalのリンクでも貼り、便利に感じてくれたら少し払ってください、くらいが現実的な所かな…程度に考えていました。

開発計画


開発に当たっては、大ざっぱに3段階で進めようかなという計画でした(このあたりMSCC の効果が見られる)。


  • Phase 0 Jpeg 画像からExif 情報を抽出しJsonファイルで書きだすLua スクリプトの製作(PC上のLua 環境で)
  • Phase 1 WiFiSD カード実機での動作確認、摺合せ
  • Phase 2 WinJS を使ったWebインターフェースの作成


0・1については合わせて2週ほど、2は各OS上のWebブラウザ動作確認が手間なので1か月程度、全体では2か月くらいで出来るかなという目算でした。なので、もし継続していれば3、4か月は掛かったかもしれません。

Phase 0

少しググったところ、「Luaだけ」で書かれたExif 抽出コードはどうも存在しないようなので自前で書くことにしました。
Lua スクリプトを触るのは初めてで、そもそもバイナリファイル読めるの?というレベルでした。が、Lua はシンプル故理解しやすく、Exif の仕様書を横に見ながら進める事でIFD0、Exif・GPS・Interoperability IFD をデコードしてファイルに落とすコードが出来ました。

なお、JPEG・Exif構造の理解にはこちらのページが大変、大変参考になりました。
JpegAnalyzer Plus オンラインヘルプ
http://hp.vector.co.jp/authors/VA032610/contents.htm

Phase 1

WiFiSD カード上のLua 実行環境でのExif 情報抽出自体は成功しました。

が、
原因は判りませんが、WiFiSD カード上でスクリプトを動かすとWiFiSD カードがPC・カメラからアクセス出来なくなる、という現象が頻発しました。最初はファイル書き込みアクセスが宜しくないのかな?と、ファイルサイズを減らす・頻度を減らす等試していたのですが、一度試行する毎にアクセス不可→カード再フォーマットという状況に陥っていました。
最後はファイルの読み込み・Exif デコードのみを行い書き出しはしない、というスクリプトを試しましたが、それでも状況は変わりませんでした。十数回のトライ&エラーの後、遂に再フォーマットすら出来なくなってしまいました。

後で気づいたのですが、
Segmentation Fault 氏が遭遇した現象に近いものであったようです。
出たばかりという事もあり、なかなか気難しいカードでした。

新たにWiFiSD カードを買ってくる、という手もあるにはありますが…

  • 4000円の追加出費は痛い
  • 同じFirmware なら新しいカードで試しても結局同じでは?

という事もあり、ここで諦める事にしました。
無念。

Phase 2

Microsoft のJavaScript Framework WinJS を使い、Webブラウザ上にStore App のようなフラットなUIを出せたら面白いだろうなータッチでも使いやすいしAndroid やiOS でも動くし~~~でもWinJS 実際使ってる人見たことねえな~ホワワワーンと考えていたのですが、妄想だけで終わってしまいました。

教訓

ハードウェアは壊れることがある

余談

最初はWiFiSD カード についての記事として書いてたのですがどうも違和感があり…よくよく考えてみると、WiFiSD カード飛ばしてしまった事よりも、それでアプリを作られなくなった事が自分は残念だったのだと気づいて書き直したのでした。



0 件のコメント:

コメントを投稿