iPhoneアプリケーション開発と感想

7月になったので書く。

iPhoneのアプリケーションを作った。大層なものじゃない。以下平凡なプログラマの感想。非凡であれば全然違うだろうとは考えているという意味です。

動機

TumblrのMarcoが

And when I finally get good at this, I’ll have unintentionally qualified myself to develop Mac software as well. That’s a nice side benefit, but it wasn’t good enough by itself to overcome the learning curve.
Marco.org: The new iPhone SDK bubble

と書いているのを読んでから、これはやる価値があると思った。

NDAがあるのでSDKがらみの話をブログに書いたりしてはいけないらしい。
いけないらしいので、ブログに書いたりはしなかった。はじめは違和感があった。何か困ったことがあって、それを解決した時には何か書きたくなった。といっても中身はMarco同様I’m finally becoming fluent in the Objective-C syntax and some of the Cocoa conventions.みたいなレベルなんだけど。でも振り返ってみたらFirefoxの拡張機能のことだってそのレベルのことを書いていたのだからObjective-C/cocoaで同じことに抵抗感を持つ理由もない。C言語からすると変態的なObjective-Cのメソッド呼び出しの構文もLISPだと思えば変態的じゃなくなることとか。C++の仲間ではぜんぜんなくてむしろjsのノリのほうが近いオブジェクト指向のこととか。C++のオブジェクト指向はコンパイラおばさんと向かい合って文句を言われないように隅々までつじつまを合わせるかんじなのに対して、Objective-Cのオブジェクト指向は間違ってたら後から色塗ってごまかしたりできて楽しくやれる。ひとが塗った部分も後から自分で塗り替えられる。さすがにjsとかとくらべたらめんどいけど。

課金

話が戻るけど、Marcoの”おまけでmacのアプリケーションが書けるようになる”という話のほかに、もうひとつ、iPhoneのアプリケーションは容易に課金することができるのがすばらしいと思った。厳密には、日本からでも容易なのかちょっとわかんない。Apple税で30%引かれる。自分は説明をぱっと見て、とりあえずあとでいいやと思ってやめた。google AdSenseにくらべてぱっとみたかんじで4倍くらい面倒そうだったのでやめた。

WebサイトはAdSenseのような仕組みを手に入れたが、デスクトップのアプリケーションにはそれがない。Webサイトでできることはコンピュータでできること全体のほんの一部でしかない。

AutoPagerizeもTomblooも、月に50円払えと言われたら、まあ50円くらい払う。Tomblooは無理だけどAutoPagerizeはもしかしたら5,000人くらい使ってる人がいて、年間で30万円くらいになってswdyhが毎年新しいmacを買うようになって、一年前のmacがほしいっていったらいいよ置くとこないしくらいのノリでもらえるようになるかもしれない。10,000人になったときのことは思いつかないけど100,000人になったらswdyhがAutoPagerize株式会社を作ってAutoPagerizeが全自動で動くようにするための研究開発に24時間365日を注ぐこともswdyhが望めば可能になる(望まないと思うけどそこはどうでもよくて選択できるようになるところが違う)。

1ヶ月50円払うことができるような仕組みがあったら(細かいことをいうとAppStoreはソフトウェアを購入するのであって、利用に対して課金することはできない)。今は100,000人が使うようになったら、いろんな局面で有利にはたらくだろうけど24時間365日を自由に使うことができるようにはたぶんならない。

だからお手軽に課金できるようになることはすばらしいと思う。話が飛ぶけど、その50円がもともとあいまいに増えた数字でもよければもっといい。AdSenseでもらった50円とか、はてなでもらった50ポイントが、まだキャッシュになっていない間に誰かにあげることにはほとんど抵抗がない(自分の場合)。はてなはそれ(キャッシュになっていない、交換性の高い数字をだれかにあげること)を実現するのにはいい位置に立っていると思う。法律上の困難(と法改正)も予想されるけれど、個人的にはふつうの会社ではなくそういう日本のインターネット文化をリードし続ける存在であってほしい。ふつうの会社ならほかにもあるから。へんな会社もほかにもあるけれど、このこと、ポイントを通貨にしていろんなものの流通を促進すること、は、はてなが一番近いと思う。

ブログ

ブログの話に戻る。

書いたらダメらしいから、黙ってコードを書いていたら、しばらくしたら、むしろブログを書くのは煩わしくなった。

ブログを書かなくなってわかったこと。

ブログを書かないことのメリットは、ブログを書く時間を使ってコードを書くことができるところ。
デメリットは、何年か前にブログを書くべき理由、みたいなことがたくさん書かれていたときに書かれていたことの裏返し(amachangがこないだ書いてた。親友へ。ブログを書こう。 – IT戦記)。実感したのは、ソースコードのコメントに数行書いたりするのに必要な理解度とひとが読んで理解してもらえるレベルでブログに書くための理解度とは全然違っていて、文章に落とし込む過程で自分自身の理解を助けること。こないだこれやったけどなんだったっけ、みたいなのが何度かあって、そういうときには前に書いたものを見返せば書いてある、という状況だったけれど、書いてないのでなんだったかはわからない。

もうひとつ、将来的にswdyhのAutoPagerize株式会社をめざして課金することを考えると、そもそもブログに書くことが自分の利益にならないかもしれない。いま、Firefoxの拡張機能のしょうもないことについて書くのは、ブログに書かなければ何にもならないけれど、そのしょうもないことをブログに書くと、だれかが読みに来て、短期的には、そのときに表示されていたAdSenseの内容が魅力的で、そこで数セントの収入につながるかもしれない。長期的には、その読みにきてくれた人と仲良くなれたりして、ハッピーになるかもしれない。書かないことにしたときに得られるものはその書くときにかかった時間で、書いた時に得られるものは数セントとプライスレスハピネスかもしれない。

でも、もしそのしょうもない話が、50円の値段を付けて売るつもりのなにかを構成する一部だったらどうか。しょうもないことなんだけど、それは50円の値段をつけて売るつもりの何かにとってはしょうもないながらも欠くことのできないもので、それを秘密にしておくことで、将来でてくるであろう類似品に対してしょうもない差をつけることができる(ほんとは、そんなしょうもない技術的な差は認知度やプロモーションのかけかたですぐに吹き飛ぶ差なので意味がない)。その類似品と、しょうもない差がついている間自分のアプリケーションには高い値段をつけることができる。しょうもない差でも、その差を埋める時間が必要であれば、その差が埋まるまでは高い値段をつけることができる。かもしれない。と思った。

昔のことを思い出す。

デスクトップアプリケーションの時代

自分はウェブのアプリケーション以前の世界を少ししか知らないけれど、デスクトップアプリケーションの時代はどうだったか。

デスクトップアプリケーションの時代には、オープンソースという言葉自体がまだ存在しなかった。無料で使えるソフトウェアは多かったが、大半はfreeではなかった。ソースコードは公開されず、無料で使えるということ以外、何も自由にならなかった。お手軽なプラットホームは存在しなかったが、ソフトウェアに課金することもできた。銀行口座に振り込んだりすることでライセンス(を買った証明であるシリアル番号)を買った。売る方にとっても、買う方にとってもAdSenseやAppStoreのようにはお手軽ではなかった。(そういうのが苦手な自分は)だからシェアウェアではなく無料のアプリケーションを作っていた。

この時代にもメーリングリストやIRC(は自分はぜんぜん知らなかった)で、いまとおなじように困ったことに関する情報が交換されていた。それは秘密にしておけば、シェアウェアの開発者や、値段のついているプロダクトの開発者は、ほかのプロダクトに対して有利だったはずだ。でも実際はシェアウェアの開発者や、値段のついているプロダクトを開発していると思われる人も、そこで困ったことに関する情報を共有していた。

おなじようにiPhoneのアプリケーションも、そんなしょうもない話はNDAがなくなればふつうに共有されるようになるだろう。でも技術的に大きなアドバンテージとなるようなものは公開されないだろう。そのことはふつうのことだ。

また問題のスタートアップは、サードパーティーのiPhoneアプリケーションがバックグラウンドで動作しないという問題 (つまり他のユーザーにコンタクトするためにSNSアプリケーションを開いてしまうと、他のiPhoneの機能が一切使えなくなってしまう)を回避する方法を発見したらしい。彼らはごく一般的な言い方でその回避策を説明してくれたが、この話の内容も当面秘密にしておくよう頼まれている。
TechCrunch Japanese アーカイブ » 私は最近SNSの未来の姿を見てしまった―まだ名前は言えないが

ほかのプロセスにスレッドを寄生させたりするんだろうか。Windowsだとそういうことができた気がする。

ガラス

ウェブアプリケーションでは、裏側はわからないけれど、表側に出るような細工は秘密にしようがない。jsのコードをobfuscateする以上のことはできない。

で、ウェブででリアルに知覚できる素材は何かというと、わたしは、スクロールバーだったり、テーブル、文字、色だったり、ステータスバーだったり、スクロール/リサイズ、マウスオーバーとかなんだろうと思います。 Flashの中で、どんだけおもしろいことやっても、ガラスケースの中のおもちゃみたいな感じがするのよね。 こっちにこないし、さわれない。
Look, See、リアル – 実用

ウェブにどっぷり浸かった開発者にとっての自由とは、こういうかんじだ。そこにあるものがどういうふうにして構成されていて、それがどういうふうに動くかがすべてわかる。その構成要素ひとつひとつに(FirebugだったりDOMだったりを介して)直接触れることができて、自由に動かすことができる。Flashにはそれができない、だからFlashは自由でない、おもしろくない(でもFlashの中に入れば全部自由になるらしいですよ)。

と感じるけれど、そうじゃない。
HTML+jsでできていて、その構成要素のひとつひとつを自由にできることのほうが奇跡なのだ。

デスクトップアプリケーションで、その構成要素ひとつひとつにアクセスして、その動作を自由にいじることができただろうか。DLLを入れ替えるとかSIMBLをかますとかで容易さの程度はプラットホームで異なるけどやればできた。丁寧にガラスケースをはがして、ガラスケースを支えている部品がどうなっているのかを理解して、つじつまの合うように部品を組み替えて、ガラスケースを閉じればいじることはできた。うまく言えないけどHTML+jsにはガラスケースがついてない。ガラスケースがついてない前提で設計されているので、中身を少しいじっても致命的な問題にはならない。</table>ひとつなくなってもてきとうになんとかしてくれたり。

iPhoneにもガラスケースがついてる。WindowsやMacにはそのガラスケースをはがすためのツールがついているけれど、iPhoneにはガラスケースをはがすためのツールはついてない。ふつうガラスケースはついてるし、ものによってはガラスケースをはがすこともできなかったりする。

Cometのしくみを知らないで、Cometがどういう仕組みでその動作を実現しているのかを知ることは難しくない。HTMLの中身を見ればflashだったりiframeだったりでへんな通信をしているのがわかって、ほかからデータを送ったときにどうなるかの挙動を観察すれば、まねして同じものを作るのも難しくない。

でもCometがガラスケースに包まれていたら、へんな通信をしているのはわかるけれど、それを実現している部品まで知ることができない。throbberがまわりっぱなしになったりして、どうしたらいいのかわらず、試行錯誤するだろう。

“オープンさ”からすると、これは後退だ。
ただその後退はそのほかをみると奇跡のようにも思えるオープンさのHTML+jsからの後退だ。HTML+jsの時代をあのころはよかったとこのあと数十年愚痴り続けなければいけなくなるのかもしれない。

お手軽な課金プラットホームは、いままで何のメリットもなかったオープンにしないことにあるかどうかわからない程度ながらもメリットをもたらす。オープンにすることがおそらく長期的には自分にメリットをもたらすことは知られている。でもオープンにしないことが短期的に直接の小さな金銭的利益をもたらす可能性ができた。
ちょうど今日承認を勝ち取るコスト – raurublock on Hatenaを読んでOption Value of the Internet (Japanese)を思い出した。いままで、しょうもないノウハウを秘密にしておくことには現在価値がなかった(金銭的価値には変えようがなかった)ので、価値がないのとおんなじくらい可能性はないけれどあるかもしれない将来価値にすべて賭けていた。

AppStoreは秘密にしておくことに、あるかどうかわからないながらも現在価値をもたらす。開発者は、あるかどうかわからない現在価値と、同様にあるかどうかわからない将来価値のどちらにかけるかの判断を迫られる。片方がゼロだったときには何も考える必要はなかったけれど、ゼロでなくなったら考える余地が生まれる。

最後に

以上、自分がiPhoneアプリケーションを作りながらiPhoneは****を変える!みたいな記事を流しよみして、ビジネスはいいとして今ある自由の空気感が変わってしまうのかもしれないと思ったりしたことでした。

もう遅いので書けないけれど、オープンソースのプロダクトをパッケージングして値段を付けて売るソースネクストのこと、製品に競争力をもたらしている部分とは関係ない部分なのに公開できないソースコードのこと(これはOSXだけどCURLConnectionが内部でメモリを確保したまま一定時間解放しないっぽい動作をメモリリークかと思って追跡してた時があって、これがlinuxだったらとおもった)、値段がついている時にはTomblooのようにコミット度合いの違う複数人でひとつのアプリケーションを作るのは難しそうだとか、も考えたかった。

Shut the fuck up and write some code.


About this entry