Go関連のことを調べてみた

Go関連のことを調べてみた

Next.js,Go言語で作るモダンTODOアプリ

# Next.js,Goを使ってモダンTodoアプリを作っていく
初学者が一度は作るであろうTodoアプリ。最近Go言語を勉強しているので、学習用に作ってみました。
## なぜNext.jsとGoなのか
### Next.jsについて
近年のWeb開発のフロントエンドではNext.js×TypeScriptが主流になっている気がするので、改めてNext.jsの利点を整理してみました。

・SSR(サーバーサイドレンダリング)やSSG(静的サイト生成)によって検索エンジン最適化(SEO)とページロードの高速化を同時に実現できる。

・Next.jsにはファイルベースのルーティングや簡単にAPIルートを追加できる仕組みがあり、開発効率を大幅に向上させることができる。

### Goについて
バックエンドの言語はPython,PHP,Ruby,Node.js,Rust,Goなど様々な選択肢がありますが、なぜそのプログラミング言語を使うのか、について言及した記事が少ないと感じたのでこちらもGoの利点を整理します。

・Goはコンパイル言語であるため、他のインタプリタ型言語に比べて高速に動作し、

元記事を表示

openapi-generator-cli を使って生成したコードを使ってリクエストとレスポンスに使う

# openapi-generator-cli とは?

[openapi-generator-cli](https://github.com/OpenAPITools/openapi-generator-cli)は、OpenAPIで書かれた仕様書からコードを生成するものです。

特にGo言語用というわけではなく、WebApplicationFrameworkに従ったコードも生成してくれます。どんな言語、Frameworkに対応しているかは、[READMEのOverview](https://github.com/OpenAPITools/openapi-generator?tab=readme-ov-file#overview)を見てみると良いでしょう。Perlもありますね(ないと思ってた)。

今回、WebApplicationFrameworkに[Fiber](https://gofiber.io/)を使ったのですが、残念ながら、Fiberには対応していません。ですが、生成したコードを使うことは出来ます。

## openapi-cli-generatorを動かす

今回は、Do

元記事を表示

Go言語のlogパッケージまとめ

# はじめに
個人開発の中で、Goの`log`パッケージを使用する機会があったので、それぞれの関数の使用用途を以下にまとめてみました。

## log パッケージの主要な関数と使用用途

### log.Println
– **用途**: 一般的な情報メッセージをログに出力するのに使います。改行を含むメッセージを出力します。
– **例**:
“`go
log.Println(“This is an informational message.”)
“`

### log.Printf
– **用途**: フォーマットされたログメッセージを出力するのに使います。`fmt.Printf`と同様のフォーマット指定子が使えます。
– **例**:
“`go
log.Printf(“This is a formatted message: %s”, “Hello, World!”)
“`

### log.Fatal
– **用途**: 重大なエラーメッセージをログに出力し、プログラムを終了するのに使います。出力後、`os.Exit(1)

元記事を表示

#4.初めてのGo言語

# はじめに
こんにちは~nayaaaaです。
今回はGoを使ってHello,worldの出力をさせてみたので復習としてブログに書いてみました。
筆者がGo初心者なので内容は初心者向けの内容になります。

# 実行環境
OS:AmazonLinux2
Go:go1.23.2

# Goの環境を設定する

👇こちらで最新版のリンクをコピー

https://go.dev/dl/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3904736/b683a025-1339-c8e1-c77c-0ae98c117185.png)

私の環境がLinuxなのでLinuxの最新バージョンをコピーしてwgetなどでダウンロードします。

“`
$ wget https://go.dev/dl/go1.23.2.linux-amd64.tar.gz
$ tar -zxf go1.23.2.linux-amd64.tar.gz
“`
ダウンロードして展開をします。ちなみに今回は`go1.23.2`を使

元記事を表示

【Go Echo】Swaggerチュートリアル

# 【Go Echo】Swaggerチュートリアル

このチュートリアルでは、GoのEchoフレームワークを使用してCRUD APIサーバーを構築し、Swaggerを用いてAPIドキュメントを生成する手順を説明します。
また、Swaggerアノテーションの詳細な解説も後半で行います。

## 前提条件

– Goがインストールされていること
– 基本的なGoの知識があること

## 1. プロジェクトのセットアップ

まず、プロジェクト用のディレクトリを作成し、初期化します。

“`bash
mkdir echo-swagger-crud
cd echo-swagger-crud
go mod init github.com/yourusername/echo-swagger-crud
“`

## 2. 必要なパッケージのインストール

EchoフレームワークとSwaggerツールをインストールします。

“`bash
go get github.com/labstack/echo/v4
go get github.com/swaggo/echo-swagger
go get

元記事を表示

ToDoアプリの作成(Task編)

はじめに

今回は,前回に続きタスクの取得、特定のIDのタスクを取得、タスクの新規作成、更新、削除機能を実装していきます。

https://qiita.com/sawadashinji0526/items/7492f19b868833cab343

※動作確認にpgAdminとPostmanを使います。

リポジトリの実装

このコードは、タスク情報を扱うためのリポジトリインターフェースと、そのインターフェースを実装する具体的なリポジトリ構造体を定義しています。

“`repository/task_repository.go
package repository

import (
“fmt”
“go-rest-api/model”

“gorm.io/gorm”
“gorm.io/gorm/clause”
)

type ITaskRepository interface {
//ユーザーのすべてのタスクを取得するメソッドです。
GetAllTasks(tasks *[]model.Task, userId ui

元記事を表示

MattermostでAPIを使用した翻訳機能を実装してみた

# はじめに
この記事は、「大規模ソフトウェアを手探る」の授業のレポートです。私たちは「Mattermost」というソフトウェアに翻訳機能を実装しました。
記事内では、機能実装の方法、またその過程で遭遇したエラーの対処法などについて記述しています。

# 1. Mattermostとは
Mattermostとは、利用者ごとにさまざまなカスタマイズを行うことができるSlackライクなアプリケーションです。自社サーバーでホスティングを行うことができるため、データの管理や保護が容易で、セキュリティ要件の厳しい組織に最適です。

https://mattermost.com/

# 2. ビルド方法
Mattermostには、Webアプリ、デスクトップアプリ、モバイルアプリの3つが存在します。今回は、実際の機能実装に用いたWebアプリのMacでのビルド方法について説明します。
### 1. 必要なツールのインストール
まずは、Mattermostをビルドするために必要な開発ツールインストールします。以下にインストールが必要なものとその方法を挙げます。
・Make
Xcodeのコマンドラインツ

元記事を表示

GoのフレームワークGinの導入方法(初心者向き)

# 参考資料とオススメUdemy

[Gin入門 Go言語ではじめるサーバーサイド開発](https://www.udemy.com/course/gin-golang/?srsltid=AfmBOooo9QGLQPHIr6XvJTyWZqrihT7YlhGqMs9ibDC339OkfgQuDZou&couponCode=KEEPLEARNING)

# Ginとは
***Goのフレームワーク***です。***RESTAPIを簡単に構築***できます。
非常に軽量で他のGoのフレームワークと比べて1番使われています。

# Gin導入
Goモジュールの初期化をします。
“`
go mod init プロジェクト名
“`
次にGinをダウンロードします。
“`
go get -u github.com/gin-gonic/gin
“`

# main.go
以下が公式ドキュメントのサンプルです。

“`main.go
package main

import “github.com/gin-gonic/gin”

func main() {
r := gin.Default

元記事を表示

【Go Echo】テスト実装チュートリアル

# 【Go Echo】テスト実装チュートリアル

Go言語とEchoフレームワークを使用して、基本的なCRUD(Create, Read, Update, Delete)操作を持つAPIサーバーを構築し、各操作に対するテストを実装する方法を学びましょう。
このチュートリアルでは、`echo-api-test`というプロジェクト名で進め、コードに詳細なコメントを追加して理解を深めます。

## 前提条件

– **Go**がインストールされていること([インストールガイド](https://golang.org/doc/install))
– 基本的なGoの知識

## プロジェクトのセットアップ

まず、新しいプロジェクトディレクトリを作成し、Goモジュールを初期化します。ターミナルを開いて以下のコマンドを実行してください。

“`bash
mkdir echo-api-test
cd echo-api-test
go mod init github.com/yourusername/echo-api-test
“`

このコマンドで`echo-api-test

元記事を表示

Go AWS SDKを使用してEC2インスタンスにコマンドを実行する

## はじめに
GoのAWS SDKを使用してAWSのEC2インスタンスにコマンドを送信し、その結果を取得してみました。sshで接続してからのコマンド実行ではなく、AWS Systems Manager (SSM)の機能を使用してEC2インスタンスにコマンドを実行させました。

### 前提条件

* **SSM Agentのインストール**: EC2インスタンスにSSM Agentがインストールされている必要があります。これにより、EC2のインスタンスがAWS Systems Managerと通信できるようになります。多くのAWS提供のAMIにはSSM Agentが事前にインストールされています。また、今回やりませんでしたが、手動でインストールすることもできます

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/manually-install-ssm-agent-linux.html

* **権限の設定**: コマンドを実行するためには、IAMロールやポリシーを設定し、必要な権限を付与する必要

元記事を表示

GoによるHTTPレスポンス: `http.Error`と成功レスポンスの違い

GoでHTTPレスポンスを返すときに,成功時とエラー時で異なるアプローチが必要になることがあります.特に,**エラーレスポンスを送信するための`http.Error`関数**と,**それに対応する成功レスポンス時の処理**について新たな学びがあったため,ここに残しておきます.
## `http.ResponseWriter`とは
まず,GoのHTTPハンドラでは`http.ResponseWriter`を使ってレスポンスを書き込みます.`http.ResponseWriter`は,ステータスコードやメッセージを設定し,レスポンスを生成するためのインターフェースです.

基本的な使い方としては,以下のようにステータスコードとメッセージを設定します.
“`go
w.WriteHeader(http.StatusOK)
w.Write([]byte(“This is a successful response”))
“`
ここでは成功時を例に挙げましたが,エラーレスポンスを送信するためにはこの2行の処理を一括で行うことのできる`http.Error`が用意されています.
## `http

元記事を表示

GoでWebSocketを使用した同じUUIDを持った異なるプラットフォーム(デバイス)同士のリアルタイム通信システム

みなさんUnity(Metaquest)とAndroid間といった2つのプラットフォーム間の通信を必要とした場面はありませんか?また,それぞれが同じUUID(固有の識別子)を持っている同士で個別の非同期通信を実現する場面はありませんか?
本記事では, GoとWebSocketを使用してUnityクライアントとAndroidクライアント間でリアルタイムな通信を実現するシステムの実装について詳しく解説します.

:::note warn
今回はサーバーの実装のみ記述します.クライアント側の実装はないので注意してください
:::

goの文法基本はここから

https://qiita.com/JavaLangRuntimeException/items/d388717fc1436bc3ec9d

## システム概要

**機能要件**
– システム全体としてQuizとActionと言った永続的に格納しておくデータが存在する.
– それぞれのQuizとActionはidと難易度(difficulty)と2択の選択肢(rig_sel,lef_sel)が存在する.Quizに関してはクイズ名として

元記事を表示

【Go】EchoとSQLiteを使用したAPIサーバー構築チュートリアル

# Go EchoフレームワークとSQLiteを使用したAPIサーバー構築チュートリアル

Go言語はそのシンプルさと高性能から、バックエンド開発において非常に人気があります。
特に、WebフレームワークであるEchoは、その高速な処理能力と使いやすさから、多くの開発者に支持されています。

本記事では、GoのEchoフレームワークとSQLiteデータベースを組み合わせて、基本的なAPIサーバーを構築する方法を詳しく解説します。

## 目次

1. [前提条件](#前提条件)
2. [プロジェクトのセットアップ](#プロジェクトのセットアップ)
3. [必要なパッケージのインストール](#必要なパッケージのインストール)
4. [ディレクトリ構造の作成](#ディレクトリ構造の作成)
5. [`models/user.go` の作成](#modelsusergo-の作成)
6. [`handlers/user.go` の作成](#handlersusergo-の作成)
7. [`routes/routes.go` の作成](#routesroutesgo-の作成)
8. [`main.

元記事を表示

2つの言語を比べる#1:C#とGoの出力

### 概要

C#とGoの出力処理・文法の比較

### C#の出力

“`
using System;

namespace QiitaLesson
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(“Hello World”);
}
}
}
“`
・usingで基本的な機能の読み込み
・namespaceで名前空間を作成
・クラスを作成
・プログラムが実行されるときに最初に呼び出されるメソッドである
Mainメソッドを作成

### Goの出力

“`
package main
import “fmt”
func main(){

fmt.Println(“Hello World”)
}
“`
・プログラムが開始されるmainパッケージを作成
・importでパッケージをインポート
・func 関数名で関数を作成

元記事を表示

[Go][tips][ProblemSolver] 文字列を辞書順 sort

tipsです。

# 文字列を辞書順ソート

**お題** 「”defacb”を辞書順に並べ替えて、”abcedf”にしてください。」

goにはchar型がないです。代わりに、`[]byte`や`[]rune`を使用します。

`[]rune`をちゃんと理解したい人は参考サイトへ。

## 方法1 `[]rune`型を使用

“`go
package main

import (
“fmt”
“sort”
“strings”
)

func main(){
var s string
s = “defacb”

runes := []rune(s)
// stringの文字列を辞書順並べ替え
sort.Slice(runes, func(i, j int) bool {
return runes[i] < runes[j] }) fmt.Println(string(runes)) } ``` ```go abcdef ``` ## 方法2 charっぽく並べ替え 1. `strings.Split("defacb", "")`として1文字ずつのs

元記事を表示

golangでクロスコンパイルを試してみる

# はじめに
Go(Golang)は、Googleによって開発されたオープンソースのプログラミング言語です。本記事では、WindowsにGoをインストールし、簡単な「Hello, World!」プログラムをWindowsとUbuntu(amd64)向けにビルドする手順を紹介します。

# 1. Goのダウンロード
まず、Goの公式サイトからインストーラーをダウンロードします。

1. Goのダウンロードページにアクセスします。 https://go.dev/
2. 「Download Go」ボタンをクリックし、Windows用のインストーラー(`go.windows-amd64.msi`)をダウンロードします。

# 2. Goのインストール
ダウンロードしたインストーラーを実行し、画面の指示に従ってインストールを完了させます。

1. ダウンロードした`go.windows-amd64.msi`ファイルをダブルクリックして実行します。
2. インストールウィザードに従い、インストール先を指定して「Next」をクリックします。
3. インストールが完

元記事を表示

Golang EchoフレームワークでJWT認証を実装する方法

# 初心者向けガイド:Golang EchoフレームワークでJWT認証を実装する方法(Mac環境)

ウェブアプリケーションの開発において、ユーザー認証は重要な要素の一つです。
特に、セキュアな認証システムを構築するために、JSON Web Tokens(JWT)は広く利用されています。
本記事では、Golang(Go)言語とEchoフレームワークを使用して、JWT認証を実装する方法を初心者にもわかりやすく解説します。
Mac環境での検証を前提としています。

## 目次

1. [プロジェクトのセットアップ](#プロジェクトのセットアップ)
– [1. Goのインストール](#1-goのインストール)
– [2. プロジェクトディレクトリの作成](#2-プロジェクトディレクトリの作成)
– [3. `go.mod` の初期化](#3-gomod-の初期化)
– [4. `.env` ファイルの作成と秘密鍵の生成](#4-env-ファイルの作成と秘密鍵の生成)
2. [主要なファイルの解説](#主要なファイルの解説)
– [go.mod](#gomod)

元記事を表示

Goについて新たに学んだこと

### deferとは
関数が終了する直前に実行される処理を登録するためのGoのキーワード.
エラーハンドリングやリソースの解放等,後で必ず実行したい処理を指定するために用いられる.

#### `defer`の基本仕様
**構文**: defer <関数呼び出し>
**タイミング**: `defer`を指定した関数は,その関数が終了する直前に実行される.プログラム内で複数の`defer`を登録すると,後から登録したものが先に実行される(LIFO: 後入れ先出し).

#### `defer`の用途
**1. ファイルやネットワークリソースの解放:** ファイルやデータベース接続,ネットワークリソースなど,使い終わったら閉じなければならないリソースを解放する際に使われる.
**2. エラーハンドリング:** パニック(異常終了)からのリカバリ(復旧)や,必ず実行するべき処理を定義する際に便利.
**3. ロックやアンロック:** 同時に実行されるプログラム(並行処理)でロックやアンロックを設定する場合,`defer`でアンロックを後に予約しておくことで,誤ってロックを外し忘れるリスクを

元記事を表示

GoでLangChainとChatGPTを使用する

## はじめに

2024年11月1日現在、Go言語とLangChain、ChatGPTを組み合わせた日本語文献がほとんど見当たりませんでした。(僕の検索力の問題で、たぶんどこかにはきちんとある。)

そこで、今回はこの組み合わせを用いたシンプルな実装を紹介します。(紹介する相手:将来の俺)

system_contentでAIに役割を教え、それに対してuser_contentでuserからの入力を入れられさえすれば、ほぼ自由にAIを使うことができます。今回のゴールはそれです。

## 必要な事前準備

このプロジェクトを構築するために、以下のパッケージをCLIでインストールしてください。

“`bash
go get github.com/joho/godotenv
go get github.com/tmc/langchaingo/llms
go get github.com/tmc/langchaingo/llms/openai
“`

また、`.env`ファイルに以下のように`OPENAI_API_KEY`を記載する必要があります。

“`
OPENAI_API_KEY

元記事を表示

Go言語の機械学習パッケージで異常検知する方法

# はじめに

Go言語の機械学習パッケージを使って異常検知する方法の紹介です。数値データーの配列から異常値(外れ値)を見つける2つのアルゴリズムを実装したパッケージの使い方を紹介します。

# Local Outlier Factor(LOF)

日本語では「局所外れ値因子法」というらしいです。

https://ja.wikipedia.org/wiki/%E5%B1%80%E6%89%80%E5%A4%96%E3%82%8C%E5%80%A4%E5%9B%A0%E5%AD%90%E6%B3%95

### LOFのGo言語実装

https://github.com/zavgorodnii/golof

メンテナンスされていないようなのとログの出力が多いのでパッケージとして使いやすようにForkしたのが

https://github.com/twsnmp/golof

です。

### サンプルプログラム

“`go

package main

import (
“image/color”
“log”

“github.com/twsnmp/golof/lof”

元記事を表示

OTHERカテゴリの最新記事