はじめに
今日は、「golang.tokyo #25」に参加してきた!
会場は、ウォンテッドリー株式会社さん!初めて来た。
『https://t.co/oq0S5OOrDR #25』参加なう!https://t.co/NMTHIZvpg6#golangtokyo pic.twitter.com/45yHLnTJUA
— FUMI@Python&Go&Rust (@FumiProgrammer) 2019年6月18日
golang.tokyo
プログラミング言語のGoの導入企業のメンバーが集まり、Goの普及を推進するコミュニティです。 トークイベント、ハンズオン、etcのイベントを開催していく予定です!
ハッシュタグ
#golangtokyo
イベント内容
golang.tokyo 25回目の開催です!今回のテーマは「Go の郷に入る」。
最近 Gopher になった人も昔から Gopher やってる人も、あたらめて Go を見直し Go に入り直してみましょう!
タイムテーブル
時間 | 内容 |
---|---|
19:00 ~ | 開場・受付 |
19:30 ~ 19:35 | オープニング |
19:35 ~ 20:00 | 運営メンバー選出 今改めて読み直したいGo基礎情報 その1 |
20:00 ~ 20:25 | 運営メンバー選出 今改めて読み直したいGo基礎情報 その2 |
20:25 ~ 20:50 | 休憩 |
20:50 ~ 21:00 | LT1: golang binary hacks |
21:00 ~ 21:10 | LT2: Goの画像処理のテストってどうしてる? |
21:10 ~ 21:20 | LT3: パッケージ名と変数名が被って辛いので静的解析した |
~ 22:00 | 終了・撤収 |
軽食とビール
ウォンテッドリー株式会社さんの提供で、軽食とビールを頂いた:)
軽食とビールいただいた😆✨
— FUMI@Python&Go&Rust (@FumiProgrammer) 2019年6月18日
『唐揚げ冷たいかも…』って運営さんが言ってて、冷たいけど美味しい👍
#golangtokyo pic.twitter.com/uwZYenRz4p
軽く小腹が空いていたから、嬉しい!!
ありがとうございます!
Wantedly さんが会場アンド軽食のスポンサーよ!Go も導入しているらしいよ!なんなら GoCon にも登壇者を輩出しているよ! #golangtokyo
— パン粉 (@pankona) 2019年6月18日
tenntennʕ ◔ϖ◔ʔ ==Go さんからご褒美
LT登壇者と質問するとテネリフェでゲットしたステッカーを1枚進呈します! #golangtokyo pic.twitter.com/O0Q5EAXi8S
— tenntennʕ ◔ϖ◔ʔ ==Go (@tenntenn) 2019年6月18日
本題
人がたくさん #golangtokyo pic.twitter.com/RgTchDNxZE
— 矢島一樹 / HR Hack (@yjmkzk) 2019年6月18日
今日、紹介してくれる記事類はマストで呼んでおくといいやつばかり #golangtokyo
— tenntennʕ ◔ϖ◔ʔ ==Go (@tenntenn) 2019年6月18日
今改めて読み直したいGo基礎情報 その1
発表者: 清水 陽一郎 (@budougumi0617)
freee株式会社 所属。バックエンドエンジニア。2017年にGoが書きたくて現職に転職。 Go+gRPCでアカウントアグリゲーションサービスを担当。直近はEKS+Goを使った外部サービスとOAuth2.0連携マイクロサービスを新規開発中。 自作キーボードを趣味にしたが3台作ってしまったので最近は作れていない。
スライド
内容
言語仕様が昔から変わらない、かつコーディングにおけるベストプラクティスもほとんど変わっていない、ってことで昔のオススメ書籍を紹介するぜ!という話 #golangtokyo
— パン粉 (@pankona) 2019年6月18日
Goらしいとは何か?
Simplicity - 徹底的な簡潔性
- GoのMission
- Creating software at scale
- Running software at scale
言語哲学は変わらない。言語仕様も変わらない。
- Simplicityを体現するために
- Goは1.0の頃から言語仕様がほとんど一緒 (Go 2.xから変わるけど)
当初から Go の言語哲学は変わってない。予約後も 25 個から増えてない。これは Go 1.0 のころから。 #golangtokyo
— パン粉 (@pankona) 2019年6月18日
Go1の後方互換性を保つという約束がありますからねー #golangtokyo
— tenntennʕ ◔ϖ◔ʔ ==Go (@tenntenn) 2019年6月18日
Goの郷に入る
言語思想
- Goがどのように設計されているのか?
GoWayな設計・実装
- どうやったらSimplicityを実現できるのか?
言語思想
プログラミング言語Go
- 日本語で書かれたGoの書籍の中で一番体系的な書籍
- なぜインターフェースは小さく作るべきか
- Goのカプセル化へのアプローチ
- なぜtesting pkgにはsetup/teardownやassertがないのか
- なぜ例外を持たないのか
などについて書いてある
Goは何を期待されている言語なのか知る
- Googleは何に問題を感じてGoを作ったのか?
- Googleは何を解決するためにGoを作ったのか?
Simplicity is Complicated
goはC言語でゴリゴリ書くことを、シンプルに書くためにどれだけ頑張っているかが書いてある
Toward Go 2
Go Teamは意見を求めている
Go2もGoのMissionやValuesは何も変わらない
Gopherくん
結構厳しい仕様がある
Go Proverbs
言語設計の思想などが書いてある。面白そう。読も。
Dave Cheney氏のブログ記事のオススメリンク集 開発で一度は悩むポイントを解説してくれている
書き込むファイルはCloseする際にエラーハンドリングしないとね #golangtokyo
— tenntennʕ ◔ϖ◔ʔ ==Go (@tenntenn) 2019年6月18日
GoWayな設計・実装
Effective Go
CodeReviewComments
Goに入ってはGoに従え
Go言語によるWebアプリケーション開発(書籍)
みんなのGo言語(書籍)
そして「みんなの Go 言語」、2019/08/01 になんと改訂版が出るぞ!! #golangtokyo
— パン粉 (@pankona) 2019年6月18日
今改めて読み直したいGo基礎情報 その2
発表者: 泉 将之 (@izumin5210)
ウォンテッドリー株式会社で、主に Wantedly People のバックエンドを触っている。 Go や Ruby でプロダクトを作りつつ、必要に応じて基盤サービスや生産性向上のための開発をしている。 最近のお気に入りパッケージは golang.org/x/tools/go/packages/packagestest 。
スライド
内容
Go Data Structures: Interfaces
Rus Cox氏によるインタフェースの実装の話 #golangtokyo
— tenntennʕ ◔ϖ◔ʔ ==Go (@tenntenn) 2019年6月18日
「Interfaceなどをどうやって実現されているか」など書いてある
Go Slices: usage and internals
https://t.co/ojoC5tUEeq もぜひ #golangtokyo
— tenntennʕ ◔ϖ◔ʔ ==Go (@tenntenn) 2019年6月18日
sliceのappendって2倍ずつ増やしていくと思っていたけど、発表した見た感じ、1.5倍ずつ増えていく・・・?https://t.co/CLSY6ISEyl #golangtokyo
— はずみ (@hazumirr) 2019年6月18日
Arrays, slices (and strings): The mechanics of 'append'
Constants
Goの定数はかなり実装大変なはず。シンプルな裏には苦労があったらしい。 #golangtokyo
— tenntennʕ ◔ϖ◔ʔ ==Go (@tenntenn) 2019年6月18日
今回の一番重要なことは紹介されたほとんどの記事がhttps://t.co/YsHUM0zhMD以下にあるということ。1次情報大事。 #golangtokyo
— tenntennʕ ◔ϖ◔ʔ ==Go (@tenntenn) 2019年6月18日
The Go Memory Model
Diagnostics
Package trace
https://t.co/MWYf3SUFZK
— FUMI@Python&Go&Rust (@FumiProgrammer) 2019年6月18日
#golangtokyo
Concurrency is not parallelism
Advanced Go Concurrency Patterns
Go Concurrency Patterns: Pipelines and cancellation
What's in a name?
最後は名前について。名前の付け方は非常に大事。 #golangtokyo
— tenntennʕ ◔ϖ◔ʔ ==Go (@tenntenn) 2019年6月18日
名前がしっくりきてるとき大体設計もうまくいってることが多い #golangtokyo
— tenntennʕ ◔ϖ◔ʔ ==Go (@tenntenn) 2019年6月18日
Package names
逆に言えば、拡張可能な機能としてパッケージを公開するのであれば、Interface の名前を厳密にデザインするべき、ということか。わかりみが深い。 #golangtokyo
— utrhira (@uhtter) 2019年6月18日
LT1: golang binary hacks
Alpine Linux などで使われる musl libc では動かないプログラムの問題を Go 言語で簡単に解決する方法についてお話します。
発表者: yaegashi
ブログ : https://l0w.dev/
スライド
Not found.
内容
Hugo
Goで作られている静的サイト作成ツール
musl libc
glibc互換のCライブラリ
muslstack
ELFバイナリを操作するパッケージが標準である。覚えておこう。https://t.co/6l8fzhLNkj
— MakKi (@makki_d) 2019年6月18日
#golangtokyo
LT2: Goの画像処理のテストってどうしてる?
標準、準標準パッケージのコードリーディングから調べた&試行錯誤した画像処理のテストパターンを発表します。
発表者: po3rin
スライド
内容
結婚式駆動開発…!! #golangtokyo
— Yoichiro Shimizu (@budougumi0617) 2019年6月18日
絶対に落とせないテスト!!!
いろいろ標準パッケージ内のテストを読んでみた結果、
画像のテストは、失敗時にどれだけの情報が欲しいかによる。
という結論になった。
Testing with golden files in Go #golangtokyo https://t.co/oLrKfz3xyL
— Yoichiro Shimizu (@budougumi0617) 2019年6月18日
LT3: パッケージ名と変数名が被って辛いので静的解析した
Goはパッケージ名と関数スコープ内の名前被りはコンパイルエラーにならずshadowingされる言語仕様です。
便利なことがある反面、なぜコンパイルが通らないのかわかりにくいことがあります。 そこで静的解析を行って検知するツールをx/tools/go/analysisを使って簡単に作れたので、その話をします。
発表者: macopy
スライド
内容
conflictident
名言「人間はミスをする。だから、怒ってほしい」
— FUMI@Python&Go&Rust (@FumiProgrammer) 2019年6月18日
#golangtokyo
skeleton使うと便利だぞーー! https://t.co/ClO4sBC8Hb #golangtokyo
— tenntennʕ ◔ϖ◔ʔ ==Go (@tenntenn) 2019年6月18日