こちらのブログ更新の放ったらかしだった。そして1年以上開けて,再び久し振りのXcode。今度はバージョンが5.1だから,また勉強し直しである。

 しかし開発ツールが着実にバージョンアップしているのは頼もしい。かつてと比較するとADCやiTunes Connectとのやり取りは自動化されて大変楽になっているし,アイコンやスタートアップ画像の管理も分かりやすくなっている。見た目もすっきりして,iOS7アプリをつくるにふさわしい開発環境としてちゃんと進化している。

 というわけで,手持ちのアプリをiOS7時代に対応させるべく,ゴールデンウィークの連休を費やして最新事情を勉強。今度のWWDC2014で置いていかれないためにもアプリのアップデートをすることにした。

 なるほど話題になっていたことはこういうことだったのかと,浦島太郎状態で情報理解を進め,なんとかアップデート作業に結びつけ,申請と承認を経て,アプリがアップデート配信となった。周回遅れとはいえ,めでたいことだ。

--

 Xcodeはとても気に入っている開発ツールなのだが,Androidの側でもAndroid Studioという新しい開発ツールが昨年発表されている。

 ぼちぼちAndroidにも手を出してみようかなと思っていたりする。開発したアプリをAndroidでも動かせないかなと思っているから。でもまだ何も手を付けていないので,まだまだ時間はかかりそうだけど。

 本業が慌ただしく、長らくプログラミングからは遠ざかっていた。

 まだ完全に手が空いたわけではないのだが、放置しておくつもりもなかったので,連休を機会に開発環境を整えて,新しいOSやデバイス上で実行できるようにすることから始めることにした。

 手持ちのアプリのアップデートよりもiOSのバージョンアップの方が速いくらいで、いまや最新の開発ターゲットはiOS6で,デバイスはiPhone5となってしまった。

 案の定,古いソースコードはそのままではビルドで警告が出まくるし、ライブラリの挙動がまた微妙に変化してしまっているし、画面サイズがもう一つ増えた。

 アプリ内広告のモジュールも新しくする必要がある。開発マシン上の証明書や鍵が混乱しているようなので,新しく証明書と鍵,プロビジョニングを取り直して,ようやくアプリのアップデート。

 また少しずつ勉強し直そうと思った。

 気を抜いているとiOS開発関連本があれこれ出ている。HTML5やJavaScript、Flash活用系はAndroidも射程に入るのでマルチ展開したい場合は参考になりそう。FileMakerの解説書も混ざっているけど、一種のプログラミングということで...。

 
『iPhoneアプリで稼ごう』


 
『よくわかるiPhoneアプリ開発の教科書【Xcode 4対応版】』


 
『10日でおぼえるiPhoneアプリ開発入門教室』


 
『Titanium Mobileで開発するiPhone/Androidアプリ』


 
『PhoneGap 入門ガイド』


 
『iPhone & Android HTML5ではじめるアプリ制作の手引き』


 
『Flash CS5.5ではじめるiPhone/Androidアプリ開発入門』


 
『Flash Builder4.5で学ぶAndroid/iPhone実践プログラミング』


 
『〔体験学習〕 iPhone/iPad+データベースによる実用システム開発入門』

 これはFileMakerの解説書。

 

 EX489をなんとかリリースしてバグフィックス等した後は、本業が慌ただしくなって開発作業は休憩中である。

 そしてMac OS X Lionが新しいMacと共に登場してかなり注目を集めた。MacBook Airは文句をつけるところがバッテリ持続時間くらいしかないほど完成の域に達して、夏の懐が暖かいうちに購入する人々続出である。

 私もいま使っているAirよりも格段に良くなったことを見て買い替えたくなったが、所有マシンの配置替えなどを検討した結果、iMacを買うことにした。現時点での最速デスクトップマシンの購入は10年ぶりかも知れない。

 Lionはデベロッパ・プレビューを使用していた。iOSに操作性を合わせ始めた点は、慣れの問題なので私は気にしていない。世間的にはもっとブーイングが出るのかなと想像していたのだが、意外と皆さん冷静で「スイッチ切ればいいでしょ」とか「コンテンツを操作する点ではこれもありかな」みたいな反応だった。

 互換性の問題はPowerPCコードの切り捨てと64ビット化の対応ということが言われているけれども、それ以外にもSnowLeopardとLoinでシステムをちょこちょこ変えているところがあって、何がダメなのか読みづらい。

 とはいえ、ほとんどのソフトは動作しているようだし、対応のアップデートをしてくれるので、いまのところ常用していたソフトでダメだったのはBiND4だけである。

--

 そんなこんなでテレビのアナログ放送波がとうとう終わりを迎えた。

 今後テレビ番組を見たければ地上デジタル放送対応の機器を使わなければならない。もっとも見たいのはニュース番組くらい。最近はバラエティもドラマもたまたまぶつかったら見るくらいになっているので実害は少ない。

 一応、Mac用の地デジチューナーは確保してある。そうそう、こちらのソフトもLion対応はまだ少し先になるようだ。

 面白いことに、このタイミングでMac用の地デジチューナーは品薄になっているようで、2つのメーカーもあまり積極的には売り出していない感じ。

 まあ、地デジチューナーは著作権保護によるバリバリのロックがかかっており、普通に扱うにも面倒なことが多い。先日はハードディスクの容量が足りないので空きを作るためにファイルを移動させたらファイルが壊れて再生できなくなってしまった。

 むしろデジタル−アナログ変換器で従来のアナログテレビやアナログチューナーで視聴した方が一番よいのかも知れない。きっと売れているのも変換器だろう。

--

 新幹線予約サービス「エクスプレス予約」の公式サイトがスマートフォン対応した。

 これで開発したEX489もお払い箱になるかな、どうなるのかなと気にしていた。

 事前にカスタマーサービスに電話をして、スマートフォン対応に際して、パソコン対応画面の操作には変化があるのか聞いたりした。幸い、特に変化はなく、単純にスマホ対応画面が追加されるだけと聞いて、ホッとしたりもした。

 EX489が継続して使用できる可能性は上がったものの、スマホ対応が始まって快適に新幹線予約できるようになれば誰も専用アプリを気にかけないだろう、EX489の使命もこれで終わりを迎えるかなと思っていた。

 ところが実際にスマホ対応画面を見てみると、確かに使えるのだが、使いやすいというところには届いてないように思えた。

 それでも公式サイト自身が対応したのだから、安心感が違うだろう、そう考えた。しかし、それもそう単純な話ではなかった。

 対応スマホに制限があるのだ。

 iPhoneの場合はiPhone 4の最新iOSのみ。つまりiPhone3Gや3GSは対応に難ありという感じなのだ(最新のiOSを導入するとダメみたいなことが書いてある)。

 というわけで、公式サイトのスマホ対応ではすべてが解決しなかった。

 サポート外のユーザーはOperaブラウザなどの他のブラウザで試すか、専用アプリを試すしかなくなっているのである。

 というわけで意外な形でニーズが生まれた。

 有り難いことにEX489はここ数日で注目を集めて旅行ジャンルの無料アプリの12位くらいにランクインした。

 今後も地道にアップデートできたらと思う。

 新幹線予約アプリEX489はまだまだ知られていないアプリなので、知られていない内に少しでも改良改善していくことが大事かなと考えています。

 リリース初日に「MACお宝鑑定団Blog」さんに紹介いただいたのは、とても嬉しいことでした。おかげでスタートダッシュはいい感じでした。

 
 しかし、慌ててリリースしたツケがまわって「落ちる」問題に直面。修正に四苦八苦しました。まだまだ作業は必要と思うものの、1.02で動作はほぼ問題なく、1.03で「これを最初にリリースしたかった」ぐらいにはなったと思います。

 そんなこともあって、アプリ宣伝の依頼のようなものはどこにも出していません。

 キーワード検索で発見したツイートなどにお声を掛けて「使ってみてもらえますか」という直接マーケティングの真似事をするくらいです。

 EX489は、万人が使うアプリではないので、評価していただいて関心を持ち続けていただいた方々経由で届けば、それでいいかなと思っています。

--

 7月に入り、いよいよ23日に予定されている「エクスプレス予約」サイト正式のスマートフォン対応画面の提供が近づいてきました。

 巷では「JR東海がようやくスマートフォンアプリを出す」という理解をしている人もいたり、あるいはまだこのニュース自体を知らない人もいたり、反応は様々です。

 7月23日に起こることは正確に書くと:

 ・JR東海が、従来のエクスプレス予約にある「パソコン対応画面」「携帯電話対応画面」にプラスして「スマートフォン対応画面」を提供する。

 ・JR東日本が別に、同日「モバイルSuicaアプリ」をAndroid向けに提供し、このアプリから新しく提供される「スマートフォン対応画面」が呼び出される形になる。

 ということです。

 モバイルSuicaの利用者はいろいろと便利になるわけです。そして、アプリはありませんがエクスプレス予約の利用者はスマートフォンからの予約が楽になるということです。

 公開されたスマートフォン対応画面のサンプルが限られているので、列車選択や座番リクエストをどのように表示して操作できるのか分かりませんが、少なくともいままで標準ブラウザで苦労していた事態は終わるだろうということです。

 ただ、アプリじゃないんです。上手につくればWebアプリもネイティブ並に動作するのは確かですが、さてどうなりますやら。

 いずれにしても、附属のブラウザだけでも安心して予約手続できるようになることは大変喜ばしいことです。

--

 EX489はお払い箱なのか?という問いも湧くでしょうが、これはEX489にとっても心強い話なのです。

 もしもEX489で手続きがうまくいかないという事態が起こっても、標準ブラウザで安心してリカバーできるというのは、開発者にとっても利用者にとっても有り難い。

 その上で、EX489はネイティブアプリとしてのメリットを生んでいけばよいかなと思っています。

--

 将来バージョンはこんな構想です。

 ・予約取消への対応
 ・アカウントを2つ登録できるようにする
 ・パスワードロック画面
 ・出張番号の登録

 ・予約手続の履歴を保持するようになる
  →現在予約中の新幹線がオフラインでも確認できる
  →同様に、夜間サービス時間中にも確認できる
  →これまで利用した駅区間を、新規予約で簡単に再選択できる
  →次の予約情報をメイン画面に表示できる

 ・現在時間と連動したリアルタイムの処理
  →列車選択画面で、各列車が後何分後に出発するか残り時間表示する
  →予約列車の時刻が近づいたら通知する
 
 ・現在地との連動
  →駅名を入力する際に現在地に近い組み合わせの駅名を自動選択する

 などなど...

 もとろんこれらはかなり先の将来ですが、こうしたエクスプレス予約アプリがあれば、本家にスマートフォン対応画面があってもアプリの方を使ってもらえるのではないかと思います。

 たぶんスマートフォン対応画面が提供されれば、PC画面よりも簡単な構造でしょうから、それを利用したアプリが登場してくるでしょう。楽しみですね。

 モバイル広告の市場は目まぐるしく動いているようです。

 さすがに大震災の影響もあり手放しで盛り上がるというわけにはいかないようですが、市場の争いは着実に展開しているようです。

 最近は『スマートフォン・マーケティング』という本も出たようです。
 

 
 この本はどちらかというとアプリそのものを広告媒体としてリリースしている(ブランドアプリ)事例を中心に紹介していますが、AdMobやInMobiといった世界規模のモバイルアドネットワークにも触れています。

 EX489にもアプリ内広告(モバイル広告)を導入しています。アプリを開発してリリースする際、収益について考えないわけにはいきません。いろいろ考えた上で、このような形でアプリをリリースしています。

--

 前作Ride On TimeではAdMobくらいしか有力な選択肢がありませんでした。

 しかし、今回はまったく状況が違います。

 AdMobの他にも、iAdやAdMakerといった様々な選択肢が登場し、激しい争いを展開しているところです。

 モバイル広告の世界は、様々な会社が構築しているアド・ネットワークと呼ばれるものがあり、たとえばAdMobは単独でも有力なアド・ネットワークでしたが、Googleに買収されたことによって、GoogleのAdSenceというアド・ネットワークと統合されて大きなネットワークを形成しています。

 アド・ネットワーク規模が大きければ、それだけ広告配信の規模が大きいというわけですから、様々な意味で広告の価値や効果が向上するというわけです。

 そのため規模の小さなアド・ネットワーク同士は積極的に提携や連携を行ない、お互いのネットワークで配信される広告を交換(エクスチェンジ)する仕組みを導入して、自分たちのネットワーク価値を上げようとしています。

 このようなアド・ネットワークは、スマートフォン等のモバイル向けだけではなく、ブログなどのWebサイト広告でも同じように形成されています。

 そして、広告代理店は、これらを従来のメディアを使った広告ネットワーク(雑誌やテレビなど)と組み合わせて広告プランを作成して、広告主に売り込むというビジネスが展開しているわけです。

 つまり、スマートフォンのアプリは、雑誌広告やテレビCMと同じラインに並ぶ広告メディアとして育ってきたということです。

 アプリは、広告枠を持つ雑誌やテレビと同じですから、他のメディアがそうであるように、魅力的なもの(アプリ)を提供することが理想とされるわけです。

--

 開発者は、アド・ネットワークにそのようなアプリ(と広告枠)を売り込むというわけですが、現実的な手続きとしては、アプリに各アド・ネットワークの仕組みを内蔵しなければならないため、どちらかというとアド・ネットワーク側が「うちのネットワークを組み込んでください」という構図になっています。

 一般的な広告とアド・ネットワークのよるモバイル広告の違いは、あらかじめコンピュータプログラムとしての仕組みを合わせなければならないところにあります。

 広告原稿やCMのビデオテープを渡すだけではダメなんですね。

 なので、自分のアプリの広告枠をどのアド・ネットワークの仕組みに対応させるのかということが開発段階で問題となりますし、そのことによってアド・ネットワーク側は自分たちの規模が拡大縮小することになりますし、広告主にとっても魅力的なアプリに広告が出せるアド・ネットワークと契約するための判断が変わってくるわけです。

--

 広告主にとっては、数あるメディアの一つの問題に過ぎませんから、有利な組み合わせで契約すればそれですむことです。

 アド・ネットワークは、先に紹介したように自分たちの価値を高めるために仕組みを導入してもらえるアプリなどのメディアを増やす努力と、他のアド・ネットワークとの提携・連携によって努力をしています。

 さて、開発者側です。

 AdMob一択みたいな状況なら話は簡単ですが、魅力的なアド・ネットワークが複数登場した時代においては、どのアド・ネットワークの導入が自分の収益を高めるのかという問題に対応しなければなりません。

 自分の開発したアプリの特性に合ったタイプのアド・ネットワークを選択すればよいのは当然ですが、一番簡単な方法は、複数の有力なアド・ネットワークを同時に導入するという方法です。そして必要に応じて切り替えればよいのです。

 複数のアド・ネットワークを切り替えて使う仕組みは、すでに広く知られている対応方法です。そのためのプログラムも公開されています。他ならぬAdMobがオープンソースとして提供しているAdWhirlがその一つです。

 このAdWhirlを使うと、主要なアド・ネットワークをアプリ上で連携させるようにできるのです。こうすれば広告枠を持つアプリ自体の価値も高まるというわけです。

--

 EX489では、このAdWhirlを利用して、AdMob、iAd、そしてAdMakerを導入することにしました。

 それぞれ特徴の違うアド・ネットワークなので、組み合わせることでせっかくの広告枠を最大限活用することができるということになります。

 AdMobは世界展開しているネットワークですし、GoogleのAdSenceとの組み合わせで広告が多く配信されてきます。アプリ関係の広告が目立ちますが、基本的には様々な種類の広告が対象です。

 iAdは日本展開が始まっていないため、今のところ広告表示されません。ただし、テレビ広告レベルのリッチなモバイル広告を強く提唱し、大手広告主を対象とした方針の広告が中心なので、アプリ開発者にとっては収益が大きいと評判です。

 AdMakerは日本初の野心的なアド・ネットワークで、少しずつ成長拡大しているところのようです。国内外の他者と積極的に提携していることから、国内向け広告、最近だとモバゲーやGREEなどの広告が多く流れています。

 実際の収益に関して比較する材料が揃わないので、この時点で論じることは控えますが、要するにこれらをアプリ側で同時対応して切り替えて使えば、グロスで収益を高めることもできそうだということです。

--

 EX489の開発は、収益性を優先したものではなかったので、この辺の話は技術論的な関心のもとで導入したというのが本当のところです。

 しかし、開発などにかかった経費を少しでも回収できれば今後にも繋げられるかなと考えています。

 こちらは開発ブログということで、最近リリースした新幹線予約アプリEX489の開発裏話など書いている。

 リリース当初は、辛辣レビューの洗礼を受けて、てんやわんやといった感じではあった。しかし、情報提供をしてくれるユーザーの皆さんのおかげで、アプリのバグをあれこれ発見し、修正作業を続けているといったところである。

 こちらが『大丈夫」と安心しても、実際のフィールドで利用され始めると、あれこれ穴が見つかるものだなと痛感した。こればっかりは謙虚に受け止めなければと思う。

--

 バグは設計上の不足や実装対応を後回しにした部分が引き起こしたものなどもあったが、大きく悩ませた問題の原因は、コーディングの際のタイプミスだった。

 たとえば、どこかで「self.」を忘れていたために起こるメモリエラーの類いだ。

 思い返せば、こうした作業をしていた時が、夜を徹して眠気の最高潮の時期だったものもあり、要するに注意力散漫になっていたために引き起こした人為的「凡ミス」だったというのは笑うしかない理由である。

 もっともこちらが苦笑いしても、アプリ利用者には迷惑な話だったので、もう単純に詫びるしかない。申し訳なかった。

--

 しかも、こうした突貫作業がコードの見直しをしていた時に起こっていたから、以前動作チェックして安心していたところに気づかず問題が入り込んだ形になった。

 リリース前にすべてのテストをやり直すべきだったとはいえ、個人の隙間時間プログラマであることもあって、なかなか手が回らなかったというのが正直なところだ。

 とにかく、今後は突貫作業はなるべくやらないようにして、できるだけ問題予防的に開発を進めないといけないなと思う次第である。

 新幹線エクスプレス予約アプリ「EX489」をリリースして、最初の1.01アップデートを行なった。

 リリースをしなければ分からなかった様々な問題への対処をするためにも、最初のアップデートは重要である。そのあとも機能追加などのアップデートは必要だが、まずはなんとか使える状態に持っていかなくてはならない。

--

 今回、アプリの審査チームに「早急な審査をお願いします」と申し立てをした。

 予約アプリは、どうしても金銭授受が伴うことなので、不具合についてユーザー不利益が起こらないようにしたいという理由をつけた。

 幸い、申し立てが認められて、この数日でアップデートが配信開始されたのは幸運だった。なるべく多くの皆さんにアップデートしていただきたい。

 辛辣なレビューに凹みながらも、問題発生原因を突き止めるべく、あれこれ調べたり試したリを続けていた。

 自分が試す限りにおいて、ほとんど問題が発生しない。ところが、全く同じ機種とOSバージョンにも関わらず、タップするだけで「落ちる」という報告もある。

 どうもエクスプレス予約の利用実態や設定が異なっていることが起因しているのではないかと疑って、あれこれツイートして情報を寄せてもらっていた。

 Expressカード会員とJ-WEST会員の違いはクリア。これは自分自身で両方試した。個人会員と法人会員の違いだろうかと考えたが、これも報告をいただいてクリア。出張番号の件を除けば、両者の手続きは同じと考えてよさそうだ。

 となると、特定のタイミングでのアプリ利用か、特定の列車を選択することが原因なのだろうか。しかし、これに関してはレビューだけではわからなかった。

 やがて、使用機種とOSバージョン、選択した駅区間と列車名を書いてくださるレビューが投稿された。それを見ると、本当にふつ〜に落ちるらしい...。

 ?????

 もはやアプリ側で想定している以外の挙動をエクスプレス予約サイトがしているとしか原因が考えられない。

 エクスプレス予約は、あらかじめよく使う列車名や予約条件を登録できる機能がある。人によって違うとすれば、ここの設定だろう。そこで、設定条件を変えて使用してみた。

 すると見事に「落ちた」^_^;

 なるほど、ここが原因だったようだ。

 アプリ側としては、どんな設定されていようがその時々に表示される情報を処理するように作ってあったはずだが、よくよく調べてみると座席位置を「指定なし」とした場合にサイト側のHTMLが設計と違う挙動で送られてくることがわかった。

 ははは... 泣いちゃうわ。

 過信は禁物だなと反省。レビューアの皆さんには大変申し訳ない結果となった。

 こればっかりは実際に広範に使ってもらわないとわからない。

--

 とにかく、原因がわかれば対処することができる。さっそく作業をして、その他の微調整と合わせてver1.01とした。

 まだ未対応の部分は山ほどあるが、少しずつ追加できればと思う。

 いやはや、アプリを使ってもらうというのは難しいことなのだと改めて感じた日々だった。

 苦労して公開までこぎ着けたEX489は、実利用のフィールドで苦い現実に直面したようだ。レビューには「落ちる」の報告だらけ。1件だけとはいえ「売るな」と手厳しいレビューもある。

--

 基本的にエクスプレス予約関連のアプリについて、これまでの険悪な歴史があるだけに、新しくリリースされた非公式のアプリに対し、かなりの警戒感や抵抗感があるらしい。

 そのうえ、7月に予定されているJR側のスマートフォン正式対応が発表済みなので、いまさらアプリが登場することに醒めた感じもあるようだ。

--

 もちろん、EX489はちゃんと機能する。

 私自身もちょうど新幹線を利用した出張で活用したばかりだし、幾人ものユーザーから実際に利用した報告もいただき、暖かい声援と身に余る賞賛を受けている。

 物事に完璧はないので、自分の開発成果ということもあって、EX489アプリに対して謙遜気味に表現しがちであるが、それなりに自信を持って公開した次第である。

--

 ところが、ユーザーの実態は千差万別。

 思いも寄らないシチュエーションで利用されていることもあり、まだまだアプリを育てていかなくてはならない。

 育てていかなくてはならないのだけど、ユーザーにとっては「落ちる」ことだけで、もうそれ以上は関わってくれないことも多い。

 「どういう利用環境で落ちた」のかの説明をする義務がユーザーにはないのだから、親切心が働く余裕がない限り解決のための情報提供はなく、こちらの方で問題を再現することも、原因を特定することも難しい。

 案外、iPhoneを再起動すれば解決することでも、ユーザーにしてみれば「そんなわざわざ...」という行為なのだ。

 それに「落ちた」のは本当のことだから、レビューが取り消されるということもない。

 レビューしたユーザーが直面した現実を考えれば、汚い言葉を使いたくなることも分からないではないが、ついて出てくる第一声や言葉が汚い言葉だと知らないうちにクセになるからやめた方がよいと素朴に思う。これは本人の努力や忍耐の問題だけれど。

--

 いくらかは問題と原因もわかったので、そのための作業をしようと思う。

 しかし、このままだとあまり良い結果をもたらさないようにも思えたので、一旦公開を中止することに決めた。(追記:そのあと考え直して様子見にした。)

 レビューを気にし過ぎているわけではないが、これは単にEX489アプリの問題ではなく、エクスプレス予約の利用という行為全体の問題にも関わることだから、慌てずにゆっくり行こうと考えた次第である。

 まあ、もともとEX489は技術チャレンジから出発しているし、7月のスマートフォン正式対応という流れがあるわけだから、むしろ独自の努力を続けていった方が良いだろうとも思える。

 というわけで、少しペースを変えて取組みを始めたい。