$30 off During Our Annual Pro Sale. View Details »

今日から始めるGo / Starting Go from Today

今日から始めるGo / Starting Go from Today

次のセミナーの登壇資料です。

2023/06/15 Go言語/最新情報・活用事例セミナー
https://tech-street.connpass.com/event/283689/

雑談はこちらでお待ちしております。
https://jobs.layerx.co.jp/b5e09accdac74482b8a7ebc33824e7df

スライド内で紹介しているコンテンツです。
- Gopher道場の動画コンテンツを完全に公開しました
- https://zenn.dev/gophersjp/articles/834d6382991674

Yoichiro Shimizu

June 15, 2023
Tweet

More Decks by Yoichiro Shimizu

Other Decks in Programming

Transcript

  1. 今日から始めるGo
    2023/06/15
    Go言語/最新情報・活用事例セミナー
    Yoichiro Shimizu @budougumi0617

    View Slide

  2. ● Go歴7年(実務では5年ほど)
    ● 株式会社LayerX ソフトウェアエンジニア
    ○ Goで法人カードを作っています
    ● 一般社団法人Gophers Japan 理事
    ○ Go Conference、Gopher道場運営etc
    ● 2022年7月Goの書籍を単著で発売
    ○ 詳解Go言語Webアプリケーション開発
    ○ 好評につき韓国語に翻訳予定
    清水 陽一郎 @budougumi0617
    2
    https://twitter.com/lucky_CandR/status/1656541418595434496

    View Slide

  3. 3
    株式会社LayerX

    View Slide

  4. © 2023 LayerX Inc.
    4
    * 経費精算のSlack連携は申請内容の通知のみ
    稟議・支払申請・経費精算・ワークフロー
    ・AIが領収書を5秒でデータ化
    ・承認はスマホのアプリから
    ・領収書の重複申請などミス防止機能
    仕訳・支払処理効率化
    ・AIが請求書を5秒でデータ化
    ・仕訳データを自動学習、 手入力ゼロへ
    ・スキャン代行も実施
    ・利用料無料
    ・即時追加発行
    ・最大1億円決済可能
    法人カードの発行・管理
    ・無料で始められる
    ・手入力ゼロで証憑管理
    ・改正電子帳簿保存法に対応
    帳票保存・ストレージ
    「バクラク」シリーズラインナップ

    View Slide

  5. © 2023 LayerX Inc.
    5
    経理担当者の法人カード支払業務をバクラクに!
    最大
    2%
    還元
    最大

    View Slide

  6. Goとは

    View Slide

  7. Goとは
    ● Googleで2007年に考案(OSS化は2009年)
    ○ Robert Griesemer
    ○ Rob Pike
    ○ Ken Thompson
    ● 半年に1度のリリース
    ○ 2023年6月現在1.20.5が最新
    7
    The Go gopher was designed by Renee French.

    View Slide

  8. Goとは
    ● 強い静的型付け、型推論
    ● コンパイル言語
    ● 手続き型
    ● オブジェクト指向ではない
    ● ポインタがある
    8

    View Slide

  9. Goで作られたOSS
    ● Docker
    ● Kubernetes
    ● Terraform
    ● TiDB
    ● Prometheus
    ● etc...
    9

    View Slide

  10. ● Google
    ● NETFLIX
    ● Meta
    ● Microsoft
    ● Uber
    ● saleforce
    ● 国内
    ○ https://github.com/golang/go/wiki/GoUsers#japan
    利用企業
    10

    View Slide

  11. 誕生背景・設計思想

    View Slide

  12. Goは何を目的に作られたのか?
    ● プログラミング言語には生まれた背景・言語哲学がある
    ● 例えばHaskell
    ○ 当時乱立していた関数型言語を統一するため
    ● 例えばRuby
    ○ ストレスなくプログラミングできる
    12

    View Slide

  13. Goは何を目的に作られたのか?
    ● Go
    ○ ソフトウェア開発の中で発生していた課題解決のため
    ● Go登場以前のGoogleのソフトウェア開発
    ○ C++, Java, Python
    ○ ビルド時間のコスト
    ○ プログラミングコードの安全性
    13
    https://talks.golang.org/2012/splash.article

    View Slide

  14. Goは何を目的に作られたのか?
    ● コンパイル速度が速いこと
    ● 安全に書けること
    ● 本質にフォーカスした開発ができること
    14
    https://talks.golang.org/2012/splash.article

    View Slide

  15. ● スクリプト言語のプログラミングの容易さ
    ● コンパイル言語の効率と安全性
    ● ネットワークプログラミング
    ● マルチコアコンピューティング
    Goは何を目的に作られたのか?
    15
    https://golang.org/doc/faq#creating_a_new_language

    View Slide

  16. Simplicity - 徹底的な簡潔性
    ● GoのMission
    ○ Creating software at scale
    ○ Running software at scale
    ● システムは成長する際に、デザインの簡潔性を通してのみ、
    安定し、安全であり、首尾一貫したままでいられる
    16
    Go's New Brand の Mission, プログラミング言語 Go まえがき より

    View Slide

  17. 安定した言語仕様
    ● Goは1.0(10年前)から言語仕様がほとんど変わらない
    ○ 予約語も25個から増えない
    ● 今後もGo1.Xのうちは言語仕様は変わらない
    ○ Genericsが入るときにGo2になると言われていたが、
    Go1のまま導入された
    17

    View Slide

  18. ● Goは身近なサービス・企業で使われている
    ○ 決済のようなミッションクリティカルなサービスにも
    ● Goはソフトウェア開発の課題解決を目指した言語
    ○ Creating software at scale
    ○ Running software at scale
    ● 単純さの中に生産性を見出している(UNIX思考的)
    ここまでのまとめ
    18

    View Slide

  19. 言語仕様

    View Slide

  20. 少ない予約語
    20
    https://golang.org/ref/spec#Keywords

    View Slide

  21. スライスとrange
    ● 可変長配列
    ● オブジェクトに対する反復処理
    21
    https://go-tour-jp.appspot.com/moretypes/16

    View Slide

  22. ポインタ
    ● ちょっとゆるい
    ● (*p).Xと書かなくても良い
    22
    https://go-tour-jp.appspot.com/moretypes/1

    View Slide

  23. interface
    ● ダックタイピングを採用
    ● 実装提供者ではなく利用者が定義する
    ○ 実装に依存せずに独自の
    interfaceごしに利用できる
    23
    https://go-tour-jp.appspot.com/methods/9

    View Slide

  24. goroutineとchannel
    ● ランタイムが管理する軽量スレッド
    ● goroutine間を通信するパイプ
    24
    https://go-tour-jp.appspot.com/concurrency/2

    View Slide

  25. 多値とエラー
    ● 関数・メソッドは複数の値を返しうる
    ● 例外機構はない
    25
    https://go-tour-jp.appspot.com/methods/19

    View Slide

  26. Genereics
    ● Go1.18から導入
    ● 型キャストの削減
    ● 実行時の型チェックを減らしより安全なプログラミングが可能に
    26
    https://go.dev/doc/tutorial/generics

    View Slide

  27. slog
    ● Go1.21から導入予定
    ● ログレベル、構造化ログの出力などができるようになる
    ○ 現時点の標準パッケージは時刻を含んだ単純な文字列出力しかできない
    27
    https://pkg.go.dev/golang.org/x/exp/slog

    View Slide

  28. Web開発とGo

    View Slide

  29. ● 並行処理が強力な標準パッケージ
    ○ プロダクションレディなマルチリクエスト処理が可能なnet/httpパッケージ
    ○ コネクションプールが実装されたdatabase/sqlパッケージ
    ● Goをインストールするだけでローカルに開発環境を構築できる
    ○ Dockerなしでも安定した開発環境
    ○ go testですぐにテストが実行可能
    ○ go modulesですぐに依存性管理が可能
    ○ VSCodeでもリッチなIDE体験が可能(gopls)
    ○ Go本体のアップデートも容易
    Web開発とGo
    29

    View Slide

  30. ● SaaS上の様々なランタイム環境で実行可能
    ○ 各コンテナ実行環境
    ○ AWS
    ■ App Runner
    ■ Lambda
    ○ GCP
    ■ Cloud Run
    ■ Cloud Functions
    Web開発とGo
    30

    View Slide

  31. ● 各スキーマ駆動開発も利用可能
    ○ gRPC
    ○ Connect
    ○ GraphQL
    ○ OpenAPI
    Web開発とGo
    31

    View Slide

  32. Goを始める

    View Slide

  33. ● Gopher道場とは、実践的なGoを体系的に学べる場です。
    ○ https://gopherdojo.org/
    ● 動画
    ○ https://www.youtube.com/@gopherdojo
    ● スライド
    ○ http://tenn.in/go
    ● Gopher道場の動画コンテンツを完全に公開しました
    ○ https://zenn.dev/gophersjp/articles/834d6382991674
    Gopher道場
    33

    View Slide

  34. ● 初めてのGo言語 ―他言語プログラマーのためのイディオマティックGo実践ガイド
    ● Go言語プログラミングエッセンス
    ● 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス
    ● Go言語による分散サービス ―信頼性、拡張性、保守性の高いシステムの構築
    ● エキスパートたちのGo言語 一流のコードから応用力を学ぶ
    ● Goならわかるシステムプログラミング 第2版
    書籍
    34

    View Slide

  35. ● Goはソフトウェア開発の課題解決を目指した言語
    ○ Creating software at scale
    ○ Running software at scale
    ● 強力な並行処理と素朴な言語仕様
    ● 2022年以降は日本語書籍・Web学習も豊富で始めやすい!
    まとめ
    35

    View Slide

  36. ● 他にも聞いてみたい、話してみたいという方は
    TwitterでDMor雑談募集ページからご応募ください!
    ● https://twitter.com/budougumi0617
    ● https://jobs.layerx.co.jp/b5e09accdac74482b8a7ebc33824e7df
    終わりに
    36

    View Slide