2019-01-01から1年間の記事一覧

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

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

TerraformでGCPのリソースの作成と変数から値を読み込む

はじめに 今回はTerraformというインフラ環境をコードで定義できるツールについてまとめました。 TerraformはHashCorp社が提供しており、Infrastructure as Code を実現するためのツールです。AWS, GCPなどのクラウド環境はもちろん、ここに記載されているプ…

XP 祭り 2019で社内で開催したワークショップについてLTをしてきました

はじめに 先日、XP祭り2019でLT祭りに参加してきたので、LTの補足と簡単な参加レポートをまとめまておきます。LTでは「スプリントプランニングにおけるタスクの見積もりの質を向上させる」という目的で開催したワークショップについて紹介しました。 本記事…

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

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

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

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

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

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

Kubernetes Meetup #22 に参加してきました

はじめに Kubernetes Meetup #22 にブログ枠として参加させていただきました! 今回は会場がほとんど満席でしたが、YouTube Liveで同時配信されているため、後でも確認できるところが良いところですね。 セッションは、 「もともとAWSを使っていてKubernetes…

Kotlin Fest 2019 に参加してきました

はじめに Kotlin Fest 2019 に行ってきました。 自分が聞いたセッションはサーバーサイドやフロントエンドのKotlinネタが多く、KotlinがAndroid以外のPlatformでも使われてきているなと感じました。 本記事では自分が聴講したいくつかのセッションについてま…

Kubernetesの内部アーキテクチャについて整理してみた

はじめに Kubernetes の勉強を始めた頃は Pod や Deployment などのリソースに目が行きがちですが、内部でどのような動きをしているのかを知ることも重要になってきます。 そこで、本記事では Kubernetes のコアな部分に絞って説明します。 Kubernetes Clust…

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

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

DatadogをDaemonSetでデプロイする on GKE

はじめに 最近Kubernetesの勉強をしています。 Deploymentリソースはよく使うのですが、DaemonSetリソースは使う機会が少なかったため、本記事ではDaemonSetの利用例としてGKE+Datadogを紹介します。 はじめに Datadogについて DaemonSetとは 【準備】GKE上…

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

Go

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

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

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

新規機能開発に関する失敗談をLTしてきました!

はじめに 先日、TECH PLAYで開催された若手エンジニアの失敗談LT大会に参加してきました! 本記事ではLTの補足として、開発の失敗原因の一つである 「計画づくり」 に関して深ぼります。 techplay.jp 発表資料 計画づくりとは 計画づくりとはその名の通り、…

zsh/fishでkubectlの補完をできるようにする

はじめに 最近、仕事でkubernetesを使う機会があったのですが、kubectlの補完ができないことがもどかしかったので設定しました。 zsh/fishの両環境を使っているので、それぞれの設定方法をご紹介します。 zshの設定 zshは公式でcompletionが対応しているので…