2010年8月2日月曜日

で、リアルタイムキャプチャ

というわけで、リアルタイムでキャプチャして、そのキャプチャデータのbitmapへアクセスする方法を調べたさ。

これ、Appleがサンプルを出しているんだけど、うちの環境だとちゃんと動かない。
なにがダメかってと、captureOutputメソッド(delegate)で取得したUIImageをそのdelegateの外(メインスレッド)から使おうとすると、データの中身がなくなっているのです。
原因はよくわかんないんだけど、これはdelegateを呼び出すタイミングと外側から使おうとしてオブジェクトへアクセスするタイミングでうまく噛み合わなくてダメなんじゃないかと憶測。delegate内で処理を完結させればいいのかもしれない。

AbrViewerで使うならdelegate内で処理を終わらせればいいんだけど、 別アプリで使おうとしているアイディアではキャプチャしたデータを外側で使いたいから、これじゃダメ。
 なので、いろいろ試行錯誤で実験してみた。

で、最終的にどうしたかというと、delegateの中で sampleBufferからCGBitmapContextCreateでbitmapを作って、そこから CGImageを作る。
そこから定番のCGImageGetDataProvider/CGDataProviderCopyDataでCFDataRefを作って、そのコピーをメンバ変数に設定して全体で使えるようにしておく。

使う側では、そのコピーからCGImageを作って、UIImageにしてやる。
っと、ここまでやればキャプチャされたデータをメインスレッド側で好き勝手に使えるようになるみたいだ。

結構、めんどくさいね。。。。(^^;

2010年7月30日金曜日

もう先週の話だが、、、

UIGetScreenImageがまたもや非公開API扱いになった。


一応、iOS4からリアルタイムでカメラキャプチャデータを取得するAPIができたので、それを使ってくれとAppleからメールが来てた。いまいま公開されてるアプリを非公開にするわけではないらしい。
んま、iOS4からしか対応できないから、しかたない。

つかさー、こんなAPI、最初から用意しとけってーの! > Apple

で、どうするかだ、、、
ま、そんなに難しくはないようなので組み込んでみることにしますよ。まったく、もうっ。

2010年7月17日土曜日

はてさて、

夏もだいぶ本格的になってきつつある梅雨の後半、猛ダッシュ。
(株)けろんぐん も東京に越してきてから早2ヶ月が過ぎました。

その後、けろんぐんはなにをやっているかって?
いや、はい、もちろんiPhoneアプリの開発はやってますよ、、、やってるはず、、、やってたっけな?、、あれれ???



ahaha!

ええっとですね、、、、資金不足です。運転資金ありません!!
もともと貧乏会社なので運転資金なんてものはないのですが、さらに貧乏になりました。

なので、けろんぐんの代表、わたくしことohnetaは働きにでています!w


いやぁ、もちろん、この仕事もけろんぐんとして受注した仕事なので、立派にお仕事ではあるのですが、iPhoneアプリを作っているわけではないのです、、、
まぁなんというか、、、SIerな感じの仕事をして、ちょっと食いつないでいます(^^;

で、普通にお仕事なので、けっこうフルタイムで時間を拘束されるわけで、終業時にはけっこうクタクタ。iPhoneアプリを作るパワーが、もう、ほんの少ししか残っていません。

そのほんの少しのパワーを寄せ集めて、バージョンアップやら新アプリやらを、ちまちまとやってますので、この年末年始でいっきにアプリを作ったようなスピードでは、いまはできてません。トホホ。

 などと、いいわけを書いてみる昨今です。

いくつかおもしろいアプリのアイディアはあるので、 やってみたいのだけどなー。
だれかプログラムつくってくれる人おらんかな?けろんぐんで雇えるかな?という問題もあるのだが。。。w

2010年5月10日月曜日

移転したよー!

まだインターネットへは仮アクセスしかできないのだけど、(株)けろんぐんは実質的に東京に引越しましたよー。
いや、登記上はまだ本社は和歌山にあるのだけど、実際の会社機能は東京に移りました。
今月末に登記上も東京にもってくるつもりです。

いやぁ、ながかった。。。。
けろんぐん設立前年に和歌山に移住して、勢いで会社をつくって、、、、ん、、実に丸3年間、縁もゆかりもないど田舎生活でした。


で、これから、東京でなにしていけばいいですかねぇ、、、やっぱまだiPhoneアプリ開発なのかなー、、、、ちょいとばかし悩んでみます。

2010年4月6日火曜日

iPhoneで任意のオンラインストレージを使ってファイルのやり取りをしたいのさ!

iPhoneでもiPadでもそうなんだけど、基本、MacなりPCを母艦としてiTunes経由でデータのやりとりがされているけど、それってカッタるくない?
世の中、クラウドだとか騒いでいるんだから、ファイルのたぐいはオンラインストレージでいいんでないの?と思うのだけど、Appleはそう考えていないようなのよねー。

 いや、Appleが MobileMeでストレージスペースを提供しているのは知ってるけど、あれって有料だし。DropboxやSugerSyncなんかの無料なサービスがあるんだから、そっちを使いたいのが消費者の気持ちってもんだよね。べつにそんな貴重なデータを残しておきたい訳じゃない場合とかならなおさら。
つか、すでに使っているサービスがあるなら、そっちを使いたいじゃない?
 ま、オンラインスストレージベンダーさんたちもiPhone用アプリを提供してたりするんだけど、あれも自分ち専用だったりするから、どうしたものかと。

いろんなアプリがデータのやり取りしたいしたがってるとおもうのよねー。私のAbrViewerだって履歴のエクスポートをファイルでやりたかったもの。もし、ファイルが取り込めるならウィッシュリストの取り込みとかやりたいもの。。。


そんなこんなで、アプリを提供する側からいえば、ユーザがどこのオンラインストレージを使ってもかまわないんだけど、いちいちそれらのサービスに対応したコードを用意するのは面倒なので、共通ライブラリがあれば便利じゃね?と思うわけですよ。
重要なのはアプリが出し入れするファイルであって、そのファイルを置いておくサービスなんかどこでもかまわないわけ。でも、広くサポートはしたい。てか、ストレージ業者じゃないんだからヘタに囲い込みたくないわけです。Evernoteじゃあるまいしw 

ライブラリ1つで、ユーザがどこでも好きなサービスを使ってもらってかまわない。自由な選択にしたい。
今でも、多くのオンラインストレージサービスってAPI持ってたりするから、それらアクセスするための共通I/FをもったライブラリをiPhoneなりAndroidなりなんなりに提供できれば、デベロッパーもハッピー、ユーザもハッピー、ストレージベンダーもハッピー(かな?w)になって、いいんじゃね?
 と、思いついた、とある4月の午前中。


こういうアイディアに資金だしてくれるとこないかなぁー? ひと月もあれば立派なもの作れる気がする。速攻作りたいよなー。
それに、ライブラリ販売すれば、それなりに売れるとおもうんだけどねぇ。

2010年4月3日土曜日

AbrViewer 1.2.1 および AbrViewerLite が公開されました。

やっと、やっとのこと AbrViewer1.2.1AbrViewerLiteの申請が通りました。
長かった、、、2回rejectを喰らって、途中でバグを発見してdevelopper rejectを3回、、計5回のバイナリ提出し直し。
ふぅ。

まぁ、これでとりあえず無料版(AbrViewerLite)も提供できたのでヨシとしましょう。
いろいろ機能が増えてるので便利になっているはず。と思います。


どうぞ、よろしくw

2010年3月27日土曜日

あはは、Liteがrejectくらった!

なんか無料アプリのほうが審査がはやいのかな?早々、reviewステータスにかわって、早々連絡がきた。

rejectされた。。。。orz



いや、単にUIボタンの使い方が悪かっただけで、すぐに直せるとはおもうので、落ち込むほどでもないんだけど、、、やっぱ、rejectくらうとちょっとショックだな。


てか、今回のバージョンを提出してから、さらに新しい機能を思いついたので、ついでだからそれも入れて、再提出しよう。。。


ふみぃ。。。。

2010年3月26日金曜日

これで、次

これで、とりあえず次のやつのやりかけのを再開することができる。
んま、申請通ったら通ったで、また、いろいろやること出てくるので、それはそれでまた時間がとられるのは目に見えているのだが、、、、w

AbrViewer 1.2.1申請だしましたん。今回からLiteもあるよ。

何日か前に書いたとおり、Appleの申請が通れば、AbrViewerがバージョンアップできる予定。
バージョンアップ情報をブログに書いた後からも、某ユーザさんからいただいた要望などを取り入れて、若干のUI変更と機能追加をしましたよ。
  1. ISBN入力画面の修正
    ISBN入力フィールドのフォントを大きくした。
    入力された文字数をカウント表示をするようにした。
  2. アプリ内ブラウザ画面からのISBNリンク 
    amazonサイトが表示されているとき、そのページでISBNが取得できたらそれをボタンにして表示。タップするとブックレビューを表示
  3. スクロールコントローラの追加
    それぞれのレビューの下位部分に画面を強制的にスクロールするボタン(コントローラ)を付けた。
1はバーコードスキャナが使えない環境での入力を補助しようとするものの一環。

文字が小さいとの意見をもらったのでテキストフィールドを横一杯まで広げた。
電卓アプリくらいのUIがいい、と言われたのだけど、さすがにあれを作るのは面倒だったのでテキストフィールドで実現。

文字数カウント表示は長いISBNの入力の目安になれば、、、という感じ。
数字をハイフンで区切って!って要望もあったのだけど、ISBNのハイフン間の文字数ってISBN仕様上は不定なので、とりあえずなんか、、、とおもって作ってみた。


2はamazonをブラウズ表示して他の関連書籍に移ったとき、それもAbrViewerのレビューで表示してあげようという機能。自分で作っといてなんだけど、これは便利だ。

amazonの商品紹介ブラウズ中だと画面の下側にISBNボタンが表示されるので、これをタップすれば、その本のレビューが読める。
でなにが便利って、レビューが表示されれば履歴に入るようになっているので、これと履歴のエクスポートを併用することで、簡単なウィッシュリストを作ることができる。
 もうちょっとiPhoneの画面が大きければ更に使いやすいんだろうけど、それは無い物ねだりだし。。。


3はレビューを読みながらフリックする面倒くささの低減をはかったもの。 だらだらとレビューをいくつも読んでいると、先頭に戻るためのフリックが結構面倒になる。ので、一気に先頭にもどったりするのに便利。

下ボタンで次のレビューまで強制スクロール
上ボタンで現在のレビューの先頭まで強制スクロール
二重上矢印でこの画面の先頭までスクロール
このボタンは大きめなので邪魔だと思う場合は設定でON/OFFできるようになっている。



などと、機能が結構追加されたのので、今回のリリースはバージョンも 1.2.1 にすることにした。
最後の .1 はちと内部的な問題があったので付けました。あまり深い意味はない。





それで、これと同時に若干の機能制限をつけた無料版 AbrViewLite も申請。








こちらの制限は、
  • 履歴が5つまで
  • 履歴のエクスポートができない。
  • 全レビューの取得ができない。最大20まで。
  • レビュー表示で5回に1回くらい 「これはLite版なのでFull版買ってよ、おねがい♪」の旨のメッセージが強制表示される。
など。
「買ってよ、おねがい♪」メッセージがうざいくらいで、本質的な制限ではないので、バーコード入力を試してみたい方はこちらでもいいかもね。。。。
(本音ではFull版を買ってもらいたいのだけどw)



ということで、さっき申請したので、うまくいけば来週中には公開されるかも。あくまでもうまくいけば、、です。どこでrejectされるかわからんから、、、Appleの場合。汗

うまくLite版が公開されたら、ちょっとキャンペーンやってみようかなと検討していますので、こうご期待! w

2010年3月23日火曜日

なにがどう、、、とはいえないんだけど、

昨晩から今朝にかけてネット上で起きた出来事により、流れが変わった気がする。
これが、くすぶっていたものが流れ出て湧き溢れる潮流であってほしい。

2010年3月19日金曜日

新アプリの前にAbrViewerバージョンアップと...

新アプリをリリースするまえに AbrViewerの拡販のために無料版をつくることにしました。
とはいえ、今時、無料版といっても機能を削るわけにもいかないので、いま販売しているものと同じくらいの機能は備えるつもり。制限は履歴の数くらいかなぁー。

そうなってくると、有料版の差別化をしていかないといけないので、有料版は同時にバージョンアップ。という話になってくるわけで、その内容です。

  1. ISBN入力フィールドにクリアボタン
    入力のクリアに本体シャッフルかキーボードバックスペースしかなかったので、一気に全部消すボタンを新設。
  2. [978]の短縮入力ボタン
    ISBN-13の場合、先頭の「978」は固定なのでそれを簡単に入力できるボタンの新設
  3. ISBN-10の X に対応したキーボード
    実はISBN-10のチェックデジットが「X」という本があるがその入力方法がなかったのでキーボードをカスタマイズして「X」が入力可能なように機能追加。
  4. ブックレビュー後にamazonサイトの切り替え
    ブックレビューを表示後、同じ本を別amazonで再表示できるよう機能追加
  5. ISBN検索失敗後にISBNを保持したままamazonサイトの切り替え
    4と同様の機能なのだが、こちらはISBNが見つからなかった画面からのamazonサイト切り替え
  6. 履歴情報のメールによるエクスポート
    プレーンテキストとHTMLテキスト(amazonサイトへのリンク付き)が設定で選べるエクスポートメール。
  7. amazonサイト表示のアプリ内webブラウズ
    いままでmobile safariで表示していたamazonサイトをアプリ内のwebブラウズ機能で実現

と、これくらい。

4、5のISBN保持したままamazonサイトの切り替えってamazon.co.jpしか使っていない場合、あんまり恩恵がわからないとおもうのだけど、英語の本などの場合、扱っているamazonサイトが US、UK、CAと3カ国あったりするのでそれぞれでレビューの内容も違うからそれを読み比べることも出来るようになる、という英語圏の人向けの機能。日本ででも洋書のレビューを読みたいときには便利かもね。いちいち設定画面からamazonサイトを切り替えないでも済むし。

6はせっかくの履歴情報をPCなりなんなりに取り込みたい、という人向け。将来の書籍管理機能のへの布石(えっ?) www

7は自分で使っていて不満だったwebブラウジングの内包。いったん別アプリを起動しちゃうと戻ってくるの面倒だったから。いや、ver.1.0でも付けたかったかったのだけど、手を抜いてました。すんません(汗


こんくらいしか機能的には変わってないので ver.1.1ってことにします。


えっ!?バーコードの認識率上げろって?

わーわーわーーーーぁ キコエナイ。キ、コ、エ、ナ、イ、ヨーォOおoヲ---。。。。。














写真は開発中のものです。リリース時にはもちっと綺麗になります。なるでしょう。なると思います。なるのか?なるのかなぁ????



ISBN入力フィールドにクリアボタンの新設
[978]の短縮入力ボタンの新設



ISBN-10の X に対応したキーボード



ブックレビューを表示後、同じ本を別amazonで再表示できるよう機能追加
ISBN検索失敗後にISBNを保持したままamazonサイトの切り替え履歴情報のメールによるエクスポート


プレーンテキストとHTMLテキスト(amazonサイトへのリンク付き)が設定で選べるエクスポートメール。


などと。

2010年3月3日水曜日

こんなん見ちゃったらさー、自分のレベルあげなきゃしゃーないやん。

AbrViewerは世間のiPhoneアプリと同様、なかなか売れない。
販売努力をまったくしてないので、こうなるとは思っていたが、これほど売れないものなのかと。
マジで対策せねば死活問題なのだが、この話題はそれはそれでおいといて、、、、w

今、次のプロダクトをつくっているのだけど、いろいろ参考にと他の方々のアプリを調べていた。
個人的には奇をてらったUIは好きじゃないので、iPhoneのガイドラインに沿って作るべき。と考えているのだけど、これを見たらヤラレました。自分の考えが粉々に砕け散りまくった。

Awesome Note
http://bridworks.com/

機能はもちろんだが、そのUIとデザイン。まったく知識なしに使い始めたのだけど、
「こうするためには、こうすればいいのかな?」
って操作すると、実際にそうなる。
なに、これ!? なに?この爽快感!!

そして、これを味わうと 「じゃ、この場合は?」 と自ら課題を作って、そのアプリの操作性自身を楽しみ出すことに気がついた。そして、だんだんそのアプリ自身が好きになっていく自分。

もう、こうなると、より難しい操作ができなくても、それはそれでOK。だって好きになっちゃったんだもん、多少の問題は目をつぶっちゃうよね。てか、それも含めてOKだよね。だって好きになっちゃったんだもん。愛は盲目!w


で、アプリユーザならここまででいいのだけど、一応、アプリを作る側の人間なので、これを冷静に考えてみると、

『解決すべき問題に直面したときに、自分が思いつく方法(操作)で問題が解決できると、そのプロダクトへの親近感が増す』

ようである。
iPhoneアプリのように操作性が限定される場合はさらにそれが端的に発揮されるのであろう。
携帯サイトをつくっていたときも、どんだけ直接的に必要な画面に移行できるか。ってのは課題の1つであったわけだし。


しかし、さすが定番アプリ。iPhoneアプリは消費されるものなので、その中で選ばれて勝ち続ける。ってのはすごく大変だが、これはそのデザインと操作性で圧倒的であった。
なるほど、ここまで作らねば勝てないのか。

てかさぁーーー、こんなの見せられちゃうと、ここがスタートラインになってしまうよ。
これくらいできて当たり前。この先をどうするかが勝負になってくる。

やはり後発組には厳しい市場だなー。
ま、大きな壁ほど乗り越えるのも楽しいのだけどね。まだ、乗り越えられる程度の壁だしw


2010年2月18日木曜日

お誕生日だった。

いやぁ、また年取ってしまいました。とほほ。

2月17日は私のお誕生日でした。
ここ数年、嫁さんの流行で私のお誕生日におかしなケーキを注文する。というのがあるらしく、
昨年はこんな感じ


やら、こんな感じ


でした。

で、今年。



 

そう、きましたか! www
iPhoneですね、これ。

しかも、AbrViewerがちゃっかりのってますw
つか、アイコンがすべて作ってあるよ。。嫁さん、こんな無茶発注かけて、ケーキ屋さん、ごめんなさいw

なので、せっかくなのでケーキ屋さんの力作アイコンを1つ1つ見ていきましょう。
左上から。
  
コンパス

  
乗換案内

 
Google Earth

 
Skype

 
UstreamのBroadcaster

 
Flickr

 
ニコニコ動画

 
セカイカメラ

 
Classical

  
VoiceBand

 
Dropbox

 
RedLaser

 
和英和

eBay

 
aMart

 
で、AbrViewer

下段は定番のこいつら。
メール、電話、Safari、iPod

いやぁ、やはりパティシエ、Good Job !
こんな仕事してもらって通常のお誕生日ケーキと同じ値段だった(らしい)ので申し訳ないので、お店のリンクだけでも貼らせてもらいます。


というわけで、ここを私がいただきました。w


毎年、毎年、ありがとう、嫁さん。愛してるよw。


p.s.
ムービーにしてみましたw
http://www.nicovideo.jp/watch/sm9762021


2010年2月15日月曜日

でた! AppStore/utilitiesの新着トップだ!

iTunesのAppStoreに新着として表示されました。

これ、どうもリリース日のものをアルファベット順に並べるようで、偶然にも「AbrViewer」なんてけっこう索引の前めの名前だったのでトップページの最上段に表示されました。
あはは、これは良い誤算w

これが日本のiTunesの画面。

こっちがアメリカのもの。


まんなかコンテンツの左上に注目!ほらほら!


左上!左上!


うほほ。らっきぃー♪
つか、他のアプリはエロっちぃのが多いぞ?ここユーティリティカテゴリ―だったよな?(^^;

で、つぎ。

音声ものにするつもりで、録音とか再生の実験コードを書いてます。
MP3を再生させるコードを書いて、テストで何曲かいれてみて、いろいろ操作してたら、そっちが楽しくなってきてしまって、アプリ用のコードが書けてません。(^^;


もちっとマジメにやりますよ、、、はいっ!

無事販売開始されたようです。

AbrViewerはアメリカ太平洋標準時2月14日0時から iTunes AppStoreで販売がはじまりました。
英語と日本語に対応しているので、usと日本のiTunes Storeから検索効いて買えるようです。

iTunesのURIを設置しておきます。

何人かの知人が購入してくれたようで、すでに鋭い意見をいただいています。
さっそくバージョンアップになるかも。。。(^^;


あ、あと、サポートページは結局 mobile safari対応に間に合っていません。ただのwebページしかありませんので見づらいです。
これも実施日未定ですが対応予定になっています。

2010年2月13日土曜日

AbrViewerのサポートページとかいろいろ

AppStoreでアプリを公開するにはサポートのwebページやらなにやらを用意することがAppleから必須にされているので、作った


英語は全く自信なし。とりあえずあるだけ。片言でもあるだけでなんとかなるかな、、、という甘い考え。
実際、私の場合、日本語だってあやしいのに。


で、これを作るついでに会社のwebサイトも、ちゃんと(?)作ることにした。
以前は私個人のwebサイトに会社情報だけ載せてたんだけど、ドメイン自身はだいぶ前から取って持っていたので、それを設定した。

なんと!今時、日本では珍しい .com 企業ですwww
まぁwebのほうはボチボチと更新していきます。


2010年2月11日木曜日

in Review & Ready for Sale

えと、バーコードでISBN読んでamazonのブックレビューを表示するiPhoneのアプリは「AbrViewer」として2月6日にiTune Storeに登録申請しました。
で、2月9日になってin Reviewになり、2月11日早朝、めでたく Ready for Sale になりました。


なにしろハジメテのことだったので、ちょっと(いや、だいぶw)ドキドキしてましたが、けっこうすんなり通りました。
でも、Appleのreviewってどうなんでしょうね?
今回申請してみて思ったんだけど、基本的に申請するものってアプリそのものとそれのサポートサイトのURLくらいで、マニュアル的なものはまったく提出しない。それに今回、サポートサイトもちゃんと出来てるわけではない状態だったので参考にしたとも思わわれない。つまり、いきなりアプリ渡されて、これをAppStoreにのせるかどうか判断してるわけだよね?


これって手の込んだアプリとかだと難くしねーか?
今回、私が申請したヤツは単機能だから比較的わかりやすいし簡単だろうけど、手の込んだヤツだと目的を達成させるための操作が煩雑だったりすると、reviewerの中の人も困惑だろうに。。。
ああ、だからreviewの期間ってアプリ次第でバラバラなのか。


つまりだ、はやくreviewを通りたかったらわかりやすい単純な操作にしとけ。ってことだな。
じつにiPhoneアプリのガイドラインに沿ってるな、と妙に納得w




あ、AbrViewerは登録時に公開日を2月14日にしてしまったので、それまで公開されませんけどねw





2010年2月8日月曜日

カイゼンカイゼンまたはオオキクカイゼン

バーコードは読めるようになったので、アプリ全体の機能をすべてつけて、いざ、大量の本で実地試験と相成りました。

とりあえず、作業デスクのそばにある何冊香の本で試してみたところ、うまく読み取れないコードがいくつかでてきた。
バーコード自身を目視してみると白黒が1モジュールづつ連続しているところだったり、4モジュール連続で白とかの部分がうまく読み取れない場合があった。
(モジュールとはバーコードの最小単位。あのバーの一番細いのが1モジュールにあたる)

自分のソースコードなのでいくらでも手を入れられるし、あーでもない、こーでもない。といった実験もできる。ちょっと反応は鈍くなったけど、手近の本のバーコードが読めるようになった。
まぁ反応の鈍さは複数回のループ処理など、まだコードの最適化をやっていない部分が大きいので、コード確定次第、最適化を施せばいいやと。

ので、自宅にある1,800冊オーバーの蔵書を誇るマンガ棚にいって、かたっぱしからバーコードを読んでみた。(なぜそんなにあるかはここらへん参考にしてね)

、、、、、勝率8割程度、、、、orz

これじゃだめだ。20%も読めない読み間違えが発生する。
せめて95%、希望は99%。願わくば100%認識率にしたい。

ちなみにライセンス買おうかどうか迷ったRedLaserのバーコードは認識率100%。しかもすごい速さで認識される。

負けてる、、、いや、負けてもいいのだけど、負けすぎている。
相手はiPhoneもバーコードも先達で社名からもわかるようにバーコードのプロだろう。
こちとら2日間やそこらでつくったバーコードスキャナだもの、負けているのは仕方がない。しかし、負けすぎだろー。実用にならないよ、、、、80%程度じゃ。

そして、決定的に敗北を味わったのが、いくつかある洋書(主にアメリカ)のバーコードスキャンをおこなったとき。

ぜんぜん認識されない。勝率1割程度。。。
当初からワールドワイドに展開♪とかうそぶいていたのに、なにこのありさま?
アメリカ向けにはバーコードスキャン機能禁止ってしないとならない?
ちなみにRedLaserはこちらも100%認識してました。


 それでも、ちまちまとカイゼンカイゼンを勧めた結果、多少まともに洋書は読めるようになったけど、こんどは日本の本の認識率が下がりだした。

 あっちを立てればこっちがたたず。

もう手詰まり状態で悶々とした日を数日過ごしたので、いっそのこととおもい、バーコード認識部、正確にいえば画像を取り込んでから2値化補正するまでの部分を、まったく新しい方法で実装し直すことにした。
それまでは画面を10分割くらいして、ちまちまドットを数えていたのだが、この新しい方式は分割は3つ。ドットもちまちまカウントするのではなく、X軸の各位置(dot)をY軸方向に全部加算して得られた値からバーコードを内部的に再構成してから、それのドットを数えるようにした。

で、これが大正解!!
日本のバーコードもアメリカのバーコードもほぼ問題なく読めるようになった。稀に間違いがあるよう(経験則からいって1〜2%程度かな)だけど、それも再度バーコードスキャンしてみればちゃんと読める。希望の99%はほぼクリアされただろう。
で、なにが良くなったかって、全体の計算量が減ったので、すごく反応がよくなったこと。レスポンスがいいので使っていてストレスがない。
バーコードをちょっとかざすだけでサクっと読んでくれる。(もちろんオートフォーカスがちゃんと焦点をあわせていることが前提だが)

RedLaserのバーコードスキャナと比べれば、もちろんまだまだ負けてるけど、負けすぎていない。十分実用になる範囲だ。


と、いうことで、この新しい方法を正式に採用し古いバーコードスキャンルーチンは捨ててしまい、これをいれたものをビルドしてAppleにアプリ申請した。
これが2月6日。


さてさて、申請のreviewがいつから始まってどうなることか、まだ先のことはわからんけど、とりあえずiPhoneアプリ第一弾は提出できた。

思いのほかバーコードの認識率がいいので、これを使った第2、第3のアプリの構想もはじめたので乞うご期待!


というわけで、これが現在の本業なのです。

そしてバーコードの読み取り機能

さて、最大の目玉機能であるバーコードスキャンの件。

下調べはamazonアクセス実験なんかと並行して実施してたけど、amazon接続がうまく行くことを確認したので、本格的にバーコードの読み取り機能をつけていこうとした。

下調べ中にわかったんだけど、iPhoneのバーコード読み取り機能ってアプリで販売されている。(RedLaser)
しかも、このアプリは大ヒットらしく、TechCrunchにこの件について記事になっていたくらいだ。
それから、このアプリの会社は、このバーコードスキャン機能を有償でライブラリ提供しているようで、会社のwebサイトにライセンス料金が書いてあった。それによると、、、
  • デベロッパ登録は $50
  • 最低$2,500
  • 5万本以上売ったら、そこからパーセンテージでライセンス料ね。
とのこと。
100本とか200本売れれば御の字だぜ!と思っている身に $2,500はきびしーー。
てか、仕事がなくて貧乏になっているのに、ここで払える金なんぞありません!

とはいえ、バーコード読み取り機能がついてないと、当初の構想の達成にはならないので、最悪、金を払ってでもライセンスを受ける覚悟だけ決めて、まずは自分でバーコードスキャン機能を作ってみることにした。

まずはバーコードとはどのようなもので、ISBNとはどのようなもので、ISBNとバーコードとはどんな風に絡んでいるのか?ってのをwebなどで調べて、それぞれの規格を把握。
これをもとにバーコードの読み取りコードを書いていこうとしたのだけで、その前にiPhone固有の大問題が発覚した。

実はAppleから提供されるドキュメントや前述の「iPhone SDKアプリケーション開発ガイド」にはiPhoneカメラのリアルタイムでの画像取り込み、処理の方法がまったく書いてない。
カメラで写真やムービーを撮る方法はいくらでも解説がありサンプルコードが存在するのに、カメラ機能だけ有効にして写真をとらずに表示されているカメラの映像をプログラムに取り込む方法がまったくわからなかったのだ。
これはバーコードスキャンするほうからすると致命的な問題。だってバーコードの写真をいちいち撮影した上でそれをアプリに読ませて認識されるなんてしたくないじゃない?バーコードにカメラをかざしたら「ピッ!」とかいって即でamazonに飛びたいじゃない?

いやぁ、延々調べましたよ。セカイカメラやUStreamアプリ、それに上記のRedLaserもリアルタイムで画像処理してるんですよ。でもその公式APIが存在しない。まじで途方にくれました。
で、その探しいる途中ですごくヒントになるwebの書き込みを見つけました。

これですべてわかりましたよ。
そうなのです!カメラのリアルタイム画像を取り込むAPIはまったく存在しないのです。そんなものはもともとないんですよ!
カメラの画像を取り込むのではなく、カメラが写したiPhone上の画像を連続でキャプチャすればいいわけだ。
で、キャプチャもAPIがあるわけでもなく、いま現在iPhoneに写っている画像のビットマップメモリを直接参照(実際には一旦、別のCGImageにコピーしたものだけど)すればいいわけです。

実はこの機能も非公開APIなのだけどUStreamが審査を通過してからはその利用が暗黙のうちにOKになったようで、おかげでセカイカメラやそれにつづくAR/VR/リアルタイムカメラエフェクトなアプリも軒並み審査を通過している。
すごく合点がいきました。いっきに視界が晴れ上がった気がしました。

で、さっそくその機能をつかってバーコードをキャプチャし、仕様書をもとにオリジナルで考えたアルゴリズムでバーコードデータをリアルタイムで2値化、補正してみることにした。
それがこれ。
 
画像のが上半分が実際にリアルタイムスキャンしているバーコード。
その中段にあるのが2値化直後の画像。
そして下段、タブバーの上にある細い白黒画像が実際にバーコードとして認識させようとして補正を加えたもので、非常に鮮明にバーコードが二値化された。
で、これをバーコードの規格(JANコード)にそって読み出すと、ISBNコードを取得することができた。
やったね! これで下手にライセンス料を払わないで済むことになるよ!

と、バーコードが読めた瞬間、
「オレって天才! いま、世界はオレを中心に廻っている!」
と、いつもの勘違いを味わっていました。
その後に、まさかあんなことがおきようとは。。。


ちなみに、このバーコードの読取コーディングをはじめてから実際にISBNが読めるようになるまで約2日くらい。結構楽勝!

謎のamazonへのアクセス失敗

さらに続くのだがw

そうなってくると、目的はしっかりしたので、手段を決めて、ひとつづつ解決していけばいいわけです。もう、ここまでくれば50%はできたも同然。
技術的に懸念があるとすれば amazonのAPI使ったことないのでその使い方の習得と、iPhoneでのバーコードスキャン機能。

バーコードスキャン機能はバーコードの規格やら画像認識やら面倒が多そうなので、まずはamazon APIへのアクセス方法を調べて実際にやってみることに。

これはそんなに難しくなかった。
amazonはすでにAWSのEC2をつかっていたりするのでデベロッパとして登録済み。なのでamazonサイトを漁って必要なドキュメントを読んだり、webで解説している人たちのサイトを参考にして自分でもAPIつかってamazonにアクセスしてみることにした。
もちろん、いきなりiPhoneのコードで書くと基本的なところでツマズいた時に原因の切り分けができない可能性あるので手馴れたPHPでwebサービスとして実験コードを書いてみた。資料もあるしPHPのコーディングは慣れているのであっという間に完成。個人的にamazon EC2のサーバを借りているのでそこに設置して実験してみた。
amazon.co.jpにISBNをItemの引数としてアクセスしてみると見事にamazonで表示される情報が引き出せた。これは楽勝!

と、おもいきや、なんかうまく引き出せない場合もある。
まったく同じISBNなのに、うまくできるときとできないときがあり、原因がわからない。ちなみにamazon.comやamazon.co.ukへのアクセスではこのような状況は発生せず、毎回、すべてうまくアクセスできた。amazon.co.jpだけ、なんかダメみたい。
 webで同じ様な境遇が人がいないかと調べたけど、こんな症状はみつからないので、仮説をたてた。

◆仮説
 仮定1.
amazon.co.jpのAPIリクエストを受けるサーバは複数台ある。
(これは仮定ではなくて実際そうだとおもう)

仮定2.
そのサーバは地域もしくはIPアドレスでフィルタされる設定がされている。
もしくはルータとかでフィルタされているかもしれない。
(実際、アクセスしてくるIPアドレスでブロックしていて、amazonからの接続を拒否されているwebサービスもあったらしい)

仮定3.
私が実験しているサーバのIPアドレスもしく地域(us東海岸)がそのフィルタにひっかかっている。IPアドレスはEC2から払い出しされたものなので可能性はある。

仮定4.
で、そのフィルタの設定はamzonのサーバ間で共有、統一されていない。
(不当なwebサービスをブロックしたいなら、一部サーバだけでもブロックすれば恒常的なサービスとして提供できなくなるのでamazonとしてはこれで問題はないだろう)

この4つの仮定が成立していることによって、私の実験コードはうまくいったりいかなかったりしているのではないか?
これはamazon.com/co.uk/.fr/.ca/.de のそれぞれでは発生しなかったため、amazon.co.jpだけの固有の問題だと思われる。

ってことでIPアドレスを変えればうまく行くだろう。という結論にした。
他にグローバルIPアドレスは持っていないので実験はできないけど、これを問題にしている人が見つからないということから、非常に稀な現象であろうと。なので1つでも仮定が崩れれば問題なくアクセスできるであろう。ということにした。こんなことでいつまでも時間とられれていても仕方なのでね。

まぁPHPで不安は残りながらもamazon APIの使い方はわかったのでそれをもとにObjective-CでiPhoneに実装してみたところ、もちろん、アクセスに失敗することなどなく、すべてうまくいきました。
仮説成立!めでたしめでたしw


ちなみに、この時点でISBNコードの手入力でブックレビューを表示するところまでは成功している。これ1月の中旬ごろのことだと記憶している。ここまでくれば機能的には70%はできたも同然状態でしょうか。最悪、バーコードスキャンのプログラムが失敗しても製品としては言い訳がたつくらいの機能はついています。

でも、本当にほしいのはISBNバーコードをサクっとスキャンしてレビュー表示する機能です。本題はこれからだっ!!!


注)
http://twitter.com/ohneta_/status/8064153065
http://twitter.com/ohneta_/status/8064154887
ここらへんで結論をtweetしてるけど、これはiPhoneで実際にamazon.co.jpにアクセスした結果をもとにして確証を得たあとの発言です。

それで本業であるiPhoneのアプリ開発なんだけど

で、いっこ前の話題の続きになるけど、 12月初頭に Mac miniを購入してデベロッパ登録もした。仕事がなくて貧乏なのに年会費1万なにがしとか取られるんだよなぁ。
まぁ、それでMacの操作になれてみたり、ドキュメント読んだり、知人からいただいた本でiPhoneやcocoaフレームワークに慣れてみたり、、、。何を作るか決めてはいなかったのだけど、基本事項を習得していった。
で、実際にプログラムを書き始めると自分専用で使えるiPhoneがほしくなるわけで、12/23に私もMNPしてiPhone 3GSをゲット!

この日から本格的にiPhoneアプリ開発を開始です。

当初、嫁さんが欲しいといっていたマルチタイマーアプリを作ろうかなと目論んでいたんだけど、正月前にオライリーの「iPhone SDKアプリケーション開発ガイド」は読んでおくべきだなと思い、和歌山県で最大の本屋さんに出向いて購入。いったついでにiPhone関連の本も何冊か仕入れておこうとおもって、いろいろ漁っていたのだけど、どの本がいいのかよくわからなかったので、その場で持参したiPhoneでamazonのブックレビューを読んで選んでいた。で、その時、

ピンっ!
 ってきたのよ。

実用書とかって実際どれがいいのかってわかんないじゃない?目的はわかっているのだけど手段がわからないから参考にしようとして本を買って読むのだけど、その本自身に書いてある手段がどれくらい参考になるのか、って自分じゃまだ理解できていない場合がほとんどでしょ?だからamazonのブックレビューとかとても参考になるし、参考にしてもらいたいとの思いで書く人もいるわけです。

 ただ選択肢の本がいっぱいあると、そのブックレビューを見るためにamazonで検索するにも結構な労力が必要じゃない?と思ったわけです。 iPhoneなんか画面小さいからさらに苦労が多いわけですよ。まったく。
だったらさ、せっかく本にISBNついてるんだから、それ入力で即目的の本のブックレビュー読めたらうれしくね?ってのが最初の発想。
実際、amazonの検索ワードにISBN入れれば一発で検索されるんだけど、ブックレビューだけ読みたいのだからamazonの他の情報は邪魔なわけです。専用アプリでサクっと表示できたらいいのになー。と思ったわけです。
そしてISBNっていま出版されている本にはすべてバーコード印刷されている(ここ大事です!試験にでますよ!ww)のですよ。だったらiPhoneのカメラでバーコードをスキャンしてISBNを拾い出して、それのブックレビューを即読めたら、すごくうれしくね? すごくね、それ? 欲しくね?少なくとも、いまの俺はすごく欲しいぞ!!
という連鎖反応がおきて、頭のなかでアプリの構想が決定してしまいました。
で、これ思いついたときに、すんごく興奮していっしょに行っていた嫁さんに話たんだけど、反応はいまいちw。
でも、まぁ、少なくとも俺は欲しいし、俺が欲しいと思うくらいだから、世界中で100人や200人くらいは欲しがるだろうと。ニッチすぎるかもしれないけど、でも欲しがる人はいるだろうと思い、嫁さん要望のマルチタイマーアプリは置いといて、自分の構想のアプリ開発を強行決定!(@自分の中で)したのでした。

これ、去年の12月28日くらいの話です。

flying tweetその後といまなにしてるの?

いやぁ、最後にブログ書いてからすでに3ヶ月近く経ってしまった。
ちょいと本業を本気でやっていたので、flying tweetをぜんぜんやってなかった(汗
盛大にバグってるまま公開放置してたから、もうだれも使ってくれてないようだ。実際自分でも使ってないし。。。。

で、その本業のほうなんだけど、いまさらながらiPhone/iPodのアプリ開発を始めたのです。
去年の夏くらいから受注の仕事が全くなくなってしまって、収入の見通しがたたなくなってしまい、世の中不景気なので営業かけたところでそうそう受注仕事があるわけでもないし、現在住んでいる地域ではそんなもの壊滅的な状態。

なので、「こんな時こそ自分中心でできるものを作っておくべきだよな」とおもい、以前に作っていたwebサービスの展開を考えたり、現場復帰をちょっと希望している組み込み系マイコンやFPGAを触ってみたりとしていたのだけど、どうせやるならワールドワイドに展開したいの思いが強いので、今更ながらiPhone/iPodのアプリ開発をやってみることにした。

実際は11月に嫁さんがiPod 3GSに機種変して実際に触ってみて面白かった。ってのが要因なんだけど、 昔とった杵柄でMacの(Macで)プログラムを書くこと(といってもSystem8ぐらいまでだが)に抵抗はないし、NeXTだってちっとは触っていたので、どうにかなるでしょう。。。と、相変わらず甘い考えで手を出しましたw

てことで、flying tweetはもちっと時間に余裕ができたら、開発再開したいと思っていますが、いまはちとペンディングにしといてください _o_  > 関係各位