ソーシャルゲームのKPI分析に参考になりそうな資料

最近KPI分析について勉強しているので、参考になりそうな資料をまとめてみた。

「ARPUとは?ARPPUとは?違いを書いてみた」

http://blog.livedoor.jp/isdshinichirou/archives/2264938.html

まず基本的な用語から

  • ARPU(Average Revenue Per User)
    • ユーザー一人あたりの平均売上金額
  • ARPPU(Average Revenue Per Paid User)
    • 課金ユーザー一人あたりの平均売上金額
  • 課金率
    • ユーザ全体のうち課金するユーザの割合

ソーシャルゲーム界隈だと一般的には、ARPUが50~100円, ARPPUが1,000~1,500円とのこと

「パズドラの売上がヤバいと話題になってるが、売上から考えてみるとARPPUなどの数値も相当ヤバい件」

http://projetista.hatenablog.jp/entry/2013/02/15/080959

パズドラの売上がすごいという意識はみんなあるかと思いますが、ARPU, ARPPUとして見なおしてみると改めて半端ないということがわかります。 是非皆さんも手で計算してみてください。

「DAUを評価指標から捨てた会社の話 」

DAUのグラフをただ眺めているだけだと本質は見えない。

広告出向によるスパイクノイズやユーザの気まぐれによるホワイトノイズをDAUから除去する指標について紹介していて、 コロプラだとインストール後7日経過後のユーザを、ドリコムは5日間連続でログインしたユーザをDAUの代替指標として用いているそうだ。

この指標を用いることにより、定着ユーザを抽出することができ、より本質的に実施したイベントの評価を行えるらしい。

「基本的にDAUもARPPUも無視しておりますというお話」

基本的にDAUもARPPUも無視しておりますというお話

上のスライドに同じくDAUだけ見ることに意味はなく、Paid User(課金ユーザ数)にこそ着目するべきと書かれてある。

「決定版:サービスの盛り上がり具合をユーザの数(DAU)から読み解く方法」

「スマホマーケットの概要と、 マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)」

■[分析手法]ソシャゲ分析講座

あとでじっくり読みたい。

イーモバイルでPCからプリンタに繋がらない時の対処法

家の回線をイーモバイルに切り替えてから、PCがプリンタを認識しなくなった!という方いませんか? PCにいくらプリンタのドライバをインストールしても、解決しない。。。 PCがおかしいのか、プリンタがおかしいのかわからない。。。と悩んでいるあなた!

原因は、イーモバイルにあるかもしれません。 実は私もこの現象にハマっていた一人で、エプソン製のネットワーク印刷ができるプリンタを購入したのですが、PCからプリンタを使おうとしても一向にプリンタを認識してくれないということがありました。 今回はこの問題を私がどうやって解消したかを紹介します。

プライバシーセパレータ機能

イーモバイル端末にはプライバシーセパレータという機能が備わっています。 これはイーモバイル端末から提供される無線LANで接続されるPCやスマホ、プリンタ間の通信を遮断するというセキュリティ保護のための機能です。 デフォルトではこの機能は有効になっています。

結論として、このプライバシーセパレータ機能をオフにすれば、この問題は解決します。

この機能をオフにする手順は公式のこのページでわかりやすく説明されているので、参考にしてみてください。

イー・モバイル GL04P ブラック
イー・モバイル
売り上げランキング: 3,611

Amazon Kindleでハイライト一覧をWeb上で見る方法

Amazon Kindleのハイライト機能活用してますか?「これは!」と思ったフレーズや文章をメモするのに便利ですよね。 でも活用しても、振り返らないともったいないです。人間は忘れてしまう生き物なので。

そこで、私はハイライトした文章をいつでも振り返られるように、Evernoteにまとめてようと思いました! このやり方をレバレッジメモと言うそうです。

そのハイライトした文章をWeb上で確認できるサイトがこちらです。

kindle.amazon.co.jp

私は今までKindle上やアプリ上でしか見れないと思っていたのですが、こういうサイトがオフィシャルに提供されているみたいです。 PCからも確認できるので、レバレッジメモ作りが捗りそうですね!

ちなみに、Kindleでハイライトするコツは気に入ったフレーズや文章だけでなく、その前後の文脈も含めてハイライトすることですね。

これは、フレーズだけハイライトしても、数日後に振り返って見た時に「あれ?なんでこれハイライトしたんだっけ?」と忘れないようにするためです。

USの方のKindleアカウントの人はkindle.amazon.comで同様に見れるみたいです。

参考

レバレッジ・リーディング
本田 直之
東洋経済新報社
売り上げランキング: 6,478
Kindle Paperwhite(ニューモデル)
Amazon (2013-10-22)
売り上げランキング: 4

passport-yj 1.0.5 released

Yahoo!JAPANのOAuth認証(YConnect)を簡単に行うためのnpm packageである passport-yj に pull request が来ていた。 依存モジュールである oauth2 のソースコードの中身が変わっていたのか、install後に実行されるパッチが期待通りに適用されていなかった。 動作確認も問題なかったのでマージ。

あと動作確認したときに、同梱しているサンプルで正常にユーザ情報を表示できていなかったので、それも合わせて修正。 どうやらYConnect の userinfo API のレスポンス仕様が変わっていることに気づいた。

作ってから1年も経つと、ライブラリのバージョンが上がったりして思わぬところで問題が起こるのだな。

passport-yj 1.0.5

2013年度を振り返る

備忘録として、2013年度を振り返ってみたいと思う。

新しく挑戦したこととしては、iOSアプリ開発。昨年に入った頃からネイティブアプリ開発に興味を持ち始めて、個人的に Objective-C の勉強を始めた。主に参考にした本は 詳解 Objective-C 2.0 第3版iPhoneアプリ開発のコツとツボ35。仕事でも前のプロジェクトでiOSアプリ開発したいと手をあげたら、開発をやらせてもらえた。そして、今のプロジェクトではiOSチームのリーディングを担当するようになった。 ただ、まだプライベートでiOSアプリをリリースで来ていないので、今年はアプリをリリースさせたい!

他には、英語の勉強とか社内外への情報発信とかもやりたいこととして挙げていたけど、結局ほとんどできなかった。でも少しずつ改善できているのでよしとする。

技術面以外で痛感したことは、サービスを成長させることの難しさ。すごいエンジニアが何人もいるプロジェクトだからといって、生み出されたサービスが成功するとは限らない。当たり前なんだけど、実際に新規サービスを立ち上げてからサービスを運用することの難しさを実感できた1年だった。ユーザが全然使ってくれなくて、終了したサービスもある。 私はどれだけ頑張っても数字で結果を残せないなら、ビジネス上は「価値がない」と思ってる。だから、この1年は技術面だけでなく、サービスで結果が残せる1年にしたい。そのため、「リーン・スタートアップ」とか「グロースハック」という分野に興味を持ち始めている。本格的な勉強はできていないけど。。

プライベートでは、結婚という1つの大きなイベントがあった。ハネムーンでハワイにいってきた。ハネムーン以外ではあまり旅行に行けなかったので、もうちょっと仕事とプライベートのバランスを重視して過ごしたい。

そんな1年でした。

「iOSアプリ:テスト自動化入門」が届いた

すごく読みたかった本がようやく届いた。

バックエンド系のシステムだと自動テストがあるのは当たり前になってきたけど、まだまだネイティブアプリでは自動テストが書かれていないというのが実情だと思ってる(私もあまり出来ていない)。 テストができていないと、つまらないミスでアプリがクラッシュしてしまい、AppStoreのレビューが荒れて悲惨なことになる。。 かといって、リリース前に毎回手動テストするのもそれはそれでコストなので、そこでテストの自動化でしょという話になってくる。

既存のアプリのすべてのコンポーネントに自動テストを一気に用意するのは、大変だと思うけど、テストを書きやすいところから書いていければいいと思う。UIに依存しない部分、APIにリクエストして結果を取得する部分など。 現実問題、UIのテストってやるべきなのかって話もあるからね。

とりあえず目次を貼って終わりにします。

iOSアプリ テスト自動化入門|書籍情報|秀和システム

ヘッダのカスタマイズや独自処理をしたいときの AFNetworking 2.0 の使い方

ヘッダのカスタマイズや独自処理をしたいときの AFNetworking 2.0 の使い方

普通の使い方

AFHTTPRequestOperationManager というクラスを主に利用します。 GETで通信したい場合は、以下のように GET:parameters:success:failure: メソッドを呼び出すことで、リクエストを開始することができます。 parameters: に NSDictionary 型のデータを渡せば、それをよしなにURIパラメータやBODYに付与してくれます。

サーバとの通信に成功しレスポンスが返って来た場合には、success: で指定したブロックが呼び出されます。また、ネットワークに繋がっていなかったり、指定したURLのサーバホストの名前解決がでいないなどサーバとの通信に失敗した場合は、failure: で指定したブロックが呼び出されます。 ちなみに、AFHTTPRequestOperation からステータスコードやレスポンスヘッダといった情報を取り出すことができます。

GET 以外には、POST, DELETE, PUT 用のメソッドも用意されています。

ヘッダのカスタマイズ

さて、ここからカスタマイズ編です。リクエスト時のヘッダをカスタマイズしたい場合は、以下のように AFHTTPRequestOperationManagerrequestSelializer というプロパティに対して、setValue:forHTTPHeaderField: を呼び出します。 NSMutableURLRequest にヘッダを設定する場合と似てますね。

ちなみに、BASIC認証したい場合は、以下のメソッドが使えます。

NSURLRequest のカスタマイズ

リクエストを開始する前にNSURLRequestにある処理を実行したいという場合があると思います。 例えば、Parse を使っていてリクエストヘッダにアクセストークンを付与したい場合、以下のように行うことができます。

最初に紹介したやり方よりは記述量が多くなってしまいますが、必ず毎回実行したい処理ならAFHTTPRequestOperationManagerのカテゴリ拡張もしくはサブクラスを作っても良いかもしれません。

Reference

  • http://qiita.com/asakahara/items/9cb68bef56ca70b505c6
  • http://qiita.com/jtemplej/items/c3c25a5301c7250305fe
    • Request Serialization, Response Serialization の説明がわかりやすい

NSSetの内部実装

NSSet の内部実装

ふと気になったので調べてみたところ、以下のリンクを見つけた。

どうやら実装としてはハッシュテーブルらしい。だから、要素の挿入、削除、検索が一定時間でできる。

なんでそんなことがわかるかというと、NSSet のC言語実装である CFSet が CFHashTable というハッシュテーブルを使って書かれているから。

実は CoreFoundation のソースコードは公開されていて、その一部である CFSet のソースコードも見ることができる。

CFSet のメソッドを見ていると、NSSet のどのメソッドと対応しているか、それとなくわかる。気になる実装を軽く眺めてみるだけでも楽しいかも。もしかしたら、CoreFoundation のクラスの内部でクラッシュした時に、参考になるかも(笑)

社内LTでCoreDataをバックグラウンドで扱うTipsについて話しました

社内で行われている iOS_LT に初参加してきました。
その時に発表した内容をシェアします。

PR枠として、最近リリースしたアプリについても宣伝しています(笑)
良かったらぜひダウンロードをお願いします!→こちらから

5分という発表時間だったので、CoreData で使うクラス(NSManagedObjectContext, NSManagedObject)の説明とかは省略しています。
話せなかった内容としては、Nested Context, 永続化ですね。
ここらへんはまた別の機会に話せればと思います。

WordPressに全件表示のアーカイブを作る方法(はてブ数表示付き)

この WordPress で作ったブログにアーカイブを作ってみました。

archive

設置方法

アーカイブ表示用のPHPスクリプトを設置する方法については WordPressで過去記事一覧(アーカイブ)を作成する を御覧ください。

全く同じだと芸がないので、別方法でアーカイブを実装してみました。wp_get_archives という WordPress にアーカイブ取得専用の関数があるのですが、カスタマイズ性に乏しいためです。

今回の実装では、アーカイブに「日付+タイトル+はてブ数」を表示してみました。

実装で、query_posts()というブログエントリを取得する関数を使用しました。引数に showposts を指定することで取得するエントリ数を制御できます。私の場合、全件取得したかったので、query_posts('showposts=-1') としました。

PHP Script

Link