/Learning-In-App-Purchase

アップルのアプリ内課金を段階的に学習できる電子書籍と実際に動作するサンプルコードを提供するサービスです。

ラーニングアプリ内課金

What's New

過去の運営サイトGgoogle Sitesの「ラーニングアプリ内課金」からgithubに移動しました。

はじめに

iOS3で導入されたアプリ内課金により、それまでアプリケーションの売り切りや広告で収益をあげるしかありませんでしたが、現在ではさまざな販売方法が用意され、iOSアプリケーションは収益をあげるための重要なプラットフォームに成長しました。

そんな重要なアプリ内課金ですが、実際にご自身のアプリケーションに適用しようとするとさまざま障壁にぶつかります。主な理由として次のような理由が挙げられると思います。

  1. 審査ガイドラインが英語で内容がわりと頻繁に変更される
  2. アップルとの契約内容が英語でアップルがサービスを更新するたびに変更される
  3. 各種登録画面が全て英語で、内容や構成が変更される頻度が高い
  4. アップルの公式ドキュメントは整理されておらず非常にわかりにくい。

4 については深刻で、このドキュメントを読んだだけで理解できる人は皆無だと思われます。また提供されているドキュメントは殆どの場合古いことが多く、実際と異なることがあるので、なおさら混乱します。

断言します!もうアプリ内課金のアップルのドキュメント(In App Purchase プログラミングガイド)を読む必要はありません!

この「ラーニングアプリ内課金」シリーズはステップアップで理解度を深めていくアプローチをとり、一度にいろいろな内容を詰め込まないよう配慮しています。 また筆者が実際にアプリ内課金に対応したアプリケーション開発の中で手探りで得てきた情報やテクニックを紹介し、読者が筆者と同じ苦労をしないようにしたいと思っています。

本シリーズは電子書籍という形態の個人出版物ですので、その利点を生かして必要な改訂を順次行なって行く予定です。筆者の気付かなかった記述ミスはもちろん、ご意見やご指摘などありましたら是非、ご連絡ください。

最後に、通常のブログで公開されている個人的な情報とは違い内容に責任を持ちます。これが最も重要な点です。(ただし、アップルがサービスや情報を更新した後の1ヶ月の猶予はください。筆者が気づいていない可能性もあるので。)

必ずお読みください

  • コンテンツはEPUBまたはibooks、PDF形式で提供します。Volによっては実際に動作するサンプルコードも付属します。現在のところダウンロードするには電子メールをご連絡いただくことが必要です。将来はfacebookアカウントでもご利用いただけるよう検討中です。

  • 提供する情報の性質上、随時内容をアップデートしていきますが、改訂作業のコストによっては、改訂版の提供を有償とさせていただくことがあります。どうぞご理解下さい。

  • 常に最新版のみ提供していきますが、過去にご購入いただいている場合、アップデート料金のみでご購入いただけます。(最新版の販売金額の50%OFF)

  • 他に類を見ない点として、本書の通りにアプリ内課金対応アプリケーションを実装したにも関わらず、リジェクトされた場合には料金をお返しすると共に問題解決のお手伝いをします。(ただし、問題となったXcodeプロジェクトをご提示願います。もちろん、守秘義務契約を締結させていただきます)

提供予定のコンテンツ一覧と簡単な説明

入門編。Vol.2以降で必須となる基本的な知識をつけます。 アプリ内課金に興味のある全ての方を対象にしていますが、Vol.1は非エンジニアの方にも読んでいただきたい内容です。 提供済み(現在Ver1.0.2) プログラムには一切ふれないので、サンプルコードは付属しません。

Non-Consumable その1 拡張機能をあらかじめアプリケーションに用意しておき、購入後にロックを解除するタイプのアプリケーションの作成方法を紹介します。 具体的には、購入前はTwitterの公開タイムラインを一度取得して一覧表示するだけですが、購入後にはプルダウンによる公開タイムラインの更新を行えるようになります。 基本編では独自のサーバアプリケーションを使用せず、iOSアプリケーションだけで完結します。 Vol.3以降は全て独自のサーバアプリケーションが必要です。 2012年4月27日より提供開始予定。(遅れています。そのかわり他の補足資料を提供しました。スケジュールを仕切り直します。2012/5/7現在)

Non-Consumable その2 雑誌のバックナンバー販売を想定し、購入されたコンテンツ(PDF)をダウンロードする仕組みを紹介します。 どんなデータをiCloudに保存すべきかについても触れます。 2012年5月11日より提供開始予定。

Auto-Renewable Subscriptions その1 1ヶ月ごとに自動で更新されるコンテンツ(雑誌相当を想定)をユーザに提供する仕組みを紹介します。 2012年5月24日より提供開始予定。

Auto-Renewable Subscriptions その2 1ヶ月や6ヶ月など複数の期間から購読期間を1つ選択し、その期間ごとに自動で更新されるコンテンツ(雑誌相当を想定)をユーザに提供する仕組みを紹介します。

Free-Subscriptions Newsstand対応 無料の定期購読できるコンテンツをNewsstandで提供する仕組みを紹介します。

Consumable その1(リストア未対応)

複数のコンテンツ(弾薬)を一度に複数購入し、ユーザに提供する仕組みを紹介します。リストアはの実装責任は任意ですが、その1ではリストアを行いません。

Consumable その2(リストア対応)

複数のコンテンツ(弾薬)を一度に複数購入し、ユーザに提供する仕組みを紹介します。リストアはの実装責任は任意ですが、その2ではリストアを行います。 リストア機能は独自に実装しなくてはいけません。

Non-Consumable + Auto-Renewable Subscriptinons混合

購読された月からは毎月自動で購読を更新し、購読を開始する以前のコンテンツはバックナンバーとして提供する仕組みを紹介します。 結構面倒です。Vol.8までを完全に理解していないと、テストなどで苦労することになります。

Non-Renew Subscriptions

顧客管理、購入管理、コンテンツ更新など全て独自実装しなくてはいけません。 あまりに手間がかかるので、事前に読者様の購入意思を確認後に方針決定予定

ラーニングアプリ内課金Vol.11〜 企画中

  • 案1:サムライパーチェイス様やDodaii様のようなサービスを使用するメリットとデメリット。
  • 案2:ラッパークラス vs ライブラリ(デベロッパーがより利便性を求めて作るかもしれないので、筆者の経験をご紹介)
  • 世界中の開発者が疑問に思っていること

  • Apple Developer Forumで日々繰り広げられている質疑応酬の中からピックアップしてとりあげます。

  • 何かと参考になるかと思います。更新は不定期です

  • ご購入いただいた全ての読者に提供します。

  • StoreKit関連リファレンスガイド翻訳&クラス構成図(提供中)

  • 英語が苦手な方には有用だと思われます。クラス図により全体象が把握しやすくなると思われます。

StoreKitのヘッダーファイル(.h)のコメントを翻訳しました。(提供中)

App Store審査ガイドラインの翻訳(11章のみ)を提供中

In-App Purchaseに関する用語集を提供開始。(iBooksにおいては用語集に集約予定)


なお、StoreKitDemoシリーズの既存ユーザ様には、上記すべてを無償で提供します。既存ユーザ様のダウンロード場所は従来通りです。(Box.com)

当シリーズのサンプル・アプリケーションで利用したOSS

サンプルアプリケーションについて

極力外部のライブラリやフレームワークを使用せずに作成しています。 使用する場合は、おすすめのライブラリとして紹介します。

サンプルアプリケーションのコンパイルおよび動作確認には次の環境が必要です。

iOSアプリケーション

  • Mac OSX 10.7.3以上
  • Xcode 4.3.2以上
  • 対象OS: iOS 5.1以上
  • ARC:有効

サーバアプリケーション

  • Ruby 1.9.2
  • Rails 3.2.x (筆者はheroku.comの無料アカウントにて動作テストを行なっています。)

動作可能な機種

iOS5.1がインストールされた次の機種

  • iPhone3GS、iPhone4、iPhone4S
  • iPod Touch 4G
  • iPad、iPad(2G)

なお、サンプルアプリはユニバーサル対応ではなく、iPhone用としてビルドしています。

ご購入方法

  • Vol.1〜Vol.8までの一括予約購入のみが対象です。3万円(税込)
  • Vol.1以降約2週間おきに発行します。
  • Vol.8までお読みいただいた後には、この金額が高いのかそうでないのか、ご理解いただけると思います。

なお、補足資料もとても重要な情報です。

Vol.9以降の販売については現在検討中です。

将来的にはPaypalなどのサービスからお支払いいただけるよう検討中ではございますが、現時点では次の通りの方法でお願いいたします。
Twitterにて@naokits宛にご購入の意思をお伝えください。
@naokitsをフォローしていただき、DMにて氏名とメールアドレス、請求書/領収書発行の有無をお伝えください。
必要な場合には、請求先/領収先もお伝えください。
折り返しメールにて、お振込先銀行口座などお伝えします。
請求書/領収書発行は、筆者が海外在住のためPDFのみに対応しています。(筆者の手書きサインが入っているので、税務処理でも問題ありません)

コンテンツの入手方法について

Box.com経由での配布となります。

Box.comより招待メールが届きますので、承認してください。重要なご連絡もこのbox.com経由でのメール配信となります。 重要でないと思われる内容は、Twitterにて配信します。(#learning_iap ハッシュを利用しています)

配布物は次のようなファイルです。

learning_iap_vol2_v100.epub(この形式は本当に必要でしょうか?)
learning_iap_vol2_v100.pdf
learning_iap_vol2_v100.ibooks
learning_iap_vol2_v100.zip(vol.1のみサンプルコードは付属しません)

ファイル名中のv100という表記はバージョン表し、次のような意味になります。
v100 初版
v101 修正などの小さな更新
v110 項目を追加
v200 アップルのサービスなどにより、大幅な変更が行われた時。

Box.comのフォルダは次のようなディレクトリ構成になっています。

├── Beta         <--- ベータ版。書きかけを含むので無保証です。
│   ├── epub
│   ├── examples
│   ├── misc
│   └── pdf
├── README.txt   <--- このファイル
└── Release      <--- リリース版
    ├── epub
    ├── examples
    ├── misc
    ├── pdf
    └── pdf

詳しくはREADME.txtをお読みください。

ライセンスについて

現状どのライセンスを採択するか検討中ですが、方針のみお伝えします。 サンプルプログラムについてはライセンスフリーとし自由に変更・再配布可能にしたいと思います。 EPUBおよびPDFで配布したコンテンツに関しては、著作権の放棄はしませんが、一定の条件の元で再配布可能にしたいと思います。

ライセンスの決定が遅れ一部の方にはご迷惑がかかるかもしれませんが、常識の範疇でご利用いただければ全く問題ないと思います。

制作ツールについて

現在はPagesとiBooks Authorを併用して書いていますが、将来的にはReViewなども使用するかもしれません。 そのため、レイアウトなどの見栄えが変わる可能性があります。筆者としては、iBooks Authorのみに統一したい とは思っていますが、今後読者の皆様とのコミュニケーションを重ね、方針を決定したいと思います。

免罪事項

筆者は約15年以上前に一般の方が購入できるMac関連書籍の著書がありますが、それ以降ありませんでした。 今回は出版社に頼らない、完全な個人電子出版のため校正してくれる方、表現についての指摘をしてくれる方がいるわけでもありません。 そのため、表現が不自然であったり、その他おかしな点があるかもしれません。その点はどうぞご了承下さい。

しかしもし、ご指摘いただければできるだけ早急に修正したバージョンをお届けしたいと思います。 また、フリーランス10年選手の筆者は50代に向けて受託開発ではない、新たな活動を模索しています。今回の試みもその一環です。 ご指摘、ご意見など真摯に受け止めて今後の活動に向けて頑張っていきたいと思っています。

筆者について

父の趣味によりシャープのMZシリーズはもちろん後にAppleIIなどのアップル製品に触れ、その後はアップル製品のプログラミングにのめり込む。社会的には非破壊検査装置制御ソフトやロボット制御、ラダーではない選果装置のライン制御、2代目シビックのエンジンボア部の検査装置などのFAプログラミングの世界を経験した後、アップル製品のソフトウエア開発、ローカライズを経験しつつ、マックワールドエキスポの総指揮を5年間行うなどアップルにどっぷりな生活を送る。この当時のプロジェクトとしてはBBS構築ソフトTeleFinderが最もよく知られていました。当時のアップルの衰退とともに、独立系ソフトハウス会社に移動し主にトヨタ系のエンタープライズシステムに従事。事業所の所長も兼務。その後、フリーランスエンジニアとして現在も活動中(フリーランス11年目)。

近年はフィリピンのど田舎で生活し、いろんな意味で奮闘中。 現在はiOSを中心にMacOSやWEBアプリケーション受託開発にも対応していますが、50代にさしかかろうとしている現在、新たな活動を模索しています。 得意な言語はC、Objective-C、C++。使えるスクリプト言語はシェル関連、Perl、Python、Ruby。嫌いな言語はPHPとJava。C#とDはひと通り書ける程度。 IDEを除く基本的なエディタはVim派。

過去にiOSのアプリ内課金に関する情報をStoreKitDemoで提供していました。リジェクト情報などはStoreKitDemoシリーズのユーザ様より寄せられた情報が含まれています。 ユーザの皆様に感謝します。

iOS3以降、さまざまなタイプのアプリ内課金を受託開発した経験を有します。

筆者が現在利用しているWEBサービス(積極的に更新してないものは含めていません) twitter facebook github bitbucket

課金部分のみの受託開発について

課金の部分だけ実装してほしいというご要望やご相談を何件かいただきましたので、現時点では私の方針のみご紹介します。

年間契約での開発業務や、その他個人として受託した案件がありますので、あまりヘビーな仕様のお手伝いは無理かもしれません。 納期次第ですが、基本的には「Non-Renewing Subscription」タイプのご相談は遠慮させていただいております。理由としては、課金に関するほとんどの実装を全て独自実装しなくてはならず、仕様によって実装手段が大きく変動します。またクライアントおよびサーバーの設計&実装が必要であり、相当な工数がかかります。筆者の業務契約完了などにより時間に余裕ができた場合には、改めてお知らせします。

サーバー側アプリもご依頼される場合。 筆者が現在対応可能なサーバサイド言語は、Python、Rubyに限らせていただいております。その他の言語をご希望の場合には、申し訳ありませんが対応できませんのでご了承ください。 Rails、SinatraやGoogle AppEngine、Djangoなどのサーバアプリケーション環境についてはご相談ください。(PHP、Javaについては、筆者の嗜好により受け付けておりません。)

なお、筆者はWindowsに関する知識が全くありませんので、ご承知ください。(独立後10年前頃から全く触れていません)

これらをご承知の上、ご相談ください。