Upload
yoshikazu-shima
View
1.382
Download
0
Embed Size (px)
Citation preview
Androidが生み出す開発言語の多様性 ~生み出されたのは「進化」か「混沌」か~
#devmLL
特定非営利活動法人 日本Androidの会 理事長
嶋 是一 この資料内容の一部には、Googleが作成、提供しているコンテンツを複製したものが含まれておりクリエイティブ コモンズの表示 2.5 ライセンスに記載の条件に従って使用しています。
Selected by freepik
Kotlin/Go言語デベロッパーミーティング
ライトウェイト言語で行こう!
2
自己紹介
嶋 是一 (しま よしかず) 日本Androidの会
特定非営利活動(NPO)法人 日本Androidの会 理事長 コミュニティー運営委員
株式会社KDDIテクノロジー 開発四部 部長 モバイルに関する新規技術の開拓
MCPCモバイルシステム技術検定委員 MCPC : モバイルコンピューティング推進コーンソーシアム MCPC技術検定委員 テキスト作成WG副主査
IPA 情報処理技術者試験委員 大学
非常勤講師 東京電機大学 玉川大学
執筆 「Google Android入門」 技術評論社より2008年4月23日出版 ほか
@shimay
3
(紹介)MCPCモバイルシステム検定
http://www.mcpc-jp.org/kentei/index.html
Android状況
5
Android状況 全世界
6
Android状況 国内
Mobile/Tablet Operating System Market Share in Japan(%)
Android
iOS
WindowsPhone
others
7
Androidの開発メリット
マルチデバイス
多様なデバイス
非公式に多数 Androidのアプリ開発
Android史以前
9
10年周期イノベーションの歴史
一部の人たちに囲われていた既得権をひらく
市場創生
新世代創出
社会インフラ 技術的要因
10
10年周期イノベーションの歴史
11
計算機の民主化
小型化
研究所
国家機関
パーソナルコンピュータはプログラム計算装置を人の手に
パソコンメーカ
12
10年周期イノベーションの歴史
13
ネットワークの民主化
固定電話網
電話会社
相互結合
IX
インターネットはネットワーク(電話回線)を誰にでも
インターネットサービスプロバイダー
インターネットはローカルな相互接続により、電話会社の通信網を誰でも利用できるようにISPが解放した。
14
10年周期イノベーションの歴史
15
iモード、EZweb、J-SkyWebは携帯ブラウザによりコンテンツビジネスを携帯電話会社からCPに開いた。
■携帯ブラウザ以前のコンテンツ配信
■携帯ブラウザ以降のコンテンツ配信
インターネット ゲートウェイ
独自
独自 標準方式
携帯電話会社
携帯電話画面の表示を誰でも
モバイルコンテンツの民主化
コンテンツ
プロバイダー
16
ゲートウェイ
サーバ
公式サイト 公式サイト
一般サイトともいう
Webサーバ
インターネット網事業者網
Webブラウザ
HTTP
TCPなど(*1)
IPなど(*2)
通信ベアラ(無線通信)
携帯電話内部の
ソフトウェア
変換
交換局でのベアラ変換
通信ベアラ(無線通信)
Ethernetなど
変換
TCPなど(*1)
IPなど(*2)
Ethernetなど
TCP
IP
Ethernetなど
ゲートウェイでの
プロトコル変換
Webサーバ
HTTP
TCP
IP
Ethernetなど
Webサーバが動作する
ソフトウェア
送信要求
データ
●Web機能
この範囲はインターネット プロトコルスイート
この範囲は事業者独自 プロトコル
標準化されているWeb。
コンテンツの作り手はWebサービスで提供可能
今まで開発できなかった領域が 慣れ親しんでいる開発手法でオープンになった
出展: MCPCモバイルシステム技術検定教科書 リックテレコム モバイルシステム技術テキスト
モバイルコンテンツの民主化
17
10年周期イノベーションの歴史
18
携帯電話の開発をメーカの手から解放。イノベーションが早いWebやPCの開発者の手に。
■Android以前の携帯開発
■Android以降の携帯開発
Java SE
組込
独自開発
一般的な
開発
組込
独自開発
Androidは組み込みのプログラムを誰の手にも
Android
モバイルデバイスの民主化
携帯電話メーカ
電話会社
Web開発者
PC開発者
19
Androidの目標
モバイルの世界のイノベーションの速度が遅延?
新技術への瞬時対応できていない?
新しいイノベーションをモバイルの世界で加速させたい
20
Androidの目標
• 多くの開発者を取り込む努力
– JavaSE
•Web開発者PC開発者
• IDEをJavaで人気のeclipse利用
•組み込み臭さの廃止
新しいイノベーションをモバイルの世界で加速させたい
★デバッグ環境の進化
ICE装置から、USBケーブル一本へ
Eclipseを用いた開発環境
21
Androidの目標
• Androidの仕組み
新しいイノベーションをモバイルの世界で加速させたい
22
Androidの目標
• JavaVM
– Javaはサンマイクロソフトが1995年に公開
– JavaのVMはサンマイクロソフトから提供されフィーチャーフォンにもJavaMEが搭載
• VMソフトウェア自体はサンマイクロソフトのソフトウェアのためオープンソースでない
– Java技術の標準化作業は、Java Community Process (JCP) というプロセスで行われている
–新しい取り組みはJSRという形で標準化され、それがJavaVMに搭載されて初めて利用可能になる
•新しい技術を利用できるまでのタイムラグが発生
新しいイノベーションをモバイルの世界で加速させたい
23
Androidの目標
• AndroidはDalvik VMを搭載
–サンマイクロソフトから提供されていJavaSEのインターフェイスにもとづいた実行環境(JavaVM)を、自前で制作
–アプリ開発者はJavaSEのプログラム言語で開発。しかしVMはGoogleが実装したDalvik VMという組立
–DVMもオープンソースで公開され、自由に拡張可能
•多様性が広がったとともに、様々な混沌(フラグメメント)も広がる
•現在GoogleはGMSでその混沌を収めようとしている
• 新技術を早急に搭載でき、実験でき、アプリ開発でき、マッシュアップの土台に乗せることができる。
新しいイノベーションをモバイルの世界で加速させたい
24
Androidで利用できるJavaクラス
JavaSE
Android独自
その他
Androidの目標
25
イノベーションを止めない
Androidの目標
イノベーションを促進する
Android史以降
27
Javaの争い
Google Oracle VS
2010年8月
OracleはGoogleを訴える。
28
Javaの争い
API著作
フェアユース利用 API著作はOraacleの勝利!
Androidのフェアユース利用についてGoogleが係争中。
争点は2つ!
29
Javaの争い
declaring code
implementing code
「実装したcode」(リテラル)については著作権がある。
しかし、構造である非リテラルSSOについては著作範囲?
プログラム SSO
Structure
Sequence
Organization
API
ロジック
非リテラル
30
Javaの争い
訴訟の流れ
GoogleがAndroidにコピーしたと認定されたもの
Implementing code
Declaring code
SSO
8つのJavaファイルの逆コンパイル
7千行
JavaSEの全般
控訴裁
控訴審
連邦最高裁 合衆国連邦地裁
州裁判所
陪審員評決 判決
31
Javaの争い
2012年4月
2012年5月
2012年6月
サンフランシスコ連邦地裁の法廷開始
Googleの特許侵害はないという
陪審評決
損害賠償金なし。Java API(37件)については著作権の保護とならない。
Google Oracle
32
Javaの争い
2012年10月
2014年05月
2014年10月
2015年06月
2016年05月
「Java APIを著作権の対象と認めず」判決を不服としOracle側が上訴
控訴裁は37APIのSSOを著作権の対象だ
とする判断。
「フェアユース」にあたるかどうかについては、審理を地裁に差し戻し
Googleは米最高裁に、API著作判断について上訴申し立て
米最高裁がグーグルの上告を棄却
著作権の侵害にはコードのコピーはいらない
合衆国連邦地裁「フェアユース」陪審員評決
このあと控訴審最高裁想定
→未確定
確定
Google Oracle
33
著作物の使用がフェアユースかどうか判断するうえでは、次の4点を考慮しなければならない。
1. 利用の目的と性格(その使用が商用であるか、非営利の教育目的であるかを含む)
2. 著作物の性質
3. 原著作物全体に対する再使用された量と重要性
4. 著作物のもつ潜在的市場もしくは価値に対する影響
。
Javaの争い
フェアユース
フェアユースの権利は、他者の著作権で守られた作品を使用することを、その著作者の承諾なく使用することを認めるもの
一般化された定義を行うことは不可能であり、それぞれの事例において各々の事実に基づく判断が行われる必要がある
アメリカの著作権法(Copyright Act)
34
フェアユースは未決
しかし技術は進化している
Javaの争い
本章参考文献 ・判例文No. 14-410 http://computemagazine.com/wp-content/uploads/2015/05/Google-v-Oracle-Solicitor-General-Brief.pdf
・ yudai/Oracle v. Google https://gist.github.com/yudai/c5906ca61d4fe367180a6e079c8fc309
Android
新開発言語のイマ
36
CPUの進化
ケータイクラス
PCクラス
CPU性能
200MHz
600MHz
2007 2008 2009 2010 2011 2006
1GHz
400MHz
2012 2013
ARM11 400MHz
ARM9 128MHz
90nm
ARM11 528MHz
ARM9 256MHz
65nm
Scorpion 1GHz
ARM9 266MHz
65nm
MP Now
082Q CS
084Q CS
A8 800MHz
45nm
OMAP3430改
OMAP3
A8 600MHz
65nm
OMAP3430
OMAP3
A9 800MHz×2
45nm→28nm
OMAP4
Phoenix
ARM11 330MHz
90nm
OMAP2430
OMAP2
A9 1GHz×2
45nm→28nm
OMAP4
Phoenix
8960
Krait 1.5GHz×2
28nm
8960
8660
89xx
Scorpion 1.5GHz×2
45nm
Krait 1.7GHz×2
28nm LPIA
Z510: 1.1GHz
Z540: 1.86GHz
45nm
MP ’08/Jun 2009-2010年向
け
45nm Silver thorne
MOORESTOWN
Atom(Intel)
ケータイプロセッサ並みの低消費電力へ
Oak Trail Medfield
32nm
1.5GHz
性能
Tegra1
ARM11 MP600MHz
65nm Xscale
624MHz
Mervell
PXA310
Tegra2
1GHz x 2
40nm
Tegra3
1.5GHz x 4
40nm
37
Brew Android ALP
(LiMo)
MOAP
(L)
Symbian
MSM
Rex Linux
Windows
Phone
MOAP
(S) プラットフォーム名
ハード
CPU
RTOS
ミドルウェア
ランタイム
アプリケーション
フレームワーク
配信環境
アプリ
スマートフォン 国内フィーチャーフォン
iOS
アプリケーション配信レイヤー
DoJa
iアプリ
Linux
KTM
KCP
Android
開発レイヤーと配信レイヤーは
端末処理速度の性能向上により
同じレイヤーとなる
安全なプログラム実行のために
EZアプリ
(Java)
KDDI
AppMgr
EZアプリ
(BREW)
MIDP
KDDI拡張
アプリケーション開発レイヤー
iOS Windows
Phone
iPhone
CPUの進化
38
Android
進むランタイムの進化
ランタイムの進化
1.0 4.4 5.0 7.0 …
AOT仮
ART 仮
Dalvik
JIT
JIT Just in time(実行時コンパイラ)
Javaバイトコードを実行時に実行可能形式へ
AOT Ahead of time(事前コンパイラ)
Javaバイトコードをあらかじめ実行可能な形式へ
インストール
早い ストレージ小 実行時早い CPU負荷小 省電力
中間言語コンパイル方式
JIT
AOT(最適化)
ART
AOT
39 スマートフォン白書2016(インプレス) 嶋是一原稿より
進むランタイムの進化
アプリ
Core OS
iOS Android
Core Service
Media
Cocoa Touch
Linux
Liblary
Dalvik VM
Framework
Java バイト コード
ART
Swift ソース
ObjectC ソース
バイナリーコード
プログラミング 言語
コンパイル
LLVM利用
Javaソース
バイナリ コード
ARTの場合 Dalvikの場合
JavaのVM(バーチャルマシン)
アプリ実行環境
コンパイル
LLVM利用
RTOS
ミドルウェア
アプリケーション 実行環境
アプリケーション フレームワーク 配信環境
LLVMの活用
Javaバイト コード
40
進むランタイムの進化
LLVMの活用
LLVM コンパイル時、リンク時、実行時などあらゆる時点で
プログラムを最適化するよう設計された、任意の
プログラミング言語に対応可能なコンパイラ基盤
フロントエンド
LLVM
clang
c/c++/Objective c
ソース解析
中間コード
最適化
実行ファイル
生成
•中間コード IR: Intermediate Representation
LLVM-IR
コンパイラー
Swift
compiler
Swift
etc
compiler
etc
多様な言語
41
進むランタイムの進化
アプリ
Android
プログラミング 言語
RTOS
ミドルウェア
アプリケーション 実行環境
アプリケーション フレームワーク 配信環境
LLVMの活用
様々な開発言語ソース
フロントエンド
LLVM利用
Kotlin
Linux
Liblary
Dalvik VM
Framework
Java バイト コード
ART
Javaソース
バイナリ コード
ARTの場合 Dalvikの場合
コンパイル
LLVM利用
Javaバイト コード
KotlinはJava
バイトコードで実行する
• 親和性Javaそのもの
• LLVM待たずに実用可
42
混沌 vs 進化
• 混沌が進化を生むAndroid
• Googleは開発者を熱狂させるのうまい
–レガシーを良く見せる
–技術者にうれしい提案によりファンを増やす
• コード効率化
•開発環境整備
•新技術の利用
• KotlinやGo言語の良いところは、開発者が開発していて気持ち良いこと。
広がる開発言語
次なる民主化領域を探しながら進化
43
開発メリット
マルチデバイス
一つの記述で
様々なデバイスを Androidのアプリ開発 同一開発言語アプリ開発
44
開発メリット
×
Go言語 組み込みデバイス GPIO
参考情報
46
私は少年自体からロボットが大好きだったんだ。いまでもずっと好きだ。子供はみんなロボットは好きだろう? だけどロボットは人の形をしているとは限らない。より人に似せて人の形に近いのがアンドロイドだ。それは親しみがあり友達のようだし、ロボットよりも楽しい気持ちになれるだろう? そうだ日本のアニメと同じだよ。そういう世界を持っているんだ。より人に近いところにある、それがGoogle
Androidなんだ。
人の側に立つマシン
Andy Rubinさん
元Android開発の統括責任者
元Android社社長
2008/6/13 @IT 嶋是一によるインタビュー
「Androidは雇い主の分身として仕事をするエージェント」
47
日本Androidの会とは
コミュニティー運営委員 97名
設立 2008年9月12日 前身はAndroid勉強会2008年5月
会員
22,011名
Androidに興味を持つ人が集まるユーザーコミュニティーです!
•Androidの普及を促進し、ビジネス系、技術系、デザイナー系の人たちに対して、Androidの注目度を上げることを目的としています。
48
日本Androidの活動内容
•そのほか展示会多数
• Wireless Japanなど
Android
普及活動 •メーリングリスト
•部/WG活動支援
•セミナー講演活動
•書籍執筆活動
•イベント協賛
地方支部 •各地方での勉強会開催
•ハンズオンセッション(実習)
→各支部にお問い合わせ下さい
月例イベント
•毎月開催
•勉強会講演方式
•参加無料
•Android Bazaar and Conference
•年二回開催(春・秋)
•基調講演セミナー等
•バザール(展示) •前回2千人
•の動員数
•開催規模
•約100~200名
•ビジネスマッチング
•約100名規模
49
是非ご入会下さい http://www.android-group.jp/
•個人、法人ともにGoogle-Groupsへ登録するだけです。会則並びに設立趣意に賛同していただく以外の作業や費用は、発生いたしません。
50
Android Bazzar and Conference 2016 Autumn
http://abc.android-group.jp/2016a/
会場 柏の葉キャンパス
主催 特定非営利活動法人 日本Androidの会
共催 31VENTURES(三井不動産)
51
ご静聴頂きましてありがとうございます