SlideShare a Scribd company logo
自社のメインプロダクトに
Goを導入したぞ++
2018-04-16 @kurikazu golang.tokyo #14
https://blogs.yahoo.co.jp/rokuken06/GALLERY/show_image.html?id=39909503&no=0
こんばんは!
プロダクトに
新規goアプリを投入できたので
報告に来ました!
ここ!
目的
通信コスト削減
処理速度向上
iOS, Android
共通処理の取り込み
サーバ環境
• オンプレミス
• LBがリクエストを複数サーバに振り分け
今日の話
プロダクト投入までの Step by Step
go導入 時系列
2017初頭
某プロダクトのデータ連携バッチを
goで実装(弊社go文明の起こり)
2017中旬 某プロダクトが自社都合により(略
2017/秋
思いを受け継ぐ者たちにより
go文明を復興
2018/1 アプリ向けGatewayAPIリリース
2018/3
プロモーション向けAPIリリース
goプロダクトの広がり→イマココ
課題1. みんなgo初心者
1. みんなgo初心者
• Tour of goからはじめる
フレームワーク使った方がいい?
フレームワーク使った方がいい?
• Gin
• Echo
• goa
・ ・ ・
フレームワーク使った方がいい?
• Gin
• Echo
• goa
・ ・ ・
想定される処理で
プロトタイプを作ってみた
→ あまり大きな差は無い
フレームワーク使った方がいい?
• 「API作るなら goa がいいよ」
• 「DSLでAPI仕様を定義できるよ」
• 「コマンド一発でコード生成できて
Swagger.jsonも吐いてくれるよ」
やってみた
.
├── app
│ ├── contexts.go
│ ├── controllers.go
│ ├── hrefs.go
│ ├── media_types.go
│ ├── test
│ │ └── bottle_testing.go
│ └── user_types.go
├── bottle.go
├── client
│ ├── bottle.go
│ ├── client.go
│ ├── media_types.go
│ └── user_types.go
├── design
│ └── design.go
├── main.go
├── swagger
│ ├── swagger.json
│ └── swagger.yaml
└── tool
├── cellar-cli
自動的に
コードが
出力される
.
├── app
│ ├── contexts.go
│ ├── controllers.go
│ ├── hrefs.go
│ ├── media_types.go
│ ├── test
│ │ └── bottle_testing.go
│ └── user_types.go
├── bottle.go
├── client
│ ├── bottle.go
│ ├── client.go
│ ├── media_types.go
│ └── user_types.go
├── design
│ └── design.go
├── main.go
├── swagger
│ ├── swagger.json
│ └── swagger.yaml
└── tool
├── cellar-cli
なるほどわからん
理解が浅いときにコードが自動出力される
状況はちょっと辛い
フレームワークは使わない
1つずつ理解しながら進もう
課題2. “正しい”書き方がわからない
“正しい”書き方がわからない
• ググりながら見よう見まねで
• 「動けばいい」的になってないか不安
“正しい”書き方がわからない
• ググりながら見よう見まねで
• 「動けばいい」的になってないか不安
みんなでコードを書く
みんなでレビューしあう
↓
レベル感を合わせながら進む
作っていくうちに
いいやり方を学んでいく
↓
随時リファクタリンク
作っていくうちに
いいやり方を学んでいく
↓
随時リファクタリンク
テストコード大事!!!
書きながら進めててよかった。
課題3. “リリースして終わり”じゃない
“リリースして終わり”じゃない
• プロダクトのスピードに合わせて
コードも進化させていく必要がある
• 定型作業は自動化しておきたい
• 導入するなら最初が肝心
がんばった
がんばった
仕様書
(Markdown)
コード
デプロイ
静的解析・テスト
ビルド
Swagger.json
IF定義共有
スタブ
本番環境へ
バイナリビルドどこでやろう?
バイナリビルドどこでやろう?
• 開発?
• ステージング?
• 本番?
バイナリビルドどこでやろう?
• 開発?
• ステージング?
• 本番?
CIサーバ(drone.io)でビルド
Jenkinsで本番へデプロイしてる
課題4. リリース時にバイナリの
再起動が必要
リリース時にGoバイナリ再起動が必要
• 瞬断させずにやりたい・・
リリース時にGoバイナリ再起動が必要
• 瞬断させずにやりたい・・
よくわからなかった…
↓
LBから1台ずつ切り離してリリース
• 本格開発開始11月⇒1月にリリース
• (今のところ)画面表示速度10%アップ
いろいろありつつ
• 本格開始11月⇒1月にリリース
• (今のところ)画面表示速度10%アップ
いろいろありつつ
ネイティブアプリ側も
リファクタすればもっと高速に
↓
アプリ開発者と連携して進めてる
• これ以外にも新規開発が発生しているが
go で書くものを増やしてる
• 移管もどんどん進めていくつもり
いろいろありつつ
自己紹介
• @kurikazu
• ディップ株式会社
• プロダクトマネージャと
エンジニア採用まわりの
あれこれ担当
• iOSとLaravel界隈に
います
https://blogs.yahoo.co.jp/rokuken06/GALLERY/show_image.html?id=39909503&no=0
これからもgoやっていくぞ!

More Related Content

Similar to 自社のメインプロダクトにGoを導入したぞ++

PhoneGap勉強会 in 熊本
PhoneGap勉強会 in 熊本PhoneGap勉強会 in 熊本
PhoneGap勉強会 in 熊本
Suguru Murakami
 
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化
Takashi Okamoto
 
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/SpringVisual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Issei Hiraoka
 
2013年12月7日JapanSharePointGroup-第12回勉強会
2013年12月7日JapanSharePointGroup-第12回勉強会2013年12月7日JapanSharePointGroup-第12回勉強会
2013年12月7日JapanSharePointGroup-第12回勉強会
adachiyosuke
 
Html5/JSモバイルアプリ最前線
Html5/JSモバイルアプリ最前線Html5/JSモバイルアプリ最前線
Html5/JSモバイルアプリ最前線
アシアル株式会社
 
Hack/HHVMの最新事情とメイン言語に採用した理由
Hack/HHVMの最新事情とメイン言語に採用した理由Hack/HHVMの最新事情とメイン言語に採用した理由
Hack/HHVMの最新事情とメイン言語に採用した理由
Yuji Otani
 
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
MasashiOtsuka1
 
[Lt]versionごとにurlを自動生成
[Lt]versionごとにurlを自動生成[Lt]versionごとにurlを自動生成
[Lt]versionごとにurlを自動生成
shouta yoshikai
 
Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろうGoだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
Takuya Ueda
 
androidのgpsアプリってどうよ|株式会社コンテンツワン
androidのgpsアプリってどうよ|株式会社コンテンツワンandroidのgpsアプリってどうよ|株式会社コンテンツワン
androidのgpsアプリってどうよ|株式会社コンテンツワン
Katsuaki Sato
 
Google+APIをさわってみる。
Google+APIをさわってみる。Google+APIをさわってみる。
Google+APIをさわってみる。
Hiroyuki Nozaki
 
DevLOVE関西(No.62) 知っておいて損はないエンタープライズiOS導入のいろは
DevLOVE関西(No.62) 知っておいて損はないエンタープライズiOS導入のいろはDevLOVE関西(No.62) 知っておいて損はないエンタープライズiOS導入のいろは
DevLOVE関西(No.62) 知っておいて損はないエンタープライズiOS導入のいろは
feedtailor
 
Cordova×業務システム:失敗しないモバイル開発の秘訣
Cordova×業務システム:失敗しないモバイル開発の秘訣Cordova×業務システム:失敗しないモバイル開発の秘訣
Cordova×業務システム:失敗しないモバイル開発の秘訣
アシアル株式会社
 
PhoneGapの始め方
PhoneGapの始め方PhoneGapの始め方
PhoneGapの始め方
akabana
 
[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介Kenichi Kambara
 
SwiftでAndroidアプリ書けるってよ
SwiftでAndroidアプリ書けるってよSwiftでAndroidアプリ書けるってよ
SwiftでAndroidアプリ書けるってよ
Syo Ikeda
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃Teruo Adachi
 
Webデザインにおける「見えづらい」こだわりハック
Webデザインにおける「見えづらい」こだわりハックWebデザインにおける「見えづらい」こだわりハック
Webデザインにおける「見えづらい」こだわりハック
Flavor Bright
 
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
Takuya Ueda
 
Global engineerlab kawani
Global engineerlab kawaniGlobal engineerlab kawani
Global engineerlab kawani
Shin Kawani
 

Similar to 自社のメインプロダクトにGoを導入したぞ++ (20)

PhoneGap勉強会 in 熊本
PhoneGap勉強会 in 熊本PhoneGap勉強会 in 熊本
PhoneGap勉強会 in 熊本
 
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化
 
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/SpringVisual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
Visual Studio Code のこれまでとこれから at OSC 2021 Online/Spring
 
2013年12月7日JapanSharePointGroup-第12回勉強会
2013年12月7日JapanSharePointGroup-第12回勉強会2013年12月7日JapanSharePointGroup-第12回勉強会
2013年12月7日JapanSharePointGroup-第12回勉強会
 
Html5/JSモバイルアプリ最前線
Html5/JSモバイルアプリ最前線Html5/JSモバイルアプリ最前線
Html5/JSモバイルアプリ最前線
 
Hack/HHVMの最新事情とメイン言語に採用した理由
Hack/HHVMの最新事情とメイン言語に採用した理由Hack/HHVMの最新事情とメイン言語に採用した理由
Hack/HHVMの最新事情とメイン言語に採用した理由
 
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
 
[Lt]versionごとにurlを自動生成
[Lt]versionごとにurlを自動生成[Lt]versionごとにurlを自動生成
[Lt]versionごとにurlを自動生成
 
Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろうGoだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
 
androidのgpsアプリってどうよ|株式会社コンテンツワン
androidのgpsアプリってどうよ|株式会社コンテンツワンandroidのgpsアプリってどうよ|株式会社コンテンツワン
androidのgpsアプリってどうよ|株式会社コンテンツワン
 
Google+APIをさわってみる。
Google+APIをさわってみる。Google+APIをさわってみる。
Google+APIをさわってみる。
 
DevLOVE関西(No.62) 知っておいて損はないエンタープライズiOS導入のいろは
DevLOVE関西(No.62) 知っておいて損はないエンタープライズiOS導入のいろはDevLOVE関西(No.62) 知っておいて損はないエンタープライズiOS導入のいろは
DevLOVE関西(No.62) 知っておいて損はないエンタープライズiOS導入のいろは
 
Cordova×業務システム:失敗しないモバイル開発の秘訣
Cordova×業務システム:失敗しないモバイル開発の秘訣Cordova×業務システム:失敗しないモバイル開発の秘訣
Cordova×業務システム:失敗しないモバイル開発の秘訣
 
PhoneGapの始め方
PhoneGapの始め方PhoneGapの始め方
PhoneGapの始め方
 
[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介[Jagys]android41+開発ツール紹介
[Jagys]android41+開発ツール紹介
 
SwiftでAndroidアプリ書けるってよ
SwiftでAndroidアプリ書けるってよSwiftでAndroidアプリ書けるってよ
SwiftでAndroidアプリ書けるってよ
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
 
Webデザインにおける「見えづらい」こだわりハック
Webデザインにおける「見えづらい」こだわりハックWebデザインにおける「見えづらい」こだわりハック
Webデザインにおける「見えづらい」こだわりハック
 
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
 
Global engineerlab kawani
Global engineerlab kawaniGlobal engineerlab kawani
Global engineerlab kawani
 

More from Kazuaki KURIU

Laravel本とコミュニティの話
Laravel本とコミュニティの話Laravel本とコミュニティの話
Laravel本とコミュニティの話
Kazuaki KURIU
 
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
Kazuaki KURIU
 
アプリチームを支えるSlack bot
アプリチームを支えるSlack botアプリチームを支えるSlack bot
アプリチームを支えるSlack bot
Kazuaki KURIU
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
Kazuaki KURIU
 
BITRISEを使っています
BITRISEを使っていますBITRISEを使っています
BITRISEを使っています
Kazuaki KURIU
 
Metadataリジェクトあれこれ
MetadataリジェクトあれこれMetadataリジェクトあれこれ
Metadataリジェクトあれこれ
Kazuaki KURIU
 
Yokohama North Meetup #2
Yokohama North Meetup #2Yokohama North Meetup #2
Yokohama North Meetup #2
Kazuaki KURIU
 
3 tips of Laravel
3 tips of Laravel3 tips of Laravel
3 tips of Laravel
Kazuaki KURIU
 
エンジニアのためのアイコン作成勉強会
エンジニアのためのアイコン作成勉強会エンジニアのためのアイコン作成勉強会
エンジニアのためのアイコン作成勉強会Kazuaki KURIU
 
Tanabata.trac.LT発表資料
Tanabata.trac.LT発表資料Tanabata.trac.LT発表資料
Tanabata.trac.LT発表資料Kazuaki KURIU
 

More from Kazuaki KURIU (10)

Laravel本とコミュニティの話
Laravel本とコミュニティの話Laravel本とコミュニティの話
Laravel本とコミュニティの話
 
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
 
アプリチームを支えるSlack bot
アプリチームを支えるSlack botアプリチームを支えるSlack bot
アプリチームを支えるSlack bot
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
 
BITRISEを使っています
BITRISEを使っていますBITRISEを使っています
BITRISEを使っています
 
Metadataリジェクトあれこれ
MetadataリジェクトあれこれMetadataリジェクトあれこれ
Metadataリジェクトあれこれ
 
Yokohama North Meetup #2
Yokohama North Meetup #2Yokohama North Meetup #2
Yokohama North Meetup #2
 
3 tips of Laravel
3 tips of Laravel3 tips of Laravel
3 tips of Laravel
 
エンジニアのためのアイコン作成勉強会
エンジニアのためのアイコン作成勉強会エンジニアのためのアイコン作成勉強会
エンジニアのためのアイコン作成勉強会
 
Tanabata.trac.LT発表資料
Tanabata.trac.LT発表資料Tanabata.trac.LT発表資料
Tanabata.trac.LT発表資料
 

自社のメインプロダクトにGoを導入したぞ++