Skip to main content
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
EN
Upload
Download free for 30 days
Sign in
Uploaded by
Yusuke Wada
PDF, PPTX
23,751 views
スッとGoを取り入れる
Go 1.6 Release Party 2016-02-17 Hatena Inc. Tokyo Office Yusuke Wada a.k.a. yusukebe
Technology
◦
Read more
17
Save
Share
Embed
Save to Drive
Download now
Download as PDF, PPTX
1
/ 69
2
/ 69
3
/ 69
4
/ 69
5
/ 69
6
/ 69
7
/ 69
8
/ 69
9
/ 69
10
/ 69
11
/ 69
12
/ 69
13
/ 69
14
/ 69
15
/ 69
16
/ 69
17
/ 69
18
/ 69
19
/ 69
20
/ 69
More Related Content
KEY
一人でもはじめるGitでバージョン管理
by
Takafumi Yoshida
53 slides
223.7K views
PPTX
Git & GitHub & kintone でウルトラハッピー!
by
ymmt
19 slides
36K views
PDF
はじめてのGit forデザイナー&コーダー
by
Saeko Yamamoto
119 slides
76.8K views
PDF
会社にGitHub Enterpriseを導入してみた話
by
Shuji Yamada
21 slides
32.6K views
KEY
Yapc2012資料
by
matsuo kenji
71 slides
29.9K views
PDF
Dockerで楽しむ自宅サーバ
by
祐磨 堀
61 slides
11.4K views
PDF
Git勉強会
by
masahiro_minami
52 slides
2.7K views
PDF
GitHubで学ぶバージョン管理
by
Masafumi Yokoyama
62 slides
2K views
一人でもはじめるGitでバージョン管理
by
Takafumi Yoshida
53 slides
223.7K views
Git & GitHub & kintone でウルトラハッピー!
by
ymmt
19 slides
36K views
はじめてのGit forデザイナー&コーダー
by
Saeko Yamamoto
119 slides
76.8K views
会社にGitHub Enterpriseを導入してみた話
by
Shuji Yamada
21 slides
32.6K views
Yapc2012資料
by
matsuo kenji
71 slides
29.9K views
Dockerで楽しむ自宅サーバ
by
祐磨 堀
61 slides
11.4K views
Git勉強会
by
masahiro_minami
52 slides
2.7K views
GitHubで学ぶバージョン管理
by
Masafumi Yokoyama
62 slides
2K views
What's hot
PDF
Wantedly - 世界一"いいね!"される 求人サイトの作り方
by
Yoshinori Kawasaki
25 slides
33.6K views
PDF
GoによるWebアプリ開発のキホン
by
Akihiko Horiuchi
33 slides
61.9K views
PDF
Eureka go 2015_12_12
by
matsuo kenji
73 slides
3.4K views
PDF
ホームディレクトリに埋もれた便利なコードをさがせ!
by
Yohei Fushii
64 slides
27.7K views
PDF
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
by
Issei Hiraoka
31 slides
669 views
PDF
いつやるの?Git入門 v1.1.0
by
Masakazu Matsushita
211 slides
237.5K views
PDF
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
by
Taisuke Inoue
14 slides
4.8K views
PPTX
2150117 infrastructure.nagoya
by
Hiroki Ito
12 slides
2.5K views
PDF
Github of project
by
Ito Kunihiko
29 slides
28.8K views
PDF
Gws 20141024 gradle_intro
by
Nobuhiro Sue
21 slides
7.8K views
PDF
サーバー&インフラ勉強会 Vol.1 いとー
by
krs_mizuno
17 slides
1.1K views
PDF
Androidの新ビルドシステム
by
l_b__
26 slides
20.5K views
ODP
今流行りのウェブアプリ開発環境Yeoman
by
tomo_masakura
99 slides
2.8K views
PPT
Git紹介
by
Seiji Ochiai
17 slides
1.7K views
PDF
Github codespaces すごく良い。もうこれで 十分なんじゃという話
by
xiidec
12 slides
850 views
PDF
Rails on Dockerとの戦い
by
Yasutomo Uemori
23 slides
3.9K views
PDF
Gitの使い方あれこれ
by
よしだ あつし
40 slides
5.4K views
PDF
Multibranch pipelineでいろいろ学んだこと
by
aha_oretama
13 slides
5.9K views
PDF
Write slides and books in VSCode + Markdown
by
ロフト くん
24 slides
812 views
PDF
Vue.js with Go
by
Kazuhiro Kubota
15 slides
9.8K views
Wantedly - 世界一"いいね!"される 求人サイトの作り方
by
Yoshinori Kawasaki
25 slides
33.6K views
GoによるWebアプリ開発のキホン
by
Akihiko Horiuchi
33 slides
61.9K views
Eureka go 2015_12_12
by
matsuo kenji
73 slides
3.4K views
ホームディレクトリに埋もれた便利なコードをさがせ!
by
Yohei Fushii
64 slides
27.7K views
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
by
Issei Hiraoka
31 slides
669 views
いつやるの?Git入門 v1.1.0
by
Masakazu Matsushita
211 slides
237.5K views
GitLab Meetup Tokyo #1 LT:「わりと大きい会社でGitLabをホスティングしてみた話」
by
Taisuke Inoue
14 slides
4.8K views
2150117 infrastructure.nagoya
by
Hiroki Ito
12 slides
2.5K views
Github of project
by
Ito Kunihiko
29 slides
28.8K views
Gws 20141024 gradle_intro
by
Nobuhiro Sue
21 slides
7.8K views
サーバー&インフラ勉強会 Vol.1 いとー
by
krs_mizuno
17 slides
1.1K views
Androidの新ビルドシステム
by
l_b__
26 slides
20.5K views
今流行りのウェブアプリ開発環境Yeoman
by
tomo_masakura
99 slides
2.8K views
Git紹介
by
Seiji Ochiai
17 slides
1.7K views
Github codespaces すごく良い。もうこれで 十分なんじゃという話
by
xiidec
12 slides
850 views
Rails on Dockerとの戦い
by
Yasutomo Uemori
23 slides
3.9K views
Gitの使い方あれこれ
by
よしだ あつし
40 slides
5.4K views
Multibranch pipelineでいろいろ学んだこと
by
aha_oretama
13 slides
5.9K views
Write slides and books in VSCode + Markdown
by
ロフト くん
24 slides
812 views
Vue.js with Go
by
Kazuhiro Kubota
15 slides
9.8K views
Viewers also liked
PDF
reveal.js 3.0.0
by
Hakim El Hattab
33 slides
6.5M views
PDF
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
by
MOCKS | Yuta Morishige
68 slides
2.8M views
PDF
東京脱出計画中
by
Yusuke Wada
36 slides
6K views
PPTX
簡易デプロイツール(スクリプト)を作ってみた話
by
yokoda_toshiaki
13 slides
563 views
PDF
PDLで遊んでみた Yomitan.pm #5 LT
by
yokoda_toshiaki
13 slides
473 views
PDF
Cinnamon - simple deploy tool
by
Yuki Shibazaki
47 slides
3.1K views
PDF
トーナメントは運か実力か
by
Kazuro Fukuhara
31 slides
2K views
PDF
HTML5でオフラインWebアプリケーションを作ろう
by
yoshikawa_t
56 slides
27.1K views
PDF
How to make keynote like presentation with markdown
by
Hiroaki NAKADA
9 slides
7.8K views
PDF
Decksetがよかった話
by
Kohki Miki
23 slides
24.2K views
KEY
Chrome osとgo言語からgoogleの今後を妄想してみる
by
Masakazu Muraoka
39 slides
1.7K views
PDF
らくちん Go言語
by
株式会社YEBIS.XYZ
37 slides
1.5K views
PDF
Go言語と過ごした一週間
by
Shintaro Kitayama
29 slides
743 views
PPTX
Github第8章
by
Yuto Suzuki
26 slides
2.2K views
PDF
Goを知る
by
Hirokazu Fukami
16 slides
1.7K views
PDF
alphawing meets heroku
by
Kyosuke Kameda
22 slides
695 views
PDF
Golang, make and robotics #gocon
by
Hideyuki TAKEI
30 slides
2.2K views
PDF
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
by
deris0126
73 slides
8.6K views
PDF
HighBatch
by
Nobuhito Sato
53 slides
1.1K views
PPTX
Go+revel
by
Amuro Nishizawa
26 slides
1K views
reveal.js 3.0.0
by
Hakim El Hattab
33 slides
6.5M views
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
by
MOCKS | Yuta Morishige
68 slides
2.8M views
東京脱出計画中
by
Yusuke Wada
36 slides
6K views
簡易デプロイツール(スクリプト)を作ってみた話
by
yokoda_toshiaki
13 slides
563 views
PDLで遊んでみた Yomitan.pm #5 LT
by
yokoda_toshiaki
13 slides
473 views
Cinnamon - simple deploy tool
by
Yuki Shibazaki
47 slides
3.1K views
トーナメントは運か実力か
by
Kazuro Fukuhara
31 slides
2K views
HTML5でオフラインWebアプリケーションを作ろう
by
yoshikawa_t
56 slides
27.1K views
How to make keynote like presentation with markdown
by
Hiroaki NAKADA
9 slides
7.8K views
Decksetがよかった話
by
Kohki Miki
23 slides
24.2K views
Chrome osとgo言語からgoogleの今後を妄想してみる
by
Masakazu Muraoka
39 slides
1.7K views
らくちん Go言語
by
株式会社YEBIS.XYZ
37 slides
1.5K views
Go言語と過ごした一週間
by
Shintaro Kitayama
29 slides
743 views
Github第8章
by
Yuto Suzuki
26 slides
2.2K views
Goを知る
by
Hirokazu Fukami
16 slides
1.7K views
alphawing meets heroku
by
Kyosuke Kameda
22 slides
695 views
Golang, make and robotics #gocon
by
Hideyuki TAKEI
30 slides
2.2K views
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
by
deris0126
73 slides
8.6K views
HighBatch
by
Nobuhito Sato
53 slides
1.1K views
Go+revel
by
Amuro Nishizawa
26 slides
1K views
More from Yusuke Wada
PDF
Extreme remote working
by
Yusuke Wada
37 slides
6.4K views
PDF
Podcastを支える技術、エンジニアのためのWebメディア、そしてCPAN
by
Yusuke Wada
105 slides
31.5K views
PDF
創造のプロセスを回せ!v0.01
by
Yusuke Wada
26 slides
5.8K views
PDF
It's not only about "REMOTE"
by
Yusuke Wada
20 slides
2.5K views
PDF
事故からはじまるスケールチャンス
by
Yusuke Wada
35 slides
2.8K views
PDF
Google BigQueryを使ってみた!
by
Yusuke Wada
39 slides
13.6K views
PDF
Webサービスのコンテンツパターン 或いはデータの活⽤
by
Yusuke Wada
44 slides
7.4K views
PDF
とある Perl Monger の働き方
by
Yusuke Wada
46 slides
15.6K views
PDF
5 minutes - YAPC::Asia Tokyo 2014
by
Yusuke Wada
16 slides
2.2K views
PDF
Podcastをカジュアルに 支える技術
by
Yusuke Wada
18 slides
3.4K views
PDF
The master plan ofscaling a web application
by
Yusuke Wada
65 slides
7K views
PDF
そのWebサービスは本当に「あたりまえ」だったのか?
by
Yusuke Wada
59 slides
3.3K views
PDF
Mojoliciousでつくる! Webアプリ入門
by
Yusuke Wada
87 slides
22.3K views
PDF
10 things to learn from Bokete
by
Yusuke Wada
64 slides
2.5K views
PDF
Inside Bokete: Web Application with Mojolicious and others
by
Yusuke Wada
37 slides
8.3K views
PDF
僕らの履歴書
by
Yusuke Wada
27 slides
4.8K views
PDF
僕らがWebサービスをつくる5つの理由
by
Yusuke Wada
33 slides
53.6K views
PDF
僕らがつくるための 「5W」について
by
Yusuke Wada
19 slides
2.6K views
PDF
「Webサービスのつくり方」 のつくり方
by
Yusuke Wada
63 slides
8.3K views
PDF
Webサービス企画のコツ
by
Yusuke Wada
51 slides
10.7K views
Extreme remote working
by
Yusuke Wada
37 slides
6.4K views
Podcastを支える技術、エンジニアのためのWebメディア、そしてCPAN
by
Yusuke Wada
105 slides
31.5K views
創造のプロセスを回せ!v0.01
by
Yusuke Wada
26 slides
5.8K views
It's not only about "REMOTE"
by
Yusuke Wada
20 slides
2.5K views
事故からはじまるスケールチャンス
by
Yusuke Wada
35 slides
2.8K views
Google BigQueryを使ってみた!
by
Yusuke Wada
39 slides
13.6K views
Webサービスのコンテンツパターン 或いはデータの活⽤
by
Yusuke Wada
44 slides
7.4K views
とある Perl Monger の働き方
by
Yusuke Wada
46 slides
15.6K views
5 minutes - YAPC::Asia Tokyo 2014
by
Yusuke Wada
16 slides
2.2K views
Podcastをカジュアルに 支える技術
by
Yusuke Wada
18 slides
3.4K views
The master plan ofscaling a web application
by
Yusuke Wada
65 slides
7K views
そのWebサービスは本当に「あたりまえ」だったのか?
by
Yusuke Wada
59 slides
3.3K views
Mojoliciousでつくる! Webアプリ入門
by
Yusuke Wada
87 slides
22.3K views
10 things to learn from Bokete
by
Yusuke Wada
64 slides
2.5K views
Inside Bokete: Web Application with Mojolicious and others
by
Yusuke Wada
37 slides
8.3K views
僕らの履歴書
by
Yusuke Wada
27 slides
4.8K views
僕らがWebサービスをつくる5つの理由
by
Yusuke Wada
33 slides
53.6K views
僕らがつくるための 「5W」について
by
Yusuke Wada
19 slides
2.6K views
「Webサービスのつくり方」 のつくり方
by
Yusuke Wada
63 slides
8.3K views
Webサービス企画のコツ
by
Yusuke Wada
51 slides
10.7K views
スッとGoを取り入れる
1.
スッとGoを取り入れる Go 1.6 Release
Party 2016-02-17 Hatena Inc. Tokyo Office Yusuke Wada a.k.a. yusukebe
2.
自己紹介 • Yusuke Wada •
@yusukebe • http://blog.yusuke.be/ • Wadit CEO / Omoroki CTO • Web Application Developer • Technical Advisor • Co-founder of bokete.jp • Perl書いてる...
3.
本日のテーマ
4.
Goを本番投入するまでの 道のりとその他
5.
現在の主なGoプロダクト 2個
6.
その1 bokete/webstamp
7.
bokete.jp
8.
お題画像+テキスト = ボケ
9.
L○NEスタンプ風画像を ダウンロードできる
10.
これ
12.
その2 yusukebe/revealgo
13.
Markdown driven presentation
tool
14.
revealgo コマンドを実行
15.
立ち上がったサーバをブラウザで開く
16.
まさかの GitHub Trending
入り
17.
\(^o^)/
18.
ところがこのスライドは...
19.
Keynote製
20.
とはいえ... $ go get
github.com/yusukebe/cmd/revealgo
21.
Goを取り入れるため 最初にやったこと
22.
✕コードを書く https://flic.kr/p/81RqH3
23.
✕コードを読む https://flic.kr/p/aGjVq8
24.
答え...
25.
⃝bradfitzと話す http://twitter.com/bradfitz
26.
去年のYAPC::Asiaで bradfitzがボッチだったので...
27.
ゆ:Hiぶらっど!君が書いたギアマンは最高にクールだね ぶ:どんな用途でギアマンを使ってるんだい? ...(中略)... ゆ:ところでGoはどうなんだ? ぶ:まさに今Goでプログラムを書いてるところだ ゆ:Goのいい所を教えてくれよ ...(中略)... ぶ:こうやればAndroid向けのバイナリもコンパイル出来るぜ ゆ:オーケー!Goを使ってみるよ!
28.
予めGo本体の開発メンバである bradfitz氏と「サシで」話して モチベーションが上がった
29.
2番目にやったこと
31.
3番目にやったこと
32.
スクリプト的に Go言語を利用する
33.
スクリプト的とは? • main.go に
package main のみ • 単発のバッチスクリプトとか • 例えば... • MySQLのレコードを1つずつなめて... • ちょっとした処理を加えてカラムを変更するetc.
34.
例 for ;; { var
results []Entry db.Select(&results, db.Where("flag","=","0"), db.Limit(limit)); if len(results) == 0 { break } var wg sync.WaitGroup for _, entry := range(results) { wg.Add(1) go func(e Entry) { work(e) wg.Done() }(entry) } wg.Wait() } goと書くだけで並行処理が走って DB接続処理もロックしないで便利!
35.
そして調子に乗って...
36.
goroutine走らせまくって 爆死 https://flic.kr/p/6TorAy
37.
どこからGolang化 していくか?
38.
ザックリな Boketeアーキテクチャ
39.
Web API サーバ PC版Web
スマホ版Web iOSアプリ Androidアプリ その他フロント... コアロジック 各種サービス APIサーバをGoで書き直す必要も無いので特化したサービスをGoで!
40.
Web API サーバ PC版Web
スマホ版Web iOSアプリ Androidアプリ その他フロント... コアロジック 各種サービス スタンプ画像生成サーバがあった! スタンプ
41.
http://stamp.bokete.jp/{boke_id}.png
43.
Web API サーバ スタンプサーバ TTL付きCDN クライアント URLのパスに基づきボケIDをゲット ボケ情報取得 お題画像も取得しつつ スタンプ
風に画像を生成しサーブ ボケが削除されることも考慮しつつ TTLを設定したCDNが画像を配信 シェア等してもらう
44.
Perl製スタンプサーバを Goでリプレース
45.
git log -p
cpanfile -requires 'Lingua::JA::Fold'; -requires 'Imager'; -requires 'Imager::DTP::Textbox::Horizontal'; Lingua::JA::Fold - 禁則処理を含む日本語文字列の折り返し Imager - 画像処理モジュール Imager::DTP::Horizontal - テキスト画像の配置
46.
じゃあレポジトリつくって 画像生成サーバ書くか
47.
(´・ω・`)
48.
次にやったこと
49.
目的に合わせてそれを検証する スニペットを書いてく
51.
自信がついたらいよいよ スタンプサーバの実装
52.
出来た構成
53.
$ tree ./ ./ !""
README.md !"" assets # !"" font-heavy.ttf # !"" font-medium.ttf # !"" stamp_404.png # !"" stamp_footer.png # !"" stamp_header.png # !"" stamp_panel.png # $"" transparent.png !"" assets.go !"" client.go !"" client_test.go !"" cmd # $"" stamp_server # $"" main.go !"" stamp.go !"" stamp_test.go !"" util.go $"" util_test.go go-bindataでassets.goに入れ込む アセットファイル達 WebAPIから情報とってくる peco/peco参考にした 画像オブジェクトをゴリゴリ頑張る utilとはいえ主にテキスト処理
54.
ある程度検証後デプロイ
55.
結果こうなった • デプロイツールとしてAnsible • リモートレポジトリはGitHubのPrivate •
Ansibleでgit cloneする時はローカルの をforward • GOPATHのsrc以下にAnsibleでプロジェクトをgit clone • go get [とってきたプロジェクトのパス] • GOPATHのbin以下に出来たバイナリを使って起動
56.
リリースした結果
57.
preforkしないからメモリ使用量少ない! CPUフルフルに使い切る! すごい!!
58.
と思ったら...
59.
メモリ膨れてる??
60.
この時少しでも Goが悪いと考えてしまった 僕をお許し下さい...
61.
実は禁則処理ロジックで 無限ループを生む可能性があった (*ノω・*)テヘ
62.
さらに改良
63.
yusukebe/go-pngquant
64.
gophper.png pngquant --speed 10 40.3KB
15.1KB!!
65.
pngquantは標準入力からも 受け取れて標準出力にも 書き出せる
66.
func CompressBytes(input []byte,
speed string) (output []byte, err error) { cmd := exec.Command("pngquant", "-", "--speed", speed) cmd.Stdin = strings.NewReader(string(input)) var o bytes.Buffer cmd.Stdout = &o err = cmd.Run() if err != nil { return } output = o.Bytes() return }
67.
\(^o^)/
68.
GO引にまとめ
69.
Goを取り入れる • 段階を追っていけばスッと取り入れられた • 結果スタンプサーバの画像サイズが縮小した •
リソースの節約 • 最初は特化したサービスのリプレースから • 次は新アプリをGoで書いてみたい • たぶん... 悪いのはGoじゃない