はじめに
Go を使っていると、[]string を扱う機会は意外と多いのではないでしょうか。
ログを解析したり、入力データを整形したり、ファイルから読み込んだ値を加工したり…。
しかしそのたびに「重複削除」「空文字の除去」「前後のスペース除去」など、毎回ちょっとした処理を書くのは面倒です。
そこで、よく使う処理をひとまとめにした小さなユーティリティパッケージ strlistutils を OSS として公開しました。
背景
Go 標準ライブラリはシンプルで強力ですが、文字列スライスを直接便利に扱う関数群は多くありません。
よくあるパターンとしては以下のようなものがあります:
- for ループで自前実装する(毎回書き直しになる)
- map[string]struct{} を併用して重複除去する(コードが長くなる)
- ちょっとした処理のためにサードパーティ製の巨大なユーティリティを入れるのは気が引ける
この「小さなニーズ」を埋めるのが strlistutils です。
小さく・依存ゼロ・シンプル という点を大切にしています。
概要
-
🧰 ユーティリティ関数群
[]string に対する基本的な操作をひとまとめ -
📦 依存ゼロ
どんなプロジェクトにも安心して導入可能 -
🧪 テスト充実
Unit / Benchmark / Fuzz test を整備
提供している関数一覧
| 関数名 | 説明 |
|---|---|
RemoveDuplicates |
重複を削除し、最初に出現した順序を保持する |
TrimEach |
各要素の前後スペースを除去 |
FilterEmpty |
空文字列を除去 |
Map |
各要素に関数を適用 |
Filter |
条件に合う要素だけを残す |
Join |
区切り文字で結合 |
Reverse |
要素の順序を逆転させる |
シンプルですが、実務で「毎回書いてるな…」という処理は大体カバーできているかと思います。
インストール方法
バージョンを指定して導入できます
go get github.com/shinagawa-web/strlistutils@v0.3.0
ライブラリは安定を重視していますが、念のため 特定のタグを固定 することを推奨します。
使用例
例えば次のように「空白除去」「重複削除」「空文字除去」を一気に処理できます。
package main
import (
"fmt"
"github.com/shinagawa-web/strlistutils"
)
func main() {
input := []string{" a ", "b", "a", " ", "c"}
result := strlistutils.RemoveDuplicates(
strlistutils.FilterEmpty(
strlistutils.TrimEach(input),
),
)
fmt.Println(result) // 出力: ["a", "b", "c"]
}
単体の関数はもちろん、組み合わせることでデータクリーニングを簡潔に書けます。
品質管理への取り組み
開発者が安心して利用できるよう、テストと品質チェックを徹底しています。
- ユニットテスト:全関数に対してテストを用意
- ベンチマークテスト:性能面を確認可能
- ファジングテスト:思わぬ入力に対する堅牢性を担保
- CI/CD:GitHub Actions による自動テストと Codecov でのカバレッジ可視化
コントリビューション募集
当面は「軽量・安定」を維持する方針ですが、もし「こんなユーティリティが欲しい!」という要望があれば、Issue や PR を歓迎します。
まとめ
- Go 標準では地味に面倒な
[]string操作を補完 - 小さくシンプルで依存ゼロ
- テストや CI で品質も担保
ぜひ、日々の開発で「毎回同じ処理を書いているな」と思ったときに strlistutils を試してみてください。
関連する技術ブログ
キャッシュ戦略完全ガイド:CDN・Redis・API最適化でパフォーマンスを最大化
2024/03/07Go × Echoで始めるWebサーバ構築入門:シンプル・高速なAPI開発を最短で学ぶ
2023/12/03Go × Gin 応用編:実践テクニックとスケーラブルなAPI設計
2023/11/29Go × Gin 基礎編:高速APIサーバーの作り方を徹底解説
2023/11/23Go + Gin + GORMで作る記事&いいねAPI(Part 1)まずは“動かすこと優先のコントローラー”で全部入りCRUD
2025/07/13Go × Gin でMVC構成のブログ記事投稿用Web APIを構築する:基礎からスケーラブル設計まで
2023/12/03Go × Gin × MVC構成で実践する堅牢なテスト設計と実装ガイド
2023/12/04Go + Ginアプリを本番品質に仕上げる:設定・構成・CI導入まで
2023/12/06