SlideShare a Scribd company logo
1 of 19
Download to read offline
(C)  ピコもん.  All  Rights  Reserved.
Go  ⼊入⾨門  
(C)  ピコもん.  All  Rights  Reserved. 2
Go  ⼊入⾨門
自己紹介
北澤です
(C)  ピコもん.  All  Rights  Reserved. 3
Go  ⼊入⾨門
Goって?
「Go」は2009年11月10日(米国時間)にGoogleが発表したオープンソースの
プログラミング言語です。
Go言語は、Linux、Mac、Native Clientで動作する開発言語で、Android
携帯上でも動作します。
日本語:http://golang.jp/
公式サイト
英語:https://golang.org/
(C)  ピコもん.  All  Rights  Reserved. 4
Go  ⼊入⾨門
Go言語の特徴
・シンプル!
・コンパイル速度、実行速度が早い!
・安全性が高い!
・並列・同期処理が簡単!
・オープンソース!
・楽しい!
(C)  ピコもん.  All  Rights  Reserved. 5
Go  ⼊入⾨門
Go言語もうちょっと詳しく
・軽量言語並の開発速度
・コーディング規約がかなり決められている
・ウェブサービス作れる
・WAFいろいろ出てる
・ゴルーチンとチャネル
・ほぼオート型指定
・関数の戻り値が複数指定出来る
・配列とスライス
・エラーハンドリングが遅延実行関数で楽ちん
(C)  ピコもん.  All  Rights  Reserved. 6
Go  ⼊入⾨門
package main
import “fmt”
func main() {
fmt.Println(“はろーわーるど!”)
}
Goで「はろーわーるど」
(C)  ピコもん.  All  Rights  Reserved. 7
Go  ⼊入⾨門
package main
import “fmt”
func main() {
fmt.Println(“はろーわーるど!”)
}
Goのお作法 パッケージの名前を宣言する
外部パッケージを呼び出すときはインポート
関数はfunc
実行ポイントはmainパッケージのmain関数
パブリック関数・変数は大文字スタート
(プライベート関数・変数は小文字スタート)
最後にセミコロンとかいらない
(C)  ピコもん.  All  Rights  Reserved. 8
Go  ⼊入⾨門
var message string = “こんにちは”
message := “おはよう”
var count int // (ゼロ値が入る)
var max int = 100
Goの変数代入
固定の型指定や自動的な型予測が出来る
(C)  ピコもん.  All  Rights  Reserved. 9
Go  ⼊入⾨門
// 配列
message := […]string{
“おはよう”,”こんにちは”,”さようなら”}
// スライス
messages := []string{
“おはよう”,”こんにちは”,”さようなら”}
Goの配列・スライス
配列は厳格な値・スライスは操作しやすい
どっちも参照渡し(ポインタ渡し)
(C)  ピコもん.  All  Rights  Reserved. 10
Go  ⼊入⾨門
func printMsg(type int) bool {
switch type {
case 1:
fmt.Println(“おはよう”)
case 2:
fmt.Println(“こんばんは”)
default:
fmt.Println(“こんにちは”)
}
return true
}
Goの関数
引数と戻り値の型を指定する
(switchでbreakいらない)
(C)  ピコもん.  All  Rights  Reserved. 11
Go  ⼊入⾨門
func getMsg(type int) (bool, string) {
msg := “”
err := false
switch type {
case 1:
msg = “こんにちは”
case 2:
msg = “こんばんは”
default:
msg = “さようなら”
err = true
}
return msg, err
}
Goの関数
複数の戻り値を指定できる
(C)  ピコもん.  All  Rights  Reserved. 12
Go  ⼊入⾨門
func getMsg(type int) (err bool, msg string) {
switch type {
case 1:
msg = “こんにちは”
case 2:
msg = “こんばんは”
default:
msg = “さようなら”
err = true
}
return
}
Goの関数
戻り値を事前に定義できる
(C)  ピコもん.  All  Rights  Reserved. 13
Go  ⼊入⾨門
$GOPATH
├── bin
├── pkg
└── src
Goのお作法
開発時のディレクトリ構造
ビルドファイルの出力場所
環境変数で指定
OS環境単位のファイルの自動出力場所
開発中のソース置き場
Githubで管理している場合のsrcの中
$GOPATH/src/github.com/<ユーザー名>/<リポジトリ名>
(C)  ピコもん.  All  Rights  Reserved. 14
Go  ⼊入⾨門
go install ./main.go
go build ./main.go
Go実行方法
go test ./main.go
ビルド
テスト
go run ./main.go
デバッグ実行
go get github.com/go-sql-driver/mysql
欲しいパッケージがあったら
(C)  ピコもん.  All  Rights  Reserved. 15
Go  ⼊入⾨門
type Human struct {}
type Male interface {}
他にもGo
構造体・インターフェース
defer hoge()
panic()
recover()
defer・パニック・リカバー
ゴルーチン・チャネル
go foo()
msg := <- ch
ch <- “ok”
(C)  ピコもん.  All  Rights  Reserved. 16
Go  ⼊入⾨門
いっぱいあって
説明しきれない!
(C)  ピコもん.  All  Rights  Reserved. 17
Go  ⼊入⾨門
「マイクロサービス」化のアーキテクチャ方針を行うのなら
「切り出し可能なサービス」単位で最適な開発言語やDBを
選ぶ必要が出てくる。
の流れは
マイクロサービス!
(C)  ピコもん.  All  Rights  Reserved. 18
Goやろぅ!
Go  ⼊入⾨門
(C)  ピコもん.  All  Rights  Reserved. 19
ご静聴ありがとうございました。
Go  ⼊入⾨門

More Related Content

What's hot

GoによるiOSアプリの開発
GoによるiOSアプリの開発GoによるiOSアプリの開発
GoによるiOSアプリの開発Takuya Ueda
 
Go一緒にいかが?
Go一緒にいかが?Go一緒にいかが?
Go一緒にいかが?Ryuji Iwata
 
go.mobile で Android 開発
go.mobile で Android 開発go.mobile で Android 開発
go.mobile で Android 開発Hiroshi Kurokawa
 
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発Takuya Ueda
 
Goだけでモバイルアプリを作る
Goだけでモバイルアプリを作るGoだけでモバイルアプリを作る
Goだけでモバイルアプリを作るTakuya Ueda
 
エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法Takuya Ueda
 
What is "Go" Gopher?
What is "Go" Gopher?What is "Go" Gopher?
What is "Go" Gopher?Ryuji Iwata
 
今日から始める Go言語 と appengine
今日から始める Go言語 と appengine今日から始める Go言語 と appengine
今日から始める Go言語 と appenginea know
 
goパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現するgoパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現するTakuya Ueda
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Takuya Ueda
 
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで実践Go ツールの作成から配布まで
実践Go ツールの作成から配布までYusuke Miyake
 
Go言語でBot開発やってみた
Go言語でBot開発やってみたGo言語でBot開発やってみた
Go言語でBot開発やってみたAkihiko Horiuchi
 
GAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使うGAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使うTakuya Ueda
 
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 SummerGoのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 SummerHirokazu Fukami
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンAkihiko Horiuchi
 
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法Takuya Ueda
 
ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法Keisuke Yamaguchi
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選Takuya Ueda
 
粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法Takuya Ueda
 

What's hot (20)

GoによるiOSアプリの開発
GoによるiOSアプリの開発GoによるiOSアプリの開発
GoによるiOSアプリの開発
 
Go一緒にいかが?
Go一緒にいかが?Go一緒にいかが?
Go一緒にいかが?
 
go.mobile で Android 開発
go.mobile で Android 開発go.mobile で Android 開発
go.mobile で Android 開発
 
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
 
Goだけでモバイルアプリを作る
Goだけでモバイルアプリを作るGoだけでモバイルアプリを作る
Goだけでモバイルアプリを作る
 
エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法エディタの壁を越えるGoの開発ツールの文化と作成法
エディタの壁を越えるGoの開発ツールの文化と作成法
 
What is "Go" Gopher?
What is "Go" Gopher?What is "Go" Gopher?
What is "Go" Gopher?
 
今日から始める Go言語 と appengine
今日から始める Go言語 と appengine今日から始める Go言語 と appengine
今日から始める Go言語 と appengine
 
goパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現するgoパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現する
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
 
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
 
Go言語でBot開発やってみた
Go言語でBot開発やってみたGo言語でBot開発やってみた
Go言語でBot開発やってみた
 
Goとテスト
GoとテストGoとテスト
Goとテスト
 
GAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使うGAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使う
 
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 SummerGoのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
 
ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法
 
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
 
粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法
 

Similar to Golang入門

OSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツールOSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツールTano Makoto
 
2019-01_正月三が日でGolangを触ってみた
2019-01_正月三が日でGolangを触ってみた2019-01_正月三が日でGolangを触ってみた
2019-01_正月三が日でGolangを触ってみたIgarashi Toru
 
Go言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンドGo言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンドAtsushi Yasuda
 
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライドSIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライドIGDA JAPAN
 
ライトニングノードをたててみよう
ライトニングノードをたててみようライトニングノードをたててみよう
ライトニングノードをたててみようtakayaimai
 
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみようテックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみようyoshito funayose
 
国際化対応におけるUI実装で気をつけるべきこと
国際化対応におけるUI実装で気をつけるべきこと国際化対応におけるUI実装で気をつけるべきこと
国際化対応におけるUI実装で気をつけるべきことKLab Inc. / Tech
 
DroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for AndroidDroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for AndroidSENSY Inc
 
テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみようテックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみようyoshito funayose
 
The History of Groovy #GroovyBase
The History of Groovy #GroovyBaseThe History of Groovy #GroovyBase
The History of Groovy #GroovyBasekyon mm
 
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and GomobileGo goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and GomobileTakahiro Yoshimura
 
G* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - IntroductionG* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - IntroductionKazuchika Sekiya
 
Goとtest coverage
Goとtest coverageGoとtest coverage
Goとtest coveragenakaji-s
 
いまさら聞けない!HTML5超入門
いまさら聞けない!HTML5超入門いまさら聞けない!HTML5超入門
いまさら聞けない!HTML5超入門Monaca
 
インフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LTインフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LTDaisuke Ikeda
 
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Takuya Ueda
 

Similar to Golang入門 (20)

OSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツールOSSで楽に作るGo言語クライアントツール
OSSで楽に作るGo言語クライアントツール
 
2019-01_正月三が日でGolangを触ってみた
2019-01_正月三が日でGolangを触ってみた2019-01_正月三が日でGolangを触ってみた
2019-01_正月三が日でGolangを触ってみた
 
社内勉強会1 go lang
社内勉強会1 go lang 社内勉強会1 go lang
社内勉強会1 go lang
 
Go言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンドGo言語ってどんな言語? 導入実績や気になるトレンド
Go言語ってどんな言語? 導入実績や気になるトレンド
 
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライドSIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
 
ライトニングノードをたててみよう
ライトニングノードをたててみようライトニングノードをたててみよう
ライトニングノードをたててみよう
 
Golang handson
Golang handsonGolang handson
Golang handson
 
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみようテックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
 
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
 
国際化対応におけるUI実装で気をつけるべきこと
国際化対応におけるUI実装で気をつけるべきこと国際化対応におけるUI実装で気をつけるべきこと
国際化対応におけるUI実装で気をつけるべきこと
 
Herlockサービス紹介
Herlockサービス紹介Herlockサービス紹介
Herlockサービス紹介
 
DroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for AndroidDroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for Android
 
テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみようテックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
 
The History of Groovy #GroovyBase
The History of Groovy #GroovyBaseThe History of Groovy #GroovyBase
The History of Groovy #GroovyBase
 
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and GomobileGo goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
 
G* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - IntroductionG* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - Introduction
 
Goとtest coverage
Goとtest coverageGoとtest coverage
Goとtest coverage
 
いまさら聞けない!HTML5超入門
いまさら聞けない!HTML5超入門いまさら聞けない!HTML5超入門
いまさら聞けない!HTML5超入門
 
インフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LTインフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LT
 
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
Goroutineとchannelから始めるgo言語@初心者向けgolang勉強会2
 

Recently uploaded

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 

Recently uploaded (7)

新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

Golang入門

  • 1. (C)  ピコもん.  All  Rights  Reserved. Go  ⼊入⾨門  
  • 2. (C)  ピコもん.  All  Rights  Reserved. 2 Go  ⼊入⾨門 自己紹介 北澤です
  • 3. (C)  ピコもん.  All  Rights  Reserved. 3 Go  ⼊入⾨門 Goって? 「Go」は2009年11月10日(米国時間)にGoogleが発表したオープンソースの プログラミング言語です。 Go言語は、Linux、Mac、Native Clientで動作する開発言語で、Android 携帯上でも動作します。 日本語:http://golang.jp/ 公式サイト 英語:https://golang.org/
  • 4. (C)  ピコもん.  All  Rights  Reserved. 4 Go  ⼊入⾨門 Go言語の特徴 ・シンプル! ・コンパイル速度、実行速度が早い! ・安全性が高い! ・並列・同期処理が簡単! ・オープンソース! ・楽しい!
  • 5. (C)  ピコもん.  All  Rights  Reserved. 5 Go  ⼊入⾨門 Go言語もうちょっと詳しく ・軽量言語並の開発速度 ・コーディング規約がかなり決められている ・ウェブサービス作れる ・WAFいろいろ出てる ・ゴルーチンとチャネル ・ほぼオート型指定 ・関数の戻り値が複数指定出来る ・配列とスライス ・エラーハンドリングが遅延実行関数で楽ちん
  • 6. (C)  ピコもん.  All  Rights  Reserved. 6 Go  ⼊入⾨門 package main import “fmt” func main() { fmt.Println(“はろーわーるど!”) } Goで「はろーわーるど」
  • 7. (C)  ピコもん.  All  Rights  Reserved. 7 Go  ⼊入⾨門 package main import “fmt” func main() { fmt.Println(“はろーわーるど!”) } Goのお作法 パッケージの名前を宣言する 外部パッケージを呼び出すときはインポート 関数はfunc 実行ポイントはmainパッケージのmain関数 パブリック関数・変数は大文字スタート (プライベート関数・変数は小文字スタート) 最後にセミコロンとかいらない
  • 8. (C)  ピコもん.  All  Rights  Reserved. 8 Go  ⼊入⾨門 var message string = “こんにちは” message := “おはよう” var count int // (ゼロ値が入る) var max int = 100 Goの変数代入 固定の型指定や自動的な型予測が出来る
  • 9. (C)  ピコもん.  All  Rights  Reserved. 9 Go  ⼊入⾨門 // 配列 message := […]string{ “おはよう”,”こんにちは”,”さようなら”} // スライス messages := []string{ “おはよう”,”こんにちは”,”さようなら”} Goの配列・スライス 配列は厳格な値・スライスは操作しやすい どっちも参照渡し(ポインタ渡し)
  • 10. (C)  ピコもん.  All  Rights  Reserved. 10 Go  ⼊入⾨門 func printMsg(type int) bool { switch type { case 1: fmt.Println(“おはよう”) case 2: fmt.Println(“こんばんは”) default: fmt.Println(“こんにちは”) } return true } Goの関数 引数と戻り値の型を指定する (switchでbreakいらない)
  • 11. (C)  ピコもん.  All  Rights  Reserved. 11 Go  ⼊入⾨門 func getMsg(type int) (bool, string) { msg := “” err := false switch type { case 1: msg = “こんにちは” case 2: msg = “こんばんは” default: msg = “さようなら” err = true } return msg, err } Goの関数 複数の戻り値を指定できる
  • 12. (C)  ピコもん.  All  Rights  Reserved. 12 Go  ⼊入⾨門 func getMsg(type int) (err bool, msg string) { switch type { case 1: msg = “こんにちは” case 2: msg = “こんばんは” default: msg = “さようなら” err = true } return } Goの関数 戻り値を事前に定義できる
  • 13. (C)  ピコもん.  All  Rights  Reserved. 13 Go  ⼊入⾨門 $GOPATH ├── bin ├── pkg └── src Goのお作法 開発時のディレクトリ構造 ビルドファイルの出力場所 環境変数で指定 OS環境単位のファイルの自動出力場所 開発中のソース置き場 Githubで管理している場合のsrcの中 $GOPATH/src/github.com/<ユーザー名>/<リポジトリ名>
  • 14. (C)  ピコもん.  All  Rights  Reserved. 14 Go  ⼊入⾨門 go install ./main.go go build ./main.go Go実行方法 go test ./main.go ビルド テスト go run ./main.go デバッグ実行 go get github.com/go-sql-driver/mysql 欲しいパッケージがあったら
  • 15. (C)  ピコもん.  All  Rights  Reserved. 15 Go  ⼊入⾨門 type Human struct {} type Male interface {} 他にもGo 構造体・インターフェース defer hoge() panic() recover() defer・パニック・リカバー ゴルーチン・チャネル go foo() msg := <- ch ch <- “ok”
  • 16. (C)  ピコもん.  All  Rights  Reserved. 16 Go  ⼊入⾨門 いっぱいあって 説明しきれない!
  • 17. (C)  ピコもん.  All  Rights  Reserved. 17 Go  ⼊入⾨門 「マイクロサービス」化のアーキテクチャ方針を行うのなら 「切り出し可能なサービス」単位で最適な開発言語やDBを 選ぶ必要が出てくる。 の流れは マイクロサービス!
  • 18. (C)  ピコもん.  All  Rights  Reserved. 18 Goやろぅ! Go  ⼊入⾨門
  • 19. (C)  ピコもん.  All  Rights  Reserved. 19 ご静聴ありがとうございました。 Go  ⼊入⾨門