Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
初めてGoで開発して思ったこと
Search
Ryuichi KAWAMATA
December 04, 2019
Programming
860
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
初めてGoで開発して思ったこと
Ryuichi KAWAMATA
December 04, 2019
More Decks by Ryuichi KAWAMATA
See All by Ryuichi KAWAMATA
RubyMineでリファクタリング
rkmathi
0
1.9k
卒業研究のためのGit
rkmathi
0
170
Other Decks in Programming
See All in Programming
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
640
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
130
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
350
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
120
wkhtmltopdfの次どうするか問題2026
willnet
2
1.6k
AgentCore CLI で進化した AWS での AI エージェントの作り方 : 必要な機能を必要な時に
icoxfog417
PRO
3
360
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
260
速習iPhone Duo対応
yuukiw00w
1
710
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
180
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
140
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
2.6k
Verilogで学ぶCPU自作入門.pdf
uyuki234
1
490
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
420
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The Cult of Friendly URLs
andyhume
79
7k
YesSQL, Process and Tooling at Scale
rocio
174
15k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
710
Optimizing for Happiness
mojombo
378
71k
Become a Pro
speakerdeck
PRO
31
6.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Transcript
初めてGoで開発して 思ったこと golang.tokyo #28 Ryuichi KAWAMATA @rkmathi
アジェンダ • 自己紹介 • 業務でGoを使うためにやったこと • 初めてGoで開発して思ったこと
自己紹介 • Ryuichi KAWAMATA ◦ @rkmathi • 今までやってきたこと ◦ 2015年6月〜:
モバイルゲームのサーバサイド開発 ▪ ほとんど Ruby (Sinatra, Rails) ◦ 2016年12月〜: モバイルゲームのリアルタイム通信サーバ・クライアント SDK開発 ▪ ほとんど C++ ◦ 2019年4月〜: サーバサイド開発 ▪ 全部 Ruby (Rails)
自己紹介 • Ryuichi KAWAMATA ◦ @rkmathi • 今までやってきたこと ◦ 2015年6月〜:
モバイルゲームのサーバサイド開発 ▪ ほとんど Ruby (Sinatra, Rails) ◦ 2016年12月〜: モバイルゲームのリアルタイム通信サーバ・クライアント SDK開発 ▪ ほとんど C++ ◦ 2019年4月〜: サーバサイド開発 ▪ 全部 Ruby (Rails) ◦ 2019年9月〜: サーバサイド開発 ▪ Go
初めてのGo!
何から始めよう?
業務でGoを使うためにやったこと - まずは公式が提供している資料を読んでみるか - A Tour of Go : https://go-tour-jp.appspot.com/
- How to Write Go Code : https://golang.org/doc/code.html - Effective Go : https://golang.org/doc/effective_go.html - The Go Programming Language Specification https://golang.org/ref/spec - などなど...
言語仕様や書き方は 分かったつもりになったが、 実際のアプリケーションは どう書くのだろうか...
Gopher道場
Gopher道場 - 4週間、約2-3時間ずつ座学での講義 - 基本構文から、パッケージ、抽象化、テスタビリティ、ゴルーチン・チャネル、などなど … - tenntennさんの資料・講義内容が分かりやすい! - 直接質問させていただけるのもありがたかったです。
- + 宿題でガッツリGoのコードを書く練習ができる - 他の人の課題のコードレビューの様子が見えるので、それも勉強になる
Gopher道場 - 最終日は受講生によるLT大会 - oaas (Omikuji As A Service) というネタマイクローサビス
(?)を作ってみました
Gopher道場 - Goが初めてだった自分からすると、とても勉強になりました!! - (雑ですが、)「あのソースコードのこの部分はそういう理由でこう書いていたのか」のような感覚が ちょっとずつ身についてきた気がします。 - この会に参加される方はすでに Goをバリバリ使っているかもですが、、、 まだ参加していないなら、ぜひ参加されることをオススメします!!
初めてGoで開発して思ったこと - 今まではC++とRubyがメインでした - 言語そのものを貶める意図は全く無いです
初めてGoで開発して思ったこと - C++と比べて - 部分的な動作を確かめたくて、一部分をコメントアウトすると、 unused variable, unused importエラーが出ちゃう -
同じような処理を、異なる型に対して実行したいようなときに、 関数の引数・戻り値の型だけを直してコピペするのが面倒だった - 途中からは、一部を自動生成するようにしました - Go2のcontractsで楽になるのかも!? - (開発物の規模が違いますがそれでも)コンパイルが速いように感じる - C++ではCMakeを使ってて、Goはビルド設定をMakefileで書くの!? と最初は思ってしまったが、実際書いてみると記述量はかなり少なく 済むし、パッケージ管理がとても楽だった - 並行処理を書くときに、std::threadよりもgoroutineが簡単だった
初めてGoで開発して思ったこと - Rubyと比べて - JSONを扱うときに、structにマッピングする作業が大変 - JSONデータそのものがあれば、 JSON-to-Goのようなツールで楽できそうだが、 仕様(not JSON
schema)だけがあると難しそうだった、、、 - 記述量がどうしても多くなっちゃう - (今のところ)rubocopのようなlinterツールの設定をいじる必要がなく、 標準のgofmt, goimportsで十分 - 実行することなく、コンパイルの時点でtypoや明らかなエラーに 気づけるのが嬉しい