Upgrade to Pro — share decks privately, control downloads, hide ads and more …

初めてGoで開発して思ったこと

 初めてGoで開発して思ったこと

Ryuichi KAWAMATA

December 04, 2019
Tweet

More Decks by Ryuichi KAWAMATA

Other Decks in Programming

Transcript

  1. 自己紹介 • Ryuichi KAWAMATA ◦ @rkmathi • 今までやってきたこと ◦ 2015年6月〜:

    モバイルゲームのサーバサイド開発 ▪ ほとんど Ruby (Sinatra, Rails) ◦ 2016年12月〜: モバイルゲームのリアルタイム通信サーバ・クライアント SDK開発 ▪ ほとんど C++ ◦ 2019年4月〜: サーバサイド開発 ▪ 全部 Ruby (Rails)
  2. 自己紹介 • Ryuichi KAWAMATA ◦ @rkmathi • 今までやってきたこと ◦ 2015年6月〜:

    モバイルゲームのサーバサイド開発 ▪ ほとんど Ruby (Sinatra, Rails) ◦ 2016年12月〜: モバイルゲームのリアルタイム通信サーバ・クライアント SDK開発 ▪ ほとんど C++ ◦ 2019年4月〜: サーバサイド開発 ▪ 全部 Ruby (Rails) ◦ 2019年9月〜: サーバサイド開発 ▪ Go
  3. 業務で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 - などなど...
  4. 初めてGoで開発して思ったこと - C++と比べて - 部分的な動作を確かめたくて、一部分をコメントアウトすると、 unused variable, unused importエラーが出ちゃう -

    同じような処理を、異なる型に対して実行したいようなときに、 関数の引数・戻り値の型だけを直してコピペするのが面倒だった - 途中からは、一部を自動生成するようにしました - Go2のcontractsで楽になるのかも!? - (開発物の規模が違いますがそれでも)コンパイルが速いように感じる - C++ではCMakeを使ってて、Goはビルド設定をMakefileで書くの!? と最初は思ってしまったが、実際書いてみると記述量はかなり少なく 済むし、パッケージ管理がとても楽だった - 並行処理を書くときに、std::threadよりもgoroutineが簡単だった
  5. 初めてGoで開発して思ったこと - Rubyと比べて - JSONを扱うときに、structにマッピングする作業が大変 - JSONデータそのものがあれば、 JSON-to-Goのようなツールで楽できそうだが、 仕様(not JSON

    schema)だけがあると難しそうだった、、、 - 記述量がどうしても多くなっちゃう - (今のところ)rubocopのようなlinterツールの設定をいじる必要がなく、 標準のgofmt, goimportsで十分 - 実行することなく、コンパイルの時点でtypoや明らかなエラーに 気づけるのが嬉しい