52
「青空読手」の作り方 2012/12/21()@InfoTalk 樋口 祐紀 ([email protected])

AozoraYomite @InfoTalk 2012/12/21

Embed Size (px)

DESCRIPTION

2012/12/21 に産業技術大学院大学の InfoTalk でお話しした内容です。

Citation preview

Page 1: AozoraYomite @InfoTalk 2012/12/21

「青空読手」の作り方 2012/12/21(金)@InfoTalk

樋口 祐紀

([email protected])

Page 2: AozoraYomite @InfoTalk 2012/12/21

突然ですがクイズです

• Gmail / Google+ / Twitter を利用し、任意の文字列を送信するAndroidアプリを作るのに必要な時間は?

A. 3分

B. 3時間

C. 3日

D. Androidでは無理... だけど...

2 3秒でできるよ。そう、iPhoneならね

Page 3: AozoraYomite @InfoTalk 2012/12/21

本日の内容

• 青空読手のご紹介

• 「青空読手」を作ろうと思った、

たった3つの理由

• Kindle/Playブックスとの比較

• どうやって作ってるの?

• インテントとは?

• マネタイズ方法 3

Page 4: AozoraYomite @InfoTalk 2012/12/21

自己紹介

Page 5: AozoraYomite @InfoTalk 2012/12/21

自己紹介

名前: 樋口 祐紀

(ひぐち ゆうき)

年齢: 32歳

(1980/02/08)

出身:

所属: (株)PRO&BSC

5

S市杜王町

Page 6: AozoraYomite @InfoTalk 2012/12/21

Androidとの関わりは...

6

Page 7: AozoraYomite @InfoTalk 2012/12/21

青空読手のご紹介

Page 8: AozoraYomite @InfoTalk 2012/12/21

青空読手のご紹介①

8

作者一覧やランキングから選択 文庫の表示 もちろんしおり機能も

Page 9: AozoraYomite @InfoTalk 2012/12/21

サイズ: 極大 + 太さ: 極太 サイズ: 極小 + 太さ: 極細

文字のサイズと太さの指定

9

青空読手のご紹介②

Page 10: AozoraYomite @InfoTalk 2012/12/21

青空読手のご紹介③

10

横向き表示にも対応

SDカードや本体内の テキストの読み込みも可能

Page 11: AozoraYomite @InfoTalk 2012/12/21

mobile ASCII vol.5に掲載!

11

2011/7/29発行

Page 12: AozoraYomite @InfoTalk 2012/12/21

PLUTINUM Prize 頂きました!

12

Page 13: AozoraYomite @InfoTalk 2012/12/21

ディベロッパーコンソール

13

端 末

1 Samsung Galaxy S 7.21 %(8,940)

2 Sharp IS03 6.08 %(7,535)

3 Samsung Galaxy Tab 4.52 %(5,596)

4 Samsung Galaxy S2 4.35 % (5,393)

5 Fujitsu Toshiba REGZA Phone 4.34 % (5,376)

6 SEMC Xperia Arco 3.34 % (4,141)

7 SEMC Xperia Arc 2.85 % (3,536)

8 SEMC Xperia X10 2.28 % (2,824)

9 SEMC Xperia Arco HD 2.21 % (2,733)

10 その他 62.82 % (77,838)

1 日本 97.74 %(121,107)

2 中国 0.43 % (539)

3 アメリカ合衆国 0.43 % (529)

4 大韓民国 0.25 % (312)

5 台湾 0.25 % (304)

6 香港 0.10 % (121)

7 タイ 0.08 % (104)

8 オーストラリア 0.07 % (91)

9 イギリス 0.07 % (90)

10 その他 0.58 % (715)

Page 14: AozoraYomite @InfoTalk 2012/12/21

「青空読手」を作ろうと思った、たった3つの理由

Page 15: AozoraYomite @InfoTalk 2012/12/21

理由 その①

• そこに Xperia があったから

– 大のソニエリ好き x 2010/04/01 Xperia 発売

15 【出典】 http://keitaiall.jp/premini.html / http://keitaiall.jp/Xperia.html

Page 16: AozoraYomite @InfoTalk 2012/12/21

理由 その②

• A3 の開催

– 賞金100万円!安西先生、お金が欲しいです・・・

16

大賞 すべての応募作品の中で最も優れた作品 (1作品、トロフィー+賞金100万円)

優秀賞 大賞に準じた優秀な作品 (2作品)

技術賞 技術的に優れた作品 (1作品)

ルック& フィール賞

ユーザーインタフェースや操作性に優れた作品 (1作品)

学生賞 学生が開発した作品で優れたもの (1作品)

グローバル賞

ワールドワイドでの展開が期待できる作品で優れたもの (1作品)

Page 17: AozoraYomite @InfoTalk 2012/12/21

理由 その③

• 少年少女の貴重な時間がゲームに…

– 2009/10 「怪盗ロワイヤル」が運用開始

– 通学時間等に有意義な時間を過ごしてほしい!!

– と思いながら、ゲームの広告でお世話になってます ;-) 17 【出典】 http://getnews.jp/archives/156602

Page 18: AozoraYomite @InfoTalk 2012/12/21

「青空読手」のリリース

18

ver. 0.9 - 2010/05/13リリース 機能: 明朝体フォントのダウンロード ランキング20位までのリンクを表示 ぬるぬるめくる感覚でページおくり 文字サイズの変更

ver. 0.9.9.5 - 2012/12/15リリース 初版から 35 回目のアップデート

2年半で30万ダウンロード

Page 19: AozoraYomite @InfoTalk 2012/12/21

継続のモチベーションはユーザの声

Googleユーザー - 2012/11/11 - バージョン 0.9.9.4

★★★★★ 更新で使えるようになりました!(タブレットUIでは使えませんね) 0.9.9.3ではタップしてもメニューにアクセスできなかったのですが 自動更新後に試してみたら、0.9.9.4で使えるようになりました。対応ありがとうございます。アンインストールしなくて良かった(笑)

Googleユーザー - 2012/11/11 - バージョン 0.9.9.4

★★★☆☆ 仕様か不具合か?! アップデートすると、今まで読んだ履歴が全てなくなるのと、フォントをダウンロードして使用すると、表示されない漢字などが出てくる(標準のフォントではそういうことはないようだ)のが改善されると嬉しい。

Googleユーザー - 2012/11/10 - バージョン 0.9.9.4

★★☆☆☆ 不具合! キャシュ削除するとアプリダウンする…改善願います!F-10D

Googleユーザー - 2012/08/30 - バージョン 0.9.9.2

★★★★★ すばらしい 下手な有料アプリよりも調子がいいですね。 個人的な欲を言うなら横書き機能も欲しいですが、テキストファイルが読み込める横書きリーダーってあんまり無いんですよね。 19

Page 20: AozoraYomite @InfoTalk 2012/12/21

Kindle/Playブックス との比較

Page 21: AozoraYomite @InfoTalk 2012/12/21

Amazon Kindle

21 アプリを起動 書籍を読む 書籍を探す

Page 22: AozoraYomite @InfoTalk 2012/12/21

Google Play ブックス

22 アプリを起動 書籍を読む 書籍を探す

Page 23: AozoraYomite @InfoTalk 2012/12/21

青空読手

23 アプリを起動 書籍を読む 書籍を探す

Page 24: AozoraYomite @InfoTalk 2012/12/21

アプリの比較

24

Kindle Playブックス 青空読手

書籍データ Amazon http://www.amazon.co.jp

Google Play https://play.google.com

青空文庫 http://www.aozora.gr.jp

閲覧可能書籍数 ※初回起動直後

0冊 5冊 500冊

アプリサイズ ※SD移動後端末側サイズ

4.5MB 4.1MB 1.75MB

起動の早さ × △ ○

ページめくり △ × ○

他アプリ連携 × × ○ 任意のテキストファイルを表示可能

表示設定

文字サイズ: 12段階 行間: 3段階

余白: 3パターン 配色: 3パターン

輝度調整

配色: 3パターン 輝度調整

文字サイズ: 9段階 行間: 9段階

文字間隔: 5段階 文字の太さ: 5段階 配色: ∞パターン

輝度調整 / 時計表示

Page 25: AozoraYomite @InfoTalk 2012/12/21

Kindle大好きです!!ジョジョ読めるし!!

25

Page 26: AozoraYomite @InfoTalk 2012/12/21

「青空読手」開発で心掛けたこと

• インストールしてすぐ使えること

– ログイン、検索なしですぐに有名書籍を読める

– ユーザの一番の悩みは「何を読んでいいか分からない」

• 動作が早いこと

– アイコンをタップしてすぐ起動する / ぬるぬるめくれる

• 見た目の設定はなるべく柔軟に

– ユーザの要望はユーザの数だけある

• 自分が欲しくて特徴あるアプリをつくる

【ボツ】 辞書 / 横書 / 収録数増加 / 青空文庫検索 26

Page 27: AozoraYomite @InfoTalk 2012/12/21

どうやって作ってるの?

Page 28: AozoraYomite @InfoTalk 2012/12/21

どうやって作ってるの!?①

• データは青空文庫サイト*1からzipファイルをDL → 解凍

– 500 文 庫 分 の zip フ ァ イ ル への ”URL” を保持

• フォントは「IPA明朝」をダウンロードして利用

• あとは頑張って描画処理!

– (背景+本文+ルビ+タイトル+ページ数)x 2

28 *1 … http://www.aozora.gr.jp/

禁則処理等をきちんと実施しておらず、編集関係の方に気持ち悪がられたことも…

Page 29: AozoraYomite @InfoTalk 2012/12/21

どうやって作ってるの!?②

• Twitterによるつぶやき

29

Page 30: AozoraYomite @InfoTalk 2012/12/21

どうやって作ってるの!?③

30 【参考サイト】throw Life - Androidアプリのバグ報告システムを考える http://www.adamrocker.com/blog/288/bug-report-system-for-android.html

def get_or_post(self): pdev = self.request.get('dev').encode('utf-8') pos = self.request.get('os').encode('utf-8') pver = self.request.get('ver').encode('utf-8') ptitle = self.request.get('title').encode('utf-8') pbug = self.request.get('bug').encode('utf-8') report = "dev: " + pdev + "¥n" report += "os: " + pos + "¥n" report += "ver: " + pver + "¥n" report += "title: " + ptitle + "¥n" report += "bug: " + pbug mail.send_mail( sender='[email protected]', to='[email protected]', subject='Bug Report - AozoraYomite', body=report)

Page 31: AozoraYomite @InfoTalk 2012/12/21

どうやって作ってるの!?④

• 青空プロバイダとの連携機能

31

Page 32: AozoraYomite @InfoTalk 2012/12/21

インテントとは?

Page 33: AozoraYomite @InfoTalk 2012/12/21

突然ですがクイズです

• Gmail / Google+ / Twitter を利用し、任意の文字列を送信するAndroidアプリを作るのに必要な時間は?

A. 3分

B. 3時間

C. 3日

D. Androidでは無理... だけど...

3秒でできるよ。そう、iPhoneならね 33

Page 34: AozoraYomite @InfoTalk 2012/12/21

これだけ書けば解決! public class Test extends Activity {

/** Called when the activity is first created. */

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

new AlertDialog.Builder(this).setMessage("Start activity ?")

.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

Intent intent = new Intent(Intent.ACTION_SEND);

intent.setType("text/plain");

intent.putExtra(Intent.EXTRA_TEXT, "Hello, Android!!");

startActivity(intent);

}

}).setNegativeButton("No", null).show();

}

}

34

Page 35: AozoraYomite @InfoTalk 2012/12/21

Gmail

Google+

twicca

This is Android!!

35

Page 36: AozoraYomite @InfoTalk 2012/12/21

どうやって作ってるの!?⑤

• Twitterへのつぶやき投稿はこんなにかんたん!

36

final String msg = " 『坊っちゃん』なう #aozorayomite";

final Uri uri = Uri.parse( http://twitter.com/home/?status= + URLEncoder.encode(msg, "UTF-8"));

final Intent intent = new Intent(Intent.ACTION_VIEW, uri);

startActivity(intent);

インテントとは... のこと

Page 37: AozoraYomite @InfoTalk 2012/12/21

Intent と ExtraData Activity Actions

– ACTION_MAIN

– ACTION_VIEW

– ACTION_ATTACH_DATA

– ACTION_EDIT

– ACTION_PICK

– ACTION_CHOOSER

– ACTION_GET_CONTENT

– ACTION_DIAL

– ACTION_CALL

– ACTION_SEND

– ACTION_SENDTO

– ACTION_ANSWER

– ACTION_INSERT

– ACTION_DELETE

– ACTION_RUN

– ACTION_SYNC

– ACTION_PICK_ACTIVITY

– ACTION_SEARCH

– ACTION_WEB_SEARCH

– ACTION_FACTORY_TEST

Broadcast Actions – ACTION_TIME_TICK

– ACTION_TIME_CHANGED

– ACTION_TIMEZONE_CHANGED

– ACTION_BOOT_COMPLETED

– ACTION_PACKAGE_ADDED

– ACTION_PACKAGE_CHANGED

– ACTION_PACKAGE_REMOVED

– ACTION_PACKAGE_RESTARTED

– ACTION_PACKAGE_DATA_CLEARED

– ACTION_UID_REMOVED

– ACTION_BATTERY_CHANGED

– ACTION_POWER_CONNECTED

– ACTION_POWER_DISCONNECTED

– ACTION_SHUTDOWN

Extra Data – EXTRA_ALARM_COUNT

– EXTRA_BCC

– EXTRA_CC

– EXTRA_CHANGED_COMPONENT_NAME

– EXTRA_DATA_REMOVED

– EXTRA_DOCK_STATE

– EXTRA_DOCK_STATE_CAR

– EXTRA_DOCK_STATE_DESK

– EXTRA_DOCK_STATE_UNDOCKED

– EXTRA_DONT_KILL_APP

– EXTRA_EMAIL

– EXTRA_INITIAL_INTENTS

– EXTRA_INTENT

– EXTRA_KEY_EVENT

– EXTRA_PHONE_NUMBER

– EXTRA_REMOTE_INTENT_TOKEN

– EXTRA_REPLACING

– EXTRA_SHORTCUT_ICON

– EXTRA_SHORTCUT_ICON_RESOURCE

– EXTRA_SHORTCUT_INTENT

– EXTRA_STREAM

– EXTRA_SHORTCUT_NAME

– EXTRA_SUBJECT

– EXTRA_TEMPLATE

– EXTRA_TEXT

– EXTRA_TITLE

– EXTRA_UID 37

Page 38: AozoraYomite @InfoTalk 2012/12/21

青空読手でのインテント活用

• 青空文庫サイトから書籍データをダウンロードするためのアプリ。リーダー機能は備えていない

× • 青空文庫リーダーアプリ。書籍データへのリンクは予め収

録したランキング。任意データ取得は不可

38

【インテント発行】 だれか!このテキストを表示して!!

Page 39: AozoraYomite @InfoTalk 2012/12/21

マネタイズ方法

Page 40: AozoraYomite @InfoTalk 2012/12/21

マネタイズとはなんぞや?

40

[名](スル)無料のサービスから始めて、将来、収益を生む事業に発展させること。

例えばインターネット事業で、コンテンツを無料で提供し、多数の利用者を獲得したところで有料コンテンツに移行したり、検索エンジンを無料で提供しながら利用者以外から広告収入を得るなど、さまざまな方法が考えられている。

出典:マネタイズ【monetize】の意味 - 国語辞書 - goo辞書 http://goo.gl/RRI8

Page 41: AozoraYomite @InfoTalk 2012/12/21

突然ですがクイズです パート2

• 青空読手のユーザの 10% が ¥210- で購入してくれていたとすると、これまでに私の懐にいくら入っていたでしょう?

A. ¥400,000-

B. ¥4,000,000-

C. ¥40,000,000-

D. もっと稼げる。そう、iPhone ならね

41

Page 42: AozoraYomite @InfoTalk 2012/12/21

実はけっこう稼げるAndroid!?

300,000 (DL数) × 10% (購入割合)

× ¥210- × 70% (配分)

= ¥4,410,000- 42

• 儲け = [販売数] x [価格] x [70% (配分)]

Page 43: AozoraYomite @InfoTalk 2012/12/21

DL 数が伸びないことには...

43

① ②

Page 44: AozoraYomite @InfoTalk 2012/12/21

Android有料アプリは苦戦中...

• そこで広告!Androidでは AdMob がメジャー

44

タップすると幸せになれます!

僕が…

Page 45: AozoraYomite @InfoTalk 2012/12/21

広告収入全盛期の盛り上がりっぷり

45

Page 46: AozoraYomite @InfoTalk 2012/12/21

関連アプリのご紹介

Page 47: AozoraYomite @InfoTalk 2012/12/21

SocialBeer by AMBER RONDO, PRO&BSC

47

• ビール図鑑&「のんだ!」記録アプリ

Page 48: AozoraYomite @InfoTalk 2012/12/21

ささねが by soreco.me

48

• 仙台に届け!願いごと投稿アプリ

Page 49: AozoraYomite @InfoTalk 2012/12/21

49

passer by @tototti

• 据え置き型Twitterクライアントアプリ

Page 50: AozoraYomite @InfoTalk 2012/12/21

Shin-Kan News Reader by @tototti

50

• 電光掲示板風RSSリーダアプリ

Page 51: AozoraYomite @InfoTalk 2012/12/21

STAND CAMERA by @tototti

51

• トレーディングカード風画像作成アプリ

Page 52: AozoraYomite @InfoTalk 2012/12/21

Follow me !!

52

樋口祐紀 @hyukix