Go

GoConference 2019 Autumn に参加してきたので学んだことをまとめました

はじめに 先日Go Conference 2019 Autumnに参加してきました。また、Goは半年前程から使い始めたので、Goのカンファレンスに参加したのは初めてでした。 セッションはテスト、エラーハンドリング、機械学習、ライブラリなどからエミュレータ、コンパイラなど…

Goのエラーハンドリングの基本的な考え方

はじめに アプリケーションの開発においてエラーハンドリングの設計は重要です。エラーハンドリングの設計を軽視すると、エラー発生時に原因が明確にわからないことや、エンドユーザーに対して不親切なエラーメッセージを返すことになってしまってもおかしく…

gRPC/GoのServerをGKEにデプロイする

はじめに 今回はGoogle Kubernetes Engine(GKE)を利用してgRPC通信の動作検証をしました。 本記事ではGoを使用したgRPC通信の実装例と、GKEへのデプロイ手順を記載しています。 構成図は以下のようになります。LoadBalancer(LB)でgRPCリクエストを受け付…

gRPC/Go で簡単なサーバーとクライアントを実装する

はじめに 本記事ではgRPCを利用したサーバーとクライアントを実装します。マイクロサービス開発などでよく使われるgRPCですが、ちゃんと調べたことがなかったので簡単なサーバとクライアントを実装してまとめました。 今回の例として使用したリポジトリはGit…

【Go】go-cmpを利用した構造体のテスト手法

はじめに 今回はGoでの構造体の比較について、 google/go-cmp を利用したテスト手法について紹介します。 今回のブログで使用したリポジトリ github.com google/go-cmpとは go-cmp とは値が等価かどうかを判別する package です。 等価を確認する方法に == …

GoのInterfaceの作法 "Accept Interfaces, Return structs"

Go

はじめに Goにおける抽象化の方法にインターフェースがあります。インタフェースをうまく使うことにより具体的な実装を隠し、疎結合な実装ができるようになります。 これにより、テストがやりやすくなったり、リファクタリングの影響範囲を小さくできるなど…

Goの基本的なTest手法をFizzBuzzで試してみた

はじめに 今回はGoの標準testing packageを使った基本的なテストの方法を試していきたいと思います。 テストの題材としてFizzBuzz問題を利用してテストを書いていきます。 FizzBuzzの要件 FizzBuzz問題の要件を簡単に整理します。以下の要件を確認するための…