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

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

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

Cf93818d90238aba328645efc40031a4?s=128

Ryuichi KAWAMATA

December 04, 2019
Tweet

Transcript

  1. 初めてGoで開発して 思ったこと golang.tokyo #28 Ryuichi KAWAMATA @rkmathi

  2. アジェンダ • 自己紹介 • 業務でGoを使うためにやったこと • 初めてGoで開発して思ったこと

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

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

    モバイルゲームのサーバサイド開発 ▪ ほとんど Ruby (Sinatra, Rails) ◦ 2016年12月〜: モバイルゲームのリアルタイム通信サーバ・クライアント SDK開発 ▪ ほとんど C++ ◦ 2019年4月〜: サーバサイド開発 ▪ 全部 Ruby (Rails) ◦ 2019年9月〜: サーバサイド開発 ▪ Go
  5. 初めてのGo!

  6. 何から始めよう?

  7. 業務で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 - などなど...
  8. 言語仕様や書き方は 分かったつもりになったが、 実際のアプリケーションは どう書くのだろうか...

  9. Gopher道場

  10. Gopher道場 - 4週間、約2-3時間ずつ座学での講義 - 基本構文から、パッケージ、抽象化、テスタビリティ、ゴルーチン・チャネル、などなど … - tenntennさんの資料・講義内容が分かりやすい! - 直接質問させていただけるのもありがたかったです。

    - + 宿題でガッツリGoのコードを書く練習ができる - 他の人の課題のコードレビューの様子が見えるので、それも勉強になる
  11. Gopher道場 - 最終日は受講生によるLT大会 - oaas (Omikuji As A Service) というネタマイクローサビス

    (?)を作ってみました
  12. Gopher道場 - Goが初めてだった自分からすると、とても勉強になりました!! - (雑ですが、)「あのソースコードのこの部分はそういう理由でこう書いていたのか」のような感覚が ちょっとずつ身についてきた気がします。 - この会に参加される方はすでに Goをバリバリ使っているかもですが、、、 まだ参加していないなら、ぜひ参加されることをオススメします!!

  13. 初めてGoで開発して思ったこと - 今まではC++とRubyがメインでした - 言語そのものを貶める意図は全く無いです

  14. 初めてGoで開発して思ったこと - C++と比べて - 部分的な動作を確かめたくて、一部分をコメントアウトすると、 unused variable, unused importエラーが出ちゃう -

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

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