📌

Golangにおける開発のための参考リスト

2023/03/31に公開

https://zenn.dev/houser/articles/e61c639ec49b2e
の記事を参考にchatGPTでアレンジしてみました。

この記事では、Golangにおける開発のための参考リストを紹介します。開発を行う上で、心得や参考となるリファレンス、基本コマンドやメソッド、初期設定やライブラリ、設計やアーキテクチャ、ディレクトリ構成や命名規則、デバック、ログ出力、マイグレーション、テスト、Docker、キャッシュ、バリデーション、ミドルウェア、よくあるエラー、日付処理、レスポンスなど、さまざまな項目を網羅しています。

心得/マインド系

  • Golangは速度が速く、メモリ使用量が少ないため、高速でスケーラブルなアプリケーションを作成することができます。
  • Golangは静的型付けの言語であるため、コンパイル時にエラーを検出することができます。また、エラーハンドリングに関しても重要なポイントです。
  • Golangはコンパイルが高速で、ビルド後のバイナリファイルはどの環境でも動作するため、開発とデプロイが容易です。
  • Golangには豊富な標準ライブラリが含まれており、HTTPやJSONなどの処理を簡単に行うことができます。
  • Golangの設計思想は、シンプルさ、明瞭さ、効率性に重点を置いています。

参考レファレンス系

  • Golang公式ドキュメント:公式ドキュメントで、Golangの基本的な情報を入手することができます。
  • Golangリファレンスマニュアル:Golangの言語仕様や基本的な概念について説明しています。
  • Effective Go:Golangの効果的な使い方についてのドキュメントです。
  • The Go Blog:Golangの最新情報や開発に役立つトピックについて書かれた記事が掲載されています。
  • Awesome Go:Golangのライブラリやフレームワークなどの情報をまとめたリポジトリです。

基本コマンドやメソッド系

  • go run:Goプログラムをコンパイルして実行するためのコマンドです。
  • go build:Goプログラムをビルドするためのコマンドです。ビルドされたバイナリファイルは実行可能なファイルです。
  • go get:Goのパッケージをダウンロードしてインストールするためのコマンドです。
  • fmt:文字列のフォーマットを行うためのパッケージです。主にデバック用に使用されます。
  • strings:文字列の操作を行うためのパッケージです。文字列の分割、結合、検索などが行えます。
  • strconv:文字列と数値の変換を行うためのパッケージです。文字列から数値に変換する場合や、数値を文字列に変換する場合に使用します。

初期設定/ライブラリ系

  • go mod:Golangのモジュールシステムを管理するためのコマンドです。依存関係の管理やライブラリのインストールなどが行えます。
  • gin:GolangのWebフレームワークで、高速でシンプルなAPIサーバーを構築することができます。
  • gorm:GolangのORMで、データベースとのやりとりを簡単に行うことができます。
  • viper:Golangの設定管理ライブラリで、簡単に設定ファイルを読み込むことができます。

設計/アーキテクチャ系

  • Clean Architecture:アプリケーションの設計手法で、内部の詳細を隠蔽し、依存関係を反転させることによって、柔軟なアーキテクチャを実現することができます。
  • Hexagonal Architecture:アプリケーションの設計手法で、中心となるビジネスロジックと周辺のインフラストラクチャを分離し、ビジネスロジックの再利用性を高めることができます。
  • Domain-Driven Design:アプリケーションの設計手法で、ビジネスドメインを中心に考え、そのドメインの特性を反映したアーキテクチャを構築することができます。

ディレクトリ構成/命名規則

  • Standard Go Project Layout:Golangのプロジェクトのディレクトリ構成を定義したリポジトリです。
  • Go Code Review Comments:Golangのコードレビューにおけるコメントや命名規則のガイドラインがまとめられています。

デバック系

  • pprof:Golangのデバックツールで、プロファイリングやトレースなどの機能を提供します。
  • delve:Golangのデバッガーで、ステップ実行や変数の監視などが行えます。

ログ出力系

  • log:Golangの標準ライブラリで、簡単なログ出力が行えます。
  • zap:高速で柔軟なログライブラリで、大規模なシステムでもパフォーマンスを維持することができます。

マイグレーション系

  • goose:Golangのマイグレーションツールで、データベースのスキーマ変更を管理することができます。

テスト系

  • testing:Golangの標準パッケージで、ユニットテストやベンチマークテストなどを行うことができます。
  • mockery:Golangのモック生成ツールで、テスト駆動開発(TDD)に役立ちます。

Docker系

  • Docker:コンテナ仮想化技術で、Golangのアプリケーションをコンテナ化して簡単にデプロイすることができます。
  • docker-compose:Dockerの複数コンテナ管理ツールで、複数のコンテナを一括で起動・停止・削除することができます。

キャッシュ系

  • Groupcache:Golangの分散キャッシュライブラリで、大規模なシステムでも高速なキャッシュを提供することができます。
  • Redis:高速なキャッシュやデータベースとして利用される、インメモリ型のデータストアです。

バリデーション系

  • go-playground/validator:Golangのバリデーションライブラリで、様々なバリデーションルールを簡単に実装することができます。
  • go-ozzo/ozzo-validation:Golangのバリデーションライブラリで、構造体のバリデーションを行うことができます。

ミドルウェア系

  • negroni:Golangのミドルウェアハンドラーで、複数のミドルウェアを連結させて処理することができます。
  • alice:negroniのように複数のミドルウェアを連結させることができるライブラリです。

よくあるや遭遇したエラー系

日付処理

  • time:Golangの標準ライブラリで、日時の操作やフォーマットを行うことができます。
  • jinzhu/now:Golangの日時ライブラリで、簡単に日時の操作を行うことができます。

レスポンス系

  • http:Golangの標準ライブラリで、HTTPリクエストやレスポンスを処理することができます。
  • gin:GolangのWebフレームワークで、JSONやXMLなどのレスポンスを簡単に処理することができます。

以上が、Golangにおける開発のための参考リストです。開発を行う上で、心得や参考となるリファレンス、基本コマンドやメソッド、初期設定やライブラリ、設計やアーキテクチャ、ディレクトリ構成や命名規則、デバック、ログ出力、マイグレーション、テスト、Docker、キャッシュ、バリデーション、ミドルウェア、よくあるエラー、日付処理、レスポンスなど、さまざまな項目を網羅しています。これらのリソースを活用することで、Golangの開発をよりスムーズに進めることができます。

Discussion