Submit Search
2019-01_正月三が日でGolangを触ってみた
0 likes
52 views
Igarashi Toru
正月三が日でGolangを触ってみた
Technology
Read more
1 of 59
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
More Related Content
PDF
Golang入門
Yukihiro Kitazawa
PDF
Goets go言語のelastic transcoderライブラリを作ろうとした @ qiita aws tools hackathon
Takuya Ueda
PDF
Rust v1.0 release celebration party
Akira Hayakawa
PDF
Golangによるubicの試作
kn1kn1
PDF
私なりのGo言語のご紹介
Ryuji Iwata
PDF
Androidアプリ開発で活躍必至!? ビルドツールGradle
amayaw9
PDF
すごいCoq入門
真一 北原
PDF
gRPC入門
ssuser0f153f
Golang入門
Yukihiro Kitazawa
Goets go言語のelastic transcoderライブラリを作ろうとした @ qiita aws tools hackathon
Takuya Ueda
Rust v1.0 release celebration party
Akira Hayakawa
Golangによるubicの試作
kn1kn1
私なりのGo言語のご紹介
Ryuji Iwata
Androidアプリ開発で活躍必至!? ビルドツールGradle
amayaw9
すごいCoq入門
真一 北原
gRPC入門
ssuser0f153f
What's hot
(8)
PPTX
書くネタがCoqしかない
Masaki Hara
PDF
Perl (OSC2011 Tokyo/Spring, Doc-ja)
Masaharu IWAI
PDF
Language toolを使ってみる
Takatsugu Nokubi
PPTX
勉強会 - 1
KenjiYamasaki5
PDF
ちょっとだけさわってみる Go言語
Satoshi Noda
PDF
Riverpodでテストを書こう
Shinnosuke Tokuda
PDF
今日から始めるGopher - スタートGo #0 @GDG名古屋
Takuya Ueda
PDF
Shizuoka go lang csp
Makoto Kishimoto
書くネタがCoqしかない
Masaki Hara
Perl (OSC2011 Tokyo/Spring, Doc-ja)
Masaharu IWAI
Language toolを使ってみる
Takatsugu Nokubi
勉強会 - 1
KenjiYamasaki5
ちょっとだけさわってみる Go言語
Satoshi Noda
Riverpodでテストを書こう
Shinnosuke Tokuda
今日から始めるGopher - スタートGo #0 @GDG名古屋
Takuya Ueda
Shizuoka go lang csp
Makoto Kishimoto
Ad
Similar to 2019-01_正月三が日でGolangを触ってみた
(20)
PDF
Golang handson
Ryuto Yasugi
PDF
Goでかんたんソースコードの静的解析
Takuya Ueda
PDF
Go MobileでAndroidアプリ開発
Takuya Ueda
PDF
Go mobileでモバイルアプリを作ろう
Takuya Ueda
PPTX
社内勉強会1 go lang
Tsuyoshi Nakamura
PDF
GoでMinecraftっぽいの作る
京大 マイコンクラブ
PDF
Pythonでラズパイのgpio制御
artk saga
PDF
OSC 2016 Hokkaido セミナー資料
slankdev
PDF
DLR言語によるSilverlightプログラミング
terurou
PDF
CodingTips+ 基礎編
Yusuke Ito
PPTX
20130316 プログラミング言語Go
Yoshifumi Yamaguchi
PDF
Go言語によるWebアプリケーション開発
エンジニア勉強会 エスキュービズム
PPTX
Fluentd+MongoDB+Groovy
Daisuke Ando
PDF
Go言語でBot開発やってみた
Akihiko Horiuchi
PDF
2011年10月21日
nukaemon
PDF
OSSで楽に作るGo言語クライアントツール
Tano Makoto
PPTX
iii_SGMI #5 "OOP & Design Patterns"
Ryohei Suzuki
PDF
Go
卓馬 三浦卓馬
PPTX
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Katsuhiro Morishita
PPTX
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Takayuki Shimizukawa
Golang handson
Ryuto Yasugi
Goでかんたんソースコードの静的解析
Takuya Ueda
Go MobileでAndroidアプリ開発
Takuya Ueda
Go mobileでモバイルアプリを作ろう
Takuya Ueda
社内勉強会1 go lang
Tsuyoshi Nakamura
GoでMinecraftっぽいの作る
京大 マイコンクラブ
Pythonでラズパイのgpio制御
artk saga
OSC 2016 Hokkaido セミナー資料
slankdev
DLR言語によるSilverlightプログラミング
terurou
CodingTips+ 基礎編
Yusuke Ito
20130316 プログラミング言語Go
Yoshifumi Yamaguchi
Go言語によるWebアプリケーション開発
エンジニア勉強会 エスキュービズム
Fluentd+MongoDB+Groovy
Daisuke Ando
Go言語でBot開発やってみた
Akihiko Horiuchi
2011年10月21日
nukaemon
OSSで楽に作るGo言語クライアントツール
Tano Makoto
iii_SGMI #5 "OOP & Design Patterns"
Ryohei Suzuki
Go
卓馬 三浦卓馬
PythonとRによるデータ分析環境の構築と機械学習によるデータ認識
Katsuhiro Morishita
Django ORM道場:クエリの基本を押さえ,より良い形を身に付けよう
Takayuki Shimizukawa
Ad
More from Igarashi Toru
(9)
PPTX
システム開発初期時の NoOps について考える
Igarashi Toru
PPTX
GKE で始めるPrivate Cluster
Igarashi Toru
PPTX
Private Azure Kubernetes Service cluster を触ってみよう♪
Igarashi Toru
PDF
今日から始める限定公開クラスタ
Igarashi Toru
PDF
GCP でも Serverless!!
Igarashi Toru
PPTX
NoOps Japanサイトの紹介
Igarashi Toru
PDF
初めての Spanner 移行
Igarashi Toru
PDF
[2019 01-19] AzureDevOps LT
Igarashi Toru
PDF
2018-12-28_献血のすゝめ 2018
Igarashi Toru
システム開発初期時の NoOps について考える
Igarashi Toru
GKE で始めるPrivate Cluster
Igarashi Toru
Private Azure Kubernetes Service cluster を触ってみよう♪
Igarashi Toru
今日から始める限定公開クラスタ
Igarashi Toru
GCP でも Serverless!!
Igarashi Toru
NoOps Japanサイトの紹介
Igarashi Toru
初めての Spanner 移行
Igarashi Toru
[2019 01-19] AzureDevOps LT
Igarashi Toru
2018-12-28_献血のすゝめ 2018
Igarashi Toru
2019-01_正月三が日でGolangを触ってみた
1.
正月三が日でGolangを触ってみた 1
2.
Golangとは ● プログラミング言語の 1つ ●
以下の特徴がある ○ 静的型付け ○ C言語の伝統に則ったコンパイル言語 ○ メモリ安全性 ○ ガベージコレクション ○ 構造的型付け ○ CSPスタイルの並行性 ● Goのコンパイラ、ツール、およびソースコードは、すべてフリーかつオープンソースである ● 以下の特徴もある ○ 軽量スレッディングのための機能 ○ Pythonのような動的型付け言語のようなプログラミングの容易性 ● Go処理系としてはコンパイラのみが開発されている 2 出展: https://ja.wikipedia.org/wiki/Golang
3.
Golangとは ● プログラミング言語の 1つ ●
以下の特徴がある ○ 静的型付け ○ C言語の伝統に則ったコンパイル言語 ○ メモリ安全性 ○ ガベージコレクション ○ 構造的型付け ○ CSPスタイルの並行性 ● Goのコンパイラ、ツール、およびソースコードは、すべてフリーかつオープンソースである ● 以下の特徴もある ○ 軽量スレッディングのための機能 ○ Pythonのような動的型付け言語のようなプログラミングの容易性 ● Go処理系としてはコンパイラのみが開発されている 3 出展: https://ja.wikipedia.org/wiki/Golang
4.
わたしとGolang ● Hello Worldくらいしか出来ない ○
しかも調べながら ● クロスコンパイルって響きがかっこいい(※ 意味分かってません ) ● GopherかわいいよGopher 4
5.
きっかけ ● tmuxのステータス画面で、`現在のメモリ・swapの残量を表示(1s更新)` ○ Ubuntu上で作成 5
6.
きっかけ ● tmuxのステータス画面で、`現在のメモリ・swapの残量を表示(1s更新)` ○ Ubuntu上で作成 6 #!/bin/bash _mem=$(free
-h | awk 'NR==2 {print $4}') _swap=$(free -h | awk 'NR==3 {print $4}') echo "${_mem}/${_swap}"
7.
きっかけ ● tmuxのステータス画面で、`現在のメモリ・swapの使用量を表示(1s更新)` ○ 同じスクリプトをmacOS上にコピー ○
tmux上で動かすと何も表示されない… 7
8.
きっかけ ● tmuxのステータス画面で、`現在のメモリ・swapの使用量を表示(1s更新)` ○ 同じスクリプトをmacOS上にコピー ○
tmux上で動かすと何も表示されない… 8
9.
きっかけ ● tmuxのステータス画面で、`現在のメモリ・swapの使用量を表示(1s更新)` ○ 同じスクリプトをmacOS上にコピー ○
tmux上で動かすと何も表示されない… 9 macOSにfreeコマンドはありません \(^o^)/
10.
10
11.
基礎知識 ● Ubuntu ○ Debian
GNU/Linuxをベースとした、LinuxディストリビューションのOS ● MacOS ○ BSD系UNIXをベースに開発されているOS 11
12.
基礎知識 ● Ubuntu ○ Debian
GNU/Linuxをベースとした、LinuxディストリビューションのOS ● MacOS ○ BSD系UNIXをベースに開発されているOS 12 無くて当たり前...
13.
解決策の模索 ● 他のコマンドで代用してみる ○ vmstat ○
top ○ 出力形式は(やっぱり)違ったし、OSの違いを自分で扱うのはつらい※ ■ それが目的では無いので 13
14.
解決策の模索 ● 他のコマンドで代用してみる ○ vmstat ○
top ○ 出力形式は(やっぱり)違ったし、OSの違いを自分で扱うのはつらい※ ■ それが目的では無いので ● Pythonで書く ○ Versionとかライブラリとか面倒くさい … 14
15.
解決策の模索 ● 他のコマンドで代用してみる ○ vmstat ○
top ○ 出力形式は(やっぱり)違ったし、OSの違いを自分で扱うのはつらい※ ■ それが目的では無いので ● Pythonで書く ○ Versionとかライブラリとか面倒くさい … ● Golangを使ってみる ○ Golangはクロスコンパイルだ! (※ 意味分かってません ) ○ やりたいことは明確である ■ そこまで重たい処理・複雑なロジックでは無いはず ○ 興味もかなりある ○ 正月三が日は駅伝見るくらいしかやりたいことが無い※ ■ やりたいことが無い != やらなくてはいけないことが無い 15
16.
まずは使ってみる ● 使えそうなライブラリ(パッケージ?)をググって探す ○ gopsutilなるものを見つける ○
https://github.com/shirou/gopsutil ○ http://tdoc.info/blog/2015/12/16/gopsutil.html 16
17.
まずは使ってみる 17
18.
まずは使ってみる 18
19.
まずは使ってみる 19
20.
まずは使ってみる 20
21.
まずは使ってみる ● Alpine LinuxベースのDockerコンテナでソースコードを作る ○
go runで動作確認 ◎ ○ go build して出来たバイナリで動作確認 ◎ ○ ここまでは順調 21
22.
まずは使ってみる ● Alpine LinuxベースのDockerコンテナでソースコードを作る ○
go runで動作確認 ◎ ○ go build して出来たバイナリで動作確認 ◎ ○ ここまでは順調 ● ホストマシンのUbuntu 18.04で、バイナリを実行してみる ○ 動かない !!!! 22
23.
まずは使ってみる 23 ここで作ったものが…
24.
まずは使ってみる 24 ここで動かない !!
25.
この時の問題(?)点 ● エラーを見ているとライブラリが bash
前提っぽい…?? ○ Dockerコンテナ(Alpine Linux)はshellで実行している ○ でも、コンテナ内では動作確認出来た ● たぶん、環境変数的な何か…か?? ○ go get -u golang.org/x/sys/unix 25
26.
この時の問題(?)点の解決策の模索 ● 環境変数を変えていろいろやってみる ○ だめだった 26
27.
この時の問題(?)点の解決策の模索 ● 環境変数を変えていろいろやってみる ○ だめだった ●
Dockerコンテナに Bash をインストールする ○ コンテナが肥大化するので却下 27
28.
この時の問題(?)点の解決策の模索 ● 環境変数を変えていろいろやってみる ○ だめだった ●
Dockerコンテナに Bash をインストールする ○ コンテナが肥大化するので却下 ● おとなしく、 Bash が入っているDockerコンテナを使う ○ Debianベースのものを使う(golang:1.11.4-stretch) ○ この環境で go build をし、動作確認もした ○ ホストサーバのUbuntu18.04上でも動いた!!! 28
29.
この時の問題(?)点の解決策の模索 29 ここで作ったものが…
30.
この時の問題(?)点の解決策の模索 30 ここでも動いた !!!
31.
本命のmacOSで動かしてみる ● MacOS上に再度コピーをして実行してみる 31
32.
本命のmacOSで動かしてみる ● MacOS上に再度コピーをして実行してみる ○ 結果、動かなかった… 32
33.
本命のmacOSで動かしてみる ● MacOS上に再度コピーをして実行してみる ○ 結果、動かなかった… ○
クロスコンパイルとは… 33
34.
本命のmacOSで動かしてみる ● めげずにググってみる 34
35.
本命のmacOSで動かしてみる ● めげずにググってみる ● まずはクロスコンパイルの環境を作る必要があるらしい 35
36.
本命のmacOSで動かしてみる ● めげずにググってみる ● まずはクロスコンパイルの環境を作る必要があるらしい ○
all.bash とか make.bash とか 36
37.
本命のmacOSで動かしてみる ● めげずにググってみる ● まずはクロスコンパイルの環境を作る必要があるらしい ○
all.bash とか make.bash とか 37
38.
本命のmacOSで動かしてみる ● Dockerfile 38 この部分、追加
39.
本命のmacOSで動かしてみる ● ソースコード 39
40.
本命のmacOSで動かしてみる 40
41.
本命のmacOSで動かしてみる 41
42.
本命のmacOSで動かしてみる ● 無事、macOSでも動作確認が出来ました !! 42
43.
43 ここまでが、正月三が日のお話
44.
44 その後
45.
しばらく使って、気になってきたこと ● 出来ることが少なすぎる ○ 現状はメモリとSwapの残量しか取れない 45
46.
しばらく使って、気になってきたこと ● 出来ることが少なすぎる ○ 現状はメモリとSwapの残量しか取れない 46
47.
しばらく使って、気になってきたこと ● クロスコンパイルの準備に謎が多い ○ make.bash
の中で go1.4 を使うとか嘘でしょ… 47
48.
しばらく使って、気になってきたこと ● クロスコンパイルの準備に謎が多い ○ make.bash
の中で go1.4 を使うとか嘘でしょ… 48 この中に go1.4 が ハードコーディングされている
49.
しばらく使って、気になってきたこと ● そもそもOSが違うと挙動(単位)が違う ○ 深刻な問題 49
50.
しばらく使って、気になってきたこと ● そもそもOSが違うと挙動(単位)が違う ○ 深刻な問題 50
51.
今、やっていること ● 引数を用いて、もう少し便利に使う ○ 出来ることを増やす(増やし過ぎない) ●
DockerHubを使って環境用意 ○ クロスコンパイルの環境を作っておく ● CircleCI辺りを使って、配布用意をする(ex. GitHub) ○ せっかく作ったので、配布までのCI/CDをしたい ● gopsutilにPRをする準備 ○ まずはソースコードを読む 51
52.
52 つまり
53.
53 正月三が日でGolangを触ってみた
54.
54 ではなく
55.
55 正月三が日からGolangを頑張ってる になりました
56.
56 正月三が日からGolangを頑張ってる になりました
57.
まとめ ● ちゃんとドキュメントを読みましょう ● そもそもちゃんとGolangを学びましょう ●
でも、突貫で作ってみるのも楽しいです 57
58.
まとめ ● ちゃんとドキュメントを読みましょう ● そもそもちゃんとGolangを学びましょう ●
でも、突貫で作ってみるのも楽しいです ● とは言え、まずはPythonをしっかり修めてから… 58
59.
59 おわり
Download