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.
2015/2/21 GDG神戸 勉強会
Go on Android
ハンズオン&もくもく会
GDG神戸 野田 悟志
自己紹介
野田 悟志
AndroidとGoが好きなC#er
今年、GDG神戸のCo-Managerになりました
あと、最近噂のPolymerに興味はあるけど、全然調べてないの
で誰か知ってたら教えて!
ついに
Go1.4からNDKを使って、Androidアプリが作れるようになった
どっちも、ちょーかわいい!
そうそう
夢の共演やー!!
ちなみに、ぼく関西人じゃないです
さっそく
作れるアプリは2種類
1. UIも含め、完全にGoだけ(All Go)で作るNDK Apps
2. UIはJava(Android SDK)で、ロジックをGoで作るSDK Apps
NDK Appsはゲームアプリを想定し、UIはOpe...
さっそく、といっても
NDK Appsは、UIをOpenGLで書かないといけないので、とてつ
もなくめんどk
普通のAndroidアプリを作るなら、SDK Appsの方が良さそう
今回はSDK Appsをつくる
使用した環境
Go環境
Ubuntu14.04 (VMware Player)
Android環境
Windows7
Android Studio 1.0.2
Go on Androidのビルド環境を作る
Go on Androidのビルド環境を作るには、NDKなどを用意する
必要があり、若干面倒
Dockerファイルが用意されているので、Dockerでビルド環境を
作る
Go on Androidのビルド環境を作る
Dockerをインストール
$ sudo apt-get update
$ sudo apt-get install docker.io
Dockerを有効にし、バージョンを確認
$ source ...
Go on Androidのビルド環境を作る
go.mobileが必要なので、go.mobileを取得
$ go get -d golang.org/x/mobile/...
Dockerファイルでビルド環境を作成
$ sudo docker ...
Go on Androidのビルド環境を作る
出来たDockerイメージを確認
mobileが出来ていればOK
$ sudo docker images
こんな感じで出てくるはず
REPOSITORY TAG IMAGE ID CREATED ...
サンプルをビルドしてみる
go.mobileのlibhelloというサンプルをビルドしてみる
$ sudo docker run --rm -v 
$GOPATH/src:/src mobile /bin/bash 
-c 'cd /src/g...
サンプルをビルドしてみる
libhello/binディレクトリに移動すると、「Hello-debug.apk」というファ
イルがある
$ cd $GOPATH/src/golang.org/x/mobile/example/ 
libhello...
サンプルをビルドしてみる
「Hello」というアプリが入っているので、起動
上部に「Hello」と出る
libhelloディレクトリにあるmake.bashは、最後にAndroidアプリを作
るのにantでビルドしている
アプリはAndroid...
共有ライブラリを作成する
Goのサンプルソースを用意したので、それを使って説明する
サンプルソースを取得
$ go get github.com/scarviz/gocalc
gobindをインストール
$ go install golang....
共有ライブラリを作成する
サンプルソースのディレクトリに移動
$ cd $GOPATH/src/github.com/scarviz/gocalc
"go_" + パッケージ名となるディレクトリを作成
$ mkdir calc/go_calc
共有ライブラリを作成する
gobindを使って、必要になるファイルを自動生成する
$ gobind -lang=go github.com/scarviz/gocalc/calc > 
calc/go_calc/go_calc.go
$ gob...
共有ライブラリを作成する
共有ライブラリを作成
$ sudo docker run --rm -v $GOPATH/src:/src 
mobile /bin/bash -c 'cd /src/github.com/scarviz/gocalc...
Androidアプリを作成する
作成手順
1. AndroidStudioを立ち上げ、適当なプロジェクトを作成
2. javaディレクトリ以下に、goディレクトリ以下を配置
3. go/calcディレクトリ以下にCalc.javaを配置
4. ...
Androidアプリを作成する
以下のような配置になる
main
├─java
│ └─go
│ │ Go.java
│ │ Seq.java
│ │
│ └─calc
│ Calc.java
└─jniLibs
└─armeabi-v7a
l...
Androidアプリを作成する
ActivityクラスのonCreateメソッドなど、最初の処理でGo.initメソッ
ドを呼び出し、初期化
@Override
protected void onCreate(Bundle savedInsta...
Androidアプリを作成する
後はgoの関数(Calc.javaのメソッド)を、Activityクラスなどから呼び
出すように実装
Runで端末(またはエミュレータ)にインストールし、実行する
当然だけど、エミュレーターならARMの方じゃない...
Androidアプリを作成する
Androidアプリを作成する
見てみろよ
それGoで動いてるんだぜ!
じつは
gobindのReadmeを見てみると…
https://godoc.org/golang.org/x/mobile/cmd/gobind#hdr-Type_restrictions
えいごがんばってよんでみた
使える型
 ・intの符号あり整数と、floatはOK
 ・string、boolもOK
・上記の型なら、パラメータや戻り値に使える
・上記の型なら、戻り値は一つ、または組み込み型のerrorと合わせ
て2つ使える ...
ちなみに
当たり前な感じもするけど、publicじゃなかったら、制約はなし
GoWebサーバも動いたよ!
ていうか、いざとなったらJSON使えばいいじゃん!くらいの気持ち
の持ちようで頑張る
あと
Go1.5(予定では2015/07)では
『iOS experimental support』
という話。
experimentalあたりはぐーぐる臭ただようわ
Go on Androidっていってるけど、Go on Mobileが正式名...
これからも期待したいですね!
ご清聴ありがとうございました!
Upcoming SlideShare
Loading in …5
×

2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会

771 views

Published on

2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会

  1. 1. 2015/2/21 GDG神戸 勉強会 Go on Android ハンズオン&もくもく会 GDG神戸 野田 悟志
  2. 2. 自己紹介 野田 悟志 AndroidとGoが好きなC#er 今年、GDG神戸のCo-Managerになりました あと、最近噂のPolymerに興味はあるけど、全然調べてないの で誰か知ってたら教えて!
  3. 3. ついに Go1.4からNDKを使って、Androidアプリが作れるようになった どっちも、ちょーかわいい!
  4. 4. そうそう 夢の共演やー!! ちなみに、ぼく関西人じゃないです
  5. 5. さっそく 作れるアプリは2種類 1. UIも含め、完全にGoだけ(All Go)で作るNDK Apps 2. UIはJava(Android SDK)で、ロジックをGoで作るSDK Apps NDK Appsはゲームアプリを想定し、UIはOpenGLで書く SDK Appsは従来のJNIで作るのをGoで実装する
  6. 6. さっそく、といっても NDK Appsは、UIをOpenGLで書かないといけないので、とてつ もなくめんどk 普通のAndroidアプリを作るなら、SDK Appsの方が良さそう 今回はSDK Appsをつくる
  7. 7. 使用した環境 Go環境 Ubuntu14.04 (VMware Player) Android環境 Windows7 Android Studio 1.0.2
  8. 8. Go on Androidのビルド環境を作る Go on Androidのビルド環境を作るには、NDKなどを用意する 必要があり、若干面倒 Dockerファイルが用意されているので、Dockerでビルド環境を 作る
  9. 9. Go on Androidのビルド環境を作る Dockerをインストール $ sudo apt-get update $ sudo apt-get install docker.io Dockerを有効にし、バージョンを確認 $ source /etc/bash_completion.d/docker.io $ sudo docker --version
  10. 10. Go on Androidのビルド環境を作る go.mobileが必要なので、go.mobileを取得 $ go get -d golang.org/x/mobile/... Dockerファイルでビルド環境を作成 $ sudo docker build -t mobile $GOPATH/src/golang.org/x/mobile
  11. 11. Go on Androidのビルド環境を作る 出来たDockerイメージを確認 mobileが出来ていればOK $ sudo docker images こんな感じで出てくるはず REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE mobile latest 5cfd030b6850 9 minutes ago 3.32 GB
  12. 12. サンプルをビルドしてみる go.mobileのlibhelloというサンプルをビルドしてみる $ sudo docker run --rm -v $GOPATH/src:/src mobile /bin/bash -c 'cd /src/golang.org/x/mobile/example/libhello && ./make.bash'
  13. 13. サンプルをビルドしてみる libhello/binディレクトリに移動すると、「Hello-debug.apk」というファ イルがある $ cd $GOPATH/src/golang.org/x/mobile/example/ libhello/bin adb installで端末にインストールしてみる $ adb install ./Hello-debug.apk
  14. 14. サンプルをビルドしてみる 「Hello」というアプリが入っているので、起動 上部に「Hello」と出る libhelloディレクトリにあるmake.bashは、最後にAndroidアプリを作 るのにantでビルドしている アプリはAndroidStudioでビルドするつもりなので、共有ライブラリ が欲しい
  15. 15. 共有ライブラリを作成する Goのサンプルソースを用意したので、それを使って説明する サンプルソースを取得 $ go get github.com/scarviz/gocalc gobindをインストール $ go install golang.org/x/mobile/cmd/gobind
  16. 16. 共有ライブラリを作成する サンプルソースのディレクトリに移動 $ cd $GOPATH/src/github.com/scarviz/gocalc "go_" + パッケージ名となるディレクトリを作成 $ mkdir calc/go_calc
  17. 17. 共有ライブラリを作成する gobindを使って、必要になるファイルを自動生成する $ gobind -lang=go github.com/scarviz/gocalc/calc > calc/go_calc/go_calc.go $ gobind -lang=java github.com/scarviz/gocalc/calc > calc/Calc.java go_calc.goは共有ライブラリの作成に必要なファイル main.goにはgo_calcパッケージを含める必要がある Calc.javaは後でAndroidのプロジェクトに含める
  18. 18. 共有ライブラリを作成する 共有ライブラリを作成 $ sudo docker run --rm -v $GOPATH/src:/src mobile /bin/bash -c 'cd /src/github.com/scarviz/gocalc && ./make.bash' make.bashの中では、Go.javaとSeq.javaをコピーしているが、シ ンボリックリンクの方が好ましいらしい WindowsでAndroidアプリを作成するつもりなので、コピーにしてい る
  19. 19. Androidアプリを作成する 作成手順 1. AndroidStudioを立ち上げ、適当なプロジェクトを作成 2. javaディレクトリ以下に、goディレクトリ以下を配置 3. go/calcディレクトリ以下にCalc.javaを配置 4. mainディレクトリ以下にjniLibsディレクトリを作成し、   その下にarmeabi-v7aディレクトリ以下を配置
  20. 20. Androidアプリを作成する 以下のような配置になる main ├─java │ └─go │ │ Go.java │ │ Seq.java │ │ │ └─calc │ Calc.java └─jniLibs └─armeabi-v7a libgojni.so
  21. 21. Androidアプリを作成する ActivityクラスのonCreateメソッドなど、最初の処理でGo.initメソッ ドを呼び出し、初期化 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Go.init(getApplicationContext()); }
  22. 22. Androidアプリを作成する 後はgoの関数(Calc.javaのメソッド)を、Activityクラスなどから呼び 出すように実装 Runで端末(またはエミュレータ)にインストールし、実行する 当然だけど、エミュレーターならARMの方じゃないと動かないよ!
  23. 23. Androidアプリを作成する
  24. 24. Androidアプリを作成する 見てみろよ それGoで動いてるんだぜ!
  25. 25. じつは gobindのReadmeを見てみると… https://godoc.org/golang.org/x/mobile/cmd/gobind#hdr-Type_restrictions
  26. 26. えいごがんばってよんでみた 使える型  ・intの符号あり整数と、floatはOK  ・string、boolもOK ・上記の型なら、パラメータや戻り値に使える ・上記の型なら、戻り値は一つ、または組み込み型のerrorと合わせ て2つ使える ※errorはJava側では例外扱いになる ・上記の型なら、インターフェースも使える ・上記の型なら、構造体も使える
  27. 27. ちなみに 当たり前な感じもするけど、publicじゃなかったら、制約はなし GoWebサーバも動いたよ! ていうか、いざとなったらJSON使えばいいじゃん!くらいの気持ち の持ちようで頑張る
  28. 28. あと Go1.5(予定では2015/07)では 『iOS experimental support』 という話。 experimentalあたりはぐーぐる臭ただようわ Go on Androidっていってるけど、Go on Mobileが正式名称っぽい GothamGoの動画 http://vimeo.com/channels/852217/115307069 スライド http://talks.golang.org/2014/gothamgo-android.slide#1
  29. 29. これからも期待したいですね! ご清聴ありがとうございました!

×