Suche senden
Hochladen
Ginとbindataで作るシングルバイナリWebApp
•
5 gefällt mir
•
4,531 views
Akihiko Horiuchi
Folgen
第2回 関西golang勉強会 http://kug2.connpass.com/event/23647/
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 18
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
Yosuke Furukawa
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
Vue.js with Go
Vue.js with Go
Kazuhiro Kubota
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Shoot Morii
Go言語でBot開発やってみた
Go言語でBot開発やってみた
Akihiko Horiuchi
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
shigeki_ohtsu
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
Yasutaka Kawamoto
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
Yusuke Miyake
Empfohlen
ヒカルのGo 資料 Webアプリケーションの作り方
ヒカルのGo 資料 Webアプリケーションの作り方
Yosuke Furukawa
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
Vue.js with Go
Vue.js with Go
Kazuhiro Kubota
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Go言語入門者が Webアプリケーション を作ってみた話 #devfest #gdgkyoto
Shoot Morii
Go言語でBot開発やってみた
Go言語でBot開発やってみた
Akihiko Horiuchi
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
shigeki_ohtsu
Go言語によるwebアプリの作り方
Go言語によるwebアプリの作り方
Yasutaka Kawamoto
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
Yusuke Miyake
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
Takuya Ueda
go.mobile で Android 開発
go.mobile で Android 開発
Hiroshi Kurokawa
chat bot framework for Java8
chat bot framework for Java8
masahitojp
今日から始める Go言語 と appengine
今日から始める Go言語 と appengine
a know
Chef meetup vol2_higanwoks
Chef meetup vol2_higanwoks
Yukihiko SAWANOBORI
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
京大 マイコンクラブ
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
Hayato Mizuno
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
Takuya Ueda
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
純生 野田
Grunt front-osaka-1-lt-tanaka
Grunt front-osaka-1-lt-tanaka
Hisateru Tanaka
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
Takuya Ueda
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~
知己 久保
コミュニティのある風景
コミュニティのある風景
Ryunosuke SATO
環境構築から始めるDjangoチュートリアル
環境構築から始めるDjangoチュートリアル
sakihohoribe
Groovyの紹介20130323
Groovyの紹介20130323
Yasuharu Hayami
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
Atsuo Ishimoto
Djangoのチュートリアル
Djangoのチュートリアル
sakihohoribe
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
Tomomi Imura
asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?
Yosuke Onoue
Microsoft Graph API Library for Go
Microsoft Graph API Library for Go
yaegashi
Rails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3edition
Satomi Tsujita
Weitere ähnliche Inhalte
Was ist angesagt?
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
Takuya Ueda
go.mobile で Android 開発
go.mobile で Android 開発
Hiroshi Kurokawa
chat bot framework for Java8
chat bot framework for Java8
masahitojp
今日から始める Go言語 と appengine
今日から始める Go言語 と appengine
a know
Chef meetup vol2_higanwoks
Chef meetup vol2_higanwoks
Yukihiko SAWANOBORI
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
京大 マイコンクラブ
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
Hayato Mizuno
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
Takuya Ueda
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
純生 野田
Grunt front-osaka-1-lt-tanaka
Grunt front-osaka-1-lt-tanaka
Hisateru Tanaka
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
Takuya Ueda
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~
知己 久保
コミュニティのある風景
コミュニティのある風景
Ryunosuke SATO
環境構築から始めるDjangoチュートリアル
環境構築から始めるDjangoチュートリアル
sakihohoribe
Groovyの紹介20130323
Groovyの紹介20130323
Yasuharu Hayami
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
Atsuo Ishimoto
Djangoのチュートリアル
Djangoのチュートリアル
sakihohoribe
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
Tomomi Imura
asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?
Yosuke Onoue
Was ist angesagt?
(20)
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
go.mobile で Android 開発
go.mobile で Android 開発
chat bot framework for Java8
chat bot framework for Java8
今日から始める Go言語 と appengine
今日から始める Go言語 と appengine
Chef meetup vol2_higanwoks
Chef meetup vol2_higanwoks
GoでMinecraftっぽいの作る
GoでMinecraftっぽいの作る
jQuery Performance Tips – jQueryにおける高速化 -
jQuery Performance Tips – jQueryにおける高速化 -
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
Grunt front-osaka-1-lt-tanaka
Grunt front-osaka-1-lt-tanaka
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~
今、話題のビルドツール gulp/Gruntを徹底解剖! ~ハンズオンで基礎から学ぶ、Web制作の味方 ビルドツール~
コミュニティのある風景
コミュニティのある風景
環境構築から始めるDjangoチュートリアル
環境構築から始めるDjangoチュートリアル
Groovyの紹介20130323
Groovyの紹介20130323
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
Djangoのチュートリアル
Djangoのチュートリアル
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
[Tokyo NodeFest 2015] Hardware Hacking for Javascript Developers
asm.jsとWebAssemblyって実際なんなの?
asm.jsとWebAssemblyって実際なんなの?
Ähnlich wie Ginとbindataで作るシングルバイナリWebApp
Microsoft Graph API Library for Go
Microsoft Graph API Library for Go
yaegashi
Rails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3edition
Satomi Tsujita
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
Yuji Kubota
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
Takuya Ueda
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
Daiki Maekawa
scala+liftで遊ぼう
scala+liftで遊ぼう
youku
LabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training Slide
Yusuke Tochigi
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData API
Hajime Fujimoto
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
Takayuki Shimizukawa
UnicastWS vol.2
UnicastWS vol.2
Unicast Inc.
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化
Takashi Okamoto
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
Shiroyagi Corporation
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装
Nakazawa Yuichi
jsライブラリで実装する効率的なWeb制作
jsライブラリで実装する効率的なWeb制作
西畑 一馬
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
はじめよう Backbone.js
はじめよう Backbone.js
Hiroki Toyokawa
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Shotaro Suzuki
2013 Ignite UI 最新情報 in 岡山
2013 Ignite UI 最新情報 in 岡山
インフラジスティックス・ジャパン株式会社
Ähnlich wie Ginとbindataで作るシングルバイナリWebApp
(20)
Microsoft Graph API Library for Go
Microsoft Graph API Library for Go
Rails初心者レッスン lesson3 3edition
Rails初心者レッスン lesson3 3edition
Head toward Java 16 (Night Seminar Edition)
Head toward Java 16 (Night Seminar Edition)
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
scala+liftで遊ぼう
scala+liftで遊ぼう
LabVIEW NXG Web Module Training Slide
LabVIEW NXG Web Module Training Slide
JavaScriptテンプレートエンジンで活かすData API
JavaScriptテンプレートエンジンで活かすData API
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
ドキュメンテーションを加速するストレスフリーの作図ツール『blockdiag』 jus2011年6月勉強会
UnicastWS vol.2
UnicastWS vol.2
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Djangoによるスマホアプリバックエンドの実装
Djangoによるスマホアプリバックエンドの実装
jsライブラリで実装する効率的なWeb制作
jsライブラリで実装する効率的なWeb制作
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
はじめよう Backbone.js
はじめよう Backbone.js
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
Elastic on Azure Integration & Building React UI Based Search App Using Azure...
2013 Ignite UI 最新情報 in 岡山
2013 Ignite UI 最新情報 in 岡山
Mehr von Akihiko Horiuchi
オープンソースBotフレームワークではじめるChatOps
オープンソースBotフレームワークではじめるChatOps
Akihiko Horiuchi
Sensuで始めるクラウド時代のシステム監視
Sensuで始めるクラウド時代のシステム監視
Akihiko Horiuchi
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
Akihiko Horiuchi
BotKitで作るイベント駆動Bot
BotKitで作るイベント駆動Bot
Akihiko Horiuchi
Ansibleで一発!! VPSにDokkuを構築してみた
Ansibleで一発!! VPSにDokkuを構築してみた
Akihiko Horiuchi
InfluxDataのTICK Stack on DockerでNW監視
InfluxDataのTICK Stack on DockerでNW監視
Akihiko Horiuchi
クラウドでGolangのテスト&デプロイ!
クラウドでGolangのテスト&デプロイ!
Akihiko Horiuchi
ポスト・フラットデザイン 〜フラットデザイン2.0とCSSフレームワーク〜
ポスト・フラットデザイン 〜フラットデザイン2.0とCSSフレームワーク〜
Akihiko Horiuchi
OSS監視ツールSensuの紹介
OSS監視ツールSensuの紹介
Akihiko Horiuchi
Filter・Mutator・Aggregateの使いドコロ
Filter・Mutator・Aggregateの使いドコロ
Akihiko Horiuchi
勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために
Akihiko Horiuchi
Sensuでネットワーク監視やってみた
Sensuでネットワーク監視やってみた
Akihiko Horiuchi
学生がJANOGに行くべき3つの理由
学生がJANOGに行くべき3つの理由
Akihiko Horiuchi
HubotとChatOpsについて語るBoF
HubotとChatOpsについて語るBoF
Akihiko Horiuchi
Sensu Introduction
Sensu Introduction
Akihiko Horiuchi
Sensu with golang
Sensu with golang
Akihiko Horiuchi
サーバ監視ことはじめ
サーバ監視ことはじめ
Akihiko Horiuchi
ChatOps@研究室
ChatOps@研究室
Akihiko Horiuchi
SKK
SKK
Akihiko Horiuchi
Self Introduction
Self Introduction
Akihiko Horiuchi
Mehr von Akihiko Horiuchi
(20)
オープンソースBotフレームワークではじめるChatOps
オープンソースBotフレームワークではじめるChatOps
Sensuで始めるクラウド時代のシステム監視
Sensuで始めるクラウド時代のシステム監視
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
BotKitで作るイベント駆動Bot
BotKitで作るイベント駆動Bot
Ansibleで一発!! VPSにDokkuを構築してみた
Ansibleで一発!! VPSにDokkuを構築してみた
InfluxDataのTICK Stack on DockerでNW監視
InfluxDataのTICK Stack on DockerでNW監視
クラウドでGolangのテスト&デプロイ!
クラウドでGolangのテスト&デプロイ!
ポスト・フラットデザイン 〜フラットデザイン2.0とCSSフレームワーク〜
ポスト・フラットデザイン 〜フラットデザイン2.0とCSSフレームワーク〜
OSS監視ツールSensuの紹介
OSS監視ツールSensuの紹介
Filter・Mutator・Aggregateの使いドコロ
Filter・Mutator・Aggregateの使いドコロ
勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために
Sensuでネットワーク監視やってみた
Sensuでネットワーク監視やってみた
学生がJANOGに行くべき3つの理由
学生がJANOGに行くべき3つの理由
HubotとChatOpsについて語るBoF
HubotとChatOpsについて語るBoF
Sensu Introduction
Sensu Introduction
Sensu with golang
Sensu with golang
サーバ監視ことはじめ
サーバ監視ことはじめ
ChatOps@研究室
ChatOps@研究室
SKK
SKK
Self Introduction
Self Introduction
Kürzlich hochgeladen
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
Kürzlich hochgeladen
(9)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
Ginとbindataで作るシングルバイナリWebApp
1.
堀内 晨彦 @hico_horiuchi Ginとbindataで作る シングルバイナリWebApp
2.
自己紹介 Akihiko Horiuchi 香川大学 修士2年 bit.ly/hiconyan 研究室のインフラと掃除担当 github.com/sai-lab/mouryou github.com/sai-lab/mouryou-web Emacs
/ Ruby / Rails / Golang Hubot / Sensu / Ansible 16/01/23 2
3.
シェルスクリプトマガジン! ● 「香川大学SLPからお届け!」シリーズ ○ Vol.
33 Go言語とMithril.jsでWebアプリ開発 バックエンド編 ○ Vol. 34 Go言語とMithril.jsでWebアプリ開発 フロントエンド編 ○ (Amazonで著者セントラル作りたい…) 16/01/23 3
4.
GoでWebAppを作るメリット ● シングルバイナリ でデプロイ ○
コンパイルしたバイナリをアップロードするだけ ○ ライブラリのインストールなどが要らない ○ コンテナ や マイクロサービス との親和性が高そう ● インタプリタと比較して 高速・軽量 ○ Railsより50倍の速度と10倍の省メモリという話も[1] ● コーディング規約 を統一 ○ gofmt(goimports)で強制的に直される ○ 可読性が上がる、チーム開発がスムーズになる 16/01/23 4 [1] https://plus.google.com/+MattAimonetti/posts/PeZk8FY3PWY
5.
GoでWebAppを作るデメリット ● Webフレームワーク 戦国時代 ○
シンプル < Gin < Goji < Martini < Revel < フルスタック ○ Railsのようなデファクトスタンダードが決まっていない ● ORマッパーも 戦国時代[2] ○ シンプル < gorp < Genmai < GORM < フルスタック ● アセット どうするの問題 ○ バイナリ + HTML + CSS + JavaScript ? ○ bindata でバイナリ化・ソースコード化できる ○ tdewolff/minify でMinifyができるらしい 16/01/23 5 [2] http://hachibeechan.hateblo.jp/entry/2015/03/25/Go言語でのORMを色々検討してみた
6.
デモンストレーション 「kakuzuke」 http://kakuzuke.hiconyan.com/ https://github.com/hico-horiuchi/kakuzuke 16/01/23 6
7.
デモンストレーション 「yosage」 http://yosage.hiconyan.com/ https://github.com/hico-horiuchi/yosage 16/01/23 7
8.
オススメのパッケージ ● github.com/gin-gonic/gin ○ 構造体をJSONで返せるのでAPIサーバとして使う ●
github.com/yosssi/ace ○ Slimライクに html/template を書ける ● github.com/jteeuwen/go-bindata ○ ファイルを []byte のソースコードに変換する ● github.com/pilu/fresh ○ ソースコードの変更を検知してビルドと再起動をする ● github.com/mattn/gom ○ Gemライクなパッケージ管理ツール 16/01/23 8
9.
僕が考えた最強のディレクトリ構成 16/01/23 9 webapp/ ├ app/ │
├ controllers/ Mithril.jsのコントローラ │ ├ views/ Mithril.jsのビュー │ └ app.js Mithril.jsの本体 ├ assets/ │ ├ fonts/ Webフォント(eot、svg、woff) │ ├ images/ Faviconなど │ ├ javascripts/ mithril.min.jsなど │ └ stylesheets/ bootstrap.min.cssなど ├ lib/ │ ├ controllers/ Ginのコントローラ │ ├ models/ 構造体の定義 │ └ views/ Aceのテンプレート ├ Gomfile ├ Makefile └ router.go Ginのルーティングなど
10.
今回のポイント・工夫 ● GinでMVCデザインのAPIサーバを作成 ○ これまでRails
+ Grapeで開発していたので ○ Viewはヘッダー・ナビゲーションバー・フッターのみ ● フロントエンドはMithril.jsで作成 ○ MVCデザインのJavaScriptフレームワーク ○ 仮想DOM 採用で、Reactよりも 高速・軽量 ○ モデルはAPIから返ってきたJSONをそのまま使う ○ ソースコードはバイナリ化してGinで配信 バックエンドはGoで最速のフレームワーク フロントエンドもJavaScriptで最軽量のフレームワーク 16/01/23 10
11.
GinでAPIサーバを作成(1) ● モデルを構造体で定義 ○ lib/models/user.go ○
`json:"login"` のようなタグ(アノテーション)を付ける 16/01/23 11 type User struct { Login *string `json:"login"` AvatarURL *string `json:"avatar_url"` CurrentStreak *int `json:"current_streak"` Me *bool `json:"me"` } type UserList []*User
12.
GinでAPIサーバを作成(2) ● コントローラでJSONを返却 ○ lib/controllers/ranking_controller.go ○
c.JSON で構造体をJSONとして返せる 16/01/23 12 type RankingController struct { controller } func (_ RankingController) ShowAPI(c *gin.Context) { username := c.Param("username") followees := GitHubClient.Users.ListFollowing(username) users := make([]*models.User, len(followees)) var list models.UserList = users sort.Sort(list) c.JSON(http.StatusOK, list) }
13.
Aceでテンプレートを作成 ● ヘッダーとナビゲーションバーのみ ○ lib/view/layout.ace 16/01/23
13 = doctype html html lang="en" head title kakuzuke link href="/assets/stylesheets/bootstrap.min.css" rel="stylesheet" body nav.navbar.navbar-fixed-top.bg-white .container a#app-title.navbar-brand.text-kakuzuke href="/" i.fa.fa-trophy.m-r-sm span.bold kakuzuke .container.m-y-md = yield main script src="/assets/javascripts/mithril.min.js" script src="/app/app.js" type="text/javascript"
14.
bindataでアセットをバイナリ化 ● app/ と
assets/ と lib/views/ をバイナリ化 ○ Makefile で変換するようにした ○ go-bindata-assetfs を使うと http.FileSystem になる ○ -debug=true ではバイナリ化せずにファイルを開く ○ 結果は package main な bindata_assetfs.go に吐き出される 16/01/23 14 bindata: gom exec go-bindata-assetfs ./app/... ./assets/... ./lib/views/... debugdata: gom exec go-bindata-assetfs -debug=true ./app/... ./assets/...
15.
Ginでbindataを配信 ● ここがちょっと面倒 ○ router.go ○
Ginでは http.FileServer ではなく static.Serve を使う ○ http.FileSystem も使えないので BinaryFileSystem を作る ○ gin-gonic/contrib/static/example/bindata/example.go 16/01/23 15 func main() { ranking := controllers.RankingController{} router := gin.Default() router.Use(static.Serve("/app", BinaryFileSystem("app"))) router.Use(static.Serve("/assets", BinaryFileSystem("assets"))) router.GET("/api/ranking/:username", ranking.ShowAPI) router.Run() }
16.
freshでビルドしながら開発 ● ソースコードの変更を検知してリビルド ○ 変更の反映にコンパイルが必要なGoの強い味方 ○
JavaScriptだとGrantとかgulpみたいな感じ? ○ 監視する拡張子と間隔を設定できる 16/01/23 16 $ gom exec fresh -c runner.conf Loading settings from runner.conf 22:7:30 runner | InitFolders 22:7:30 runner | mkdir ./tmp 22:7:30 runner | mkdir ./tmp: file exists 22:7:30 watcher | Watching . 22:7:30 watcher | Watching app 22:7:30 watcher | Watching app/controllers 22:7:30 watcher | Watching app/views
17.
まとめ・おわりに ● Ginとbindataで シングルバイナリ
を実現 ○ kakuzukeだと最終的なバイナリが 8MB 程になる ○ bindata_assetfs.go で 2MB 、Minifyすれば軽量化できそう ● GomからGodepに移行したい ○ Gomはシンプルだけどリビジョンを付けてくれない ○ Herokuで .godir は非推奨(Godep使えと言われる) ○ gin-gonic/contrib#75 みたいな時に面倒くさい ● bindataを生成するタイミング ○ gitignore に追加すべきかどうか ○ 複数人で開発するときにはルールが必要そう 16/01/23 17
18.
Golang勉強会 in Kagawa 「Golang勉強会
in Kagawa」を開催します! ● 日時 :2016年2月27日(土) 13:00∼18:00 ● 場所 :e-とぴあ・かがわ BBスクエア ● URL:http://gdgshikoku.connpass.com ○ 前半はハンズオン、後半はセッションの予定 ○ 登壇者は @tenntenn 、@taknb2nch 、@hico_horiuchi ○ 発表者募集中です!詳細は @hico_horiuchi まで 16/01/23 18 with
Jetzt herunterladen