読者です 読者をやめる 読者になる 読者になる

おおばログ

おっさんプログラマーのブログ。

角から生えるやつ Windows版ができた

C# WPF

★ TL;DR

  • 角から生えるやつ Windows版ができた
  • 角から生えるやつ とは...
  • プログラムを公開するから、あとはみんなでがんばれ

★ 角から生えるやつ Windows版ができた

★ 角から生えるやつ とは...

こんなやつです。


先にmacOS版を作っていて、詳細は以下に書いています。
tworks.hatenablog.jp

★ プログラムを公開するから、あとはみんなでがんばれ

  • コードはgithubで公開しています。MITライセンスです。

github.com

  • 諸事情でコマ画像は公開していません。察してください。

角から生えるアイツ

ラブライブ Objective-C

この記事はラブライブ! Advent Calendar 2016 - Adventarの21日目の記事として公開されました。

f:id:tworks:20161220110726p:plain

★ TL;DR

  • ちょっとだけプログラミングの話
  • 愛おしいラブライブのキャラクターを身近に
  • プログラムを公開するから、あとはみんなでがんばれ

★ 私とラブライブ

ラブライブといえば、キャラ(アニメ・誌面)/音楽/声優さんの三位一体が成した素晴らしい作品です。私の場合は声優さんがキッカケで「南條さんが声優しているの!?」というところから入り、気づけば絵里推しとして大ハマリしていたのでした。じょるの尊い...。えりちふつくしい...。ちなみにAqoursは梨子が好きになりました。直前のスクフェスのイベント(梨子イベ)は60位に喰い込みました。愛の力ですね。f:id:tworks:20161220013938p:plain

★ 愛おしいキャラクターを身近に

さて、ラブライブを語るときに魅力的なキャラクターの話はつきものだと思います。そして私もそうですが「魅力的なキャラをもっと身近に!」という気持ちの方は、多かれ少なかれおられると思います。その手軽な方法の1つに、PCやスマホの壁紙設定があり、私は劇場版の特典色紙をスキャンしてPC壁紙にしていました。
f:id:tworks:20161219204145p:plain
えりちふつくs

★ 動かしたい?

こうして、PC壁紙のえりちを見るたびに癒されるわけですが、ある日思ったのです。
「これ、動かせないかな...?」
次の瞬間、隣でこんなことを言われた気がしました。
「やりたいからやってみる。本当にやりたい事って、そんな感じではじまるんやない?」
これはもうやるしかない。やるったらやる!

★ 作り方(レシピ)

材料
  • アニメーションのコマ画像を数点
    • 画像を綺麗に切り出すための熱いハートがあれば(最重要)
  • 透明なウィンドウ
実装
  • マウスカーソルの追従
  • 透明なウィンドウを表示(って見えないけど)
  • コマ画像をパラパラアニメの要領で透明なウィンドウに描画

★ 出来上がっていく様子

ここからはTwitterのPostで、カタチになっていく様子をご覧ください。

1.劇場版BDのエンディングシーンから素材を丁寧に切り出し、コマ画像を作っていきます。

2.試しに透明なウィンドウの上に、1コマ描画しました。この時点ではまだ動いていません。

3.アニメーション処理を入れてみました。それっぽく動いています。

4.マウスカーソルが左下に来たら、ピョコっと生えるようにしました。いい感じです。

5.アニメーション終了時にフェードアウト処理を入れつつ、アニメーション速度を調整しました。

作業時間はコマ画像切り抜き11時間/プログラミング1時間。そんな感じで出来上がっていくのでした。このアプリを常駐させておき、ふと疲れたときにマウスを左下にもっていくと...癒されるわけです(・8・)自分で作っておきながらですが、動くものを目の当たりにするとハァアァァルゥゥアァアショォォーーー!ホッコリしますね。

★ 下から生える

一度仕組みができてしまえば、アニメのコマの差し替え+アニメーション調整でバリエーションが増やせそうです。ということで早速...ヨーソロー!


★ そして駆け抜ける!

勘のよい方は気づかれたかもしれません。
「あなた絵里推しなのに、ここまで絵里要素ないじゃん!」
と。
「私だって、好きなことだけやって、それだけで何とかなるんだったらそうしたいわよ!!」
「ちょっと待って、別にやりたいなんて。大体、私がアプリになるなんておかしいでしょう?」
と言いたい衝動を抑えつつ、作成に入ります。


2期1話冒頭のシーンですね。こちらは透明なウィンドウを画面全体に表示し描画しています。ああ...えりちふつk

★ まとめ(主に開発者の方へ)

  • 「プログラムを公開してほしい」という声を各所からいただいてましたので、これを期に公開(OSS化)します。MITライセンスです。

github.com

  • 諸事情でコマ画像は公開していません。察してください。\ダレカタスケテー!/
  • 実装は動けばヨシの心でアニメーション処理はベタ書きです。気になる方はcloneするなりforkするなりして、カッチョよく実装してあげてください。pull reqを送っていただけると作者が泣いて喜びます。
  • 私の都合でいまのところmacOS版しかないです。Windows版は一度作りかけたのですが頓挫しています。以降の開発は https://twitter.com/od_10z に引き継ぎますので、リクエストは@od_10zへ出していただけるとスピリチュアルやね。

 →(12/22 Updated / Windows版もできたかも...githubからリポジトリ公開したら本Blogからもご連絡したいと思います)
  →できました。
tworks.hatenablog.jp


  • 「プログラムを公開されても俺には開発環境ないし...」という方は、開発できる身近な方を探してみてください(すみません)
  • 知人から「テクノロジーは変態によってこうなるのだ!」という名言を頂きました。み、ミトメラレナイワァ...

★ 最後に

本プログラムが少しでも皆様の癒しになれば幸いです。\ハラショー!/

課金コンテンツをAppleに預ける - How to implement "Hosting Content with Apple"

iOS アプリ内課金 Objective-C

iOSアプリ内課金についての記事です。

前置き

iOSのアプリ内課金を実装するとき、プロダクト(課金アイテム)をどのように提供するか、検討が必要になります。そうはいっても採択できる方法は次の2つになるのですが。

  1. プロダクトをアプリに内包し課金後それが使用できる実装にする
  2. プロダクトをアプリ外(公開サーバ等)に配置し課金後にダウンロードし使用できるようにする

前者は、軽量なコンテンツを提供する場合や、課金アイテムの実体が要らない場合で採用されることが多いです。

対して後者は、比較的大きなコンテンツを提供するときに使われます。たとえばコンテンツがゲームの追加ステージの場合、ステージの画像データ、BGMなどが含まれるでしょう。それらをアプリに内包してしまうと、アプリのサイズが肥大化、アプリダウンロードに問題が生じる可能性があります(モバイル回線でダウンロード可能なiOSアプリのサイズは100MBまでです)。

例として、iOSアプリの「太鼓の達人」は、アプリ内課金で楽曲を追加購入することができ、購入後に楽曲データを公開サーバからダウンロードしています。
f:id:tworks:20140103181245j:plain

コンテンツ管理サーバを用意する?

さて、プロダクトをアプリ外に配置し課金後にダウンロードできるようにするためには、プロダクトの配置先となる公開サーバが必要になります。またプロダクトを単純に配置してしまうと、購入していないユーザもダウンロードできてしまいますので、正規購入者だけがダウンロードできるようなセキュリティーの実装(Webアプリケーションの実装など)が必要になります。
f:id:tworks:20140103182226p:plain
しかし公開サーバの運用は、多くの場合でコストがかかります。私もそうですが、個人の開発者にとってこれが足かせになることが多くあるように思います。そしてこれがボトルネックとなり、プロダクトの提供が思うようにできないことがあるかもしれません。

コンテンツ管理サーバが不要な "Hosting Content with Apple"

このボトルネックについてAppleが解決策を提供しています。ダウンロードさせるプロダクトをAppleのサーバに預ける(Hostingする)ことができる "Hosting Content with Apple" です。"Hosting Content with Apple" を利用することで、開発者は公開サーバの運用やセキュリティーの実装を省略でき、iOSアプリの開発だけに集中することができます。
f:id:tworks:20140103182948p:plain

続きを読む

現在サンドボックスでInApp購入を行う権限がありません。

iOS アプリ内課金

f:id:tworks:20140103005324p:plain
iOS実機でアプリ内課金のテストを行っていた最中、
「現在サンドボックスでInApp購入を行う権限がありません。」
というエラーが表示され、テストができなくなってしまいました。

iTunesConnectの[Manage Users] - [Test User]を確認したところ、次の状態であることがわかりました。

  • テストで使っていたApple IDは以前は[Test User]アカウントとして登録されていた
  • ただし現在は[Test User]から削除されている
  • [Manage Users] - [Test User]からApple IDを削除しても、Apple IDそのものは削除されず、サインインすることは可能な状態になる
  • この状態でアプリ内課金をテストを行うと、前述のエラーが発生する

ここまでわかったので、[Test User]から新しいテストアカウントを作成し、無事テストを続けることができました。

「iOSアプリ内課金+広告」の本を共著で書きました

iOS アプリ内課金 アプリ内広告 Objective-C

「アプリ内課金+広告 iPhoneプログラミング」という本を、id:ch3cooh393 こと和田さんと共著で書きました。秀和システムさんから2014年1月下旬に発売予定です。
f:id:tworks:20131231225537p:plain
大場は主にアプリ内課金に関するパートを、和田さんは広告パートを執筆しました。iOS 7にも対応していますし、アプリに広告を載せてチョットでもお小遣い入ったら嬉しいという方や、アプリ内課金を初めて実装したいという方にオススメできる1冊です。

目次

目次はこんな感じです。

Chapter 1 アプリ内課金と広告を理解する

アプリ内課金とアプリ内広告が存在する背景を紹介しつつ、それぞれについて説明をします。またアプリ内広告とアプリ内課金を組み合わせる魅力についても説明しつつ、この組み合わせを採用しているアプリを紹介します。

Chapter 2 アプリ内課金を実装するための準備

アプリ内課金をアプリに実装する前に準備が必要です。開発者向けに提供されている Web サイト、iOS Developer Portal、iTunes Connect を使って事前準備を行うための説明をします。

Chapter 3 アプリ内課金の実装:単一の非消耗型

アプリ内課金を実装するうえで理解をしておくべきポイントとして、アプリ〜 Store Kit 〜 App Store の関係性、各クラスの位置づけ、実装の基本ポイントを説明します。

Chapter 4 アプリ内課金の実装:単一の消耗型と自動更新購読型

アプリ内課金でよく使われている「消耗型」と比較的使われている「自動更新購読型」 について、実装のポイントを説明します。

Chapter 5 さまざまなタイプの広告を実装する

アプリ内広告を掲載するには、広告を配信する各種広告会社との契約、SDKの導入 が最初に必要です。またアプリ内での広告の見え方(見せ方)も実装の前に知っておい た方がよいでしょう。契約、SDKの導入、アプリ内広告の実装について説明します。

Chapter 6 アプリ内課金+広告タイプのアプリを作る

広告とアプリ内課金を組み合わせた(開発者にとって)魅力のあるアプリについて、 実装方法を具体的に解説します。

Chapter 7 複数の課金パターンを提供するアプリを作る

1 つのアプリ内に複数のアプリ内課金パターンを入れることで、アプリの魅力を広げることができます。このようなことを実装するにあたってのポイントを解説します。

Chapter 8 アプリ内課金をテストする

アプリ内課金はエンドユーザが支払いをする性質上、課金処理をしっかり作った上で動作確認をしておく必要があります。動作確認のポイントを説明します。

Chapter 9 アプリ内課金と広告のトラブルシューティング

アプリ内課金、アプリ内広告の実装以外に、意外なところで落とし穴が出てきたりします。多くの人が経験するであろうトラブルについて、その原因と対策について説明します。

苦労したこと

執筆当時にリリースされたiOS 7ですが、アプリ内課金のレシート確認方法がiOS 7からややこしい方法に変わっていることに気がつきました。それの解決方法について当時は日本にも海外にも情報が皆無でしたが、なんとか方法を探り当て記事にすることができました。苦労の過程はコチラに書き残しています。
503 Service Temporarily Unavailable

謝辞

仕事として和田さんと共同作業したのは今回が初めてでした。また大場は秀和さんとも初めてで、進め方の勝手が分からない中、最初から最後まで和田さんにフォローして頂き本当に助かりました。そういえば原稿生成システム(原稿をMarkdownで書いてgithubにpushしたらPDFが降ってくる)を構築してくれたのも和田さんでしたね。これが無かったらきっとスムーズに進まなかったでしょう。何から何まで感謝です!

最後に

書籍タイトルに「iPhoneプログラミング」ってありますけど、iPadにも対応してます!あとアプリ内課金に興味があっていろいろ聞きたいという方がいらっしゃいましたら、直近は関西の勉強会でアプリ内課金のお話をする予定ですので、関西圏にお住まいの方はぜひそちらにいらしてください。
【第3回】がりっち勉強会 in 関西 : ATND
それでは!