Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
自作ツールを作って分かった Go を使うことのメリット
Search
daichi
October 12, 2023
Programming
0
50
自作ツールを作って分かった Go を使うことのメリット
https://knowledgework.connpass.com/event/297546/
Enablement Bootcamp for Gopherizing #1 での発表資料
daichi
October 12, 2023
Tweet
Share
More Decks by daichi
See All by daichi
テストライブラリによってコンポーネントテストの実行時間はどう変わるか / component-test-performance-by-library
kudoas
0
72
Blue/Greenデプロイの導入による 運用フローの改善
kudoas
1
980
自作OSSで仕事を楽にする
kudoas
0
51
ライブラリのアップデートをスムーズに楽しく進める工夫
kudoas
0
29
Other Decks in Programming
See All in Programming
Agent Rules as Domain Parser
yodakeisuke
1
210
Practical Domain-Driven Design - Workshop at NDC 2025
mufrid
0
120
ユーザーにサブドメインの ECサイトを提供したい (あるいは) 2026年函館で一番熱くなるかもしれない言語の話
uvb_76
0
160
ruby.wasmとWebSocketで遊ぼう!
lnit
0
150
CursorとDevinが仲間!?AI駆動で新規プロダクト開発に挑んだ3ヶ月を振り返る / A Story of New Product Development with Cursor and Devin
rkaga
5
1.9k
Rethinking Data Access: The New httpResource in Angular
manfredsteyer
PRO
0
200
事業KPIを基に価値の解像度を上げる
nealle
0
190
衛星の軌道をWeb地図上に表示する
sankichi92
0
230
ドメイン駆動設計とXPで支える子どもの未来 / Domain-Driven Design and XP Supporting Children's Future
nrslib
0
350
鯛変だったRubyKaigi 2025 ── それでも楽しかった!
pndcat
0
130
型付け力を強化するための Hoogle のすゝめ / Boosting Your Type Mastery with Hoogle
guvalif
1
220
ワイがおすすめする新潟の食 / 20250530phpconf-niigata-eve
kasacchiful
0
170
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
34
2.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Building Adaptive Systems
keathley
41
2.6k
Making Projects Easy
brettharned
116
6.2k
Building Applications with DynamoDB
mza
95
6.4k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
42
2.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
180
53k
Transcript
自作ツールを作って分かった Go を使うことのメリット Enablment Bootcamp for Gopherizing 2023-10-12 @オンライン
だいち / @_da1kong Classi 株式会社 2022年4月 新卒入社 API・画面開発や業務フローの改善
企業 経歴 業務
Background / Motivation Bootcamp 以前は Goをほとんど書いたことはなかった これを機会を Go を書ける素地を身に付けたい 実際に学んだこと:Goらしいコード・テスト・エラー処理
など ここからは コードを書くこと で理解を深めたい 普段は Ruby・TypeScript を書いているので その経験と比較すると Go の理解も進めやすい Bootcamp資料より引用
作ったもの kudoas/gis (GitHub Issue Syncer) コマンド実行で自動的に 子Issue と
親Issue の情報を同期できるツール Issue から Issue を作ると 親Issueの情報 (label, millstone など) が 子 Issue に引き継がれないため このツールをまだ育てている最中なので 機能は最小限です🙏
子 Issue から親 Issue fieldを取得する 内部実装を簡単に紹介 OAuth2.0 で GitHub API
を認可する 子 Issue fieldをアップデートする 1 2 3
開発で使用したツール・ライブラリ等 Editor VSCode Go Version 1.21.3 Library golang/oauth2
OAuth2.0 による認可のクライアント実装 shurcooL/githubv4 GitHub API v4 SDK
Goを使って開発したときに感じたメリット
GraphQL との連携が扱いやすい GitHub API のレスポンスを格納する構造体を定義 クエリを呼び出してレスポンスを構造体に格納する API
のレスポンスが構造体に合わない場合は エラーになる GraphQLのクエリと構造体が紐づいている 取得した値に型のサポートがつく
構造体によって リクエスト・レスポンスの形式が正しいか を担保できる 型が決まっているので、呼び出す際にコード補完が効いて書きやすい テストをスタブする際もライブラリのインターフェースを守れる テストを書く場合は外部と通信するAPIのインターフェースは スタブすることが多い スタブ自体が間違っていてもテストは通るが、実行するとバグになる 引数や返り値の型を担保した上でより本物に近いスタブが作れる
他の動的型付け言語 (Ruby) で実装した場合の違い
Goを勉強する上で感じたメリット
Go のコードは読みやすい gofmt という標準ライブラリの存在 すぐにコードを書き始められる import の順番・インデントのスペース数が統一されている Go らしいコードを意識して書かれているものが多い Clarity(明確さ)や
Simplicity(単純さ)を重視している 引用:Style principles - Go Style Guide ライブラリを使った実践的なコードを追いやすい
ライブラリを使った実践的なコードを追いやすい README GoDoc GitHub Code Search より実践的な コードを知りたい🤔 読みやすい
ライブラリの実装の詳細を追いやすい VSCode 上のコードジャンプですぐに 実装の詳細 を確認できる 言語仕様もシンプルなので読みやすい 他の言語との比較 Ruby はそもそもコードジャンプがしにくい
TypeScript は 型定義ファイル(d.ts) を参照する場合が多い
実際に自作ツールを開発することで Go のメリットが少しずつ見えてきた 型によるコードの保護が手厚い 実装する上で他のコードを参照しやすい ライブラリの実装の詳細を追いやすい Bootcamp で Go の素地がついてきたと感じた
ここから更に手を動かしながら学んでいきたい まとめ