HMDT - Logic and Intuition -

about HMDT

HMDT Journal

August, 2009

August 21

昨日から発売開始したiMandalArt。さっきチェックしたら、有料アプリケーションランキングで12位。お買い上げいただいた方々、ありがとうございます。10位以内には入りたい。

公式ページは、こちらのiMandalArtのページになるよ。このページでは、iMandalArtの動きがビデオで表示されているので、ぜひ見てほしい。iMandalArtは、「触ったときの楽しさ」にとても重点を置いている。単に、マンダラ階層を降りたり登ったりするだけで、楽しさが感じられるようにがんばった。

『iPhone SDKプログラミング大全』の3.0対応のための改訂作業は、初校が終わった。土曜日には校了の予定。9月には店頭に並ぶと思うよ。

Core Dataの解説をしているiPhoneプログラミング本は、これだけだろう。iMandalArtもCore Data使っているよ。

August 20

iMandalArtがApp Storeに登場した!リンクは、こちらね。銀座のApple Storeでお披露目イベントをやったのが7月26日。どうにか一ヶ月以内で登場させることができたよ。とはいっても、登録自体は8月の頭にやってたんだけどね。時間がかかったよ。

繰り返しになるけどアプリの説明をすると、iMandalArtはもともとMacのHyperCardで動いていたソフト。3x3のマスの中に思いついたことを書き留めていって、あなたの発想を広げてくれるソフトだ。iPhone版の特徴は、テキストに加えて、写真や音声も使えるようになった事だ。もっと自由に発想ができるよ。

アプリの値段は、1,500円。Windows版が15,000円だったから、1/10の値段だ。ぐっと安くなった。多くの人に使ってもらいたいからね。

すでに、次期バージョンの開発も開始している。しばらくは、iMandalArt続きます。

August 17

HMDT(株)の会社紹介ページ。いままではロクな情報がなかったので、少しまともなものに作り替えてみた。資本金とか、社員数とか、会社の基本的な情報をやっとこさのっけた。事務所の地図もあるよん。

会社の仕事しては、MacおよびiPhoneアプリの開発があるけど、それ以外に原稿仕事、講演やセミナーもあるのでそれもまとめみた。結構あちこちでしゃべったんだな。

iPhoneアプリ紹介は、いままとめていることろ。

右上の、「About HMDT」のリンクから辿れるよ。

『iPhone SDKプログラミング大全』の改訂は、校正作業に入ったところ。ページが100ページ増えて、400ページくらいになった。紙も変わって、ぐっと厚めの本になるらしい。

August 14

お盆まっただ中なので、会社の近所のお店が軒並みお休みになっている。

弊社はあんまり関係なく稼働中であります。

iPhoneのカメラ機能って、UIImagePickerControllerから呼び出せるんだけど、あれってすごくメモリ食うのね。Instrumentsをつないでカメラ立ち上げると、ドカンとメモリを確保する様子が分かる。

メモリが少なくなると、UIViewControllerのdidReceiveMemoryWarningが呼び出される。これが呼び出されると、UIViewControllerが管理しているビューが解放されちゃうのね。カメラを隠すともう一度ビュー作ってはくれるんだけど、ビューの解放/再確保を意識したソースコードを書いていないと、ここで不具合が発生する。

一応、setView:を上書きして、nilが渡されたら無視する、という回避技もある。でも、これはよろしくない。やっぱり必要のないメモリはきちんと解放できるようにしておくべきだ。

自分の意図していないところでビューが解放されちゃうのは、恐ろしいよな。この辺のメモリに対する意識の違いが、iPhoneプログラミングつーか、組み込みプログラミングだよな。

August 12

サーバを買った。もちろん、Xserveだ。昨日、データセンターに設置してきた。サーバを買うっていうのは一つの夢だったんで、ものすごく嬉しい!これで我が社もサーバ持ちです。

何に使うかというと、もちろん、iPhoneアプリのバックエンドとして。iPhoneアプリのデータのクラウドや、コミュケーションのデータ置き場として活用するのだ。Webページを置く予定などはなし。

なぜXserveかと言えば、Cocoaアプリを走らせるからだ。フロントエンドであるiPhoneと、バックエンドであるXserveで、同じソースコードが走るぜ。おぉ、これこそ開発コスト削減だ。また、やりとりするデータも、汎用データ型を使う必要なんかない。直接バイナリやら、Core DataのSQLデータ投げたれ。XMLなぞいらないよ。

August 9

そろそろ書いてもいいかいな、ということで書くけど、前に出した本『iPhone SDKプログラミング大全』の改訂作業をいま行なっている。iPhone OS 3.0対応を行っている。

もちろん、細かい記述を3.0対応にするっていう作業もやっているけど、それだけじゃない。3.0で追加された、新規フレームワークの説明も付け加えているぜ。主なところで言うと、Map Kit、Store Kit、そしてCore Data。どいつもこいつも、一万字とか二万字とかいう、きっちりした分量で解説している。この辺を取り上げている本は、まだないでしょう。

いま、原稿の仕上げの最終段階。9月中には出ると思うんで、そのときはよろしくお願いします。

August 7

iPhoneのStore Kitでは、プロダクトの購入情報をレシートという形で参照できる。JSONの文字列で表す。なぜにCocoaでJSON?とか思うんだけど、そこはさておいて。

最初に取り出したレシートはエンコードされていて、そのままでは読めない。もう一回iTunesのサーバに投げて、デコードしてもらわないといけない。そのあたりは、Store Kit Programming Guide: Verifying Store Receiptsに書いてある。

が。ここに書かれている通りにやってもうまく動かない。サーバから返事は返ってくるんだけど、NullPointerExceptionとか書いてある。なんでだ?

いろいろ調べた結果、そっちのサーバに渡すときは、base64エンコードしないといけないということだった。そんなの、ドキュメントのどこにも書いとらんぞ!分かるか!いや、サーバの設計者の気持ちになれば、分かるけど。

August 5

Store Kitに本格的に取り組んでいる。コンテンツを売るタイプのアプリケーションを作っているんでね。

Store Kitの課金モデルについて、Appleのドキュメントで紹介されているのは2つ。1つは、制限解除型。あらかじめアプリケーションには全機能が備わっているが、初期状態では制限がかかっている。追加で購入すると、その制限が外れていくというタイプ。もう1つは、コンテンツダウンロード型。コンテンツリストがあって、そこから追加のコンテンツを購入すると、コンテンツサーバからダウンロードを行なってくる、というもの。

だけどさ、みんながやりたいのはやっぱりアレでしょ。月額課金。サブスクリプション。特にサーバを運用する必要があるものは、サブスクリプションは適切にして必須の課金形態だ。Appleのドキュメントにはサブスクリプションに関しては、ちょろっとした情報しかない。

でもできないことはないはずだ。Store Kitは課金処理だけを提供して、あとはアプリ側の自由。それなら、30日の使用権を販売する。アプリ側で起動時などに日付をチェックして、使用期間を過ぎていたら、もう一回購入してもらう。自動引き落としはできないけど、月額課金は実現できる。

が、これ実際にやってみようとすると、いろんな罠があるんだよね。

まず、カジュアルハックである、iPhone本体の日付を動かしたときの対策。たとえば、7月31日で期限切れを迎えるとしたら、本体の日付を毎日7月30日に戻してやれば、永遠に使えるぜ!このハックに対応するには、現在の日付を本体から取得するのではなく、どこかのサーバから取得しなくてはいけない。

Store Kitを使えば、これには対策できる。Store Kitを使ってサーバにアクセスすると、SKPaymentTransactionクラスのtransactionDateというプロパティで、アクセス日時を取得できるはず。これで、本体の設定によらず、サーバから時間が取得できる。

また、サブスクリプションモデルだと購入日も覚えておかないといけないんだけど、この日付もStore Kitのサーバから取得できる。購入日付をiPhoneローカルに保存しておくと、アプリを再インストールすると削除されてしまうという問題があるけど、それも回避できる。

じゃあ、次の問題。最初、二週間をお試し期間として無料にする。これがすぎたら、課金したい。こういうのもやりたいよね。

だけどこれはできない。なぜなら、App Storeで無料で販売しているアプリは、Store Kitが使えないから。これ、よく分からないレギュレーションだよな。無料のお試し期間から有料に移行するってのは、とても自然に感じるのに。

ならば、別の手段。たとえば、一月の使用料を300円とする。App Storeで300円で販売して、そのまま一ヶ月使える。それ以降は、課金する。これならどうよ。

実は、これもうまくいかない。さっき、購入日付をStore Kitを使って取得できる、って書いたけど、これはStore Kit経由で販売されたもののみ。App Storeで購入したアプリについては、購入日付などを調べることができない。てことは、カジュアルハックの穴が空いてしまう。

そんならしょうがないから、100円で販売して、別途月額料金300円を取るか?または、初月のみ販売価格を差し引いた200円にして、それ以降を300円とするか?どちらにしても、100円払って購入したあと、またすぐお金取られるってのは気持ちよくないよな。

または、Store Kitとは別に、購入履歴を管理するための別サーバを立てるか?そうすると、そっちでユーザ名とパスワード管理しないといけないでしょ。Store Kitで購入するときにiTunesのユーザ名とパスワード入力して、その後また別のやつを入力させるってのもいただけない。

という訳で、何遍考えてもスマートな解決法にたどり着かんのでした。いい方法があったら、誰か教えて。無料アプリに課金できれば、それが最もいいんだがな。

August 3

iPhone版マンダラート、App Storeに審査請求出したよ。「iMandalArt」って名称になる。

同時に、次期バージョンの開発もスタート。

back to top content

Copyright © 2002-2006 HMDT. All rights reserved.