O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

そうだ、Goを始めよう

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 36 Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Semelhante a そうだ、Goを始めよう (20)

Anúncio

Mais de Takuya Ueda (18)

Mais recentes (20)

Anúncio

そうだ、Goを始めよう

  1. 1. The Go gopher was designed by Renée French. The gopher stickers was made by Takuya Ueda. Licensed under the Creative Commons 3.0 Attributions license. そうだ、Goを始めよう 2018年1月16日(火) @GDG Tokyo New Year Seminar 2018
  2. 2. 自己紹介 上田拓也 @tenntenn 所属 コミュニティ活動 & Go ビギナーズ Go Conference 上田拓也 @tenntenn
  3. 3. ソウゾウ エキスパートチーム 技術をアウトプットするところに技術は集まる ■ エキスパートチームとは? ● 50%以上の時間を技術コミュニティへの貢献に充てる ■ エキスパートチームの役割 ● 社内に新しい技術を取り取り込む ● 社外のコミュニティなどを通じて社会へ還元する ■ エキスパートチームの活動 ● カンファレンス・勉強会の開催/運営 ● 対外的な講演活動 ● 執筆、雑誌への寄稿、インタビュー ● 社内外での担当技術の普及推進 @tenntenn 担当:Go・GCP @mhidaka 担当:Android メンバー
  4. 4. そうだ、Goを始めよう
  5. 5. Goとは? ■ Googleが開発したプログラミング言語 ● 2009年11月に最初のバージョンをオープンソースで公開 ○ 2012年3月に正式バージョンであるGo1.0を公開 ○ 2017年12月の最新バージョンはGo1.9 ● Robert Griesemer、Rob Pike、Ken Thompsonによって設計された ■ 特徴 ● 強力でシンプルな言語設計と文法 ● 並行プログラミング ● 豊富な標準ライブラリ群 ● 周辺ツールの充実 ● シングルバイナリ・クロスコンパイル
  6. 6. Goが開発された理由 ■ Google内の課題を解決するために開発された ● 開発速度の低下 ○ 超巨大なコードベース ○ 複雑な依存関係 ● マルチコア時代のシステム言語 ○ 並行処理とガベージコレクタを同時に採用 ● 軽量プログラミング言語(LL, Light weight Language)の盛り上がり ○ 静的型付け言語だとコンパイル時にエラーが発見できる ○ 動的型付け言語だと書きやすい ○ いいところ取りの書きやすい静的型付け言語がない
  7. 7. Goを学ぶ理由 ■ 多くのプロダクトで採用 ■ メルカリ、メルカリ カウル ■ Docker、Kubernetes ■ AbemaTV、AWA ■ AndApp ■ ペアーズ ■ チーム開発に向いている ■ 静的型付け ■ 文法がシンプル ■ パフォーマンスが良い ■ ゴールーチンとチャネル ■ バイナリになる スタートアップから 大規模開発まで対応できる
  8. 8. よし、Goを始めよう
  9. 9. でも、自前でサーバたてるの大変ですよね?
  10. 10. Google App Engineでも使えるよ
  11. 11. Google App Engineとは ■ Google が提供するPaaS ● 高いスケーラビリティ ● メンテナンスコストが低い ■ スタンダード環境とフレキシブル環境 ● スタンダード環境 ○ 従来からあるGAEの環境、SEとも ○ Go、Java8、Python 2.7、PHPが使える ○ Goはインスタンスの起動が恐ろしく早い ● フレキシブル環境 ○ 旧MVMs、FEとも ○ Go、Java8、Python 2.7/3.4、Node.js、Ruby 11
  12. 12. 簡単に始められる ※GopherConのパンフレットより
  13. 13. でも、サーバサイドの言語ですよね?
  14. 14. コマンドラインツールも作れるよ
  15. 15. 標準パッケージが充実 ■ コマンドラインツールに便利な標準パッケージ flag コマンドライン引数 os, path/filepath ファイル操作など strings テキスト処理 encoding JSON, XML, CSVなど
  16. 16. コマンドラインツールを作ろう ■ 環境変数のGOOSとGOARCHを指定する  開発環境とは違うOSやアーキテクチャ向けにクロスコンパイルできる 16 シングルバイナリになるので 動作環境を用意しなくてよい # Windows(32ビット)向けにコンパイル $ GOOS=windows GOARCH=386 go build # Linux(64ビット)向けにコンパイル $ GOOS=linux GOARCH=amd64 go build ※ go build はGoのソースコードをビルドするコマンド
  17. 17. よし、Goを始めよう
  18. 18. でも、Androidエンジニアだし...
  19. 19. モバイルアプリも作れるよ
  20. 20. Go Mobile ■ Goでモバイルアプリを作るツール群 ● iOS / Androidに対応 ● golang.org/x/mobile ■ 2通りのスタイル ● Nativeアプリ ⇒ Goだけで書く ● SDKアプリ ⇒ Goで書いたライブラリを呼び出す 参考:https://github.com/golang/go/wiki/Mobile
  21. 21. よし、Goを始めよう
  22. 22. でも、フロントエンドエンジニアだし...
  23. 23. フロントエンド書けますよ
  24. 24. GopherJS ■ GoからJavaScriptを生成するツール群 ● ゴールーチンとチャネルに対応 ● ほとんどの標準パッケージに対応 ● Node.JSでも動く ● Java(Nashorn)でも動く
  25. 25. デモ https://gopherjs.github.io/playground/
  26. 26. でも、重いんでしょ?
  27. 27. WebAssemblyに対応が進んでる ■ WebAssembly ● ブラウザ上で実行できるバイナリ形式の言語 ● ネイティブに近いパフォーマンスで動作する ● C/C++などをコンパイルする ■ Goの対応状況 ● https://blog.gopheracademy.com/advent-2017/go-wasm/ ● 実装が進み始めている ● まだJSとの連携を取る方法がない
  28. 28. デモ https://blog.gopheracademy.com/advent-2017/go-wasm/
  29. 29. よし、Goを始めよう
  30. 30. どうやって勉強するの?
  31. 31. A Tour of Go ■ ブラウザ上で実行できるチュートリアル ● https://go-tour-jp.appspot.com
  32. 32. ドキュメントを読む ■ 言語仕様 ● コンパクトな言語仕様なので簡単に読める ■ Go Code Review Comments (日本語訳) ● Goらしい書き方が学べる ■ Effective Go ● Code Review Commentsより詳しい内容 ■ パッケージドキュメント ● ドキュメントをしっかり読む
  33. 33. Goをコミュニティで学ぶ ■ Goビギナーズ ● https://go-beginners.connpass.com/ ● 初心者向けのGoのコミュニティ ■ golang.tokyo ● https://golangtokyo.connpass.com/ ● Goの採用企業間で情報共有をするコミュニティ ■ Go Conference ● https://gocon.connpass.com/ ● 日本最大のGoのカンファレンス ■ Gophers Slack ● https://invite.slack.golangbridge.org/ ● 世界中のGopher(Goのユーザ)が集まる Go ビギナーズ Go Conference
  34. 34. 大学で学ぶ ■ 2018年は大学で講義する予定です ● 集中講義を計画中 ● おそらく2校くらい ● 他にも絶賛募集中 ■ 学生のGoのコミュニティもあります ● 招待フォーム:https://goo.gl/vm7PpN
  35. 35. まとめ ■ Goでできること ● サーバサイドの言語として ○ Google App Engineではじめよう ● コマンドラインツールを作る ● モバイルアプリを作る [experimental] ● フロントエンドを書く ○ GopherJS ○ WebAssembly [experimental] ■ Goを学ぶ ● 公式チュートリアルやドキュメント ● コミュニティ ● 学校
  36. 36. Thank you! twitter: @tenntenn Qiita: tenntenn connpass: tenntenn 36

×