Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Androidのアプリを
作成・公開する話
京大マイコンクラブ nonylene
自己紹介
• nonylene (のにれん)
!
!
• twitterとかGitHubとか
• 使用言語:python, java (android), javascript
など
今回の話
• 後期はAndroidばっかいじってた
• 夏の終わりから作って冬ぐらいに公開し
ました
• ということでAndroidアプリのお話
目次
• 自己紹介
• Androidとは
• 開発しましょう
• hello world
• アプリの仕組み
• 作ったアプリ
• アプリの公開
Androidとは
• Google様が開発なさったOS
• スマートフォン、タブレット向け
• linuxカーネルが使われてる
• 大体2009年ぐらいから登場して今はシェア80%
こえてる
• 最新は5.0.2 (lolipop)
Androidとは
• 特徴
• 無料(特許料除く)
• いろんなメーカー
• Xperia (SONY), Galaxy (Samsung),
Nexus(GoogleのOEM), HTC , etc
• 比較的自由度が高い(スマートフォンの...
他のOS
• iOS
• 日本ではシェアでかい
• androidの永遠のライバル
他のOS
• Windows Phone
• NOKIAとHTCぐらい…
• 日本では東芝製がauで売られただけ
• 最近マウスコンピューターとかが作るら
しい
他のOS
• firefox OS
• ナウでヤングなイケイケのOS
• auで最近出た
• javascriptでがんばるらしい
• 表示もHTMLで構成
他のOS
• Tizen
• 一時期は期待されてたけど…
• ドコモは撤退。
• Windows Mobile・BlackBerry
• iOSがある前はこれって感じだった
• QWERTYキーが付いてるのが前提
開発しましょう
• 開発費無料!!!!
• iOSは12kぐらいお布施がいります
開発しましょう
• ファイルから直接

インストールできる!!!!
• Playストア公開しなくてもOK
• iOSはできません
開発しましょう
• windowsでもmacでも

linuxでも開発可能!!!
• iOSはmac限定
開発しましょう
• Java!!!!
• JavaJavaしよう
• 実際は一部apiつかえなくてAndroidJava
とも呼ぶらしい
開発しましょう
• 昔はeclipseが使われていた
• 現在AndroidStudioが開発中
• こちらがサポート対象に
• InteliJベースなので賢い
• 無料
hello world
• IDEで適当にプロジェクト作成したらhello world
してくれます
public class MyActivity extends ActionBarActivity {
@Override
protected...
hello world
• layout/activity_my.xml
<RelativeLayout …
android:layout_width="match_parent"
android:layout_height="match_pa...
hello world
<resources>
<string name="app_name">"TEST"</string>
!
<string name="hello_world">Hello world!</string>
<string...
hello world
• 基本実機でデバッグ
• エミュレーターは動作が遅い
• ほとんどの機種で開発可能
• 開発者メニュー(ビルド番号
連打で出現)

からUSBデバッグをON
hello world
Androidアプリの仕組み
Dalvik
• Googleが作成した仮想マシン(プログラム
の実行環境)
• JVMっぽいけどJVMではない
• Javaの互換性テストを通過してない
• Android 5.0からはARTがデフォルトに
なって将来は使われなさそう
Activity
• Androidにおける画面
• 基本一つの画面につき一つのactivity
• プログラムはactivity上で動いてる
• 何かしらのintent(後述)から起動する
• 画面が遷移するとactivityも切り替わる
Fragment
• Android 3.0 から導入された
• レイアウトに対するコントロール
• activity間で同じレイアウト(の管理)を
使いまわすことが出来る!!
• ダイアログとかをactivity間で持ち越す等
intent
• androidの重要な要素の一つ
• intent(意志,目的)
• 他のactivityを起動するための機能
• データも一緒に渡すことができる
• 明示的intentと暗黙的intent
intent
• 明示的intent
• はじめから渡すactivityが決まっている
• activityによる画面遷移や、指定したアプリ
を起動したいときに使う
• 投げる
Intent intent = new Intent(this, ...
intent
• 暗黙的intent
• よく「共有」と言われているもの
• 主に他のアプリでデータを渡す時に使う
• 渡すactivityは決まってない
• 選択ダイアログが開いてユーザーが選ぶ
intent
• 暗黙的intent
• 実際のデータと、データの種類に関する
情報が含まれている
• 受け取る側はAndroidManifestで

どの種類のintentを受け取るか設定
• Activityごとに設定
intent
• 投げる側



• 受け取る側
Uri uri = Uri.parse("http://nonylene.net");
Intent i = new Intent(Intent.ACTION_VIEW,uri);
startA...
intent
• 暗黙的intentの例
文字列 URL
アプリの情報
• Android Manifest ファイル
• アプリ/Activityの、他のアプリ向けの情報を
格納したファイル (xml)
• アプリ名、アイコン
• どんなactivityがあるか
• intentの受信する種類 (後...
アプリの情報
• Android Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/r...
アプリの情報
• build.gradleファイル
• gradle: ナウでヤングなビルドツール
• AndroidStudioはgradleを採用している
• ビルドするときのオプションを記述
• バージョン、アプリのIDなど
アプリの情報
• build.gradleファイル
apply plugin: 'com.android.application'
!
android {
compileSdkVersion 21
buildToolsVersion "21.1...
デザイン
• Android 3.0 以上は holo と呼ばれてるデ
ザイン
• Android 5.0からは material
デザイン
• アプリのテーマ
• 統一したいならholo, 端末の個性を出したい
ならdevice default(端末純正)
• holoに固定すると将来古臭く見える欠点
• すでにそうなりつつある感
• 自分でカスタマイズもできる
デザイン
material holo DeviceDefault
デザイン
• 画面の設計
• AndroidStudio、eclipseだとドラッグア
ンドドロップで画面のパーツを追加可能
• xmlファイル
• 結局直接xmlに書いたほうがはやい
デザイン
• 画面の設計2
• ベースとなるlayoutは主に3つ
• RelativeLayout: 相対的に
• LinearLayout: 上から/左から順番に
• FrameLayout: 階層的に
デザイン
• 画像
• 画像ファイルは端末の解像度によって適した
サイズをリサイズして入れていく
• xxx-hdpi, … , hdpi, mdpi
• IDEだと自動的にリサイズしてくれるけど…
• 自分でちゃんとリサイズしたほうがきれい
設定・データベース
• 軽い設定ならxml形式で保存される









• rootを取らない限り他のアプリからは見れない
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
...
設定・データベース
• データベースではSQLiteを使用
• 軽量・高速・1ファイルで済ませれる特徴
のデータベースシステム
設定・データベース
• SQLite といえば database is locked
• databaseの書き込みが重なるとエラー
• 原因は、ひとつのdatabaseに対して複数の
database管理クラスを立ち上げてるから
• data...
設定・データベース
• 解決策
• 一つのdatabase管理クラスを使いまわす
• 特定された場所でしか使わない場合楽
• database管理クラスをすぐ閉じる
• contentsProviderの使用
機種依存のつらい話
• みんな違うから、開発はつらい。
機種依存のつらい話
• デザイン
• 機種にフィットしたデザインにしたいなら
DeviceDefaultというのを使うけど…
• 例: GALAXY…backgroundを指定しな
いとボタンが変に透過
• holoを使えば純正Androidデ...
機種依存のつらい話
• タッチの挙動が違う
• ダブルタップした時に、二回目のタップでド
ラッグせずにすぐに離した時の挙動
• Xperia/Galaxy: onScroll() が数回呼ばれる
• LG: onScroll() が呼ばれる時も...
機種依存のつらい話
• 機種によって読み込める画像サイズが違う
• ある機種では ImageView に読み込める
最大サイズが 2048 * 2048
• 新しい機種では 4096 * 4096
• 古い機種では 1024 * 1024
機種依存のつらい話
• 他にもいろんな要素が…
• GALAXYのマルチ画面での挙動とか
• メモリの違いとか
• タブレットとか
• Androidバージョンの違いとか
アプリ作ろう
設計
• ターゲットOSの決定
• Androidは2→3、
3→4で大きく変化
• シェアを見ると今は
4.0以上がベタ
5.0
4.4
4.2 / 4.3
4.1
4.0
2.x
2015/03 時点
設計
• Android 2.3だとできないこと
• fragment
• activityでは一画面ごとに書き換える前提
• 画面パーツごとに設計できない
• async task loader
設計
• できないことその2
• action bar
• CSSが闇
• styleにholoもDeviceDefaultもない
• 一部googleの互換性維持のツールはある
設計
• できてしまうこと
• ネットワーク処理をUIスレッドで実行
• 動作が固まるやつですね
• まだ2.3をお使いの方は早急な乗り換え
を!!
作ったアプリ
• まずはテストアプリを作ってみました
• 適当にボタンとか置いたりして遊んでた
• これが8月下旬
• その後、勉強がてらに作ることに
PhotoLinkViewer
• 後期に作ったアプリ
• 画像見る機能がないtwitterクライアント向け
• 画像のURLのintentを受け取って、画像を
オーバーレイで表示する
• できるかぎり最大のサイズで表示
• 保存もできる
PhotoLinkViewer
• スクショ
PhotoLinkViewer
• 評価4.9!!!!!!





• 先日1Kダウンロード突破!!
アプリの動き
• オーバーレイ表示
• 背景、アクションバー無し、通知欄透過

するように独自styleを使用
• ベースはDeviceDefaultだからダイアロ
グ等は端末特有のデザインになる
• キャッシュは10MB使用
アプリの動き
• ライブラリの使用
• ネットワーク関係はGoogle製ライブラリ

volley を使用
• JSONの処理などが短いコードできるように
• twitter関係は twitter4j
• 公式はfabric(クロスプラットフォ...
アプリの動き
• GIFの表示
• 標準のImageViewではGIF動画は再生で
きない
• Gyazo無理じゃん。。。。。。
• WebView(ブラウザ)を使うと見れる
アプリの動き
• GIFの表示2
• バイナリで数バイト読み込み
• ヘッダーでファイルの形式を読み込む
• GIFだったらWebViewが開くようにした
アプリの動き
• GIFの表示3
• 直接URL開いただけでも表示できる
• でも大きさとか配置が不便
• 結局CSSで制御したほうが楽だった…
• ライブラリを使うともっと簡単にいけそう
アプリの動き
• twitter GIFについて
• twitterのGIFはmp4で降ってくる
• VideoViewで表示
• URL設定するだけで読み込める
• GLSurfaceView…
アプリの動き
• VideoView
• 再生/停止用のコントローラーを出せる
• 再生が停止したらコントローラーは隠れる
‣ 非常に短いGIF動画だと一瞬で隠れる
• 永遠に一時停止できない!!!
• 短いならGIFのほうが取り扱いしやすい。...
公開までの道のり
1. 限定公開
• ベータ版のapkをグループに配布
• nonylene.netにjsonを置いてアプデ
チェックを行うようにしてた
• ここで機種依存とかのバグを潰したり
公開までの道のり
2. google Playへ登録
• 2kほどお布施
• 有料だと住所・名前が公開される!!!
• 広告をつけるのもアレだから無料に
• apkだけじゃなくスクショ撮ったり宣伝画像
うpしたり…
宣伝
• いつの間にか宣伝されてた
• 公開当日に友達がブログで紹介
• 公開当日にフォロワーにレビューされる
• 公開当日にアプリの特集サイトに紹介される
• 公開翌日に2chに書かれる
宣伝
• その後も有名なアプリ紹介サイトに掲載され
たり2chに4回ぐらい載ってる
• 良い物作ったら勝手に紹介される?
• フォロワー多い人がツイートしてDL増えたり
• レビューが高過ぎるとそれはそれでいけない
ので気をつけましょう
効能
• 知らない人にツイートされると嬉しい
• どんどん公開していこう
• 30分でアプリ作れるようになった
• ほとんどさっきのアプリの流用
結論
• アプリ作りましょう
• 欲しいのがなければつくろう
• 日々を便利に
Upcoming SlideShare
Loading in …5
×

Androidアプリを作成・公開する話

20,756 views

Published on

Androidのアプリを作ったスライド

Published in: Technology
  • Be the first to comment

Androidアプリを作成・公開する話

  1. 1. Androidのアプリを 作成・公開する話 京大マイコンクラブ nonylene
  2. 2. 自己紹介 • nonylene (のにれん) ! ! • twitterとかGitHubとか • 使用言語:python, java (android), javascript など
  3. 3. 今回の話 • 後期はAndroidばっかいじってた • 夏の終わりから作って冬ぐらいに公開し ました • ということでAndroidアプリのお話
  4. 4. 目次 • 自己紹介 • Androidとは • 開発しましょう • hello world • アプリの仕組み • 作ったアプリ • アプリの公開
  5. 5. Androidとは • Google様が開発なさったOS • スマートフォン、タブレット向け • linuxカーネルが使われてる • 大体2009年ぐらいから登場して今はシェア80% こえてる • 最新は5.0.2 (lolipop)
  6. 6. Androidとは • 特徴 • 無料(特許料除く) • いろんなメーカー • Xperia (SONY), Galaxy (Samsung), Nexus(GoogleのOEM), HTC , etc • 比較的自由度が高い(スマートフォンの中では)
  7. 7. 他のOS • iOS • 日本ではシェアでかい • androidの永遠のライバル
  8. 8. 他のOS • Windows Phone • NOKIAとHTCぐらい… • 日本では東芝製がauで売られただけ • 最近マウスコンピューターとかが作るら しい
  9. 9. 他のOS • firefox OS • ナウでヤングなイケイケのOS • auで最近出た • javascriptでがんばるらしい • 表示もHTMLで構成
  10. 10. 他のOS • Tizen • 一時期は期待されてたけど… • ドコモは撤退。 • Windows Mobile・BlackBerry • iOSがある前はこれって感じだった • QWERTYキーが付いてるのが前提
  11. 11. 開発しましょう • 開発費無料!!!! • iOSは12kぐらいお布施がいります
  12. 12. 開発しましょう • ファイルから直接
 インストールできる!!!! • Playストア公開しなくてもOK • iOSはできません
  13. 13. 開発しましょう • windowsでもmacでも
 linuxでも開発可能!!! • iOSはmac限定
  14. 14. 開発しましょう • Java!!!! • JavaJavaしよう • 実際は一部apiつかえなくてAndroidJava とも呼ぶらしい
  15. 15. 開発しましょう • 昔はeclipseが使われていた • 現在AndroidStudioが開発中 • こちらがサポート対象に • InteliJベースなので賢い • 無料
  16. 16. hello world • IDEで適当にプロジェクト作成したらhello world してくれます public class MyActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); } … } ・setContentViewでレイアウトをxmlから表示してる
  17. 17. hello world • layout/activity_my.xml <RelativeLayout … android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft=“@dimen/activity_horizontal_margin" … tools:context=".MainActivity"> ! <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content"/> ! </RelativeLayout> ・@string/hello_world をTextViewで表示してる
  18. 18. hello world <resources> <string name="app_name">"TEST"</string> ! <string name="hello_world">Hello world!</string> <string name="action_settings">Settings</string> </resources> ・values/string.xml
  19. 19. hello world • 基本実機でデバッグ • エミュレーターは動作が遅い • ほとんどの機種で開発可能 • 開発者メニュー(ビルド番号 連打で出現)
 からUSBデバッグをON
  20. 20. hello world
  21. 21. Androidアプリの仕組み
  22. 22. Dalvik • Googleが作成した仮想マシン(プログラム の実行環境) • JVMっぽいけどJVMではない • Javaの互換性テストを通過してない • Android 5.0からはARTがデフォルトに なって将来は使われなさそう
  23. 23. Activity • Androidにおける画面 • 基本一つの画面につき一つのactivity • プログラムはactivity上で動いてる • 何かしらのintent(後述)から起動する • 画面が遷移するとactivityも切り替わる
  24. 24. Fragment • Android 3.0 から導入された • レイアウトに対するコントロール • activity間で同じレイアウト(の管理)を 使いまわすことが出来る!! • ダイアログとかをactivity間で持ち越す等
  25. 25. intent • androidの重要な要素の一つ • intent(意志,目的) • 他のactivityを起動するための機能 • データも一緒に渡すことができる • 明示的intentと暗黙的intent
  26. 26. intent • 明示的intent • はじめから渡すactivityが決まっている • activityによる画面遷移や、指定したアプリ を起動したいときに使う • 投げる Intent intent = new Intent(this, TOAuth.class); startActivity(intent);
  27. 27. intent • 暗黙的intent • よく「共有」と言われているもの • 主に他のアプリでデータを渡す時に使う • 渡すactivityは決まってない • 選択ダイアログが開いてユーザーが選ぶ
  28. 28. intent • 暗黙的intent • 実際のデータと、データの種類に関する 情報が含まれている • 受け取る側はAndroidManifestで
 どの種類のintentを受け取るか設定 • Activityごとに設定
  29. 29. intent • 投げる側
 
 • 受け取る側 Uri uri = Uri.parse("http://nonylene.net"); Intent i = new Intent(Intent.ACTION_VIEW,uri); startActivity(i); <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="http" android:host="nonylene.net"/> </intent-filter>
  30. 30. intent • 暗黙的intentの例 文字列 URL
  31. 31. アプリの情報 • Android Manifest ファイル • アプリ/Activityの、他のアプリ向けの情報を 格納したファイル (xml) • アプリ名、アイコン • どんなactivityがあるか • intentの受信する種類 (後述)
  32. 32. アプリの情報 • Android Manifest <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.nonylene.test" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> ! <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> ! </manifest>
  33. 33. アプリの情報 • build.gradleファイル • gradle: ナウでヤングなビルドツール • AndroidStudioはgradleを採用している • ビルドするときのオプションを記述 • バージョン、アプリのIDなど
  34. 34. アプリの情報 • build.gradleファイル apply plugin: 'com.android.application' ! android { compileSdkVersion 21 buildToolsVersion "21.1.2" ! defaultConfig { applicationId "net.nonylene.test" minSdkVersion 15 targetSdkVersion 21 versionCode 1 versionName "1.0" } …… } ……
  35. 35. デザイン • Android 3.0 以上は holo と呼ばれてるデ ザイン • Android 5.0からは material
  36. 36. デザイン • アプリのテーマ • 統一したいならholo, 端末の個性を出したい ならdevice default(端末純正) • holoに固定すると将来古臭く見える欠点 • すでにそうなりつつある感 • 自分でカスタマイズもできる
  37. 37. デザイン material holo DeviceDefault
  38. 38. デザイン • 画面の設計 • AndroidStudio、eclipseだとドラッグア ンドドロップで画面のパーツを追加可能 • xmlファイル • 結局直接xmlに書いたほうがはやい
  39. 39. デザイン • 画面の設計2 • ベースとなるlayoutは主に3つ • RelativeLayout: 相対的に • LinearLayout: 上から/左から順番に • FrameLayout: 階層的に
  40. 40. デザイン • 画像 • 画像ファイルは端末の解像度によって適した サイズをリサイズして入れていく • xxx-hdpi, … , hdpi, mdpi • IDEだと自動的にリサイズしてくれるけど… • 自分でちゃんとリサイズしたほうがきれい
  41. 41. 設定・データベース • 軽い設定ならxml形式で保存される
 
 
 
 
 • rootを取らない限り他のアプリからは見れない <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <boolean name="adjust_zoom" value="false" /> <string name="download_file">mkdir</string> <string name="download_dir">PLViewer/</string> <string name="twipple_quality_3g">large</string> <string name="imgly_quality_3g">large</string> <boolean name="initialized19" value="true" /> <boolean name="disp_tweet" value="false" /> …… </map>
  42. 42. 設定・データベース • データベースではSQLiteを使用 • 軽量・高速・1ファイルで済ませれる特徴 のデータベースシステム
  43. 43. 設定・データベース • SQLite といえば database is locked • databaseの書き込みが重なるとエラー • 原因は、ひとつのdatabaseに対して複数の database管理クラスを立ち上げてるから • database管理クラス自体は書き込みが重 なってもキューにためてくれる
  44. 44. 設定・データベース • 解決策 • 一つのdatabase管理クラスを使いまわす • 特定された場所でしか使わない場合楽 • database管理クラスをすぐ閉じる • contentsProviderの使用
  45. 45. 機種依存のつらい話 • みんな違うから、開発はつらい。
  46. 46. 機種依存のつらい話 • デザイン • 機種にフィットしたデザインにしたいなら DeviceDefaultというのを使うけど… • 例: GALAXY…backgroundを指定しな いとボタンが変に透過 • holoを使えば純正Androidデザインになる
  47. 47. 機種依存のつらい話 • タッチの挙動が違う • ダブルタップした時に、二回目のタップでド ラッグせずにすぐに離した時の挙動 • Xperia/Galaxy: onScroll() が数回呼ばれる • LG: onScroll() が呼ばれる時もある • Nexus/HTC: onScroll() は呼ばれない
  48. 48. 機種依存のつらい話 • 機種によって読み込める画像サイズが違う • ある機種では ImageView に読み込める 最大サイズが 2048 * 2048 • 新しい機種では 4096 * 4096 • 古い機種では 1024 * 1024
  49. 49. 機種依存のつらい話 • 他にもいろんな要素が… • GALAXYのマルチ画面での挙動とか • メモリの違いとか • タブレットとか • Androidバージョンの違いとか
  50. 50. アプリ作ろう
  51. 51. 設計 • ターゲットOSの決定 • Androidは2→3、 3→4で大きく変化 • シェアを見ると今は 4.0以上がベタ 5.0 4.4 4.2 / 4.3 4.1 4.0 2.x 2015/03 時点
  52. 52. 設計 • Android 2.3だとできないこと • fragment • activityでは一画面ごとに書き換える前提 • 画面パーツごとに設計できない • async task loader
  53. 53. 設計 • できないことその2 • action bar • CSSが闇 • styleにholoもDeviceDefaultもない • 一部googleの互換性維持のツールはある
  54. 54. 設計 • できてしまうこと • ネットワーク処理をUIスレッドで実行 • 動作が固まるやつですね • まだ2.3をお使いの方は早急な乗り換え を!!
  55. 55. 作ったアプリ • まずはテストアプリを作ってみました • 適当にボタンとか置いたりして遊んでた • これが8月下旬 • その後、勉強がてらに作ることに
  56. 56. PhotoLinkViewer • 後期に作ったアプリ • 画像見る機能がないtwitterクライアント向け • 画像のURLのintentを受け取って、画像を オーバーレイで表示する • できるかぎり最大のサイズで表示 • 保存もできる
  57. 57. PhotoLinkViewer • スクショ
  58. 58. PhotoLinkViewer • 評価4.9!!!!!!
 
 
 • 先日1Kダウンロード突破!!
  59. 59. アプリの動き • オーバーレイ表示 • 背景、アクションバー無し、通知欄透過
 するように独自styleを使用 • ベースはDeviceDefaultだからダイアロ グ等は端末特有のデザインになる • キャッシュは10MB使用
  60. 60. アプリの動き • ライブラリの使用 • ネットワーク関係はGoogle製ライブラリ
 volley を使用 • JSONの処理などが短いコードできるように • twitter関係は twitter4j • 公式はfabric(クロスプラットフォーム)
  61. 61. アプリの動き • GIFの表示 • 標準のImageViewではGIF動画は再生で きない • Gyazo無理じゃん。。。。。。 • WebView(ブラウザ)を使うと見れる
  62. 62. アプリの動き • GIFの表示2 • バイナリで数バイト読み込み • ヘッダーでファイルの形式を読み込む • GIFだったらWebViewが開くようにした
  63. 63. アプリの動き • GIFの表示3 • 直接URL開いただけでも表示できる • でも大きさとか配置が不便 • 結局CSSで制御したほうが楽だった… • ライブラリを使うともっと簡単にいけそう
  64. 64. アプリの動き • twitter GIFについて • twitterのGIFはmp4で降ってくる • VideoViewで表示 • URL設定するだけで読み込める • GLSurfaceView…
  65. 65. アプリの動き • VideoView • 再生/停止用のコントローラーを出せる • 再生が停止したらコントローラーは隠れる ‣ 非常に短いGIF動画だと一瞬で隠れる • 永遠に一時停止できない!!! • 短いならGIFのほうが取り扱いしやすい。。。
  66. 66. 公開までの道のり 1. 限定公開 • ベータ版のapkをグループに配布 • nonylene.netにjsonを置いてアプデ チェックを行うようにしてた • ここで機種依存とかのバグを潰したり
  67. 67. 公開までの道のり 2. google Playへ登録 • 2kほどお布施 • 有料だと住所・名前が公開される!!! • 広告をつけるのもアレだから無料に • apkだけじゃなくスクショ撮ったり宣伝画像 うpしたり…
  68. 68. 宣伝 • いつの間にか宣伝されてた • 公開当日に友達がブログで紹介 • 公開当日にフォロワーにレビューされる • 公開当日にアプリの特集サイトに紹介される • 公開翌日に2chに書かれる
  69. 69. 宣伝 • その後も有名なアプリ紹介サイトに掲載され たり2chに4回ぐらい載ってる • 良い物作ったら勝手に紹介される? • フォロワー多い人がツイートしてDL増えたり • レビューが高過ぎるとそれはそれでいけない ので気をつけましょう
  70. 70. 効能 • 知らない人にツイートされると嬉しい • どんどん公開していこう • 30分でアプリ作れるようになった • ほとんどさっきのアプリの流用
  71. 71. 結論 • アプリ作りましょう • 欲しいのがなければつくろう • 日々を便利に

×