インテリジェントシステム
講義の目的 <ul><li>Androidについて学ぶ </li></ul><ul><ul><li>携帯電話を使ったサービスアプリケーションを作れるようになる </li></ul></ul><ul><ul><ul><li>例: Google M...
学習の手順 <ul><li>概要を理解しよう </li></ul><ul><li>何はともあれ、アプリケーションを書けるようにしよう </li></ul><ul><li>Androidと工科大ケータイを使って、携帯電話のサービスを何か企画して、...
携帯電話は、サービスを提供する蛇口である これがなければサービスは提供できないが、これだけでは役に立たない!
これまでと何が変わったか <ul><li>ソフトウェアのオープン化 </li></ul><ul><ul><li>iPhone や Android では、高機能なアプリケーションを自分で作ることができる </li></ul></ul><ul><u...
Android <ul><li>携帯電話向けプラットフォーム </li></ul><ul><ul><li>OS を含むもの </li></ul></ul><ul><ul><ul><li>Windows Mobile, Symbian OS, O...
Android 続き <ul><li>Android 社が主体となって開発 </li></ul><ul><ul><li>2005 年に Google 社が買収 </li></ul></ul><ul><li>OHA から発表 </li></ul>...
・  Android を利用して自分なりの携帯電話サービスを構築してみよう ・  携帯電話サービスについて知って、それを企画する方法を習得しよう
まず、エミュレータを動かしてみる
標準的な動作環境 <ul><li>Goldfishモデル </li></ul><ul><ul><li>96MB RAM, 8MB VRAM, HVGA or QVGA </li></ul></ul><ul><li>Linux OSカーネル </...
 
ソフトウェアを開発するには <ul><li>Android SDK </li></ul><ul><ul><li>ソフトウェア一式 </li></ul></ul><ul><ul><li>エミュレータとデバッグ環境 </li></ul></ul><...
開発環境をインストールしよう <ul><li>Eclipse のダウンロード </li></ul><ul><ul><li>http://eclipsewiki.net/eclipse/index.php?FrontPage </li></ul>...
内部の構造 <ul><li>Linux カーネル  (2.6.23) </li></ul><ul><li>標準ライブラリ </li></ul><ul><ul><li>カーネル上で直接動作するライブラリ </li></ul></ul><ul><l...
画面を出すための基本機能 音声や画像などのマルチメディアコンテンツを扱うための基本機能 携帯電話上で動作するDBMS OpenGL 3Dグラフィックス エンジン フォントの取り扱い ブラウザエンジン (埋め込んで使うこともできる ブラウザ) グ...
Dalvik VM <ul><li>Sun の Java とは異なる実行方法 </li></ul><ul><li>Dalvik VM </li></ul><ul><ul><li>Java bytecode ではなく、 Dalvik Execut...
Dalvik   VM  続き <ul><li>Dalvik Executable は、 Java の .class ファイルから変換 </li></ul><ul><ul><li>dx コマンドによる </li></ul></ul><ul><l...
Android クラスライブラリ <ul><li>Java の標準ライブラリ </li></ul><ul><li>Android 特有のライブラリ </li></ul><ul><ul><li>http://developer.android.c...
フレームワークを設計するには <ul><li>携帯電話の動作をモデル化する </li></ul><ul><li>動作モデルに従って、それをプログラミングしやすい形式にクラスライブラリを作る </li></ul><ul><ul><li>携帯電話の...
携帯電話の性質 ・ 主に動いているアプリケーションは    一つ   -> マルチウィンドウはいらない ・ キーボードの数は極端に少ない ・ バックグラウンドで動いている   アプリケーションがある   例: 着信   例: 時計
Android のフレームワークが主に提供するもの <ul><li>携帯電話向きの画面を構成する機能 </li></ul><ul><li>携帯電話向きの画面遷移を実現する機能 </li></ul>
画面を構成する <ul><li>画面を構成する部品 </li></ul><ul><ul><li>android.widget </li></ul></ul><ul><li>部品をどのように配置するか指定する </li></ul><ul><ul>...
携帯電話画面の動作のモデル化 <ul><li>画面を持つアプリケーションを、Activityとよぶ </li></ul><ul><li>動作しているActivityは一つ </li></ul><ul><li>Activityは、スタック順序で表...
Activityのライフサイクル <ul><li>4 つの状態 </li></ul><ul><ul><li>インスタンスなし </li></ul></ul><ul><ul><li>Invisible </li></ul></ul><ul><ul...
ライフサイクルにおけるイベント <ul><li>onCreate </li></ul><ul><ul><li>Activity が作成された。  </li></ul></ul><ul><li>onStart </li></ul><ul><ul>...
onCreate Activity を開始しようとしている状態 onStart onRestart onResume onPause onStop onDestroy Activity が終了した状態 Activity が実行している状態 プロ...
onCreate Activity を開始しようとしている状態 onStart onRestart onResume onPause onStop onDestroy Activity が終了した状態 Activity が実行している状態 プロ...
アプリケーションの全要素 (クラスによって実装される) <ul><li>Activity </li></ul><ul><ul><li>アプリケーションの本体。画面を生成する </li></ul></ul><ul><li>Intent Recei...
Eclipse をもう一度みてみると
Upcoming SlideShare
Loading in …5
×

講義資料

987 views

Published on

  • Be the first to comment

  • Be the first to like this

講義資料

  1. 1. インテリジェントシステム
  2. 2. 講義の目的 <ul><li>Androidについて学ぶ </li></ul><ul><ul><li>携帯電話を使ったサービスアプリケーションを作れるようになる </li></ul></ul><ul><ul><ul><li>例: Google Mapを利用したアプリ </li></ul></ul></ul><ul><ul><li>携帯電話や家電に向いたソフトウェアのフレームワークについて理解する </li></ul></ul><ul><li>なぜAndroidについて学ばなければならないか、理解する </li></ul>
  3. 3. 学習の手順 <ul><li>概要を理解しよう </li></ul><ul><li>何はともあれ、アプリケーションを書けるようにしよう </li></ul><ul><li>Androidと工科大ケータイを使って、携帯電話のサービスを何か企画して、実際に作ってみよう </li></ul><ul><li>より付加価値の高いサービスを作るには? </li></ul><ul><ul><li>今後のITサービスがどのようになってゆくのか考えてみよう </li></ul></ul>
  4. 4. 携帯電話は、サービスを提供する蛇口である これがなければサービスは提供できないが、これだけでは役に立たない!
  5. 5. これまでと何が変わったか <ul><li>ソフトウェアのオープン化 </li></ul><ul><ul><li>iPhone や Android では、高機能なアプリケーションを自分で作ることができる </li></ul></ul><ul><ul><li>サービスを自分で構築することができる </li></ul></ul><ul><li>ハードウェアのオープン化 </li></ul><ul><ul><li>自分でハードウェアを作ることができる </li></ul></ul>
  6. 6. Android <ul><li>携帯電話向けプラットフォーム </li></ul><ul><ul><li>OS を含むもの </li></ul></ul><ul><ul><ul><li>Windows Mobile, Symbian OS, OS X iPhone </li></ul></ul></ul><ul><ul><li>OS を含まないもの </li></ul></ul><ul><ul><ul><li>BREW, Java Micro Edition, Android </li></ul></ul></ul><ul><li>Java を利用してプログラミングを行う </li></ul><ul><ul><li>非標準の Java </li></ul></ul><ul><ul><ul><li>Dalvik VM </li></ul></ul></ul><ul><ul><li>Java の独自のクラスライブラリを提供 </li></ul></ul>
  7. 7. Android 続き <ul><li>Android 社が主体となって開発 </li></ul><ul><ul><li>2005 年に Google 社が買収 </li></ul></ul><ul><li>OHA から発表 </li></ul><ul><ul><li>Open Handset Alliance </li></ul></ul><ul><ul><li>Android 1.0 SDK, Release 1 </li></ul></ul><ul><li>オープンソース活動を含む   http://source.android.com/ </li></ul><ul><ul><li>  ( Google 社の活動とは別個) </li></ul></ul>
  8. 8. ・  Android を利用して自分なりの携帯電話サービスを構築してみよう ・  携帯電話サービスについて知って、それを企画する方法を習得しよう
  9. 9. まず、エミュレータを動かしてみる
  10. 10. 標準的な動作環境 <ul><li>Goldfishモデル </li></ul><ul><ul><li>96MB RAM, 8MB VRAM, HVGA or QVGA </li></ul></ul><ul><li>Linux OSカーネル </li></ul><ul><ul><li>カーネル以外は使用しない (Android SDKにすべて含まれる) </li></ul></ul><ul><li>例えば工科大ケータイ </li></ul>
  11. 12. ソフトウェアを開発するには <ul><li>Android SDK </li></ul><ul><ul><li>ソフトウェア一式 </li></ul></ul><ul><ul><li>エミュレータとデバッグ環境 </li></ul></ul><ul><li>Eclipseプラグイン </li></ul><ul><ul><li>Android専用のプロジェクトを作ってデバッグ作業を行うことができる </li></ul></ul>
  12. 13. 開発環境をインストールしよう <ul><li>Eclipse のダウンロード </li></ul><ul><ul><li>http://eclipsewiki.net/eclipse/index.php?FrontPage </li></ul></ul><ul><li>Android   SDK のダウンロード </li></ul><ul><ul><li>http:// www.android.com / </li></ul></ul><ul><li>Android プラグインの設定 </li></ul><ul><ul><li>Eclipse の Android 開発用プラグインをインストールする </li></ul></ul>
  13. 14. 内部の構造 <ul><li>Linux カーネル (2.6.23) </li></ul><ul><li>標準ライブラリ </li></ul><ul><ul><li>カーネル上で直接動作するライブラリ </li></ul></ul><ul><li>Android ランタイム </li></ul><ul><ul><li>Dalvik   VM を含む心臓部 </li></ul></ul><ul><li>アプリケーション・フレームワーク </li></ul><ul><ul><li>専用の Java ライブラリ </li></ul></ul><ul><li>アプリケーション・ソフトウェア </li></ul>
  14. 15. 画面を出すための基本機能 音声や画像などのマルチメディアコンテンツを扱うための基本機能 携帯電話上で動作するDBMS OpenGL 3Dグラフィックス エンジン フォントの取り扱い ブラウザエンジン (埋め込んで使うこともできる ブラウザ) グラフィックサブシステム (Scalable Graphics Library) セキュリティサブシステム (Secure Sockets Layer) C言語の標準ライブラリ
  15. 16. Dalvik VM <ul><li>Sun の Java とは異なる実行方法 </li></ul><ul><li>Dalvik VM </li></ul><ul><ul><li>Java bytecode ではなく、 Dalvik Executable (.dex) を実行 </li></ul></ul><ul><ul><li>スタックマシン モデルではなく、レジスタマシン モデルに基づく </li></ul></ul><ul><ul><ul><li>実行効率がより高い </li></ul></ul></ul><ul><ul><ul><li>VM の作りが簡単 </li></ul></ul></ul><ul><ul><ul><li>移植性は低い ( arm に特化) </li></ul></ul></ul>
  16. 17. Dalvik   VM  続き <ul><li>Dalvik Executable は、 Java の .class ファイルから変換 </li></ul><ul><ul><li>dx コマンドによる </li></ul></ul><ul><li>JIT(Just in Time) コンパイラは用いない </li></ul><ul><li>Java のコミュニティとは独立の活動を可能にしている </li></ul>
  17. 18. Android クラスライブラリ <ul><li>Java の標準ライブラリ </li></ul><ul><li>Android 特有のライブラリ </li></ul><ul><ul><li>http://developer.android.com/reference/classes.html </li></ul></ul><ul><ul><li>アプリケーションを構築するためのフレームワークを構成する </li></ul></ul><ul><ul><ul><li>Activity </li></ul></ul></ul><ul><ul><ul><ul><li>ライフサイクル </li></ul></ul></ul></ul><ul><ul><ul><li>view </li></ul></ul></ul><ul><ul><ul><li>Intent </li></ul></ul></ul>
  18. 19. フレームワークを設計するには <ul><li>携帯電話の動作をモデル化する </li></ul><ul><li>動作モデルに従って、それをプログラミングしやすい形式にクラスライブラリを作る </li></ul><ul><ul><li>携帯電話のフレームワーク </li></ul></ul>
  19. 20. 携帯電話の性質 ・ 主に動いているアプリケーションは    一つ   -> マルチウィンドウはいらない ・ キーボードの数は極端に少ない ・ バックグラウンドで動いている   アプリケーションがある   例: 着信   例: 時計
  20. 21. Android のフレームワークが主に提供するもの <ul><li>携帯電話向きの画面を構成する機能 </li></ul><ul><li>携帯電話向きの画面遷移を実現する機能 </li></ul>
  21. 22. 画面を構成する <ul><li>画面を構成する部品 </li></ul><ul><ul><li>android.widget </li></ul></ul><ul><li>部品をどのように配置するか指定する </li></ul><ul><ul><li>リソースファイルによる方法 </li></ul></ul><ul><ul><li>ViewGroup クラスを利用してプログラミングする方法 </li></ul></ul>
  22. 23. 携帯電話画面の動作のモデル化 <ul><li>画面を持つアプリケーションを、Activityとよぶ </li></ul><ul><li>動作しているActivityは一つ </li></ul><ul><li>Activityは、スタック順序で表示されたり隠れたりする </li></ul><ul><li>Activityの状態は、イベントによって遷移する </li></ul><ul><ul><li>ライフサイクル </li></ul></ul><ul><li>Intentによってアプリケーション間で通信が行われる </li></ul>
  23. 24. Activityのライフサイクル <ul><li>4 つの状態 </li></ul><ul><ul><li>インスタンスなし </li></ul></ul><ul><ul><li>Invisible </li></ul></ul><ul><ul><li>Visible </li></ul></ul><ul><ul><li>Foreground </li></ul></ul><ul><li>イベントによる状態遷移 </li></ul><ul><ul><li>onCreate, onStart, onRestart, onStop, onResume, onFreeze, onPause, onDestroy </li></ul></ul>
  24. 25. ライフサイクルにおけるイベント <ul><li>onCreate </li></ul><ul><ul><li>Activity が作成された。 </li></ul></ul><ul><li>onStart </li></ul><ul><ul><li>Activity の表示が開始される。 </li></ul></ul><ul><li>onRestart </li></ul><ul><ul><li>Activity の表示の再開。 </li></ul></ul><ul><li>onResume </li></ul><ul><ul><li>Activity はユーザとの対話を開始する。 </li></ul></ul><ul><li>onFreeze </li></ul><ul><ul><li>Activity はユーザとの対話を中断する。 データの永続化を行うこと。 </li></ul></ul><ul><li>onPause </li></ul><ul><ul><li>Activity はユーザとの対話を中断する。 </li></ul></ul><ul><li>onStop </li></ul><ul><ul><li>Activity は表示を中断する。 </li></ul></ul><ul><li>onDestroy </li></ul><ul><ul><li>Activity が破棄される。 </li></ul></ul>
  25. 26. onCreate Activity を開始しようとしている状態 onStart onRestart onResume onPause onStop onDestroy Activity が終了した状態 Activity が実行している状態 プロセスが 殺された状態 Activity が再び全面へ 復帰したとき Activity が onStop から 復帰したときのみ 他のアプリケーションが 空きメモリを要求した ユーザーからの画面操作によって、再び Activity の表示要求を求められた。 Activity が最初に 生成されたとき Activity を開始しようとしている状態 onCreate onStart onResume Activity が実行している状態 新たな別の Activity が開始された (別の Activity が最前面になろうとしている)
  26. 27. onCreate Activity を開始しようとしている状態 onStart onRestart onResume onPause onStop onDestroy Activity が終了した状態 Activity が実行している状態 プロセスが 殺された状態 Activity が再び全面へ 復帰したとき Activity が onStop から 復帰したときのみ 他のアプリケーションが 空きメモリを要求した ユーザーからの画面操作によって、再び Activity の表示要求を求められた。 Activity が最初に 生成されたとき Activity が実行している状態 onPause onStop 新たな別の Activity が開始された (別の Activity が最前面になろうとしている)
  27. 28. アプリケーションの全要素 (クラスによって実装される) <ul><li>Activity </li></ul><ul><ul><li>アプリケーションの本体。画面を生成する </li></ul></ul><ul><li>Intent Receiver </li></ul><ul><ul><li>他のアプリケーションからのIntentをバックグラウンドで処理する </li></ul></ul><ul><li>Service </li></ul><ul><ul><li>バックグラウンドで動作し続けるアプリケーション </li></ul></ul><ul><li>Content Provider </li></ul><ul><ul><li>他のアプリケーションにデータを供給する </li></ul></ul>
  28. 29. Eclipse をもう一度みてみると

×