- 1. 【Go言語】Ginフレームワークとsqlxを連携させた簡易プログラム例→sqlx中心です。
- 2. Go言語と抽象化
- 3. もうタイムアウトまで待たない!gomockでゴルーチンをまたいでエラーを出す方法
- 4. WebSocket Ping-Pong Frame実践
- 5. 【Go】BeegoでAPI構築してみる
- 6. 2021/06〜2022/05 GoタグLGTMランキングTOP30
- 7. Docker環境を構築し、Golang Echo v5-alphaでJWT Token認証 ホットリロード、リモートデバッグ、マイグレーション、GormのORMが入ったフルスタックフレームワークチックな環境の構築をした
- 8. 【Go】Goで配列を爆速で処理してくれるライブラリが素敵だった【koazee】
- 9. Go言語のフレームワークEchoを使ってみた
- 10. 【備忘録】Go(fiber)× Dockerでの環境構築を実施する。(Hot Reload対応)
- 11. AmazonのURLをひたすらDynamoDBに登録するだけのAPIをLambda Function URLsでつくった
- 12. GolangでSymbolブロックチェーンのトランザクションを送信する
- 13. Go中級者になるための個人的インプット集??
- 14. 【#0 エンジニア転職学習】学習ロードマップ
- 15. [ Golang ] Facebook / ent のER図をGitHub Actionsで自動更新する
- 16. 【GO】外部ライブラリを自力で、モック化してみる
- 17. Golang echoフレームワークのv4からv5-alphaにアップデートした際の詰まった部分のメモ
- 18. Go言語の導入から基本まで
- 19. [2022年]オライリー書籍ランキング1(O’Reilly)
- 20. 新しい言語で開発環境を作る時の目線ってこんな感じ(Go)
【Go言語】Ginフレームワークとsqlxを連携させた簡易プログラム例→sqlx中心です。
Go言語の[Ginフレームワーク](github.com/gin-gonic/gin)と、同じくGo言語のデータベース処理用ライブラリ[sqlx](github.com/gin-gonic/gin)を連携させた実装例を今回お見せしたいと思います。
「[gorm](https://github.com/go-gorm/gorm)ネタは多いけど、sqlxネタは少ないな」と思ってましたので。
sqlxの使い方にクローズアップさせてまとめました。
### 始めに、おことわり
– 「使えればいい」レベルでの内容ですので、セキュリティやコード品質は無視しております。
ご了承ください。
– クリーンアーキテクチャではなく、ベタベタな`Controller+Model`形式での設計であることをご容赦ください。
– `Docker` + `docker-compose`を用いた環境ですが、今回は省略させていただきます。### 例題のソースを共有しました
– https://github.com/rikimaru-tokyo/gin_sqlx_lesson01### 環境
Go言語と抽象化
# はじめに
オブジェクト指向的な言語をはじめとして、大抵の言語は抽象化を行うための方法を有すると思います。
Go言語では、オブジェクト指向的な言語ではありませんが、interfaceという型により抽象化を行います。
例えば、package ioが定義しているReader インターフェースについて見てみましょう。
“`go
type Reader interface {
Read(p []byte) (n int, err error)
}
“`このコードは、**Readという名前のメソッドを持ち、かつ引数として[]byteを取り、かつ戻り値として(int, error)を持つ型は、Reader interfaceにより抽象化できる**ということを主張しています。
(ちなみに、`error`はビルトインで定義されているinterfaceです。)具体例を見てみましょう。
osパッケージにて定義されている型`File`は、以下のメソッドを持ちます。
“`go
func (f *File) Read(b []byte) (n int, err error)
“`
もうタイムアウトまで待たない!gomockでゴルーチンをまたいでエラーを出す方法
# TL; DR
– gomockのモックをテストと別のゴルーチンで動かすと、モック未定義エラーが起きてもテストが終了しない
– テストが失敗した際、`go test` のタイムアウトまでフリーズしてつらみ
– そこで、 `*testing.T` をラップした独自のReporterを渡し即時終了するようにする“`go
func TestHoge(t *testing.T) {
ctrl := gomock.NewController(NewConcurrentTestReporter(t))
defer ctrl.Finish()
}type ConcurrentTestReporter struct {
*testing.T
}func NewConcurrentTestReporter(t *testing.T) *ConcurrentTestReporter {
return &ConcurrentTestReporter{t}
}func (r *ConcurrentTestReporter) Fatalf(format string, args .
WebSocket Ping-Pong Frame実践
# WebSocket Ping-Pong Frame 実践
## inspire
mdnからWebSocketの規格を見ていたところ、Ping-Pong Frameの実装についてサーバー側からする必要があると記載を見たのでGoから実装しました。
[レファランス](https://websockets.spec.whatwg.org/#ping-and-pong-frames)## 使うライブラリ
– [gorilla](https://github.com/gorilla/websocket) >= 1.5.0
– golang >= 1.18## gorillaのAPIレファランス
Ping Frameは直接転送し、Pong Frameは[PongHandler](https://pkg.go.dev/github.com/gorilla/websocket#Conn.PongHandler)を設定することで、Ping-Pong Frameが実装できます。
## ソースコード
### サーバー側
– クライアントと接続が完了したところからのソースコードになりま
【Go】BeegoでAPI構築してみる
# これはなに?
– Webフレームワーク[Beego](https://beego.vip/)を使ってAPIサーバを立ててみる記事
– 本記事では、BeegoインストールからbeeコマンドによるAPI構築まで試す# 環境
– Go: 1.18.3
– Beego: 2.0.1
– Bee: 2.0.4# 前準備
## Docker環境整備
“`:ディレクトリ構成
.
├── api
│ └── docker
│ └── Dockerfile
└── docker-compose.yml
“`“`Dockerfile:Dockerfile
FROM golang:1.18.3-alpine3.16ENV ROOT /go
ENV CGO_ENABLED 0WORKDIR ${ROOT}
RUN apk update && apk add –no-cache git
“`“`yml:docker-compose.yml
version: ‘3’
services:
api:
container_name: prac
2021/06〜2022/05 GoタグLGTMランキングTOP30
|タイトル|投稿日|LGTM|コメント数|URL|
|—|—|—|—|—|
|ファイルパーミッションでスロットがしたい|2021-11-22T10:35:01+09:00|620|6|https://qiita.com/jiro4989/items/2530c4f789916521a47a|
|Magicodeという簡単に稼げるエンジニア向けブログサービスを作ったので使って欲しい|2022-04-16T22:05:05+09:00|441|5|https://qiita.com/Taiki92777/items/c53c51b3586078e2318c|
|マイクロサービスにひそむ複雑さに立ち向かう|2021-12-03T11:15:03+09:00|193|0|https://qiita.com/behiron/items/017b12ee7ffa6dfeb254|
|2022~2030年に学ぶべき未来のプログラミング言語3選|2021-09-27T18:06:48+09:00|89|1|https://qiita.com/baby-degu/items/f9e5
Docker環境を構築し、Golang Echo v5-alphaでJWT Token認証 ホットリロード、リモートデバッグ、マイグレーション、GormのORMが入ったフルスタックフレームワークチックな環境の構築をした
docker環境を構築し、
Go言語のフレームワークのechoフレームワークに、
JWT Token認証 ホットリロード、リモートデバッグ、マイグレーション、
GormのORMと色々入ったフルスタックフレームワークチックな環境の構築をしてみました。今回の記事は、この記事の作成の為に公開しました、gihubのソースの動かし方の説明になります。
※githubのソースは記事の一番下になります。記事の評判がよければ、ライブラリーの比較や説明、ソースコードの説明等記事を更新するかもしれません。
※ validation、テストは入っておりません。
あと、errorハンドリングやlog出力等できていないです。この記事は、golang初心者やechoフレームワークをこれから学ぶ人向けとなります。
自分は、golangの学習を初めて時間があまり経っていないので、少し説明やソースコードに粗がありますが、ご容赦くださいあと、元々echo v4で作っていたのを、echo v5-alphaに書き換えているので、
v5-alphaの作法に書き変わっていない部分があります。今回詰まった点は
【Go】Goで配列を爆速で処理してくれるライブラリが素敵だった【koazee】
## はじめに
Goで配列(SliceでもArrayでも)を操作したいと思っていたときに見つけた素敵ライブラリを、備忘録として記録。
JSとかSQLとか使っているとよく使うメソッド群をだいたい使えるようにしてくれる、とても素敵ライブラリ。
~~全部GoogleAdsQueryBuilderにgroup byが無いのが悪い。~~koazeeの公式github のサンプルを元に、基本的な機能やキモについては
@nqdior様 https://qiita.com/nqdior/items/e225eae820d6157dc05b
に詳しいので、こちらもご一読いただけるといいかもしれないです。 **むしろ必読です。**今回は、ポケモンの最新版仕様のデータをjsonでまとめられているgithubを見つけたので
初代151匹のポケモンのjsonを引っ張ってきて遊んでみることにします。今回やってみるのは3つ。
- タイプごとに並び替えたい
- SQLとかでおなじみのgroup byをやってみます
- 特定のタイプのポケモンだけ抽出した
Go言語のフレームワークEchoを使ってみた
# はじめに
Go言語で代表的なフレームワークEchoをチュートリアルを試してみました
環境:MacOS Monterey 12.3.1
go v1.18.3# Echoについて
Echoとは
高性能、拡張可能、ミニマリストのGoWebフレームワーク
ですhttps://echo.labstack.com/
・最適化されたルーター
・拡張性がある
・自動TLS
・HTTP/2
・ミドルウェア
・Data Binding
・Data Rendering
・Templates
・拡張可能# インストール
最初に環境変数の$GOPATHを設定します
“`
export GOPATH=$HOME/.go
“`
※参考
https://qiita.com/yuku_t/items/c7ab1b1519825cc2c06f下記を実行します
“`
mkdir myapp && cd myapp
go mod init myapp
go get github.com/labstack/echo/v4
“`# サーバ起動
server.goというファイルを作成して下記
【備忘録】Go(fiber)× Dockerでの環境構築を実施する。(Hot Reload対応)
Go×Dockerで環境構築しました。備忘録も兼ねて記載しておきます。
下記構成で、HelloWorldまでは出力することができます!!“`shell:ディレクトリ構成
~/develop/gotenroku-server $ tree
.
├── Dockerfile
├── docker-compose.yml
├── go.mod
├── go.sum
└── main.go0 directories, 5 files
“`“`Dockerfile:Dockerfile
FROM golang:1.17-alpineENV TZ /usr/share/zoneinfo/Asia/Tokyo
ENV ROOT=/go/src/app
WORKDIR ${ROOT}ENV GO111MODULE=on
COPY . .
EXPOSE 1323RUN apk upgrade –update && \
apk –no-cache add gitRUN go get -u github.com/cosmtrek/air
AmazonのURLをひたすらDynamoDBに登録するだけのAPIをLambda Function URLsでつくった
# はじめに
この記事はLambda(Function URLs)とDynamoDBと連携させる内容となっています。
前回の記事の続きとなっているため同様の手順は省略しています。GoでLambda Function URLs ハンズオン
https://qiita.com/tkhs1121/items/b1e332acdbc50fad8c45# 環境
MacBook Air M1
開発言語 Go# 追加で必要なパッケージのインストール
“`
go get -u github.com/aws/aws-sdk-go
“`# ソースコード
“`main.go
func HandleRequest(ctx context.Context, payload Payload) error {
url, err := parseRequest(payload)
if err != nil {
return err
}
isAmazonURL, err := checkAmazonURL(url)
if err != nil {
return err
}
i
GolangでSymbolブロックチェーンのトランザクションを送信する
この記事は「自分の得意なプログラミング言語でSymbolブロックチェーンを動かす方法」をGolangで実践したものです。
https://qiita.com/nem_takanobu/items/09b6b687f3cbe10af945
### import
“`go
import (
“fmt”
“time”
“bytes”
“net/http”
“crypto/rand”
“crypto/ed25519”
“encoding/hex”
“encoding/json”
“encoding/base32”
“encoding/binary”
)
import “golang.org/x/crypto/sha3”
“`### アカウント作成
“`go
pub, priv, _ := ed25519.GenerateKey(rand.Reader)
publicKey := hex.EncodeToString(pub)
privateKey := hex.EncodeToString(priv[:32])
fmt.Println(publicK
Go中級者になるための個人的インプット集??
# はじめに
## 概要
Goを書くようになりそこそこ経ちました??
これまでに読んできたWeb上のリンクをまとめました。随時更新します。# インプット集
## 入門〜初心者?### プログラミング言語Go完全入門
https://engineering.mercari.com/blog/entry/goforbeginners/
大変お世話になった(なっている)スライドです。
今でも定期的に見返していますし、Goを始めたい方にはまず紹介しています。### Goへのヘイトに対する考え方
https://zenn.dev/nobonobo/articles/74808a8d5e6f1e
Goに対する批判は定期的に起こるのですが、キャッチアップしている言語が批判に合うと悲しくなりますよね?
言語仕様のシンプルさに由来する批判が多いように思うのですが、それに対する回答をひとつ持っておくと糧になると思います。
[元JavaエンジニアがGoに感じた「表現力の低さ」と「開発生産性」の話](https://inside.dmm.com/entry/2021/12/10/ex-j
【#0 エンジニア転職学習】学習ロードマップ
# はじめに
はじめまして、富山県に住んでいるChikaといいます。
現在は小売・製造のマーケティング部門で働いています。
自分でWEBサービスの開発をする仕事に転職したいと思い、現在バックエンドエンジニアになるべく勉強中です。勉強自体はすでに途中まで進めている状況ですが、
勉強の過程やアウトプット学習をしたいと考え、Qiitaでの記事投稿をしていくことにしました。投稿の目標として、毎日その日に学んだことをブログ記事として投稿していきます。
内容・記事の作りともに拙いですが、
とにかく投稿・アウトプットすることを第一目的としておりますのでご了承ください。
(学習教材のリンク等は後日追加修正をしていきます)# 今回の内容
– 学習題材・選定理由
– 学習ロードマップ
– 現在の進捗# 学習題材・選定理由
学習ロードマップの全体はブログ記事・Gitのロードマップ・Youtube等を見て必要な要素を選定しました。開発言語としてGoを選択しました。
難易度・教材の豊富さから考えるとRubyやPHPを選ぶほうが無難と考えましたが、
今後もしくは現在の主流になっているであろ
[ Golang ] Facebook / ent のER図をGitHub Actionsで自動更新する
# ER図とは
>ER図のEはエンティティ(Entity)の略で、Rはリレーションシップ(Relationship)の略です。つまりER図は「エンティティ=モノ」と「リレーションシップ=関係」の組み合わせでシステムのデータやデータ間の処理構造を設計します。例として「顧客が商品を注文する」という処理をER図で表すと以下のようになります。https://products.sint.co.jp/ober/blog/create-er-diagram#:~:text=ER%E5%9B%B3%E3%81%AEE%E3%81%AF,%E6%A7%8B%E9%80%A0%E3%82%92%E8%A8%AD%E8%A8%88%E3%81%97%E3%81%BE%E3%81%99%E3%80%82
簡潔に説明をすると、ER図とはテーブル間の関係を表した図です。
RDBのようなデータベースを用いてシステムの開発および運用を行う際に、テーブル間の関係を直感的に理解できるようになります。# なぜER図が必要か
実運用を行なっているシステムとなるとテーブル数が数十に及ぶことが多々ありますので、ER図
【GO】外部ライブラリを自力で、モック化してみる
### 今回は、テストコードを簡単にするためにTestifyを使いますが、Testifyの機能で、モック化するわけではないので、Testifyを導入しなくてもモック化の実現が可能です。
# 今回利用する技術
– 言語:**GO**
– モック化する外部ライブラリ:**Agouti** Seleniumみたいなライブラリ
– テストライブラリ:**Testify** assertなどの検証関数を利用するため# 実況開始
## まず初めは、GOのプロジェクトの初期化してみる
“`
go mod init go-testify-mock
“`
正直、go modのことをが詳しくないから、`npm init -y`と同じ感覚として、やっていいのかわからない….## Testifyのインストール
“`
go get github.com/stretchr/testify
“`## Agoutiのインストール
“`
go get github.com/sclevine/agouti
“`
~~ライブラリの公式が、メンテナンスしないことを発表して、3年立つらしい…~
Golang echoフレームワークのv4からv5-alphaにアップデートした際の詰まった部分のメモ
golangフレームワークechoでV5-alphaがリリースされていたので
V4からV5-alphaにアップデートした際に少し詰まった箇所のメモ※ alphaバージョンなので変更や修正があるかもしれないので注意してください
後、golangは個人で最近自己学習を始めたので間違っているかもしれません。リポジトリや説明は下記の記事に記載しております。
https://qiita.com/shingo02/items/996be09834718432bafc
https://echo.labstack.com/v5/guide/upgrading-to-v5/
middlewareのCORS middleware
https://echo.labstack.com/middleware/cors/echo.GETのようにアクセスできなくなった為、下記のように書き換え
ソースコードを見るとecho.GETは間接的にhttp.MethodGetを読んでいた為
どちらも同じ意味の様です。“`
AllowMethods: []string{echo.GET, echo.HE
Go言語の導入から基本まで
# なぜ本記事を書いたのか?
Goの仕様や使い方について自分の把握している範囲を整理するために書いています。
# 本記事の対象読者
– Goは使ったことがないけれども、他言語は使ったことがある。
– Goをとりあえず始めるための環境構築を知りたい。
– forやwhileなどはわかるが、Goでの書き方を知りたい。などと考えているプログラミングライトユーザー向けのレベルの記事として仕上げるつもりです。
正直文法云々はGoの公式チュートリアルをやってもいいとは思いますが、僕が追加で気になって実験した多少の+αを残す意味で書いてます。チートシート+αくらいでみていってください。
**足りないところだらけだけど、間違い、補足等コメントください。**
# 筆者の環境
– CPU : Apple M1
– OS : macOS Monterey v12.3.1
– Goバージョン:1.18.3# Goの環境構築
## Goのインストール
### 前提知識的なやつ
#### GOPATHとは
外部パッケージなどが保存される場所、実行バイナリもここに保存される。
“`
$ go env GO
[2022年]オライリー書籍ランキング1(O’Reilly)
オライリー書籍ランキングを紹介します。
***
[データ指向アプリケーションデザイン[Amazon]](https://amzn.to/3aILwT3)

本書では、データの量や複雑さ、変化が課題となるアプリケーションを「データ指向」と名づけ、データ指向アプリケーションの設計を支える基本的な概念を解説します。
– 第I部データシステムの基礎
– 1章 信頼性、スケーラビリティ、メンテナンス性に優れたアプリケーション
– 2章 データモデルとクエリ言語
– 3章 ストレージと抽出
– 4章 エンコーディングと進化
– 第II部分散データ
– 5章 レプリケーション
– 6章 パーティショニング
– 7章 トランザクション
– 8章 分散システムの問題
– 9章 一貫性と合意
– 第III部導出データ
– 10章
新しい言語で開発環境を作る時の目線ってこんな感じ(Go)
# 1. はじめに
開発環境を整える。初心者にとって一番高いハードルの一つです。でも、ある程度以上の経験を詰むと、言語を選ばずにスムーズに構築できるようになります。この記事は私の作業視点を整理して公開し、皆さんの苦手を克服する助けになればと記載しました。内容自体ではなく、「何をどうかんがえているのか」を見るための参考になったらうれしいです。# 2. この記事の目的
私自身使ったことのない言語の開発環境の構築をなにをどう考えて、作っていくのかを整理していきます。あくまで一例として、作業のポイントなどをお伝えすることを目的としています。逆に「Go言語で効率よく開発する方法」などは全く含まれないのでご注意ください。## 2-1 前提環境
導入OS先 Redhat Enterprise Linux 8
# 3. Go言語のコンパイル環境を作ってみよう
「開発環境」ってなんでしょうか。
1. プログラミング言語をコンパイルし実行できるようにする環境
1. コーディング、コンパイル、実行をシームレスに繋ぐための統合開発環境
1. システム全体のミニチュアを用意して、コーディング、コ