• 検索結果がありません。

勉強会 資料 Google Developer Group 京都

N/A
N/A
Protected

Academic year: 2018

シェア "勉強会 資料 Google Developer Group 京都"

Copied!
146
0
0

読み込み中.... (全文を見る)

全文

(1)

第2回 Android Hackathon in Kyoto

事前勉強会

2011年5月21日

白山 文彦(京都GTUG)

(2)

自己紹介

白山 文彦(しろやま ふみひこ)

京都GTUGスタッフ

同志社大学文学部 在学中

Google AppEngine

Google WebToolkit

Android

Linuxサーバ管理など

2011年5月21日土曜日

(3)

京都GTUGとは

Google Technology User Group

純粋にGoogleの技術を習得・活用し、 広くその知識を共有するためのGoogle 公認の非営利団体

京都GTUGは世界有数のGTUGです!

(4)

Hackathon とは

2011年5月21日土曜日

(5)

Hack + Marathon

HackとMarathonを合わせた造語

Hack Crack

1日でソフトウェアを作ってしまおうと いう、いわばギークの祭典!

今日はIdeathon(アイディア出し、 チーム分け)です。お楽しみに!

(6)

KRP

2011年5月21日土曜日

(7)

K yoto Research Park

(8)

京都リサーチパーク

京都ベンチャー企業のメッカ

京都GTUGを初めとするオープンソース 活動に多大な理解と惜しみない協力

9号館完成!みなさん、起業はKRPで!

http://www.krp.co.jp/

2011年5月21日土曜日

(9)

アジェンダ

13:00∼13:30 ご挨拶、Androidとは何か 13:30∼13:50 開発環境の構築

14:00∼14:50 Android開発∼Hello World∼ 15:00∼15:50 Android開発∼基礎編∼

(10)

アジェンダ

16:30∼16:40 KRP寺戸様ご挨拶 16:40∼16:50 チーム分け

16:50∼17:30 Ideathon

17:30∼18:00 発表、解散

長丁場ですが頑張りましょう! 長丁場ですが頑張りましょう!

2011年5月21日土曜日

(11)

時間が限られているので

それほど高度な内容は出来ません! ご容赦ください。

(12)

Android とは何だろうか

2011年5月21日土曜日

(13)

一般ユーザにとって

(14)

Android は世界一使われている

スマートフォンである

2011年5月21日土曜日

(15)

スマートフォン世界シェアトップ

Google NOKIA Apple RIM Microsoft

出荷台数

(100万台)

シェア

(%)

33.3 31.0 16.2 14.6 3.1

32.9 30.6 16.0 14.4 3.1

(16)

国内でもiPhoneを逆転

57.4% 37.8%

3.2%1.6%

Android iOS Windows Mobile BlackBerry

2011年5月21日土曜日

(17)

タブレット業界にも風穴

(18)

タブレット業界にも風穴

出荷台数

2000%

2011年5月21日土曜日

(19)

タブレット業界にも風穴

出荷台数

2000%

シェア2.3%

(20)

タブレット業界にも風穴

出荷台数

2000%

シェア2.3%

22%

2011年5月21日土曜日

(21)

タブレット業界にも風穴

出荷台数

2000%

シェア2.3%

ちなみに… iPad 95.5%

22%

(22)

タブレット業界にも風穴

出荷台数

2000%

シェア2.3%

ちなみに… iPad 95.5%

22%

75%

2011年5月21日土曜日

(23)

日本国内だけで約20社、60機種以上

世界中で数えきれないほどの選択肢

アプリの総数は20万超え(2011年1月)

(24)

「圧倒的じゃないか、我が軍は!」

2011年5月21日土曜日

(25)

Android は多様性に富んでおり

異なった市場への適応にも寛容である

(26)

Flash ワンセグ

豊富な マーケット おサイフ

ケータイ

2011年5月21日土曜日

(27)

結論

基本的な部分やアプリケーションなどに 互換性を持ちつつも、ユーザは各々の

ニーズに合わせて好きな端末を選ぶこと ができる。

Android 最高!!!

(28)

開発者にとって

Androidって なに?

2011年5月21日土曜日

(29)

主に携帯端末用のソフトウェアプラッ トフォーム

アプリケーションを開発するためのソ フトウェアフレームワーク

これらがすべてオープンソースで提供さ れている

(30)

2011年5月21日土曜日

(31)

これまで組み込みシステムが中心だった分野

(32)

これまで組み込みシステムが中心だった分野

汎用性があり、特定のハードウェアに依存しに くい開発が可能に!

2011年5月21日土曜日

(33)

これまで組み込みシステムが中心だった分野

汎用性があり、特定のハードウェアに依存しに くい開発が可能に!

社内独自のフレームワークは社外秘で財産その もの

(34)

これまで組み込みシステムが中心だった分野

汎用性があり、特定のハードウェアに依存しに くい開発が可能に!

社内独自のフレームワークは社外秘で財産その もの

世界中の優秀なデベロッパの知恵の塊をタダ で!

2011年5月21日土曜日

(35)

まさに宝の山!

(36)

開発者を後押しする要素

開発環境がタダ!開発OSも問わず

堅牢で使用人口の多い開発言語Java

簡単で安価なマーケット出品

企業にも嬉しいライセンス体系

2011年5月21日土曜日

(37)

制約の多いiPhone開発

(38)

Android Market の将来性

Android長者は存在しない?

Android特有のクーリングオフ制度

独自マーケットの可能性

2011年5月21日土曜日

(39)

未来は明るい!

(40)

Android の構成要素

2011年5月21日土曜日

(41)

Android の構成要素

Linuxカーネル

Androidランタイム

ライブラリ

アプリケーションフレームワーク

アプリケーション

(42)

2011年5月21日土曜日

(43)

Linux カーネル

Linuxベースのカーネル

デバイスドライバ

プロセス間通信、パワーマネジメント ドライバなど

(44)

ライブラリ

標準Cライブラリ

メディアライブラリ

SGL / OpenGL ES

WebKit

SQLite

2011年5月21日土曜日

(45)

Android ランタイム

Dalvik 仮想マシン

組み込み向けJavaランタイム

Java SEのサブセット

(46)

アプリケーションフレームワーク

いわゆるOSのAPIに相当

描画、通知、リソースへのアクセス手 段などを提供

システム標準アプリも、サードパー

ティアプリもすべて同じAPIにアクセス 可能

2011年5月21日土曜日

(47)

アプリケーション

基本的にはJavaアプリケーション

各アプリは独立したLinuxのプロセスと して動作

各アプリごとにJVMのインスタンスが対 応

(48)

開発環境の構築

2011年5月21日土曜日

(49)

開発環境の構築

Java Development Kit (JDK)

Android SDK

Android Virtual Device (AVD)

Eclipse + ADT Plugin

(50)

Windows XP 32bit

2011年5月21日土曜日

(51)

JDK

http://java.sun.com/javase/ja/6/download.html

(52)

JDK

2011年5月21日土曜日

(53)

JDK

(54)

JDK

2011年5月21日土曜日

(55)

JDK

(56)

SDK

http://developer.android.com/intl/ja/sdk/index.html

2011年5月21日土曜日

(57)

SDK

“C:¥android-sdk-windows” に展開

(58)

SDK

初期選択を そのまま全部

2011年5月21日土曜日

(59)

SDK

(60)

AVD

2011年5月21日土曜日

(61)

AVD

開発したい 対象に合わせて

手頃な 解像度に

(62)

AVD

2011年5月21日土曜日

(63)

AVD

(64)

Eclipse

http://eclipse.org

2011年5月21日土曜日

(65)

Eclipse

(66)

Eclipse

任意の 場所に展開

2011年5月21日土曜日

(67)

Eclipse

Welcome画面 閉じる

(68)

Eclipse

2011年5月21日土曜日

(69)

Eclipse

SDKをインストールした C:¥android-sdk-windows

(70)

Eclipse

2011年5月21日土曜日

(71)

ADT Plugin

(72)

ADT Plugin

2011年5月21日土曜日

(73)

ADT Plugin

https://dl-ssl.google.com/android/eclipse

(74)

ADT Plugin

2011年5月21日土曜日

(75)

ADT Plugin

(76)

Eclipse を再起動して完了

2011年5月21日土曜日

(77)

Hello from Android

(78)

Hello from Android

2011年5月21日土曜日

(79)
(80)

フィールド名 意味

Project Name HelloAndroid Eclipse上の プロジェクト名 Build Target Android 1.6 動作させる対象の

Androidバージョン Application Name HelloAndroid ホームスクリーンに

表示されるアプリ名 Package Name us.shiroyama.google.androi

d.test ソースコードの名前空間

Create Activity HelloAndroid アプリの初期ウィンドウ となるクラス名

Min SDK Version 4 最低限必要なAPI Level

Targetに対応

2011年5月21日土曜日

(81)

はじめてのAndroidプロジェクト

(82)

まずは実行!

2011年5月21日土曜日

(83)
(84)

2011年5月21日土曜日

(85)

はじめてのAndroidアプリです! おめでとう!!!

(86)

2011年5月21日土曜日

(87)

それではひとつひとつ確認していきましょう!

(88)

HelloAndroid.java

メイン画面のアクティビティファイル

2011年5月21日土曜日

(89)

Activity

(90)

Activity

Androidアプリにおける画面表示のもっ とも基本となるコンポーネント

通常「1アクティビティ=1画面」

他のアクティビティと連携し、Android アプリを構成する

2011年5月21日土曜日

(91)

package us.shiroyama.google.android.test;

import android.app.Activity; import android.os.Bundle;

public class HelloAndroid extends Activity {

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

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main); }

HelloAndroid.java

(92)

main.xml

メイン画面のレイアウトリソース

2011年5月21日土曜日

(93)

レイアウトリソース

(94)

レイアウトリソース

Androidアプリではレイアウトを直接

ソースコードに書かず、XMLファイルに 分離する

レイアウトの中にはwidgetと呼ばれる

パーツが配置される

2011年5月21日土曜日

(95)

グラフィカルにレイアウトを変更できる

切り替え

(96)

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/ res/android"

android:orientation="vertical"

android:layout_width="fill_parent" android:layout_height="fill_parent" >

<TextView

android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"

/>

</LinearLayout>

main.xml

TextViewというwidgetを発見

「Hello, World, HelloAndroid!」 はまだ見つからない…

2011年5月21日土曜日

(97)

strings.xml

パッケージの文字リソース

(98)

切り替え

2011年5月21日土曜日

(99)

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="hello">Hello World, HelloAndroid!</string> <string name="app_name">HelloAndroid</string>

</resources>

main.xml

ようやく発見!

とは

(100)

どうしてこんなにまどろっこしいことを?

2011年5月21日土曜日

(101)

どうしてこんなにまどろっこしいことを?

全ては多言語化のために!

(102)

多言語対応

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="hello">Hello World, HelloAndroid!</string> <string name="app_name">HelloAndroid</string>

</resources>

res/values/strings.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="hello">こんにちは、Android!</string> <string name="app_name">ハローアンドロイド</string>

</resources>

res/values-ja/strings.xml

2011年5月21日土曜日

(103)
(104)

2011年5月21日土曜日

(105)

あら簡単!

(106)

もういちどHelloAndroid.javaへ

2011年5月21日土曜日

(107)

package us.shiroyama.google.android.test;

import android.app.Activity; import android.os.Bundle;

public class HelloAndroid extends Activity {

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

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main); }

HelloAndroid.java

(108)

R.layout.main って何だ?

2011年5月21日土曜日

(109)

R.java

リソース定義を参照するためのクラス

(110)

R.java

gen/R.javaは自動生成されるクラス

HelloAndroid.javaは直接main.xmlを読む のではなくR.java経由でアクセスする

プログラマはこのファイルを直接変更 してはならない

2011年5月21日土曜日

(111)

文字列参照の流れ

R.java

main.xml

HelloAndroid.java

(112)

プログラムから直接文字列を書き換えてみる

2011年5月21日土曜日

(113)

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/ res/android"

android:orientation="vertical"

android:layout_width="fill_parent" android:layout_height="fill_parent" >

<TextView

android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"

android:id="@+id/hello" />

main.xml

(114)

package us.shiroyama.google.android.test;

import android.app.Activity; import android.os.Bundle;

import android.widget.TextView;

public class HelloAndroid extends Activity { TextView text;

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

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

text = (TextView) findViewById(R.id.hello); text.setText("直接テキストを書き換え");

} }

HelloAndroid.java

main.xmlにidを追加すると R.javaは自動的に再生成される

Ctrl + Shift + o

(MacはCommand + Shift + o) でインポート追加

2011年5月21日土曜日

(115)
(116)

これじゃあまりにもさみしい

ボタンを追加してみよう!

2011年5月21日土曜日

(117)

… の前に、ボタンのテキストを

リソースファイルに追加

(118)

追加された

strings.xml

2011年5月21日土曜日

(119)

ドラッグ ドロップ

右クリック

main.xml

(120)

main.xml

2011年5月21日土曜日

(121)
(122)

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="hello">Hello World, HelloAndroid!</string> <string name="app_name">HelloAndroid</string>

<string name="button01">THIS IS BUTTON</string>

</resources>

res/values/strings.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"

android:layout_width="fill_parent" android:layout_height="fill_parent" >

<TextView

android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"

android:id="@+id/hello"/>

<Button

android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button01"

android:id="@+id/button01"/>

</LinearLayout>

res/layout/main.xml

widgetをたてに配置

2011年5月21日土曜日

(123)

ボタンをクリックしたら

テキストが変わるように修正!

(124)

package us.shiroyama.google.android.test;

import android.app.Activity; import android.os.Bundle; import android.view.View;

import android.view.View.OnClickListener; import android.widget.Button;

import android.widget.TextView;

public class HelloAndroid extends Activity {

TextView text; Button button;

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

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

text = (TextView) findViewById(R.id.hello); button = (Button) findViewById(R.id.button01); button.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

text.setText("クリックされました。"); }

}); }

}

HelloAndroid.java

ClickListenerの登録

2011年5月21日土曜日

(125)
(126)

Android ∼基礎講座∼

2011年5月21日土曜日

(127)

Activity

(128)

Activity

画面表示のための基本的な機能の単位

Activityクラスを継承することで、画面表 示の煩雑な処理をほとんど省略できる

他のアクティビティを起動することで連携 が可能

AndroidアプリはActivityの集合

2011年5月21日土曜日

(129)

通常のActivityの他にも、地図を扱うの に特化したMapViewなど多彩

メソッドをオーバーライドすることで 様々な状態での挙動を指示できる

AndroidManifest.xmlに記述しないと 使用できない

(130)

AndroidManifest.xml

アイコンやActivity情報などが記載

2011年5月21日土曜日

(131)

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="us.shiroyama.google.android.test"

android:versionCode="1" android:versionName="1.0">

<uses-sdk android:minSdkVersion="4" />

<application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HelloAndroid"

android:label="@string/app_name"> <intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" /> </intent-filter>

</activity>

AndroidManifest.xml

(132)

Activity のライフサイクル

2011年5月21日土曜日

(133)

Activity のライフサイクル

前述のとおりAndroidは「1画面1 Activityが基本」

Activityはスタック状に積まれる

他のActivityやアプリとの兼ね合いで、 Activityは絶えず状態を変化させている

(134)

onCreate()

onStart()

onRestart()

onResume()

onPause()

onStop()

onDestroy()

2011年5月21日土曜日

(135)

Activityの初回起動時に呼ばれる

初期化処理に使う

このあと必ずonStart()が呼ばれる

onCreate()

(136)

Activityがユーザから見えるようになる 直前に呼ばれる

onStart()

2011年5月21日土曜日

(137)

Activityがユーザの入力を受け付けるよ うになった時に呼ばれる

メディア再生などによいタイミング

Activity復活時には必ずここを通る

onResume()

(138)

Activityがバックグラウンドになる直前 に呼ばれる

データの保存処理などはここで行う

ここから先はメモリ状況次第で予告な くプロセスが破棄される危険性がある

onPause()

2011年5月21日土曜日

(139)

Activityがしばらく使われないと呼ばれ る。具体的なタイミングは不確定

再び実行中になるならonRestart()が、破 棄されるならonDestroy()が呼ばれる

onStop()

(140)

onStop()のあと、フォアグラウンド

Activityが終わるなどして再びActivityが 表示される際に呼び出される

onRestart()

2011年5月21日土曜日

(141)

Activityが破棄されるタイミングで呼ば れる

これがActivityが受け取れる最後のメ ソッド呼び出し

onDestroy()

(142)

まとめ

onCreate()で初期化処理

onPause()以降はいつプロセスが終わっ てもおかしくないのでデータ退避

2011年5月21日土曜日

(143)

レイアウト

(144)

レイアウト

LinearLayout

一直線レイアウト(横・縦)

TableLayout

テーブルタグのようなレイアウト

RelativeLayout

ウィジェット同士の相対位置レイアウト

FrameLayout

本来1つのウィジェットを配置するためのレイアウト

2011年5月21日土曜日

(145)

インテント

(146)

インテント

Androidで最も重要な機能

Activity同士が連携する唯一の方法

明示的インテント、暗黙的インテント の2種類が存在する

2011年5月21日土曜日

参照

Outline

関連したドキュメント

2 環境保全の見地からより遮音効果のあるアーチ形、もしくは高さのある遮音効果のある

 本研究では,「IT 勉強会カレンダー」に登録さ れ,2008 年度から 2013 年度の 6 年間に開催され たイベント

東京電力パワーグリッド株式会社 東京都千代田区 東電タウンプランニング株式会社 東京都港区 東京電設サービス株式会社

東電不動産株式会社 東京都台東区 株式会社テプコシステムズ 東京都江東区 東京パワーテクノロジー株式会社 東京都江東区

東京電力パワーグリッド株式会社 東京都千代田区 東電タウンプランニング株式会社 東京都港区 東京電設サービス株式会社

東電不動産株式会社 東京都台東区 株式会社テプコシステムズ 東京都江東区 東京パワーテクノロジー株式会社 東京都江東区

東電不動産株式会社 東京都台東区 東京発電株式会社 東京都台東区 株式会社テプコシステムズ 東京都江東区

また、各メーカへのヒアリングによ って各機器から発生する低周波音 の基礎データ (評価書案 p.272 の表 8.3-33