今日から始めるGo / Starting Go from Today
by
Yoichiro Shimizu
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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