Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第138回RITS技術交流会 / Why Go? How is Go?

第138回RITS技術交流会 / Why Go? How is Go?

以下勉強会の資料です。

第138回RITS技術交流会『なぜ私たちはGoを書くのか。今あらためて考えるGo言語の良さと実際』
https://rits-techforum.connpass.com/event/146462/

スライド中のリンク先も確認したい場合は、ブログの補足記事でご確認ください。
https://budougumi0617.github.io/2019/10/05/jrits-why-go-how-is-go/

Yoichiro Shimizu

October 04, 2019
Tweet

More Decks by Yoichiro Shimizu

Other Decks in Technology

Transcript

  1. • 清水 陽一郎 @budougumi0617 ◦ Backend Engineer ◦ Go /

    Ruby • Blog ◦ 毎週書いてる 自己紹介 2
  2. 自己紹介 • 2017年 freee株式会社 ◦ 電子証明書を利用したアカウントアグリゲーション用アプリ( Windows) ◦ マイナンバーカードを利用した電子申告アプリ( macOS)

    ◦ クラウド会計サービスのアカウントアグリゲーション機能のマイクロサービスの開発 ◦ 金融機関とのAPI連携のためのOAuth2.0認証・トークン管理マイクロサービスの開発 4 https://customers.microsoft.com/ja-jp/story/freee-professional-services-xamarin-azure-visual-studio-japanese-japan
  3. 6

  4. 自己紹介 • 2017年 freee株式会社 ◦ 電子証明書を利用したアカウントアグリゲーション用アプリ( Windows) ◦ マイナンバーカードを利用した電子申告アプリ( macOS)

    ◦ クラウド会計サービスのアカウントアグリゲーション機能のマイクロサービスの開発 ◦ 金融機関とのAPI連携のためのOAuth2.0認証・トークン管理マイクロサービスの開発 7 https://customers.microsoft.com/ja-jp/story/freee-professional-services-xamarin-azure-visual-studio-japanese-japan
  5. 自己紹介 • golang.tokyo 運営 ◦ https://golangtokyo.connpass.com/ ◦ メルカリ、DeNA、eureka、freee、Wantedly etc... ◦

    月イチで勉強会 ◦ 技術書典で合同誌の執筆 • Go Conference 運営 ◦ https://gocon.connpass.com/ ◦ 半年に一回カンファレンスを実施 ▪ google Goチーム、海外からの登壇も ◦ Goのリリースに合わせたリリースパーティ 8
  6. Go採用企業 • GAFA • Uber • Sony • LINE •

    DeNA • CyberaAgent • CookPad • Preferred Networks • バンダイナムコ • etc... 20
  7. Goが活躍できる場所 • Linux / macOS / Windows • Web •

    IoT • Mobileアプリ • WebAssembly • AWS Lambda / Google Functions • Google App Engine 22
  8. Goとは • Googleで2007年に考案(OSS化は2009年) ◦ Robert Griesemer ◦ Rob Pike ◦

    Ken Thompson • 半年に1度のリリース ◦ 現在1.13.1が最新 24 The Go gopher was designed by Renee French.
  9. Goは何を目的に作られたのか? • Go ◦ ソフトウェア開発の中で発生していた課題解決のため • Go登場以前のGoogleのソフトウェア開発 ◦ C++, Java,

    Python ◦ ビルド時間のコスト ◦ プログラミングコードの安全性 29 https://talks.golang.org/2012/splash.article
  10. Simplicity - 徹底的な簡潔性 • GoのMission ◦ Creating software at scale

    ◦ Running software at scale • システムは成長する際に、デザインの簡潔性を通してのみ、 安定し、安全であり、首尾一貫したままでいられる 32 Go's New Brand の Mission, プログラミング言語 Go まえがき より
  11. • 複雑性は明瞭性を失う例 ◦ No free, Only GC ◦ 単純な並行処理 ▪

    “go”と書くだけ ▪ no ID ▪ ステータス Simplicity is Complicated 33 Simplicity is Complicated より
  12. 安定した言語仕様 • Simplicityを体現するために • Goは1.0(10年前)から言語仕様がほとんど変わらない ◦ 予約語も25個から増えない • 今後もGo1.Xのうちは言語仕様は変わらない ◦

    変わるのはGo2から ◦ Go 2は4年後(Go 1.20)くらい? 34 Go2については Toward Go 2 より 微妙な言語仕様の変更はたまに入る(例 :Go.1.10)
  13. • https://blog.golang.org/toward-go2 • Go2に至る仕様策定プロセス • Proposalは誰でも見れる ◦ Go 2 Draft

    Designs • Go Teamは意見を求めている 開かれた仕様策定(Toward Go 2) 35 英語が難しかったら Gopher Slackの #japan などでも議論してます
  14. • https://amazon.jp/dp/4297107279 • 環境構築 • CLIツールの作り方 • テストの書き方 • DBを使ったWebサーバの構築

    • まずなにか作ってみたい!という時に最適な一冊 改訂版 みんなのGo言語(書籍) 52