Kotlin/Golang Developer seminor....

51
Androidが生み出す開発言語の多様性 ~生み出されたのは「進化」か「混沌」か~ #devmLL 特定非営利活動法人 日本Androidの会 理事長 嶋 是一 この資料内容の一部には、Googleが作成、提供しているコンテンツを複製したものが含まれておりクリエイティブ コモンズの表示 2.5 ライセンスに記載の条件に従って使用しています。 Selected by freepik Kotlin/Go言語デベロッパーミーティング ライトウェイト言語で行こう!

Transcript of Kotlin/Golang Developer seminor....

Page 1: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

Androidが生み出す開発言語の多様性 ~生み出されたのは「進化」か「混沌」か~

#devmLL

特定非営利活動法人 日本Androidの会 理事長

嶋 是一 この資料内容の一部には、Googleが作成、提供しているコンテンツを複製したものが含まれておりクリエイティブ コモンズの表示 2.5 ライセンスに記載の条件に従って使用しています。

Selected by freepik

Kotlin/Go言語デベロッパーミーティング

ライトウェイト言語で行こう!

Page 2: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

2

自己紹介

嶋 是一 (しま よしかず) 日本Androidの会

特定非営利活動(NPO)法人 日本Androidの会 理事長 コミュニティー運営委員

株式会社KDDIテクノロジー 開発四部 部長 モバイルに関する新規技術の開拓

MCPCモバイルシステム技術検定委員 MCPC : モバイルコンピューティング推進コーンソーシアム MCPC技術検定委員 テキスト作成WG副主査

IPA 情報処理技術者試験委員 大学

非常勤講師 東京電機大学 玉川大学

執筆 「Google Android入門」 技術評論社より2008年4月23日出版 ほか

@shimay

Page 3: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

3

(紹介)MCPCモバイルシステム検定

http://www.mcpc-jp.org/kentei/index.html

Page 4: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

Android状況

Page 5: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

5

Android状況 全世界

Page 6: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

6

Android状況 国内

Mobile/Tablet Operating System Market Share in Japan(%)

Android

iOS

WindowsPhone

others

Page 7: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

7

Androidの開発メリット

マルチデバイス

多様なデバイス

非公式に多数 Androidのアプリ開発

Page 8: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

Android史以前

Page 9: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

9

10年周期イノベーションの歴史

一部の人たちに囲われていた既得権をひらく

市場創生

新世代創出

社会インフラ 技術的要因

Page 10: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

10

10年周期イノベーションの歴史

Page 11: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

11

計算機の民主化

小型化

研究所

国家機関

パーソナルコンピュータはプログラム計算装置を人の手に

パソコンメーカ

Page 12: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

12

10年周期イノベーションの歴史

Page 13: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

13

ネットワークの民主化

固定電話網

電話会社

相互結合

IX

インターネットはネットワーク(電話回線)を誰にでも

インターネットサービスプロバイダー

インターネットはローカルな相互接続により、電話会社の通信網を誰でも利用できるようにISPが解放した。

Page 14: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

14

10年周期イノベーションの歴史

Page 15: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

15

iモード、EZweb、J-SkyWebは携帯ブラウザによりコンテンツビジネスを携帯電話会社からCPに開いた。

■携帯ブラウザ以前のコンテンツ配信

■携帯ブラウザ以降のコンテンツ配信

インターネット ゲートウェイ

独自

独自 標準方式

携帯電話会社

携帯電話画面の表示を誰でも

モバイルコンテンツの民主化

コンテンツ

プロバイダー

Page 16: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

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モバイルシステム技術検定教科書 リックテレコム モバイルシステム技術テキスト

モバイルコンテンツの民主化

Page 17: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

17

10年周期イノベーションの歴史

Page 18: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

18

携帯電話の開発をメーカの手から解放。イノベーションが早いWebやPCの開発者の手に。

■Android以前の携帯開発

■Android以降の携帯開発

Java SE

組込

独自開発

一般的な

開発

組込

独自開発

Androidは組み込みのプログラムを誰の手にも

Android

モバイルデバイスの民主化

携帯電話メーカ

電話会社

Web開発者

PC開発者

Page 19: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

19

Androidの目標

モバイルの世界のイノベーションの速度が遅延?

新技術への瞬時対応できていない?

新しいイノベーションをモバイルの世界で加速させたい

Page 20: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

20

Androidの目標

• 多くの開発者を取り込む努力

– JavaSE

•Web開発者PC開発者

• IDEをJavaで人気のeclipse利用

•組み込み臭さの廃止

新しいイノベーションをモバイルの世界で加速させたい

★デバッグ環境の進化

ICE装置から、USBケーブル一本へ

Eclipseを用いた開発環境

Page 21: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

21

Androidの目標

• Androidの仕組み

新しいイノベーションをモバイルの世界で加速させたい

Page 22: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

22

Androidの目標

• JavaVM

– Javaはサンマイクロソフトが1995年に公開

– JavaのVMはサンマイクロソフトから提供されフィーチャーフォンにもJavaMEが搭載

• VMソフトウェア自体はサンマイクロソフトのソフトウェアのためオープンソースでない

– Java技術の標準化作業は、Java Community Process (JCP) というプロセスで行われている

–新しい取り組みはJSRという形で標準化され、それがJavaVMに搭載されて初めて利用可能になる

•新しい技術を利用できるまでのタイムラグが発生

新しいイノベーションをモバイルの世界で加速させたい

Page 23: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

23

Androidの目標

• AndroidはDalvik VMを搭載

–サンマイクロソフトから提供されていJavaSEのインターフェイスにもとづいた実行環境(JavaVM)を、自前で制作

–アプリ開発者はJavaSEのプログラム言語で開発。しかしVMはGoogleが実装したDalvik VMという組立

–DVMもオープンソースで公開され、自由に拡張可能

•多様性が広がったとともに、様々な混沌(フラグメメント)も広がる

•現在GoogleはGMSでその混沌を収めようとしている

• 新技術を早急に搭載でき、実験でき、アプリ開発でき、マッシュアップの土台に乗せることができる。

新しいイノベーションをモバイルの世界で加速させたい

Page 24: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

24

Androidで利用できるJavaクラス

JavaSE

Android独自

その他

Androidの目標

Page 25: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

25

イノベーションを止めない

Androidの目標

イノベーションを促進する

Page 26: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

Android史以降

Page 27: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

27

Javaの争い

Google Oracle VS

2010年8月

OracleはGoogleを訴える。

Page 28: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

28

Javaの争い

API著作

フェアユース利用 API著作はOraacleの勝利!

Androidのフェアユース利用についてGoogleが係争中。

争点は2つ!

Page 29: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

29

Javaの争い

declaring code

implementing code

「実装したcode」(リテラル)については著作権がある。

しかし、構造である非リテラルSSOについては著作範囲?

プログラム SSO

Structure

Sequence

Organization

API

ロジック

非リテラル

Page 30: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

30

Javaの争い

訴訟の流れ

GoogleがAndroidにコピーしたと認定されたもの

Implementing code

Declaring code

SSO

8つのJavaファイルの逆コンパイル

7千行

JavaSEの全般

控訴裁

控訴審

連邦最高裁 合衆国連邦地裁

州裁判所

陪審員評決 判決

Page 31: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

31

Javaの争い

2012年4月

2012年5月

2012年6月

サンフランシスコ連邦地裁の法廷開始

Googleの特許侵害はないという

陪審評決

損害賠償金なし。Java API(37件)については著作権の保護とならない。

Google Oracle

Page 32: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

32

Javaの争い

2012年10月

2014年05月

2014年10月

2015年06月

2016年05月

「Java APIを著作権の対象と認めず」判決を不服としOracle側が上訴

控訴裁は37APIのSSOを著作権の対象だ

とする判断。

「フェアユース」にあたるかどうかについては、審理を地裁に差し戻し

Googleは米最高裁に、API著作判断について上訴申し立て

米最高裁がグーグルの上告を棄却

著作権の侵害にはコードのコピーはいらない

合衆国連邦地裁「フェアユース」陪審員評決

このあと控訴審最高裁想定

→未確定

確定

Google Oracle

Page 33: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

33

著作物の使用がフェアユースかどうか判断するうえでは、次の4点を考慮しなければならない。

1. 利用の目的と性格(その使用が商用であるか、非営利の教育目的であるかを含む)

2. 著作物の性質

3. 原著作物全体に対する再使用された量と重要性

4. 著作物のもつ潜在的市場もしくは価値に対する影響

Javaの争い

フェアユース

フェアユースの権利は、他者の著作権で守られた作品を使用することを、その著作者の承諾なく使用することを認めるもの

一般化された定義を行うことは不可能であり、それぞれの事例において各々の事実に基づく判断が行われる必要がある

アメリカの著作権法(Copyright Act)

Page 34: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

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

Page 35: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

Android

新開発言語のイマ

Page 36: Kotlin/Golang Developer seminor. 「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

Page 37: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

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の進化

Page 38: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

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

Page 39: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

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バイト コード

Page 40: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

40

進むランタイムの進化

LLVMの活用

LLVM コンパイル時、リンク時、実行時などあらゆる時点で

プログラムを最適化するよう設計された、任意の

プログラミング言語に対応可能なコンパイラ基盤

フロントエンド

LLVM

clang

c/c++/Objective c

ソース解析

中間コード

最適化

実行ファイル

生成

•中間コード IR: Intermediate Representation

LLVM-IR

コンパイラー

Swift

compiler

Swift

etc

compiler

etc

多様な言語

Page 41: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

41

進むランタイムの進化

アプリ

Android

プログラミング 言語

RTOS

ミドルウェア

アプリケーション 実行環境

アプリケーション フレームワーク 配信環境

LLVMの活用

様々な開発言語ソース

フロントエンド

LLVM利用

Kotlin

Linux

Liblary

Dalvik VM

Framework

Java バイト コード

ART

Javaソース

バイナリ コード

ARTの場合 Dalvikの場合

コンパイル

LLVM利用

Javaバイト コード

KotlinはJava

バイトコードで実行する

• 親和性Javaそのもの

• LLVM待たずに実用可

Page 42: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

42

混沌 vs 進化

• 混沌が進化を生むAndroid

• Googleは開発者を熱狂させるのうまい

–レガシーを良く見せる

–技術者にうれしい提案によりファンを増やす

• コード効率化

•開発環境整備

•新技術の利用

• KotlinやGo言語の良いところは、開発者が開発していて気持ち良いこと。

広がる開発言語

次なる民主化領域を探しながら進化

Page 43: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

43

開発メリット

マルチデバイス

一つの記述で

様々なデバイスを Androidのアプリ開発 同一開発言語アプリ開発

Page 44: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

44

開発メリット

×

Go言語 組み込みデバイス GPIO

Page 45: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

参考情報

Page 46: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

46

私は少年自体からロボットが大好きだったんだ。いまでもずっと好きだ。子供はみんなロボットは好きだろう? だけどロボットは人の形をしているとは限らない。より人に似せて人の形に近いのがアンドロイドだ。それは親しみがあり友達のようだし、ロボットよりも楽しい気持ちになれるだろう? そうだ日本のアニメと同じだよ。そういう世界を持っているんだ。より人に近いところにある、それがGoogle

Androidなんだ。

人の側に立つマシン

Andy Rubinさん

元Android開発の統括責任者

元Android社社長

2008/6/13 @IT 嶋是一によるインタビュー

「Androidは雇い主の分身として仕事をするエージェント」

Page 47: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

47

日本Androidの会とは

コミュニティー運営委員 97名

設立 2008年9月12日 前身はAndroid勉強会2008年5月

会員

22,011名

Androidに興味を持つ人が集まるユーザーコミュニティーです!

•Androidの普及を促進し、ビジネス系、技術系、デザイナー系の人たちに対して、Androidの注目度を上げることを目的としています。

Page 48: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

48

日本Androidの活動内容

•そのほか展示会多数

• Wireless Japanなど

Android

普及活動 •メーリングリスト

•部/WG活動支援

•セミナー講演活動

•書籍執筆活動

•イベント協賛

地方支部 •各地方での勉強会開催

•ハンズオンセッション(実習)

→各支部にお問い合わせ下さい

月例イベント

•毎月開催

•勉強会講演方式

•参加無料

•Android Bazaar and Conference

•年二回開催(春・秋)

•基調講演セミナー等

•バザール(展示) •前回2千人

•の動員数

•開催規模

•約100~200名

•ビジネスマッチング

•約100名規模

Page 49: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

49

是非ご入会下さい http://www.android-group.jp/

•個人、法人ともにGoogle-Groupsへ登録するだけです。会則並びに設立趣意に賛同していただく以外の作業や費用は、発生いたしません。

Page 50: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

50

Android Bazzar and Conference 2016 Autumn

http://abc.android-group.jp/2016a/

会場 柏の葉キャンパス

主催 特定非営利活動法人 日本Androidの会

共催 31VENTURES(三井不動産)

Page 51: Kotlin/Golang Developer seminor. 「Androidが生み出す開発言語の多様性」 リックテレコム主催

51

ご静聴頂きましてありがとうございます