Slide 1

Slide 1 text

Go の設計思想を深掘りする ― Unix から継ぐもの

Slide 2

Slide 2 text

名前:山浦麗斗 職業:ソフトウェアエンジニア 使用言語:C# X: ヤマカズ🎾 https://x.com/k_program510 最近はGo を学習中

Slide 3

Slide 3 text

Go 言語はなぜ生まれたのか?

Slide 4

Slide 4 text

Go 言語はGoogle が開発した言語 Go の開発者にはBell Labs 出身のエンジニアがいる 彼らはUnix を生み出した世代

Slide 5

Slide 5 text

Unix が大事にしたもの Small Simple Composable 小さく 単純に 組み合わせる

Slide 6

Slide 6 text

当時のGoogle はこのような課題がありました

Slide 7

Slide 7 text

ビルドが遅い ・C++ 等で巨大なコードベースをビルドすると数十分〜数時間… 生産性が低い 並行処理が難しい ・C/C++ やJava で安全な並列プログラミングが困難 複雑になりすぎた ・大規模開発でコード品質がバラつき、保守が辛い 実行性能も重要 ・高パフォーマンスが求められるが、スクリプト言語では物足りない

Slide 8

Slide 8 text

開発者が常に待ち時間と格闘していた

Slide 9

Slide 9 text

Google に足りなかったのは機能ではありません。

Slide 10

Slide 10 text

足りなかったのは「単純さ」です。

Slide 11

Slide 11 text

Go の設計思想(Why Go? ) Go が目指したもの

Slide 12

Slide 12 text

Google が望んだもの 超高速コンパイル シンプルな言語設計 並行処理を簡単に 依存管理とツールが統一 バグを減らす安全性

Slide 13

Slide 13 text

「巨大コードを大人数で、速く、安全に、並列処理しながら開 発したい」

Slide 14

Slide 14 text

① 学習しやすくなる

Slide 15

Slide 15 text

Go には継承がない 例外もない

Slide 16

Slide 16 text

それは「不足」ではなく 意図

Slide 17

Slide 17 text

制限の理由を知ると 迷わなくなる

Slide 18

Slide 18 text

② 得意領域がわかる

Slide 19

Slide 19 text

Go が得意なのは ・並行処理 ・大規模チーム開発 ・シンプルなバックエンド ・クラウド・インフラ基盤

Slide 20

Slide 20 text

設計思想は 「どこで使うべきか」を教えてくれる

Slide 21

Slide 21 text

③ 弱さもわかる

Slide 22

Slide 22 text

Go は ・複雑な抽象化 ・魔法のようなメタ機能 は得意ではない

Slide 23

Slide 23 text

これはGo だけの話ではない

Slide 24

Slide 24 text

設計そのものの話

Slide 25

Slide 25 text

まとめ 設計思想を知ることは

Slide 26

Slide 26 text

言語の「機能」を覚えることではない

Slide 27

Slide 27 text

言語の「意図」を理解すること

Slide 28

Slide 28 text

ご清聴ありがとうございました