Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Go言語ってどんな言語? 導入実績や気になるトレンド


15
「テクトモ#6  Goってどんな言語?導入事例や気になるトレンド」登壇資料

Googleが開発したプログラミング言語 "Go"は、今もっとも人気のある言語の1つです。
「そもそも"Go"言語って何なの?」「何が特徴なの?」「導入事例は?」「学ぶにはどうしたらいいの?」
という疑問について、わかりやすく解説します。
https://techtomo.connpass.com/event/105908/

  • Be the first to comment

Go言語ってどんな言語? 導入実績や気になるトレンド

  1. 1. Goってどんな言語? 導入実績や気になるトレンド 2018年11月15日 テクトモ#6 Atsushi Yasuda atsushi.yasuda.jp@gmail.com
  2. 2. All content within this zip file is Copyright 2018 The Go Authors. All rights reserved.
  3. 3. 本日の内容 • Go 言語の歴史 – 誕生経緯とバックボーンについて • Go 言語の特徴 – ほか言語と何がどう違うのか • 導入事例 – Go 言語の主戦場・何に向いていて何に向いていないのか • Go の現在のトレンド – 9 周年の振り返りとユーザ調査の結果 • Go の今後の展望 – アップデートサイクルと今後の予定 • これから Go を学ぶには – 最高の Go 言語入門方法について
  4. 4. Go の歴史 誕生経緯とバックボーンについて
  5. 5. Go と他言語の年齢比較1970年代 C言語, BASIC 1990年代 Java, PHP, Python 2010年代 Go, Rust, Swift
  6. 6. Go の開発者 http://www.catb.org/~esr/jargon/html/U/Unix.html Kevin Shockey - https://www.flickr.com/photos/shockeyk/4833152910/in/photostream/ Ken Thompson C言語, UNIX, 正規表 現, ed, UTF-8 Rob Pike UNIX, UTF-8, Plan 9 Robert Griesemer Google Chrome, V8
  7. 7. Go 誕生の背景 •Engineers 1000+ •Lines 1,000,000+ •Machines 100,000,000+ •Mostly C++, Java and Python
  8. 8.  Go 言語はあくまでも実務を メインターゲットにしてい る
  9. 9. Go の解決したい課題 • ビルド/コンパイルの遅さ • コントロールできない依存関 係 • プログラマー間で使用する言 語機能に差がありすぎる • パッと見て理解しにくいコー ドが多い • 同じような努力を重複してす る必要がある • 言語の更新コストが辛い • 複数箇所にある同一コードの 片方だけが更新され続ける • 自動化ツールが書きづらい • 言語間をまたがったビルドが したい
  10. 10.  あくまでも現実の課題を解決 するため、「モダンな言語な ら持ってるクールな機能」を あえて提供しない
  11. 11. Rob Pike の言葉 ここでのポイントは、プログラマはGoogle社員であり、研究者で はありません。 彼らは大抵若く、学校を出たてで、Java や C, C++ もしかしたら Python を勉強しました。 彼らは素晴らしい言語を理解することはできませんが、それを 使って良いソフトウェアを作りたいと考えています。 なので、私たちが提供する言語は彼らが簡単に理解し、簡単に使 える言語でなければいけません。 Rob Pike, Lang.Next 2014, From Parrallel to Concurrent
  12. 12. Go の特徴 他の言語と何がどう違うのか
  13. 13. Hello, World. package main import “fmt” func main() { fmt.Println(“Hello, World.”) }
  14. 14. Hello, World の実行 $ vim hello.go $ go build –o hello.exe hello.go $ ./hello.exe Hello, World.
  15. 15. Hello, World. からみる特徴 package main import “fmt” func main() { fmt.Println(“Hello, World.”) }
  16. 16. コメント // 1行コメント func main() { /* 複数行コメント */ fmt.Println(“Hello, World.”) }
  17. 17. 変数宣言 func main() { var i int i = 10 fmt.Printf(“I am %d”, i) }
  18. 18. 制御構造 func main() { if 1 == 2 { fmt.Println(“Oops.”) } for i := 0; i < 10; i++ { fmt.Printf(“I am %d”, i) } }
  19. 19. 構造体や関数の宣言 package foo type T struct { x, y int } func PlusTen(arg int) int { return 10 + arg }
  20. 20. 一方、継承や例外、Generics (Template) などはない
  21. 21. ツールチェイン • go build – ソースコードをコンパイルする • go clean – コンパイルされたオブジェクトなどを削除する • go doc – パッケージのAPIドキュメントを読む • go fmt – パッケージのフォーマットを整える • go get – 外部のライブラリをインストールする
  22. 22. go get $ go get github.com/google/go-github/github -- package main import ”github.com/google/go-github/github” func main() { client := github.NewClient(nil) }
  23. 23. 短所・フォーマットの強制 if i == 1 { fmt.Println(“Foo”) } else if i == 2 { fmt.Println(“Boo”) }
  24. 24. コンパイルできる例 if i == 1 { fmt.Println(“Foo”) } else if i == 2 { fmt.Println(“Boo”) }
  25. 25.  理解しやすく、つかいやすい、 複数人での運用をするプログ ラム向け (気軽なスクリプトには不向き)
  26. 26. 導入事例 Go 言語の主戦場・何に向いていて何に向いていないのか
  27. 27. Go Users https://github.com/golang/go/wiki/GoUsers
  28. 28. Ranking Programming Languages by GitHub Users https://www.benfrederickson.com/ranking-programming-languages-by-github-users/
  29. 29. Tools using Go •Kubernates •Terraform •InfluxDB •Prometheus ... And more
  30. 30. Go の現在のトレンド 9 周年の振り返りとユーザ調査の結果
  31. 31. Nine years of Go https://blog.golang.org/9years
  32. 32. Participate in the 2018 Go User Survey https://blog.golang.org/survey2018
  33. 33. Go 2017 Survey Results https://blog.golang.org/survey2017-results
  34. 34. Go 2017 Survey Results https://blog.golang.org/survey2017-results
  35. 35. Go 2017 Survey Results https://blog.golang.org/survey2017-results
  36. 36. Go 2017 Survey Results https://blog.golang.org/survey2017-results
  37. 37. Go の今後の展望 アップデートサイクルと今後の予定
  38. 38. リリースサイクル •1.x 系は半年に一度 (2 月/ 8 月) にリリース •ツールやパフォーマンス、セキュリティや 標準ライブラリのアップデートがメイン •言語仕様の変更はあまりなし •1.x 系は互換性を保ち続けると約束されてい る
  39. 39. Go 2 • 2017年7月開発スタート •2018年8月ドラフトデザインが発表 •ロードマップは策定中
  40. 40. Module Ship production implementation Implement, evaluate, refine solution Propose and discuss a solution Identify and explain a problem Use go
  41. 41. Error handling, Generics Ship production implementation Implement, evaluate, refine solution Propose and discuss a solution Identify and explain a problem Use go
  42. 42. これから Go を学ぶには 最高の Go 言語入門方法について
  43. 43. A Tour of Go
  44. 44. A Tour of Go
  45. 45. A Tour of Go
  46. 46. A Tour of Go
  47. 47. A Tour of Go
  48. 48. A Tour of Go
  49. 49. A Tour of Go
  50. 50. A Tour of Go
  51. 51. A Tour of Go
  52. 52. Getting Started https://golang.org/doc/install
  53. 53. Go言語のインストール – golang.jp http://golang.jp/install
  54. 54. How to Write Go Code https://golang.org/doc/code.html
  55. 55. Goコードの書き方 – golang.jp http://golang.jp/code
  56. 56. Effective Go https://golang.org/doc/effective_go.html
  57. 57. 標準ライブラリのドキュメント
  58. 58. 標準ライブラリのドキュメント
  59. 59. Go ってどんな言語? 導入実績や気になるトレンド ご静聴ありがとうございました。

    Be the first to comment

    Login to see the comments

  • HirotoshiNakajima

    Nov. 26, 2018

15 「テクトモ#6  Goってどんな言語?導入事例や気になるトレンド」登壇資料 Googleが開発したプログラミング言語 "Go"は、今もっとも人気のある言語の1つです。 「そもそも"Go"言語って何なの?」「何が特徴なの?」「導入事例は?」「学ぶにはどうしたらいいの?」 という疑問について、わかりやすく解説します。 https://techtomo.connpass.com/event/105908/

Views

Total views

1,670

On Slideshare

0

From embeds

0

Number of embeds

51

Actions

Downloads

4

Shares

0

Comments

0

Likes

1

×