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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
phperだってパンチカードでコーディングしたい
o0h
PRO
0
350
ActionController meets Protocol Buffers
sorah
0
560
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
3.9k
dotNET_vulnclicker_intro.pdf
deka_morita
0
140
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
6.7k
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
120
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
320
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
440
SalesForceを内製化!? ~ HR事業を支える顧客管理基盤のインフラを大公開 ~
oku053
0
180
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
300
sbt 2.0: takeoff
eed3si9n
0
160
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
180
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
440
The Language of Interfaces
destraynor
162
27k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
270
Accessibility Awareness
sabderemane
1
250
Odyssey Design
rkendrick25
PRO
2
880
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Into the Great Unknown - MozCon
thekraken
41
2.8k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Bash Introduction
62gerente
615
220k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
2
6.3k
A Tale of Four Properties
chriscoyier
163
24k
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や明らかなエラーに 気づけるのが嬉しい