SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
青空読手とインテント
 2011/09/30(金)@東北支部発信会
           樋口 祐紀
 (@hyukix / hyukix@gmail.com)
自己紹介
自己紹介
名前: 樋口 祐紀
  (ひぐち ゆうき)
年齢: 31歳
  (1980/02/08)
出身: 三重県四日市市
所属: (株)PRO&BSC
趣味: 10年前までは...
                 3
Androidとの関わりは...




                   4
青空読手って!?
青空読手のご紹介①
作者一覧やランキングから選択   文庫の表示   もちろんしおり機能も




                                      6
青空読手のご紹介②
               サイズ: 極大 + 太さ: 極太   サイズ: 極小 + 太さ: 極細

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




                                                 7
青空読手のご紹介③


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

  横向き表示にも対応




                             8
mobile ASCII vol.5に掲載!
               2011/7/29発行




                             9
PLUTINUM Prize
  頂きました!




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




                          端末                                      国
1 Samsung Galaxy S                   12.5% (14,561)   1 日本        98.3% (114,643)
2 Sharp IS03                         10.7% (12,507)   2 アメリカ合衆国       0.4% (481)
3 Fujitsu Toshiba REGZA Phone T01C    8.8% (10,219)   3 中国            0.3% (321)
4 SEMC Xperia X10                      6.8% (7,946)   4 大韓民国          0.2% (224)
5 Samsung Galaxy Tab                   6.5% (7,544)   5 台湾            0.2% (214)
6 SO-02C                               6.4% (7,485)   6 香港              0.1% (98)
7 SEMC Xperia Arc                      6.3% (7,313)   7 タイ              0.1% (84)
8 Samsung Galaxy S2                    4.3% (4,959)   8 イギリス            0.1% (71)
9 Sharp IS01                           3.1% (3,599)   9 オーストラリア         0.0% (52)
10 Sharp Lynx 3D SH-03C                3.0% (3,455)   10 シンガポール                11
                                                                        0.0% (51)
どうやって作ってるの?
どうやって作ってるの!?①
   • データは青空文庫サイト *1 から
     zipファイルをDL後、解凍
       – 500文庫分のzipファイルへのリン
         クを保持

   • フォントは「IPA明朝」をダウン
     ロードして利用
   • SurfaceViewで頑張って描画
       – (背景+本文+ルビ+タイトル
         +ページ数)x 2
*1 … http://www.aozora.gr.jp/   13
どうやって作ってるの!?②
• Twitterによるつぶやき




                   14
どうやって作ってるの!?③
 • Twitterへのつぶやき投稿はこんなにかんたん!

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);




                                                        15
どうやって作ってるの!?④
                                              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='hyukix@gmail.com',
                                                  to='hyukix@gmail.com',
                                                  subject='Bug Report - AozoraYomite',
                                                  body=report)




【参考サイト】throw Life - Androidアプリのバグ報告システムを考える
http://www.adamrocker.com/blog/288/bug-report-system-for-android.html                        16
どうやって作ってるの!?⑤
• 青空プロバイダとの連携機能




                  17
突然ですがクイズです
• Twitter / Evernote / メールを利用し、
  任意の文字列を送信するAndroidアプ
  リを作るのに必要な時間は?
  A. 3分
  B. 3時間
  C. 3日
  D. Androidでは無理... だけど...
    3秒でできるよ。そう、iPhoneならね 18
これだけ書けば解決!
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();
    }
}                                                                       19
This is Android!!   Evernote
                               IMoNi
                                       twicca




                                          20
インテントって!?
インテントって何?
  • 処理依頼メッセージのこと
      – 例: AK Notepadによる他アプリ機能




     AK Notepadにてテキ    ACTION_SEND イ ン    Twidroidにペーストさ
     ストを入力。メニューから      テ ン トが発行 さ れ 、 対   れる。ポイントは相互連
     Shareを指定すると…      応アプリがリストアップ        携を前提としてない点
出典:使って分かったAndroidとiPhoneの違い http://goo.gl/5nGc             22
Extra Data
IntentとExtraData                                            –
                                                            –
                                                                EXTRA_ALARM_COUNT
                                                                EXTRA_BCC
Activity Actions         Broadcast Actions                  –   EXTRA_CC
–   ACTION_MAIN             – ACTION_TIME_TICK              –   EXTRA_CHANGED_COMPONENT_NAME
–   ACTION_VIEW             – ACTION_TIME_CHANGED           –   EXTRA_DATA_REMOVED
–   ACTION_ATTACH_DATA – ACTION_TIMEZONE_CHANGED            –   EXTRA_DOCK_STATE
–   ACTION_EDIT             – ACTION_BOOT_COMPLETED         –   EXTRA_DOCK_STATE_CAR
–   ACTION_PICK             – ACTION_PACKAGE_ADDED          –   EXTRA_DOCK_STATE_DESK
–   ACTION_CHOOSER          – ACTION_PACKAGE_CHANGED        –   EXTRA_DOCK_STATE_UNDOCKED
–   ACTION_GET_CONTENT – ACTION_PACKAGE_REMOVED             –   EXTRA_DONT_KILL_APP
–   ACTION_DIAL             – ACTION_PACKAGE_RESTARTED      –   EXTRA_EMAIL
–   ACTION_CALL             – ACTION_PACKAGE_DATA_CLEA      –   EXTRA_INITIAL_INTENTS
–   ACTION_SEND                 RED                         –   EXTRA_INTENT
–   ACTION_SENDTO           – ACTION_UID_REMOVED            –   EXTRA_KEY_EVENT
–   ACTION_ANSWER           – ACTION_BATTERY_CHANGED        –   EXTRA_PHONE_NUMBER
–   ACTION_INSERT           – ACTION_POWER_CONNECTED        –   EXTRA_REMOTE_INTENT_TOKEN
–   ACTION_DELETE           – ACTION_POWER_DISCONNECT       –   EXTRA_REPLACING
    ACTION_RUN                  ED
–                                                           –   EXTRA_SHORTCUT_ICON
    ACTION_SYNC             – ACTION_SHUTDOWN
–                                                           –   EXTRA_SHORTCUT_ICON_RESOURCE
–   ACTION_PICK_ACTIVITY                                    –   EXTRA_SHORTCUT_INTENT
–   ACTION_SEARCH                                           –   EXTRA_STREAM
–   ACTION_WEB_SEARCH                                       –   EXTRA_SHORTCUT_NAME
–   ACTION_FACTORY_TEST                                     –   EXTRA_SUBJECT
     // インテントによるブラウザ起動の例                                    –   EXTRA_TEMPLATE
     Uri uri = Uri.parse("http://probsc.jp");               –   EXTRA_TEXT
     Intent intent = new Intent(Intent.ACTION_VIEW, uri);   –   EXTRA_TITLE
     startActivity(intent);                                 –   EXTRA_UID              23
インテントは空も飛ぶんです!
Chrome to Phone

                      おもむろにクリック!




                  Androidでブラウズ
                                 24
空飛ぶインテントの正体は...
• Cloud to Device Messaging (C2DM)
 – サーバからAndroidアプリケーションへの軽量
   メッセージの送信を助けるサービス
 – メッセージはキューイングされるが順序保証なし
 – ア プ リ は 常 時 起 動 の 必 要 は な く 、 Intent
   Broadcastをトリガーに起動される
 – 処理方法はアプリに依存
 – Android2.2 (Froyo) が必要
 – Googleアカウントの設定と接続が必要
                                      25
C2DMのアーキテクチャ
                           Google C2DM Servers

                                                  1. (Register)
                                                   Sender ID / Application
4. (POST
                                                2. Registration ID
 https://android.apis.google.com/c2dm/send)
                                                  (定期的に更新)
 Registration ID / data.<key>
                                              5. Message
                                                               App
                                 3. Registration ID
                                                           Application ID
                                   (定期的に更新)
Third-Party                                                 Sender ID
Application Server                            6. Intent
                                                          Mobile Device
                                                                      26
青空読手でのインテント活用
• 青空文庫サイトから書籍データをダウンロードするための
  アプリ。リーダー機能は備えていない
             ×
• 青空文庫リーダーアプリ。書籍データへのリンクは予め収
  録したランキング。任意データ取得は不可




                               27
暗黙的インテントを受け取るためのManifest宣言
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=http://schemas.android.com/apk/res/android
  package="com.gmail.hyukix.aozorayomite" android:versionName="0.9.8.2"
  android:versionCode=“10”>
  ・・・
  <application android:icon=“@drawable/icon” android:label=“@string/app_name”>
     <activity android:name=".AozoraYomite" android:label="@string/app_name"
        android:screenOrientation=“portrait”>
        <intent-filter><action android:name=“android.intent.action.MAIN” />
          <category android:name=“android.intent.category.LAUNCHER” /></intent-filter>
     </activity>
     <activity android:name=".Reader" android:label="@string/app_name"
        android:screenOrientation="portrait">
       <intent-filter>
          <action android:name="android.intent.action.VIEW" />
          <category android:name="android.intent.category.DEFAULT" />
          <!-- file://xxxxのようなリクエストを受け付ける -->
          <data android:scheme="file" android:mimeType="text/plain" />
       </intent-filter>
     </activity>
     ・・・
  </application>
  ・・・
</manifest>
                                                                                         28
Activityでのインテント判定と処理振り分け
package com.gmail.hyukix.aozorayomite;
  ・・・
public class Reader extends Activity {
      ・・・
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
         ・・・
     if (Intent.ACTION_VIEW.equals(getIntent().getAction())) {
         // 暗黙的インテント
            ・・・
      } else {
         // 明示的インテント
            ・・・
      }
         ・・・
  }
      ・・・
}




                                                                 29
マネタイズ
この1年で…




出典:http://www.apple.com/jp/macbookair/   31
DL 数が伸びないことには...
                     ①   ②   ③




① アンドロイダー レビュー記事
② アンドロイダー 青空文庫比較記事
③ au one market 登録               32
昨年度末の盛り上がり!




              33
今後ともどうぞよろしくお願いします
• ハンドアウト
 – http://bit.ly/nodakK
   (3.3MB)

• 青空読手 ver0.9.8.16
 (野良アプリ版)
 – http://bit.ly/nvkHfM
   (267KB)

• 青空読手 ver0.9.8.16
 (AndroidMarket)

                          34

Mais conteúdo relacionado

Mais procurados

使いやすいAI(人工知能)「IBM Watson」を見てみよう! - 書籍「現場で使える! Watson開発入門」連動セミナー:リクルートスタッフィング
使いやすいAI(人工知能)「IBM Watson」を見てみよう! - 書籍「現場で使える! Watson開発入門」連動セミナー:リクルートスタッフィング使いやすいAI(人工知能)「IBM Watson」を見てみよう! - 書籍「現場で使える! Watson開発入門」連動セミナー:リクルートスタッフィング
使いやすいAI(人工知能)「IBM Watson」を見てみよう! - 書籍「現場で使える! Watson開発入門」連動セミナー:リクルートスタッフィングYoshiki Hayama
 
Aiwolf seminar 2019_ja
Aiwolf seminar 2019_jaAiwolf seminar 2019_ja
Aiwolf seminar 2019_jaTakedaatsushi
 
デバイス別Google Analytics導入ガイドライン
デバイス別Google Analytics導入ガイドラインデバイス別Google Analytics導入ガイドライン
デバイス別Google Analytics導入ガイドラインMultiDeviceLab
 
実験心理学者のためのPython
実験心理学者のためのPython実験心理学者のためのPython
実験心理学者のためのPythonMasataka Miyoshi
 
12.06.16 日本橋勉強会資料 公開用
12.06.16 日本橋勉強会資料 公開用12.06.16 日本橋勉強会資料 公開用
12.06.16 日本橋勉強会資料 公開用Miwa Iwatsuki
 
OpenCVで作るスタンプAR
OpenCVで作るスタンプAROpenCVで作るスタンプAR
OpenCVで作るスタンプARTakashi Yoshinaga
 

Mais procurados (6)

使いやすいAI(人工知能)「IBM Watson」を見てみよう! - 書籍「現場で使える! Watson開発入門」連動セミナー:リクルートスタッフィング
使いやすいAI(人工知能)「IBM Watson」を見てみよう! - 書籍「現場で使える! Watson開発入門」連動セミナー:リクルートスタッフィング使いやすいAI(人工知能)「IBM Watson」を見てみよう! - 書籍「現場で使える! Watson開発入門」連動セミナー:リクルートスタッフィング
使いやすいAI(人工知能)「IBM Watson」を見てみよう! - 書籍「現場で使える! Watson開発入門」連動セミナー:リクルートスタッフィング
 
Aiwolf seminar 2019_ja
Aiwolf seminar 2019_jaAiwolf seminar 2019_ja
Aiwolf seminar 2019_ja
 
デバイス別Google Analytics導入ガイドライン
デバイス別Google Analytics導入ガイドラインデバイス別Google Analytics導入ガイドライン
デバイス別Google Analytics導入ガイドライン
 
実験心理学者のためのPython
実験心理学者のためのPython実験心理学者のためのPython
実験心理学者のためのPython
 
12.06.16 日本橋勉強会資料 公開用
12.06.16 日本橋勉強会資料 公開用12.06.16 日本橋勉強会資料 公開用
12.06.16 日本橋勉強会資料 公開用
 
OpenCVで作るスタンプAR
OpenCVで作るスタンプAROpenCVで作るスタンプAR
OpenCVで作るスタンプAR
 

Destaque

Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.Yuki Higuchi
 
Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.Yuki Higuchi
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Yuki Higuchi
 
Programmer @jc-21 2014/03/29
Programmer @jc-21 2014/03/29Programmer @jc-21 2014/03/29
Programmer @jc-21 2014/03/29Yuki Higuchi
 
AozoraYomite @InfoTalk 2012/12/21
AozoraYomite @InfoTalk 2012/12/21AozoraYomite @InfoTalk 2012/12/21
AozoraYomite @InfoTalk 2012/12/21Yuki Higuchi
 
カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明Masakazu Matsushita
 
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db月間10億pvを支えるmongo db
月間10億pvを支えるmongo dbYuji Isobe
 

Destaque (8)

Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.Android Lecture #04 @PRO&BSC Inc.
Android Lecture #04 @PRO&BSC Inc.
 
Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.Android Lecture #03 @PRO&BSC Inc.
Android Lecture #03 @PRO&BSC Inc.
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
 
Programmer @jc-21 2014/03/29
Programmer @jc-21 2014/03/29Programmer @jc-21 2014/03/29
Programmer @jc-21 2014/03/29
 
AozoraYomite @InfoTalk 2012/12/21
AozoraYomite @InfoTalk 2012/12/21AozoraYomite @InfoTalk 2012/12/21
AozoraYomite @InfoTalk 2012/12/21
 
カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明
 
月間10億pvを支えるmongo db
月間10億pvを支えるmongo db月間10億pvを支えるmongo db
月間10億pvを支えるmongo db
 
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job? Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
 

Semelhante a AOZORAYOMITE and Intent

Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Takashi EGAWA
 
オープンデータセミナー in 鳥取
オープンデータセミナー in 鳥取オープンデータセミナー in 鳥取
オープンデータセミナー in 鳥取Taisuke Fukuno
 
Mashup Caravan in オープンソースカンファレンス2011 Hiroshima: infoScoop OpenSource
Mashup Caravan in オープンソースカンファレンス2011 Hiroshima: infoScoop OpenSourceMashup Caravan in オープンソースカンファレンス2011 Hiroshima: infoScoop OpenSource
Mashup Caravan in オープンソースカンファレンス2011 Hiroshima: infoScoop OpenSourcecmutoh
 
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作るgumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作るgumilab
 
20150209 甲府-web新世紀2
20150209 甲府-web新世紀220150209 甲府-web新世紀2
20150209 甲府-web新世紀2Taisuke Fukuno
 
AppStore申請を一式まるっと自動化する
AppStore申請を一式まるっと自動化するAppStore申請を一式まるっと自動化する
AppStore申請を一式まるっと自動化するTomoki Hasegawa
 
全脳型アーキテクチュアHandout
全脳型アーキテクチュアHandout全脳型アーキテクチュアHandout
全脳型アーキテクチュアHandoutSeiji Koide
 
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?Masamitsu Maehara
 
ハードウェアによる仮想化支援機能を利用したハイパバイザーIPS
ハードウェアによる仮想化支援機能を利用したハイパバイザーIPSハードウェアによる仮想化支援機能を利用したハイパバイザーIPS
ハードウェアによる仮想化支援機能を利用したハイパバイザーIPSFFRI, Inc.
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションC# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションYoshito Tabuchi
 
Sencha touchのはじめかた
Sencha touchのはじめかたSencha touchのはじめかた
Sencha touchのはじめかたYuki Naotori
 
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会Mori Tetsuya
 
IoTLT-Vol92-Wiki-IoT-20221009-1.pptx
IoTLT-Vol92-Wiki-IoT-20221009-1.pptxIoTLT-Vol92-Wiki-IoT-20221009-1.pptx
IoTLT-Vol92-Wiki-IoT-20221009-1.pptxTakashi Yamanoue
 
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)Shinya Nakajima
 
スマートフォンブラウザ不具合特集
スマートフォンブラウザ不具合特集スマートフォンブラウザ不具合特集
スマートフォンブラウザ不具合特集Hiroaki Wakamatsu
 

Semelhante a AOZORAYOMITE and Intent (20)

Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010
 
オープンデータセミナー in 鳥取
オープンデータセミナー in 鳥取オープンデータセミナー in 鳥取
オープンデータセミナー in 鳥取
 
Mashup Caravan in オープンソースカンファレンス2011 Hiroshima: infoScoop OpenSource
Mashup Caravan in オープンソースカンファレンス2011 Hiroshima: infoScoop OpenSourceMashup Caravan in オープンソースカンファレンス2011 Hiroshima: infoScoop OpenSource
Mashup Caravan in オープンソースカンファレンス2011 Hiroshima: infoScoop OpenSource
 
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作るgumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
gumiStudy#5 JavaScript でネイティブiPhone/Androidアプリを作る
 
20150209 甲府-web新世紀2
20150209 甲府-web新世紀220150209 甲府-web新世紀2
20150209 甲府-web新世紀2
 
AppStore申請を一式まるっと自動化する
AppStore申請を一式まるっと自動化するAppStore申請を一式まるっと自動化する
AppStore申請を一式まるっと自動化する
 
全脳型アーキテクチュアHandout
全脳型アーキテクチュアHandout全脳型アーキテクチュアHandout
全脳型アーキテクチュアHandout
 
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
 
ハードウェアによる仮想化支援機能を利用したハイパバイザーIPS
ハードウェアによる仮想化支援機能を利用したハイパバイザーIPSハードウェアによる仮想化支援機能を利用したハイパバイザーIPS
ハードウェアによる仮想化支援機能を利用したハイパバイザーIPS
 
Titanium勉強会
Titanium勉強会Titanium勉強会
Titanium勉強会
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
20120118 titanium
20120118 titanium20120118 titanium
20120118 titanium
 
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッションC# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
 
MRAAでIntel Edisonを遊ぼう
MRAAでIntel Edisonを遊ぼうMRAAでIntel Edisonを遊ぼう
MRAAでIntel Edisonを遊ぼう
 
Sencha touchのはじめかた
Sencha touchのはじめかたSencha touchのはじめかた
Sencha touchのはじめかた
 
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
 
0621 ndk game
0621 ndk game0621 ndk game
0621 ndk game
 
IoTLT-Vol92-Wiki-IoT-20221009-1.pptx
IoTLT-Vol92-Wiki-IoT-20221009-1.pptxIoTLT-Vol92-Wiki-IoT-20221009-1.pptx
IoTLT-Vol92-Wiki-IoT-20221009-1.pptx
 
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
 
スマートフォンブラウザ不具合特集
スマートフォンブラウザ不具合特集スマートフォンブラウザ不具合特集
スマートフォンブラウザ不具合特集
 

Último

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Último (10)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

AOZORAYOMITE and Intent

  • 1. 青空読手とインテント 2011/09/30(金)@東北支部発信会 樋口 祐紀 (@hyukix / hyukix@gmail.com)
  • 3. 自己紹介 名前: 樋口 祐紀 (ひぐち ゆうき) 年齢: 31歳 (1980/02/08) 出身: 三重県四日市市 所属: (株)PRO&BSC 趣味: 10年前までは... 3
  • 6. 青空読手のご紹介① 作者一覧やランキングから選択 文庫の表示 もちろんしおり機能も 6
  • 7. 青空読手のご紹介② サイズ: 極大 + 太さ: 極太 サイズ: 極小 + 太さ: 極細 文字のサイズと太さの指定 7
  • 8. 青空読手のご紹介③ SDカードや本体内の テキストの読み込みも可能 横向き表示にも対応 8
  • 9. mobile ASCII vol.5に掲載! 2011/7/29発行 9
  • 10. PLUTINUM Prize 頂きました! 10
  • 11. ディベロッパーコンソール 端末 国 1 Samsung Galaxy S 12.5% (14,561) 1 日本 98.3% (114,643) 2 Sharp IS03 10.7% (12,507) 2 アメリカ合衆国 0.4% (481) 3 Fujitsu Toshiba REGZA Phone T01C 8.8% (10,219) 3 中国 0.3% (321) 4 SEMC Xperia X10 6.8% (7,946) 4 大韓民国 0.2% (224) 5 Samsung Galaxy Tab 6.5% (7,544) 5 台湾 0.2% (214) 6 SO-02C 6.4% (7,485) 6 香港 0.1% (98) 7 SEMC Xperia Arc 6.3% (7,313) 7 タイ 0.1% (84) 8 Samsung Galaxy S2 4.3% (4,959) 8 イギリス 0.1% (71) 9 Sharp IS01 3.1% (3,599) 9 オーストラリア 0.0% (52) 10 Sharp Lynx 3D SH-03C 3.0% (3,455) 10 シンガポール 11 0.0% (51)
  • 13. どうやって作ってるの!?① • データは青空文庫サイト *1 から zipファイルをDL後、解凍 – 500文庫分のzipファイルへのリン クを保持 • フォントは「IPA明朝」をダウン ロードして利用 • SurfaceViewで頑張って描画 – (背景+本文+ルビ+タイトル +ページ数)x 2 *1 … http://www.aozora.gr.jp/ 13
  • 15. どうやって作ってるの!?③ • Twitterへのつぶやき投稿はこんなにかんたん! 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); 15
  • 16. どうやって作ってるの!?④ 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='hyukix@gmail.com', to='hyukix@gmail.com', subject='Bug Report - AozoraYomite', body=report) 【参考サイト】throw Life - Androidアプリのバグ報告システムを考える http://www.adamrocker.com/blog/288/bug-report-system-for-android.html 16
  • 18. 突然ですがクイズです • Twitter / Evernote / メールを利用し、 任意の文字列を送信するAndroidアプ リを作るのに必要な時間は? A. 3分 B. 3時間 C. 3日 D. Androidでは無理... だけど... 3秒でできるよ。そう、iPhoneならね 18
  • 19. これだけ書けば解決! 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(); } } 19
  • 20. This is Android!! Evernote IMoNi twicca 20
  • 22. インテントって何? • 処理依頼メッセージのこと – 例: AK Notepadによる他アプリ機能 AK Notepadにてテキ ACTION_SEND イ ン Twidroidにペーストさ ストを入力。メニューから テ ン トが発行 さ れ 、 対 れる。ポイントは相互連 Shareを指定すると… 応アプリがリストアップ 携を前提としてない点 出典:使って分かったAndroidとiPhoneの違い http://goo.gl/5nGc 22
  • 23. Extra Data IntentとExtraData – – EXTRA_ALARM_COUNT EXTRA_BCC Activity Actions Broadcast Actions – EXTRA_CC – ACTION_MAIN – ACTION_TIME_TICK – EXTRA_CHANGED_COMPONENT_NAME – ACTION_VIEW – ACTION_TIME_CHANGED – EXTRA_DATA_REMOVED – ACTION_ATTACH_DATA – ACTION_TIMEZONE_CHANGED – EXTRA_DOCK_STATE – ACTION_EDIT – ACTION_BOOT_COMPLETED – EXTRA_DOCK_STATE_CAR – ACTION_PICK – ACTION_PACKAGE_ADDED – EXTRA_DOCK_STATE_DESK – ACTION_CHOOSER – ACTION_PACKAGE_CHANGED – EXTRA_DOCK_STATE_UNDOCKED – ACTION_GET_CONTENT – ACTION_PACKAGE_REMOVED – EXTRA_DONT_KILL_APP – ACTION_DIAL – ACTION_PACKAGE_RESTARTED – EXTRA_EMAIL – ACTION_CALL – ACTION_PACKAGE_DATA_CLEA – EXTRA_INITIAL_INTENTS – ACTION_SEND RED – EXTRA_INTENT – ACTION_SENDTO – ACTION_UID_REMOVED – EXTRA_KEY_EVENT – ACTION_ANSWER – ACTION_BATTERY_CHANGED – EXTRA_PHONE_NUMBER – ACTION_INSERT – ACTION_POWER_CONNECTED – EXTRA_REMOTE_INTENT_TOKEN – ACTION_DELETE – ACTION_POWER_DISCONNECT – EXTRA_REPLACING ACTION_RUN ED – – EXTRA_SHORTCUT_ICON ACTION_SYNC – ACTION_SHUTDOWN – – EXTRA_SHORTCUT_ICON_RESOURCE – ACTION_PICK_ACTIVITY – EXTRA_SHORTCUT_INTENT – ACTION_SEARCH – EXTRA_STREAM – ACTION_WEB_SEARCH – EXTRA_SHORTCUT_NAME – ACTION_FACTORY_TEST – EXTRA_SUBJECT // インテントによるブラウザ起動の例 – EXTRA_TEMPLATE Uri uri = Uri.parse("http://probsc.jp"); – EXTRA_TEXT Intent intent = new Intent(Intent.ACTION_VIEW, uri); – EXTRA_TITLE startActivity(intent); – EXTRA_UID 23
  • 24. インテントは空も飛ぶんです! Chrome to Phone おもむろにクリック! Androidでブラウズ 24
  • 25. 空飛ぶインテントの正体は... • Cloud to Device Messaging (C2DM) – サーバからAndroidアプリケーションへの軽量 メッセージの送信を助けるサービス – メッセージはキューイングされるが順序保証なし – ア プ リ は 常 時 起 動 の 必 要 は な く 、 Intent Broadcastをトリガーに起動される – 処理方法はアプリに依存 – Android2.2 (Froyo) が必要 – Googleアカウントの設定と接続が必要 25
  • 26. C2DMのアーキテクチャ Google C2DM Servers 1. (Register) Sender ID / Application 4. (POST 2. Registration ID https://android.apis.google.com/c2dm/send) (定期的に更新) Registration ID / data.<key> 5. Message App 3. Registration ID Application ID (定期的に更新) Third-Party Sender ID Application Server 6. Intent Mobile Device 26
  • 27. 青空読手でのインテント活用 • 青空文庫サイトから書籍データをダウンロードするための アプリ。リーダー機能は備えていない × • 青空文庫リーダーアプリ。書籍データへのリンクは予め収 録したランキング。任意データ取得は不可 27
  • 28. 暗黙的インテントを受け取るためのManifest宣言 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android=http://schemas.android.com/apk/res/android package="com.gmail.hyukix.aozorayomite" android:versionName="0.9.8.2" android:versionCode=“10”> ・・・ <application android:icon=“@drawable/icon” android:label=“@string/app_name”> <activity android:name=".AozoraYomite" android:label="@string/app_name" android:screenOrientation=“portrait”> <intent-filter><action android:name=“android.intent.action.MAIN” /> <category android:name=“android.intent.category.LAUNCHER” /></intent-filter> </activity> <activity android:name=".Reader" android:label="@string/app_name" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <!-- file://xxxxのようなリクエストを受け付ける --> <data android:scheme="file" android:mimeType="text/plain" /> </intent-filter> </activity> ・・・ </application> ・・・ </manifest> 28
  • 29. Activityでのインテント判定と処理振り分け package com.gmail.hyukix.aozorayomite; ・・・ public class Reader extends Activity { ・・・ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ・・・ if (Intent.ACTION_VIEW.equals(getIntent().getAction())) { // 暗黙的インテント ・・・ } else { // 明示的インテント ・・・ } ・・・ } ・・・ } 29
  • 32. DL 数が伸びないことには... ① ② ③ ① アンドロイダー レビュー記事 ② アンドロイダー 青空文庫比較記事 ③ au one market 登録 32
  • 34. 今後ともどうぞよろしくお願いします • ハンドアウト – http://bit.ly/nodakK (3.3MB) • 青空読手 ver0.9.8.16 (野良アプリ版) – http://bit.ly/nvkHfM (267KB) • 青空読手 ver0.9.8.16 (AndroidMarket) 34