今日から始めるGo / Starting Go from Today
by
Yoichiro Shimizu
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
今日から始めるGo 2023/06/15 Go言語/最新情報・活用事例セミナー Yoichiro Shimizu @budougumi0617
Slide 2
Slide 2 text
● 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
Slide 3
Slide 3 text
3 株式会社LayerX
Slide 4
Slide 4 text
© 2023 LayerX Inc. 4 * 経費精算のSlack連携は申請内容の通知のみ 稟議・支払申請・経費精算・ワークフロー ・AIが領収書を5秒でデータ化 ・承認はスマホのアプリから ・領収書の重複申請などミス防止機能 仕訳・支払処理効率化 ・AIが請求書を5秒でデータ化 ・仕訳データを自動学習、 手入力ゼロへ ・スキャン代行も実施 ・利用料無料 ・即時追加発行 ・最大1億円決済可能 法人カードの発行・管理 ・無料で始められる ・手入力ゼロで証憑管理 ・改正電子帳簿保存法に対応 帳票保存・ストレージ 「バクラク」シリーズラインナップ
Slide 5
Slide 5 text
© 2023 LayerX Inc. 5 経理担当者の法人カード支払業務をバクラクに! 最大 2% 還元 最大
Slide 6
Slide 6 text
Goとは
Slide 7
Slide 7 text
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.
Slide 8
Slide 8 text
Goとは ● 強い静的型付け、型推論 ● コンパイル言語 ● 手続き型 ● オブジェクト指向ではない ● ポインタがある 8
Slide 9
Slide 9 text
Goで作られたOSS ● Docker ● Kubernetes ● Terraform ● TiDB ● Prometheus ● etc... 9
Slide 10
Slide 10 text
● Google ● NETFLIX ● Meta ● Microsoft ● Uber ● saleforce ● 国内 ○ https://github.com/golang/go/wiki/GoUsers#japan 利用企業 10
Slide 11
Slide 11 text
誕生背景・設計思想
Slide 12
Slide 12 text
Goは何を目的に作られたのか? ● プログラミング言語には生まれた背景・言語哲学がある ● 例えばHaskell ○ 当時乱立していた関数型言語を統一するため ● 例えばRuby ○ ストレスなくプログラミングできる 12
Slide 13
Slide 13 text
Goは何を目的に作られたのか? ● Go ○ ソフトウェア開発の中で発生していた課題解決のため ● Go登場以前のGoogleのソフトウェア開発 ○ C++, Java, Python ○ ビルド時間のコスト ○ プログラミングコードの安全性 13 https://talks.golang.org/2012/splash.article
Slide 14
Slide 14 text
Goは何を目的に作られたのか? ● コンパイル速度が速いこと ● 安全に書けること ● 本質にフォーカスした開発ができること 14 https://talks.golang.org/2012/splash.article
Slide 15
Slide 15 text
● スクリプト言語のプログラミングの容易さ ● コンパイル言語の効率と安全性 ● ネットワークプログラミング ● マルチコアコンピューティング Goは何を目的に作られたのか? 15 https://golang.org/doc/faq#creating_a_new_language
Slide 16
Slide 16 text
Simplicity - 徹底的な簡潔性 ● GoのMission ○ Creating software at scale ○ Running software at scale ● システムは成長する際に、デザインの簡潔性を通してのみ、 安定し、安全であり、首尾一貫したままでいられる 16 Go's New Brand の Mission, プログラミング言語 Go まえがき より
Slide 17
Slide 17 text
安定した言語仕様 ● Goは1.0(10年前)から言語仕様がほとんど変わらない ○ 予約語も25個から増えない ● 今後もGo1.Xのうちは言語仕様は変わらない ○ Genericsが入るときにGo2になると言われていたが、 Go1のまま導入された 17
Slide 18
Slide 18 text
● Goは身近なサービス・企業で使われている ○ 決済のようなミッションクリティカルなサービスにも ● Goはソフトウェア開発の課題解決を目指した言語 ○ Creating software at scale ○ Running software at scale ● 単純さの中に生産性を見出している(UNIX思考的) ここまでのまとめ 18
Slide 19
Slide 19 text
言語仕様
Slide 20
Slide 20 text
少ない予約語 20 https://golang.org/ref/spec#Keywords
Slide 21
Slide 21 text
スライスとrange ● 可変長配列 ● オブジェクトに対する反復処理 21 https://go-tour-jp.appspot.com/moretypes/16
Slide 22
Slide 22 text
ポインタ ● ちょっとゆるい ● (*p).Xと書かなくても良い 22 https://go-tour-jp.appspot.com/moretypes/1
Slide 23
Slide 23 text
interface ● ダックタイピングを採用 ● 実装提供者ではなく利用者が定義する ○ 実装に依存せずに独自の interfaceごしに利用できる 23 https://go-tour-jp.appspot.com/methods/9
Slide 24
Slide 24 text
goroutineとchannel ● ランタイムが管理する軽量スレッド ● goroutine間を通信するパイプ 24 https://go-tour-jp.appspot.com/concurrency/2
Slide 25
Slide 25 text
多値とエラー ● 関数・メソッドは複数の値を返しうる ● 例外機構はない 25 https://go-tour-jp.appspot.com/methods/19
Slide 26
Slide 26 text
Genereics ● Go1.18から導入 ● 型キャストの削減 ● 実行時の型チェックを減らしより安全なプログラミングが可能に 26 https://go.dev/doc/tutorial/generics
Slide 27
Slide 27 text
slog ● Go1.21から導入予定 ● ログレベル、構造化ログの出力などができるようになる ○ 現時点の標準パッケージは時刻を含んだ単純な文字列出力しかできない 27 https://pkg.go.dev/golang.org/x/exp/slog
Slide 28
Slide 28 text
Web開発とGo
Slide 29
Slide 29 text
● 並行処理が強力な標準パッケージ ○ プロダクションレディなマルチリクエスト処理が可能なnet/httpパッケージ ○ コネクションプールが実装されたdatabase/sqlパッケージ ● Goをインストールするだけでローカルに開発環境を構築できる ○ Dockerなしでも安定した開発環境 ○ go testですぐにテストが実行可能 ○ go modulesですぐに依存性管理が可能 ○ VSCodeでもリッチなIDE体験が可能(gopls) ○ Go本体のアップデートも容易 Web開発とGo 29
Slide 30
Slide 30 text
● SaaS上の様々なランタイム環境で実行可能 ○ 各コンテナ実行環境 ○ AWS ■ App Runner ■ Lambda ○ GCP ■ Cloud Run ■ Cloud Functions Web開発とGo 30
Slide 31
Slide 31 text
● 各スキーマ駆動開発も利用可能 ○ gRPC ○ Connect ○ GraphQL ○ OpenAPI Web開発とGo 31
Slide 32
Slide 32 text
Goを始める
Slide 33
Slide 33 text
● Gopher道場とは、実践的なGoを体系的に学べる場です。 ○ https://gopherdojo.org/ ● 動画 ○ https://www.youtube.com/@gopherdojo ● スライド ○ http://tenn.in/go ● Gopher道場の動画コンテンツを完全に公開しました ○ https://zenn.dev/gophersjp/articles/834d6382991674 Gopher道場 33
Slide 34
Slide 34 text
● 初めてのGo言語 ―他言語プログラマーのためのイディオマティックGo実践ガイド ● Go言語プログラミングエッセンス ● 実用 Go言語 ―システム開発の現場で知っておきたいアドバイス ● Go言語による分散サービス ―信頼性、拡張性、保守性の高いシステムの構築 ● エキスパートたちのGo言語 一流のコードから応用力を学ぶ ● Goならわかるシステムプログラミング 第2版 書籍 34
Slide 35
Slide 35 text
● Goはソフトウェア開発の課題解決を目指した言語 ○ Creating software at scale ○ Running software at scale ● 強力な並行処理と素朴な言語仕様 ● 2022年以降は日本語書籍・Web学習も豊富で始めやすい! まとめ 35
Slide 36
Slide 36 text
● 他にも聞いてみたい、話してみたいという方は TwitterでDMor雑談募集ページからご応募ください! ● https://twitter.com/budougumi0617 ● https://jobs.layerx.co.jp/b5e09accdac74482b8a7ebc33824e7df 終わりに 36