Submit Search
Upload
Goだけでモバイルアプリを作ろう
•
23 likes
•
9,904 views
Takuya Ueda
Follow
Goオールスターズ!で発表した資料です。 http://eventdots.jp/event/571126
Read less
Read more
Technology
Report
Share
Report
Share
1 of 32
Download now
Download to read offline
Recommended
Goだけでモバイルアプリを作る
Goだけでモバイルアプリを作る
Takuya Ueda
go.mobile で Android 開発
go.mobile で Android 開発
Hiroshi Kurokawa
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
Takuya Ueda
粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法
Takuya Ueda
過去に自作したGoプロダクトの紹介 - Goオールスターズ
過去に自作したGoプロダクトの紹介 - Goオールスターズ
Shogo Ichinose
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Takuya Ueda
Namespace API を用いたマルチテナント型 Web アプリの実践
Namespace API を用いたマルチテナント型 Web アプリの実践
Takuya Ueda
gopher-lua
gopher-lua
Takuya Ueda
Recommended
Goだけでモバイルアプリを作る
Goだけでモバイルアプリを作る
Takuya Ueda
go.mobile で Android 開発
go.mobile で Android 開発
Hiroshi Kurokawa
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
Takuya Ueda
粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法
Takuya Ueda
過去に自作したGoプロダクトの紹介 - Goオールスターズ
過去に自作したGoプロダクトの紹介 - Goオールスターズ
Shogo Ichinose
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Takuya Ueda
Namespace API を用いたマルチテナント型 Web アプリの実践
Namespace API を用いたマルチテナント型 Web アプリの実践
Takuya Ueda
gopher-lua
gopher-lua
Takuya Ueda
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
Takuya Ueda
Cloud functionsの紹介
Cloud functionsの紹介
Takuya Ueda
GAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使う
Takuya Ueda
Go初心者向けハンズオン コマンドラインツールを作ろう
Go初心者向けハンズオン コマンドラインツールを作ろう
Takuya Ueda
goパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現する
Takuya Ueda
エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法
Takuya Ueda
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Takuya Ueda
Gopher Fest 2017参加レポート
Gopher Fest 2017参加レポート
Takuya Ueda
Cloud Functionsの紹介
Cloud Functionsの紹介
Takuya Ueda
Goでwebアプリを開発してみよう
Goでwebアプリを開発してみよう
Takuya Ueda
Golang入門
Golang入門
Yukihiro Kitazawa
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
Takuya Ueda
ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法
Keisuke Yamaguchi
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
Go Friday 傑作選
Go Friday 傑作選
Takuya Ueda
Google Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめ
Takuya Ueda
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
京大 マイコンクラブ
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
Yusuke Miyake
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Takahiro Yoshimura
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
Masataka Kono
【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料
Yuji Otani
マスター・オブ・reflectパッケージ II
マスター・オブ・reflectパッケージ II
Takuya Ueda
More Related Content
What's hot
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
Takuya Ueda
Cloud functionsの紹介
Cloud functionsの紹介
Takuya Ueda
GAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使う
Takuya Ueda
Go初心者向けハンズオン コマンドラインツールを作ろう
Go初心者向けハンズオン コマンドラインツールを作ろう
Takuya Ueda
goパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現する
Takuya Ueda
エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法
Takuya Ueda
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Takuya Ueda
Gopher Fest 2017参加レポート
Gopher Fest 2017参加レポート
Takuya Ueda
Cloud Functionsの紹介
Cloud Functionsの紹介
Takuya Ueda
Goでwebアプリを開発してみよう
Goでwebアプリを開発してみよう
Takuya Ueda
Golang入門
Golang入門
Yukihiro Kitazawa
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
Takuya Ueda
ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法
Keisuke Yamaguchi
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
Go Friday 傑作選
Go Friday 傑作選
Takuya Ueda
Google Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめ
Takuya Ueda
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
京大 マイコンクラブ
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
Yusuke Miyake
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Takahiro Yoshimura
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
Masataka Kono
What's hot
(20)
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
Cloud functionsの紹介
Cloud functionsの紹介
GAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使う
Go初心者向けハンズオン コマンドラインツールを作ろう
Go初心者向けハンズオン コマンドラインツールを作ろう
goパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現する
エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Gopher Fest 2017参加レポート
Gopher Fest 2017参加レポート
Cloud Functionsの紹介
Cloud Functionsの紹介
Goでwebアプリを開発してみよう
Goでwebアプリを開発してみよう
Golang入門
Golang入門
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Go Friday 傑作選
Go Friday 傑作選
Google Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめ
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
PHP開発からAndroid開発をするようになって学んだWebとモバイルの違い
Viewers also liked
【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料
Yuji Otani
マスター・オブ・reflectパッケージ II
マスター・オブ・reflectパッケージ II
Takuya Ueda
Go言語オーバービュー201507
Go言語オーバービュー201507
エンジニア勉強会 エスキュービズム
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
Takuya Ueda
私なりのGo言語のご紹介
私なりのGo言語のご紹介
Ryuji Iwata
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
Takuya Ueda
Go入門
Go入門
Takuya Ueda
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
Takuya Ueda
Mix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-C
Goichi Hirakawa
Server Side Swift with Swag
Server Side Swift with Swag
Jens Ravens
自作アプリを watchOS 2 対応した話 〜FastCheckin編〜
自作アプリを watchOS 2 対応した話 〜FastCheckin編〜
Kosuke Ogawa
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
Shingo Sato
Xcode tips
Xcode tips
Motoki Narita
iOS9/iPadとマルチタスキング
iOS9/iPadとマルチタスキング
Akinori Adachi
Xcode 7で始めるCI
Xcode 7で始めるCI
yuki0211s
iOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバ
Syo Ikeda
マスター・オブ・Reflectパッケージ
マスター・オブ・Reflectパッケージ
Takuya Ueda
Beyond JSON with FlatBuffers
Beyond JSON with FlatBuffers
Maxim Zaks
Go for Mobile Games
Go for Mobile Games
Takuya Ueda
コードを書きやすくしてくれる Xcode の基本機能 #NSStudy #devsap
コードを書きやすくしてくれる Xcode の基本機能 #NSStudy #devsap
Tomohiro Kumagai
Viewers also liked
(20)
【初心者向け】Go言語勉強会資料
【初心者向け】Go言語勉強会資料
マスター・オブ・reflectパッケージ II
マスター・オブ・reflectパッケージ II
Go言語オーバービュー201507
Go言語オーバービュー201507
今日から始めるGopher - スタートGo #0 @GDG名古屋
今日から始めるGopher - スタートGo #0 @GDG名古屋
私なりのGo言語のご紹介
私なりのGo言語のご紹介
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
Go入門
Go入門
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
Mix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-C
Server Side Swift with Swag
Server Side Swift with Swag
自作アプリを watchOS 2 対応した話 〜FastCheckin編〜
自作アプリを watchOS 2 対応した話 〜FastCheckin編〜
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
Xcode tips
Xcode tips
iOS9/iPadとマルチタスキング
iOS9/iPadとマルチタスキング
Xcode 7で始めるCI
Xcode 7で始めるCI
iOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバ
マスター・オブ・Reflectパッケージ
マスター・オブ・Reflectパッケージ
Beyond JSON with FlatBuffers
Beyond JSON with FlatBuffers
Go for Mobile Games
Go for Mobile Games
コードを書きやすくしてくれる Xcode の基本機能 #NSStudy #devsap
コードを書きやすくしてくれる Xcode の基本機能 #NSStudy #devsap
Similar to Goだけでモバイルアプリを作ろう
What is "Go" Gopher?
What is "Go" Gopher?
Ryuji Iwata
gomobile
gomobile
naoty_bot
DroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for Android
SENSY Inc
PhoneGap勉強会 in 熊本
PhoneGap勉強会 in 熊本
Suguru Murakami
Go一緒にいかが?
Go一緒にいかが?
Ryuji Iwata
Slide
Slide
Moriyuki Arakawa
Geo geo
Geo geo
Kazuo Shimokawa
ちょっとさわってみるGo言語ハンズオン
ちょっとさわってみるGo言語ハンズオン
Satoshi Noda
自社のメインプロダクトにGoを導入したぞ++
自社のメインプロダクトにGoを導入したぞ++
Kazuaki KURIU
スッとGoを取り入れる
スッとGoを取り入れる
Yusuke Wada
Herlockサービス紹介
Herlockサービス紹介
SONICMOOV CO.,LTD.
社内勉強会1 go lang
社内勉強会1 go lang
Tsuyoshi Nakamura
Golang handson
Golang handson
Ryuto Yasugi
俺達のGoogle i:o 2014 はまだ始まったばかりだ
俺達のGoogle i:o 2014 はまだ始まったばかりだ
Shinobu Okano
Google Homeが家にやってきた
Google Homeが家にやってきた
Kazuki Tsurugai
国際化対応におけるUI実装で気をつけるべきこと
国際化対応におけるUI実装で気をつけるべきこと
KLab Inc. / Tech
G* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - Introduction
Kazuchika Sekiya
ライトニングノードをたててみよう
ライトニングノードをたててみよう
takayaimai
20120316 designerworkshoppublished
20120316 designerworkshoppublished
Yoichiro Sakurai
Android6.0の機能まとめ 実機でサンプルを動かしてみた
Android6.0の機能まとめ 実機でサンプルを動かしてみた
Satoshi Noda
Similar to Goだけでモバイルアプリを作ろう
(20)
What is "Go" Gopher?
What is "Go" Gopher?
gomobile
gomobile
DroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for Android
PhoneGap勉強会 in 熊本
PhoneGap勉強会 in 熊本
Go一緒にいかが?
Go一緒にいかが?
Slide
Slide
Geo geo
Geo geo
ちょっとさわってみるGo言語ハンズオン
ちょっとさわってみるGo言語ハンズオン
自社のメインプロダクトにGoを導入したぞ++
自社のメインプロダクトにGoを導入したぞ++
スッとGoを取り入れる
スッとGoを取り入れる
Herlockサービス紹介
Herlockサービス紹介
社内勉強会1 go lang
社内勉強会1 go lang
Golang handson
Golang handson
俺達のGoogle i:o 2014 はまだ始まったばかりだ
俺達のGoogle i:o 2014 はまだ始まったばかりだ
Google Homeが家にやってきた
Google Homeが家にやってきた
国際化対応におけるUI実装で気をつけるべきこと
国際化対応におけるUI実装で気をつけるべきこと
G* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - Introduction
ライトニングノードをたててみよう
ライトニングノードをたててみよう
20120316 designerworkshoppublished
20120316 designerworkshoppublished
Android6.0の機能まとめ 実機でサンプルを動かしてみた
Android6.0の機能まとめ 実機でサンプルを動かしてみた
More from Takuya Ueda
Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −
Takuya Ueda
WebAssembly with Go
WebAssembly with Go
Takuya Ueda
GAE/Goとsyncパッケージ
GAE/Goとsyncパッケージ
Takuya Ueda
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
Takuya Ueda
そうだ、Goを始めよう
そうだ、Goを始めよう
Takuya Ueda
マスター・オブ・goパッケージ
マスター・オブ・goパッケージ
Takuya Ueda
メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新
Takuya Ueda
Go1.8 for Google App Engine
Go1.8 for Google App Engine
Takuya Ueda
Static Analysis in Go
Static Analysis in Go
Takuya Ueda
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
エキスパートGo
エキスパートGo
Takuya Ueda
Go静的解析ハンズオン
Go静的解析ハンズオン
Takuya Ueda
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用
Takuya Ueda
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda
Mobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse Binding
Takuya Ueda
GAE/GoでWebアプリ開発入門
GAE/GoでWebアプリ開発入門
Takuya Ueda
More from Takuya Ueda
(16)
Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −
WebAssembly with Go
WebAssembly with Go
GAE/Goとsyncパッケージ
GAE/Goとsyncパッケージ
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
そうだ、Goを始めよう
そうだ、Goを始めよう
マスター・オブ・goパッケージ
マスター・オブ・goパッケージ
メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新
Go1.8 for Google App Engine
Go1.8 for Google App Engine
Static Analysis in Go
Static Analysis in Go
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
エキスパートGo
エキスパートGo
Go静的解析ハンズオン
Go静的解析ハンズオン
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
Mobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse Binding
GAE/GoでWebアプリ開発入門
GAE/GoでWebアプリ開発入門
Recently uploaded
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
Recently uploaded
(9)
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Goだけでモバイルアプリを作ろう
1.
Goだけで モバイルアプリを 作ろう 2015/10/11(日) @Goオールスターズ! The Go gopher
was designed by Renee French. The gopher stickers was made by Takuya Ueda. Licensed under the Creative Commons 3.0 Attributions license.
2.
アジェンダ ● 自己紹介 ● Go
Mobileとは? ● どうやって作るのか? ● イベント ● spriteパッケージ ● その他できること ● Google Playに公開するまでの道のり
3.
自己紹介 KLab株式会社 KLabGames事業本部 エンジニア 上田拓也 twitter: @tenntenn ■
好きな言語 Go, JavaScript, Lua ■ 業務 モバイルオンラインゲームの開発(クライアントサイド)
4.
Go Mobileとは?
5.
https://github.com/golang/mobile
6.
Goとクロスコンパイル ■ $GOOSと$GOARCHを指定する $ GOOS=linux
GOARCH=arm go build main.go ■ Android上で実行 $ adb push main /data/local/tmp $ adb shell $ run-as pkgname $ cat /data/local/tmp/main > main $ chmod 766 main findやgrepが使えない時に便利
7.
Go Mobileとは ● Goでモバイルアプリを作るツール群 ○
iOS / Androidに対応 ○ golang.org/x/mobile ● 2通りのスタイル ○ Goだけで書く ⇒ OpenGL を使う ○ 一部だけ書く ⇒ Java, Obj-c/Swiftから 参考:https://github.com/golang/go/wiki/Mobile
8.
Goだけでモバイルアプリを作ってみた http://github.com/tenntenn/gofun
9.
どうやって作るの?
10.
gomobileコマンド ■ gomobile init ●
ツールチェインのインストールや初期化を行う ● 最初の1回だけ実行すればよい ■ gomobile build ● ビルドを行う ● apk(Android)やapp(iOS)の生成を行う ■ gomobile install ● gomobile build後にadb installまで行う ● Android限定 PCで動かす場合は go buildで行う
11.
Go Mobileのパッケージ ■ glパッケージ ●
golang.org/x/mobile/gl ● OpenGL ES で頑張る ■ eventパッケージ ● golang.org/x/mobile/event/touch ● golang.org/x/mobile/event/paint ● golang.org/x/mobile/event/lifecycle など ■ spriteパッケージ ● golang.org/x/mobile/exp/sprite ● 2次元のシーングラフ
12.
イベントループとspriteパッケージ 参考:サンプルコード
13.
イベントループとspriteパッケージ 参考:サンプルコード
14.
app.Main ■ イベントループを行う関数 func main()
{ app.Main(func(a app.App) { // イベントループを書く }) }
15.
イベントループ ■ app.App.Events()からイベントを取得 // Events()
<-chan interface{} for e := range a.Events() { switch e := a.Filter(e).(type) { case lifecycle.Event: // ... case paint.Event: // ... } }
16.
spriteパッケージ ■ sprite.Engine ● 描画エンジンを表すインタフェース ●
具体的な実装は別のパッケージに任せる sprite/glsprite, sprite/portable ■ sprite.Node ● シーングラフのノードを表す構造体 ■ sprite.Texture ● テクスチャを表すインタフェース ■ sprite.SubTex ● テクスチャの一部を表す構造体 ● ノードに設定される テクスチャ サブテクスチャ
17.
イベントループとspriteパッケージ 参考:サンプルコード
18.
テクスチャのロード ■ アセットのオープン a, err
:= asset.Open("gopher.png") ■ 画像のデコード img, err := image.Decode(a) ■ テクスチャのロード t, err := eng.LoadTexture(img) assetsディレクトリ以下の ファイルを見に行く
19.
イベントループとspriteパッケージ 参考:サンプルコード
20.
シーングラフの構築 ■ ノードの作成と登録 ■ 子ノードの追加 scene
:= &sprite.Node{} eng.Register(scene) n := &sprite.Node{} eng.Register(n) scene.AppendChild(n)
21.
サブテクスチャの作成と設定 ■ サブテクスチャの作成 st :=
sprite.Subtex { T:t, // テクスチャ R:iamge.Rect(0, 0, 100, 200) } ■ サブテクスチャの設定 eng.SetSubTex(n, st) テクスチャ上の該当の領域 を指定する
22.
アフィン変換行列の設定 ■ アフィン変換行列の設定 ルートノードは、サイズ:1pt x
1pt、 座標:(0,0)、角度:0に対して変換行列を掛け合わせる eng.SetTransform(root, f32.Affine{ {2, 0, 5}, {0, 2, 5}, }) 1pt = 1/72 inch
23.
アフィン変換行列の計算 ■ 親ノードから子ノードへ 親ノードの変換結果に子ノードの変換行列を 掛けわせて子ノードの描画位置を決める root n eng.SetTransform(root, f32.Affine{ {2,
0, 5}, {0, 2, 5}, }) eng.SetTransform(n, f32.Affine{ {100, 0, 10}, {0, 100, 10}, }) 2x2, (5, 5) 200x200, (25, 25)
24.
イベントループとspriteパッケージ 参考:サンプルコード
25.
ノードの配置 ■ Node.Arranger.Arrange ● 毎フレーム呼ばれる ●
ノードの位置を変更したりする type Arranger interface{ Arrange(e Engine, n *Node, t clock.Time) }
26.
シーングラフの描画 ■ Engine.Render シーングラフを描画する 現在の時刻と、画面サイズ(size.Event)が必要 // 60FPS now
:= clock.Time( time.Since(st)*60/time.Second) // szはsize.Event eng.Render(root, now, sz)
27.
実行例
28.
その他できること ■ touch.Event ● タッチイベント ■
sensor.Event ● センサーイベント ■ Goの標準パッケージ ● ほとんどのパッケージは使える ● net/httpでWebサーバを立てる ○ Androidはandroid.permission.INTERNETがいる ○ 参考:サンプルコード
29.
Google Play に公開するまでの道のり ●
Goでモバイルアプリを書く ● apkを作る ○ gomobile build pkg_name ● アイコンを作る ○ apkにresがない ● apkにresを突っ込む ○ apk-toolで一度展開して突っ込む ● 署名+zipaligne
30.
詳しくはブログに書いています http://klabgames.tech.blog.jp.klab.com/
31.
結構変わってる! ■テクスチャ開放ができる ● sprite.Engine.Release ● glutil.Images.Release ■
テクスチャロード ● 1回目のペイントイベントでなくてよい ● lifecycle.EventのStageVisible(CrossOn)で よい
Download now