go-utils

module
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 25, 2026 License: MIT

README

📚 Go Utils

CI Language Go Version GitHub tag (latest by date)

Go Utils は、Go言語でアプリケーションを開発する際に繰り返し必要となる、汎用的なユーティリティ機能を集めたライブラリです。

このプロジェクトは、それぞれの機能が独立したパッケージとして提供されており、必要な機能のみをアプリケーションにインポートして利用することで、クリーンな依存関係を維持できます。

✨ 特徴

  • モジュール性: 各ユーティリティが独立したGoパッケージとして提供されます。

🛠️ インストール

プロジェクト全体をインストールするには、以下のコマンドを使用します。

go get github.com/shouni/go-utils

特定のパッケージのみを利用する場合は、そのパッケージをインポートしてください(例: import "github.com/shouni/go-utils/urlpath")。


📦 パッケージ構成 (Package Structure)

以下のパッケージがこのリポジトリで提供されています。

パッケージ 説明 主な提供機能 関連情報
urlpath URLやリモートURI(GCS/S3)の解決を行い、クラウドとローカルを透過的に扱います。 クラウドURI判定 (IsRemoteURI)、パスの結合 (ResolvePath)、ディレクトリ解決 (ResolveBaseDir)、連番付与 (GenerateIndexedPath) リファクタ済
giturl GitリポジトリURLの解析と、安全で一意な名前の生成を行います。 リポジトリパス抽出 (GetRepositoryPath)、GCSキー名/一意なローカルパスの生成 (GenerateGCSKeyName, SanitizeURLToUniquePath) urlpath から分離
iohandler ファイルI/Oと標準入出力を抽象化します。CLIアプリケーションでの処理を簡潔にします。 ファイル/標準入力の読込 (ReadInput)、ファイル/標準出力への書込 (WriteOutput) -
envutil 環境変数の取得と型変換を安全に行うヘルパーを提供します。 環境変数取得 (GetEnv)、ブール値への変換 (GetEnvAsBool)、整数への変換 (GetEnvAsInt) -
timeutil 日本標準時 (JST) への変換など、時刻処理を単純化します。 JST現在時刻の取得 (NowJST)、任意の時刻をJSTへ変換 (ToJST) -
text テキストデータのクリーンアップと整形を行います。 絵文字除去 (CleanStringFromEmojis)、マルチバイト対応の切詰め (Truncate)、リストパース forPelevin/gomoji 利用
jobid 非同期ジョブ識別子の生成・検証・正規化を行います。ジョブ ID は URL パスとストレージパスの双方に現れるため、検証はセキュリティ境界を兼ねます。 検証 (Validate, IsValid)、パストラバーサル対策の正規化 (Sanitize)、辞書順ソート可能な ID 生成 (New) 外部依存なし
slogctx context に積んだ属性を自動付与する slog.Handler を提供します。リクエスト ID やジョブ ID を各ログ呼び出しへ配って回らずに相関できます。 ログレベル解決 (ParseLevel)、属性の積み上げ (With, Attrs)、ハンドラーのラップ (NewHandler) 外部依存なし・出力フォーマットには関与しない

🚀 クイックスタート

パスの解決 (urlpath)
import "github.com/shouni/go-utils/urlpath"

// リモート(gs://等)かローカルかを問わず、適切にパスを結合します
path, _ := urlpath.ResolvePath("gs://my-bucket/images", "photo.png")
// path => "gs://my-bucket/images/photo.png"

GitリポジトリURLの安全な名前生成 (giturl)
import "github.com/shouni/go-utils/giturl"

// GCSオブジェクトキーやローカル一時ディレクトリ名として使える、衝突しない安全な名前を生成します
name := giturl.GenerateGCSKeyName("git@github.com:owner/repo.git")
// name => "github-com-owner-repo-xxxxxxxx" (末尾はSHA-256ハッシュの先頭8桁)


📜 ライセンス (License)

このプロジェクトは MIT License の下で公開されています。


Directories

Path Synopsis
Package envutil は、環境変数の取得と型変換を安全に行うヘルパー関数を提供します。
Package envutil は、環境変数の取得と型変換を安全に行うヘルパー関数を提供します。
Package giturl は、GitリポジトリのURL(HTTPS/SSH)を解析し、 表示用のリポジトリパスや、GCSキー名・一時ディレクトリ名として使える 安全で一意な名前を生成するユーティリティ関数を提供します。
Package giturl は、GitリポジトリのURL(HTTPS/SSH)を解析し、 表示用のリポジトリパスや、GCSキー名・一時ディレクトリ名として使える 安全で一意な名前を生成するユーティリティ関数を提供します。
Package iohandler は、ファイルまたは標準入力からのコンテンツの読み込みと、 ファイルまたは標準出力へのコンテンツの書き出しを行うユーティリティ関数を提供します。
Package iohandler は、ファイルまたは標準入力からのコンテンツの読み込みと、 ファイルまたは標準出力へのコンテンツの書き出しを行うユーティリティ関数を提供します。
Package jobid は、非同期ジョブの識別子(ジョブ ID)の生成・検証・正規化を行います。
Package jobid は、非同期ジョブの識別子(ジョブ ID)の生成・検証・正規化を行います。
Package slogctx は、context に積んだ属性を自動で付与する slog.Handler と、 ログレベルの解決ヘルパーを提供します。
Package slogctx は、context に積んだ属性を自動で付与する slog.Handler と、 ログレベルの解決ヘルパーを提供します。
Package text は、テキストデータのクリーンアップと整形(絵文字除去、空白正規化、 マルチバイト対応の切り詰め、リストパースなど)を行うユーティリティ関数を提供します。
Package text は、テキストデータのクリーンアップと整形(絵文字除去、空白正規化、 マルチバイト対応の切り詰め、リストパースなど)を行うユーティリティ関数を提供します。
Package timeutil は、日本標準時 (JST) への変換やフォーマットなど、 時刻処理を単純化するユーティリティ関数を提供します。
Package timeutil は、日本標準時 (JST) への変換やフォーマットなど、 時刻処理を単純化するユーティリティ関数を提供します。
Package urlpath は、URLやリモートURI(GCS/S3)の解決を行い、 クラウドストレージとローカルファイルシステムのパスを透過的に扱うためのユーティリティ関数を提供します。
Package urlpath は、URLやリモートURI(GCS/S3)の解決を行い、 クラウドストレージとローカルファイルシステムのパスを透過的に扱うためのユーティリティ関数を提供します。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL