はじめに
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 を試してみてください。
関連する技術ブログ
Go × Echoで始めるWebサーバ構築入門:シンプル・高速なAPI開発を最短で学ぶ
Go言語で軽量・高速なWebアプリケーションを構築したい方へ。人気フレームワーク「Echo」の導入から基本構造、ルーティング、レスポンス、ミドルウェアの使い方までを、実践的なサンプルコードとともにわかりやすく解説します。Ginとの違いにも触れながら、最小構成でWebサーバを立ち上げるまでを丁寧にガイドします。
shinagawa-web.com
Go × Gin 応用編:実践テクニックとスケーラブルなAPI設計
Ginの強力な機能を活かし、認証・バリデーション・テスト・本番運用までを体系的に学びます。さらに、スケーラブルなAPI設計の考え方も取り上げ、実務に活かせる応用編です。
shinagawa-web.com
Go × Gin 基礎編:高速APIサーバーの作り方を徹底解説
Go言語の特性を活かし、Ginフレームワークでシンプルかつ強力なAPIサーバーを構築する方法をステップバイステップで解説します。インストールからミドルウェア、サンプルAPI作成まで、実践的な内容を盛り込んだ入門記事です。
shinagawa-web.com
Go + Gin + GORMで作る記事&いいねAPI(Part 1)まずは“動かすこと優先のコントローラー”で全部入りCRUD
Go + Gin + GORMで作る記事&いいねAPI(Part 1)まずは“動かすこと優先のコントローラー”で全部入りCRUD
shinagawa-web.com
Go × Gin でMVC構成のブログ記事投稿用Web APIを構築する:基礎からスケーラブル設計まで
Go言語とGinフレームワークを使って、MVC構成のWeb APIを一から構築していきます。ディレクトリ設計からルーティング、ミドルウェアの活用まで、実践的なコードで丁寧に解説。スケーラブルな設計の基本を学びたい方におすすめの入門編です。
shinagawa-web.com
Go × Gin × MVC構成で実践する堅牢なテスト設計と実装ガイド
単体テスト、統合テスト、E2Eテストを通して、GinベースのMVC構成アプリを堅牢に育てる方法を解説します。httptestの使い方やモックの作り方、共通処理の抽出など、実務に活かせるテスト設計のエッセンスを凝縮しました。
shinagawa-web.com
Go + Ginアプリを本番品質に仕上げる:設定・構成・CI導入まで
アプリを「動く」から「本番で保てる」品質へ引き上げるために、設定ファイルの整理、依存の分離、GitHub ActionsによるCI導入までを解説します。小規模開発からチーム開発へスムーズに移行したい方に向けた応用編です。
shinagawa-web.com
Go言語でWeb APIサーバーを作る完全ガイド|設計・開発フロー・テスト・CI/CDまで徹底解説
Go言語でWeb APIサーバーを作りたい方向けに、設計方針、APIスキーマ(OpenAPI/Swagger)、エンドポイント実装、テスト(単体・統合・E2E)、ミドルウェアの設定、CI/CD自動化までを詳しく解説します。初心者でもわかりやすく、開発フローを段階的にまとめた完全ガイドです。
shinagawa-web.com