kawabatas技術ブログ

試してみたことを書いていきます

go

Golang で iOS/Android アプリ内課金の実装

go

概要 アプリ内課金の実装に関わったので、メモ。 ※アプリ内課金はプラットフォーム側の影響を受ける。記載内容が古くなっている可能性があるので注意。 テーブル設計 products テーブル App Store, Google Play に登録するアプリ内課金アイテムの情報。produ…

Github Actions で Go のテストを実行する。その2

go

概要 kawabatas.hatenablog.com こちらに加え、go get でプライベートリポジトリのライブラリを使いたくなった。 手順 Github の Personal access token を作成する。こちら Github Actions のリポジトリに Secretsを追加する。こちら 下記のコードで実行す…

Lambda Go のチュートリアルをやってみた

Lambda Go を動かすまでをやってみた動画を作ってみました。 AWS公式ドキュメント www.youtube.com

Golang でモックサーバーを作った

go

概要 Go で REST API 用のモックサーバーを作りました。 kawabatas/gomock バイナリの実行で、モックサーバーが起動する handler をパッケージにすることで、テストでも使える ということを意識しました。 gostub/gostub(紹介記事)を参考にさせていただき、r…

Golang+EchoのAPIにIPアドレスによるアクセス制限を設ける

go

概要 Golang + Echo の API に IPアドレスによるアクセス制限を設けたのでメモ。 実装 ほぼほぼこちらを参考にさせていただいた。 package main import ( "net" "os" "strings" "github.com/labstack/echo" ) // InternalIpFilter returns an middleware whi…

Golang Lambda を AWS X-Ray で表示する

概要 Golang Lambda で DynamoDB のトレース、外部HTTPリクエストのトレースをした際のメモです。 Lambda のトレースの有効化 Lambda での AWS X-Ray のセットアップにあるように、 「アクティブトレースを有効にします」にチェックを入れれば、Lambda の起…

Lambda から EC2 へ TCP 疎通を確認する

概要 セキュリティグループのインバウンドルールで TCP を許可している EC2 に対して、 VPC 内にアクセス可能にした Lambda、そうでない Lambda からの疎通確認をしてみました。 Lambda のランタイムは Go です。 Lambda のコード package main import ( "lo…

GitHub Actions で Go のテストを実行する

go

概要 GitHub Actions で Go の超シンプルなテストを実行してみたのでメモ。 GitHub Actions 現在 limited public beta で、使いたい人はこちらからエントリーが必要。 コード サンプルリポジトリはこちら。 .github/main.workflow を作成しただけ。 $ tree -…

【Go言語のtest】HTTPリクエストのテスト

go

概要 HTTP モックサーバがほしいなら、標準の httptest パッケージを使えばよいとわかったのでメモ。 コード GET リクエストを投げる ping 関数 func ping(url string) int { client := &http.Client{ Timeout: 5 * time.Second, } res, err := client.Get(u…

【Go言語のtest】interface を利用して mock を使う

go

概要 外部 API や DB が関わるコードのテストでモックを使いたい場面は多々あると思う。 interface を使って、テストでモックに切り替えることができるのでメモ。 インターフェイスを定義 type DB interface { Add(name string) error Delete(name string) e…

はじめての Go のテスト

go

概要 go を触り始めたばかりで、go のテストのことが少しわかったので、メモ。 書き方 テストのファイルは *_test.go main.go だったら main_test.go testing ライブラリを import して、func TestXXX(t *testing.T) という関数を作成する package main func…

go fmt をディレクトリ階層まとめて行う

go

go fmt をサブディレクトリ配下のすべてのファイルにまとめて行える $ go fmt ./...

Mac で Go の環境構築

go

概要 go の開発環境を設定し、go のプロジェクト作成までやったのでメモ。 goenv のインストール goenv は、go 言語のバージョンを管理するもの。 go 言語版の rbenv や nodebrew のようなもの。 リポジトリはこちら $ brew install goenv $ echo 'export GO…