【初心者向け】go言語勉強会資料

123
初初初初初 Go 初初初初初 初初初初初初初初初初初初 初初 初初 1 2015/06/04@ 初初初初

Upload: yuji-otani

Post on 07-Jan-2017

11.635 views

Category:

Software


2 download

TRANSCRIPT

Page 1: 【初心者向け】Go言語勉強会資料

初心者向け

Go言語勉強会

株式会社インテリジェンス大谷 祐司

1

2015/06/04@ ヒカラボ

Page 2: 【初心者向け】Go言語勉強会資料

2

① はじめに

② Go言語の歴史

③ Go言語の特徴

④ Go言語の導入事例

⑤ まとめ

アジェンダ

Page 3: 【初心者向け】Go言語勉強会資料

3

はじめに

Page 4: 【初心者向け】Go言語勉強会資料

4

・山口県下関出身の 34 歳・インテリジェンスの新規事業チームの開発責任者。・企画からアプリ、インフラまで幅広くやっています。・車とプログラミングを愛しています。

・土日は育児しながら勉強しています。

・ Facebookの友達申請は気軽にぜひ! https://www.facebook.com/yuji.otani.16

自己紹介

Page 5: 【初心者向け】Go言語勉強会資料

5

5年 7年6ヶ月

→ →

メイン開発言語の経歴

Page 6: 【初心者向け】Go言語勉強会資料

6

会場の皆さんに質問です。

Page 7: 【初心者向け】Go言語勉強会資料

7

質問①

Go言語を実際に触ったことがあるかた

Page 8: 【初心者向け】Go言語勉強会資料

8

質問②

Go言語を業務で使っているかた

Page 9: 【初心者向け】Go言語勉強会資料

9

質問③

今のメイン言語はなんでしょうか?

Page 10: 【初心者向け】Go言語勉強会資料

10

最近注目されている Go言語。

採用実績も増えています。

実際のプロジェクト導入事例をもとに、

Go言語について「広く浅く」理解を深

める場にできればと思います。

Page 11: 【初心者向け】Go言語勉強会資料

11

まずは Go言語の歴史を

振り返ってみましょう。

Page 12: 【初心者向け】Go言語勉強会資料

12

2009 年 Googleにより Go言語が発表される。

まだマイナーバージョンLinuxとMacOSXのみサポート。オープンソース( BSDライセンス)

Page 13: 【初心者向け】Go言語勉強会資料

13

「ここ 10年以上、メジャーなシステム言語

は誕生していませんが、その間にコンピュー

タの世界は大きく変化しています。」

開発の目的

http://golang.jp/go_faq

Page 14: 【初心者向け】Go言語勉強会資料

14

・コンピュータの処理の高速化

・マルチコアコンピュータの出現

・複雑な依存関係による遅いコンパイル。

・扱いにくい型システムに対する反発

・動的な型言語の人気が高まる。

http://golang.jp/go_faq

コンピュータ世界の変化

Page 15: 【初心者向け】Go言語勉強会資料

15

「コンパイルが早く、並列処理とガベージ

コレクションを持つ新しい言語に取り組む

ことに価値があると確信しました。」

http://golang.jp/go_faq

開発の目的

Page 16: 【初心者向け】Go言語勉強会資料

16

C 言語の開発者 : Ken ThompsonUTF-8 の開発者 : Rob Pikememcached の開発者 : Brad Fitzpatrick

等の名だたるエンジニアによって開発されました。

Go言語の開発者

Page 17: 【初心者向け】Go言語勉強会資料

17

マスコットはゴーファー君

Page 18: 【初心者向け】Go言語勉強会資料

18

Amazonで Tシャツが買えます。

Page 19: 【初心者向け】Go言語勉強会資料

19

2012 年 初のメジャーリリース( Ver1.0)

Windows への対応。Google App Engine SDKの公開。

Page 20: 【初心者向け】Go言語勉強会資料

20

しかし、当時の反応はいまいち・・・

http://www.infoq.com/jp/news/2012/04/Go-1

・ Goの採用はほとんど進んでいない。

・ Tiobe’s Top 50 Language で選外になる。

・言語としての将来性に大きな疑問が持たれている。

・最終的には Google が唯一のユーザになるのではないか。

Page 21: 【初心者向け】Go言語勉強会資料

21

Page 22: 【初心者向け】Go言語勉強会資料

22

それから 2年・・・

Page 23: 【初心者向け】Go言語勉強会資料

23

2014 年 バージョン 1.4のリリース。

Androidの正式サポート

→Go言語で Androidアプリが開発

できるようになる。

Page 24: 【初心者向け】Go言語勉強会資料

24

そして現在・・・

Page 25: 【初心者向け】Go言語勉強会資料

25

2015年 5月の RedMark人気言語ランキ

ング

http://redmonk.com/sogrady/category/programming-languages/

Page 26: 【初心者向け】Go言語勉強会資料

26

初の TOP20入り

Page 27: 【初心者向け】Go言語勉強会資料

27

Googleトレンドでも人気急上昇中

Page 28: 【初心者向け】Go言語勉強会資料

28

国内外で採用実績が多数

Page 29: 【初心者向け】Go言語勉強会資料

29

http://www.infoq.com/jp/news/2012/04/Go-1

YouTube において Go “を コアインフラス

“トラクチャに 使用していて,このサービス

だけで1日あたり 10 億以上のリクエストを

処理している。

Page 30: 【初心者向け】Go言語勉強会資料

30

https://blogs.dropbox.com/tech/2014/07/open-sourcing-our-go-libraries/

2013年に、パフォーマンスが重要なバックエ

ンドの処理を Pythonから Go言語に移行。

2014年にライブラリをオープンソースで公開。

・ caching

・memcache

・ sqlbuilder

etc…

Page 31: 【初心者向け】Go言語勉強会資料

31

http://engineer.typemag.jp/article/amebaownd

開発スピードが上がるため当初はスクリプト言語を検討

規模が拡大していくサービスモデルだったので、後々

のメンテナンスが課題になると考えて Goを採用。

「新しいサービスなんだから、チャレンジしよう!」

AmebaOwndで Go言語を採用

Page 32: 【初心者向け】Go言語勉強会資料

32

http://www.kayac.com/news/2014/07/golang

カヤックは、 Go言語を積極的に推進していきます。

ではなぜ「 Goで行こう」と言い出したか。

平たくいうと、そろそろ最新の言語にチャレンジ

したいじゃん ! ってことです。

その言語として Goを選びました。

Page 33: 【初心者向け】Go言語勉強会資料

33

http://japan.zdnet.com/article/35059904/

2月に Go言語用の SDKを提供開始しました。(まだ実験的な状態)

Java、 C#、 Ruby、 Python、 JavaScrip

t、 PHP、 Objective C に次ぐ 8つ目の

SDKです。

Page 34: 【初心者向け】Go言語勉強会資料

34

http://itpro.nikkeibp.co.jp/atcl/column/14/346926/031900200/

メディアも注目

Page 35: 【初心者向け】Go言語勉強会資料

35

・MVCではなく、バッチや APIでの採用が多い。

・パフォーマンスが求められる部分に使われている。

・フレームワークは Revelが多い。

・「挑戦が許されている」会社が多い。

・いわゆる「業務システム」での事例は少ない。

採用実績の傾向

Page 36: 【初心者向け】Go言語勉強会資料

36

人気急上昇中の Go言語について、

特徴を簡単に説明します。

Page 37: 【初心者向け】Go言語勉強会資料

37

特徴①コンパイル型言語

Page 38: 【初心者向け】Go言語勉強会資料

38

Goはコンパイル言語です。

ソースコード実行用バイナリコンパイル

・構文チェック

・依存関係チェック

・コード最適化

Page 39: 【初心者向け】Go言語勉強会資料

39

実行しなくても、コンパイル時に構文や型、依

存関係などのエラーがわかる。

コンパイル言語のメリット①

ソースの改修を行った時、依存関係を含めて影

響範囲の把握をしやすい。

Page 40: 【初心者向け】Go言語勉強会資料

40

コンパイル済みのバイナリファイルを作成して

おくことができる。

コンパイル言語のメリット②

予めコンパイルをしてけおけば、プログラムの

高速な実行が可能。

Page 41: 【初心者向け】Go言語勉強会資料

41

・実行時に構文や依存性のチェックを行うため、

実行するまでエラーがわからない。 ・初回のコンパイルが不要なので、

プログラムをすぐに実行することができる。

PHPや Rubyなどのインタプリタ型言語

Page 42: 【初心者向け】Go言語勉強会資料

42

・構文エラー

・依存関係

・変数の型

・インポートして未使用のライブラリ

・引数、戻り値の型

・使われてない変数

etc…

Go言語のコンパイル時のエラーポイント

Page 43: 【初心者向け】Go言語勉強会資料

43

依存するライブラリも含めてビルドファ

イルを作成するので、別環境に持って

いってもすぐに動かすことができます。

メインの処理

ビルドファイル依存ライブラリ 1

依存ライブラリ 2

コンパイル

Go言語のコンパイルの特徴

Page 44: 【初心者向け】Go言語勉強会資料

44

「インタプリタ型言語と感じられるほど早い」

言語を目指して開発されました。

Goの標準ライブラリ全体( 12万行程度)でも

9秒でmakeが終了するという速さです。

Go言語のコンパイルは早い

Page 45: 【初心者向け】Go言語勉強会資料

45

go runコマンドを実行すると、コンパイルと実

行を一度に行うことができます。

ソースの改修からの実行をスピーディーに行う

ことが可能です。

go run

コンパイル 実行

Go言語をスクリプト言語的に実行する

Page 46: 【初心者向け】Go言語勉強会資料

46

特徴②高いパフォーマンス

Page 47: 【初心者向け】Go言語勉強会資料

47

Go言語の採用理由として、高いパフォーマンス

が挙げられることが多いです。

実際に APIのバックエンドやバッチ処理など、

パフォーマンスがネックになる部分に Go言語

が多く採用されています。

高いパフォーマンス

Page 48: 【初心者向け】Go言語勉強会資料

48

PHPのバッチと数種類のベンチマークをとって

みましたが、パフォーマンスは高かったです。

しかし、処理によっては PHPの方が早いケース

も見られました。

高いパフォーマンス

Page 49: 【初心者向け】Go言語勉強会資料

49

1から 1億までを加算する。

Page 50: 【初心者向け】Go言語勉強会資料

50

1から 1億までを加算する。

実際のベンチマーク例

$data = 0;

for($i = 1; $i <= 100000000; $i++) {

$data += $i;

}

PHP:3.47秒

Page 51: 【初心者向け】Go言語勉強会資料

51

1から 1億までを加算する。

実際のベンチマーク例

data := 0

for i := 1; i <= 100000000; i++ {

data += i

}

Go:0.05秒

Page 52: 【初心者向け】Go言語勉強会資料

52

1から 1000万までを文字列として連結

ファイルに出力

Page 53: 【初心者向け】Go言語勉強会資料

53

1から 1000万までを文字列として連結しファイルに出

実際のベンチマーク例

$data = "";

for($i = 1; $i <= 10000000; $i++) {

$data .= $i;

}

flock($fp, LOCK_EX);

fwrite($fp, $data);

flock($fp, LOCK_UN);

fclose($fp);

PHP: 1.47秒

Page 54: 【初心者向け】Go言語勉強会資料

54

1から 1000万までを文字列として連結しファイルに出

実際のベンチマーク例

data := ""

for i := 1; i <= 10000000; i++ {

data += strconv.Itoa(i)

}

content := []byte(data)

ioutil.WriteFile("exportgo.txt", content,

os.ModePerm)

Go(文字列連結 ): 10分以上・・・

Page 55: 【初心者向け】Go言語勉強会資料

55

1から 1000万までを文字列として連結しファイルに出

実際のベンチマーク例

var buffer bytes.Buffer

for i := 1; i <= 10000000; i++ {

buffer.WriteString(strconv.Itoa(i))

}

content := []byte(buffer.String())

ioutil.WriteFile("exportgo.txt", content, os.ModePerm)

Go(byte): 0.95秒

Page 56: 【初心者向け】Go言語勉強会資料

56

配列に100万件のデータを追加

Page 57: 【初心者向け】Go言語勉強会資料

57

配列に100万件のデータを追加

実際のベンチマーク例

$arr = array();

for($i = 1; $i <= 1000000; $i++) {

$arr[] = $i;

}

PHP: 0.21秒

Page 58: 【初心者向け】Go言語勉強会資料

58

配列に100万件のデータを追加

実際のベンチマーク例

var data [10000000]int

for i := 1; i <= 10000000; i++ {

data[i] = i

}

Go(配列を利用 ): 0.03秒

Page 59: 【初心者向け】Go言語勉強会資料

59

配列に100万件のデータを追加

実際のベンチマーク例

data := make([]int, 0, 10000000)

for i := 1; i <= 10000000; i++ {

data = append(data, i)

}

Go(キャパシティ指定スライスを利用 ): 0.05秒

Page 60: 【初心者向け】Go言語勉強会資料

60

配列に100万件のデータを追加

実際のベンチマーク例

data := []int{}

for i := 1; i <= 10000000; i++ {

data = append(data, i)

}

Go(キャパシティ未指定スライスを利用 ): 0.18秒

Page 61: 【初心者向け】Go言語勉強会資料

61

100万レコードの TSVを読み込

MySQLに 1レコードずつ登録

Page 62: 【初心者向け】Go言語勉強会資料

62

・ PHP : 118秒

・ Go : 134秒

実際のベンチマーク例

100万レコードの TSVを読み込

MySQLに 1レコードずつ登録

Page 63: 【初心者向け】Go言語勉強会資料

63

Goのパフォーマンスは高いと言われていますが、

使い方によってはパフォーマンスが発揮できな

いことも・・・。

何がベストな方法か、試行錯誤しながら Go言語

に取り組んでいます。

Go言語のパフォーマンスについて

Page 64: 【初心者向け】Go言語勉強会資料

64

特徴③型の扱い

Page 65: 【初心者向け】Go言語勉強会資料

65

Go言語は厳密な型指定を必要とします。

「暗黙の型変換」はなく、明示的に型を指定

する必要があります。

想定しない型の値によって思わぬ不具合を

防ぐことができます。

Go言語における型

Page 66: 【初心者向け】Go言語勉強会資料

66

構造体やインタフェース、並列処理用の型など、

Go言語には様々な型が存在します。

型を理解することで、 GO言語の理解が一気に

進むように思います。

いくつかの型について見ていきましょう。

Go言語における型

Page 67: 【初心者向け】Go言語勉強会資料

67

・文字列型 (string)

・数値型 (int, float,unit…)

・論理値型 (bool)

etc

基本的な型

Page 68: 【初心者向け】Go言語勉強会資料

68

・配列型 (長さの指定が必要 )

・スライス型 (長さの変更が可能な配列 )

・マップ型 (キーと値のセット )

※配列に入れる型を宣言時に指定する。

集合を扱う型

Page 69: 【初心者向け】Go言語勉強会資料

69

・順番の決まった値を保持する。

・初期化の際に配列の大きさを指定する。

・大きさが異なると、別の型として扱われる。

・あとから大きさの変更はできない。

         

1 2 3 4 5

配列型

Page 70: 【初心者向け】Go言語勉強会資料

70

・初期化時に長さと容量を指定する。

・要素の追加で長さの変更が可能。

・容量を超えた場合には自動的に拡張される。

          ・・・1 2 3 4 5

スライス型

Page 71: 【初心者向け】Go言語勉強会資料

71

・キーと値をセットで持つ。

・キーと値の型を指定して初期化する。

・キーを指定して値を追加する。

B

A

D

EC

マップ型

Page 72: 【初心者向け】Go言語勉強会資料

72

・名前と型を持つフィールドの集まり。

・ typeと組み合わせてクラスのように使用できる。

・先頭が大文字のフィールドは 外部から参照可能。

type User struct {

id string

name string

Address string

}

構造体 (struct)

Page 73: 【初心者向け】Go言語勉強会資料

73

・メソッドを追加することができる。

・先頭が大文字のメソッドは外部から参照可能

func (p *User) GetId() string {

return p.id

}

func (p *User) getName() string {

return p.name

}

構造体 (struct)

Page 74: 【初心者向け】Go言語勉強会資料

74

・コンストラクタはない。

・継承などはなく、単体で存在する。

→依存関係の複雑さを回避する。・構造体に構造体を埋め込むことで、継承に

似た動作を実現できる。

構造体 (struct)

Page 75: 【初心者向け】Go言語勉強会資料

75

・メソッドの型だけを列挙した型。

・インターフェースで宣言されているメソッド

すべて実装されている構造体であれば何でも 同じものとして扱うことができる。・「空のインタフェース」は、どんな型として

扱うことができる。

インタフェース型

Page 76: 【初心者向け】Go言語勉強会資料

76

・並列実行時の管理を実現するための型。

・スレッド間の同期 /値の受渡しを行う。

チャネル型

Page 77: 【初心者向け】Go言語勉強会資料

77

今回はあまり深い説明はできませんでしたが、

型の理解は Go習得にとってとても重要です。

A tour of Goで学習可能ですので、ぜひチャレン

ジしてみてください。

Go言語における型

https://go-tour-jp.appspot.com/#1

Page 78: 【初心者向け】Go言語勉強会資料

78

特徴④「楽しく」「スマートに」コーディング!

Page 79: 【初心者向け】Go言語勉強会資料

79

「 Go言語は、プログラマが何を行い、どのよ

うにプログラミングするか、あらゆる点におい

て考え抜き設計しいます。

これはプログラミングがより楽しいものになる

ことも意味しています。」

「楽しく」「スマートに」コーディングできる。

http://golang.jp/go_faq

Page 80: 【初心者向け】Go言語勉強会資料

80

・行末のセミコロンが不要。

・ ifの後のカッコが不要。

・ループは forのみで行い、 foreachや whileがない。

・ try-catch文はコードが入り組むので存在しない。

「楽しく」「スマートに」コーディングできる。

Page 81: 【初心者向け】Go言語勉強会資料

81

・関数が複数の戻り値を返せる。

「楽しく」「スマートに」コーディングできる。

name, age, address := getUserInfo()

func getUserInfo() string, int, string {

name := “ ”大谷 祐司

age := 20

address := “[email protected]

return name, age, address

}

Page 82: 【初心者向け】Go言語勉強会資料

82

・型推論を利用した初期化が可能。

下記の記述で数字型の age, 文字列型の name

宣言できる。

「楽しく」「スマートに」コーディングできる。

age := 20

address := “[email protected]

Page 83: 【初心者向け】Go言語勉強会資料

83

エラー処理について

・ try-catchはなく、戻り値で例外を返す。

・関数で複数の戻り値が返せるので、そこに

含めるのが一般的

//DBのコネクションオープンmainDb, err = sql.Open("mysql", appConf.Mariadb)

「楽しく」「スマートに」コーディングできる。

Page 84: 【初心者向け】Go言語勉強会資料

84

特徴⑤並列処理のサポート

Page 85: 【初心者向け】Go言語勉強会資料

85

言語そのものが並列処理を念頭に設計されてお

り、

ゴールーチンやチャンネルを使って、簡単に並

列処理を実装できます。

並列処理のサポート

Page 86: 【初心者向け】Go言語勉強会資料

86

PHP開発をしていたとき、複数バッチを並列で

処理するのは職人技でした。

Go言語でバッチを書くようになって、並列処理

が楽しくなりました。

並列処理のサポート

Page 87: 【初心者向け】Go言語勉強会資料

87

特徴⑥マルチコアプログラミングのサポート

Page 88: 【初心者向け】Go言語勉強会資料

88

Go言語実行時に使用するコア数を指定できます。

(関数または環境変数で GOMAXPROCSを指定 )

並列処理時に適切にコアに処理を割り当てられ、

効率よい並列処理が実現可能です。

マルチコアプログラミング

Page 89: 【初心者向け】Go言語勉強会資料

89

特徴⑦ソースコードのフォーマット

Page 90: 【初心者向け】Go言語勉強会資料

90

go fmtコマンドを実行することで、コード

を整形してくれます。

before after

Page 91: 【初心者向け】Go言語勉強会資料

91

インデントの整形までしてくれます。

Page 92: 【初心者向け】Go言語勉強会資料

92

Go fmtによるコードフォーマット

・インデントをタブに変換

・必要な部分にスペースや改行の挿入

・不要なスペースや改行の除去

・行末のセミコロンの削除

・インポートの順番を ABC順に変更

etc

Page 93: 【初心者向け】Go言語勉強会資料

93

Go言語の特徴的な部分についていくつか

紹介しました。

次に、実際にプロジェクトでどのように

活用しているかをご紹介します。

Page 94: 【初心者向け】Go言語勉強会資料

94

プロジェクトでの活用事例

Page 95: 【初心者向け】Go言語勉強会資料

95

7月に正式リリース予定の転職サイトで、社内で初めて Go言語を採用しました。

現在は法人向けに公開しています。

Page 96: 【初心者向け】Go言語勉強会資料

OS : CentOS7

Webサーバ : nginx

DB :

MariaDB10.0

インフラ管理 : Ansible

Web開発言語 : Hack(hhvm3.5)

フレームワーク : FuelPHP1.7

バッチ開発言語 : Go言語

採用している技術

96

Page 97: 【初心者向け】Go言語勉強会資料

サーバ構成 (GMOクラウド )

97

Internet

LB LBWeb/Cache DB

BatchRedis-Slave

Page 98: 【初心者向け】Go言語勉強会資料

・ローカルマシンで開発

・ Gitにコミット

・ Jenkinsで各サーバに配置してシェルでビルド。

・ビルドでエラーが無ければ実行ファイルを入れ替える。

開発 /デプロイのフロー

98

Page 99: 【初心者向け】Go言語勉強会資料

99

・データ連携 /集計、アラートなどのバッチ

・サービス管理用のツール (Revel)

・コンパイルして Hackから実行

Go言語を利用している部分

Page 100: 【初心者向け】Go言語勉強会資料

100

バッチが多く、かつ処理が複雑になりそうだった。

並列処理を活用する場面が多そうだった。

高いパフォーマンスと並列処理の仕組みを持っている。

Go言語を選択した理由

Page 101: 【初心者向け】Go言語勉強会資料

101

最低限の機能で開発してから機能追加していく初期リリース時には最低限のテストコードのみを書く

メンテナンスやリファクタリングしやすい。

コンパイル言語が合っている。

Go言語を選択した理由

Page 102: 【初心者向け】Go言語勉強会資料

102

これからメジャーになっていく言語だという確信。

PHPエンジニアが習得しやすい言語だという話を聞く。

周りの Gopherがみんな楽しそう。

Go言語を採用して、チームのチャレンジ意識を高めたい。

Go言語を選択した理由

Page 103: 【初心者向け】Go言語勉強会資料

103

・タイトなスケジュールの中で、全員の Goの習得が難し

い。

・Webでの採用実績が少なく、リスクだと考えた。

・ Go言語の技術者を採用するのが困難だった。

・テンプレートに関する情報が少なかった。

・デザイナーとの協業で Smartyの採用がスムーズだった。

Webが Go言語ではない理由

Page 104: 【初心者向け】Go言語勉強会資料

104

・始めは「意外と学習コストかかる」ということで苦戦。

・慣れてくると「 Goを書くのが楽しい」ファンが続出。

・ソース修正後の影響範囲が把握しやすい。

・型縛りに戸惑ったが、慣れるととても分かりやすい。

使ってみた感想

Page 105: 【初心者向け】Go言語勉強会資料

105

「ゴールーチン」「チャネル」「セレクト」を理解

しておけば、すんなりと実装できました。

クラウドサービスを利用しているので、コア数に

よって並列実行数を自動的に変える仕組みは便利で

す。

並列処理がとても楽

Page 106: 【初心者向け】Go言語勉強会資料

106

Go言語の習得に取り組んだこと

Page 107: 【初心者向け】Go言語勉強会資料

107

A Tour of Goをみんなでやる。

https://tour.golang.org

Page 108: 【初心者向け】Go言語勉強会資料

108

ハンズオン勉強会を開催して、その後に飲みに行ってみんなで Goについて語る。

Page 109: 【初心者向け】Go言語勉強会資料

109

コードレビューを部門横断でみんなでやる。

Page 110: 【初心者向け】Go言語勉強会資料

110

Effective Goをチームのみんなで読む。

http://golang.org/doc/effective_go.html

Page 111: 【初心者向け】Go言語勉強会資料

111

ハマったポイント

Page 112: 【初心者向け】Go言語勉強会資料

112

View周りの情報がとても少ないです。

癖のあるテンプレートエンジン・・・

selectboxに初期選択値を設定できずに

ハマりました。

テンプレートエンジン

Page 113: 【初心者向け】Go言語勉強会資料

113

teratailで初めて質問するが、回答がつかず

に凹みます・・・

Page 114: 【初心者向け】Go言語勉強会資料

114

なんとかチーム内で解決しましたが、ハマ

ると本当に厄介です。。

Page 115: 【初心者向け】Go言語勉強会資料

115

構造体において、変数や関数は先

頭が大文字ならアクセス可能。

慣れるまで何度もコンパイラに怒

られました。。。

getData() GetData()

大文字、小文字でのアクセス制御

Page 116: 【初心者向け】Go言語勉強会資料

116

Mapは順番を持っておら

ず、 PHPの連想配列の感覚で利

用すると、取り出す順序の入れ替

わりでうまく動作しない部分があ

りました。B

A

D

EC

Mapから取り出す順番

Page 117: 【初心者向け】Go言語勉強会資料

117

最近は日本語の情報も増えてきており、

ハマってもネットの情報で解決できるこ

とが多かったです。

今ではメンバーも Go言語に慣れてきて、

楽しく開発を行っています。

Page 118: 【初心者向け】Go言語勉強会資料

118

さいごに

Page 119: 【初心者向け】Go言語勉強会資料

119

私は Go言語に出会ってから、プログラミ

ングがとても楽しくなりました。

これからも Go言語を盛り上げていければ

と思います。

Page 120: 【初心者向け】Go言語勉強会資料

120

Go言語を学習していくなかで、 golang.jpをとて

も参考にさせてもらいました。

株式会社エイベルさんに感謝です。

Page 121: 【初心者向け】Go言語勉強会資料

121

インテリジェンスでは、 Go言語を採用したプロ

ジェクトがいくつか立ち上がっています。

エンジニアを募集していますので、興味ある方は

お声がけください!

Page 122: 【初心者向け】Go言語勉強会資料

122

ご静聴ありがとうございました。

Page 123: 【初心者向け】Go言語勉強会資料

123

この資料は、正確な記述を心がけて作成しており有用

だと思われますが、内容の正確性や有用性を作者は保

証しません。また、本資料は作者個人が作成したもの

であり、所属する組織・団体の見解等を表すものでは

ありません。

免責事項