Go向け文字列スライス操作ユーティリティ「strlistutils」を公開しました

  • golang
    golang
  • opensource
    opensource
2025/06/19に公開

はじめに

Go を使っていると、[]string を扱う機会は意外と多いのではないでしょうか。
ログを解析したり、入力データを整形したり、ファイルから読み込んだ値を加工したり…。

しかしそのたびに「重複削除」「空文字の除去」「前後のスペース除去」など、毎回ちょっとした処理を書くのは面倒です。
そこで、よく使う処理をひとまとめにした小さなユーティリティパッケージ strlistutils を OSS として公開しました。

https://pkg.go.dev/github.com/shinagawa-web/strlistutils

背景

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 を歓迎します。

https://github.com/shinagawa-web/strlistutils/issues

まとめ

  • Go 標準では地味に面倒な []string 操作を補完
  • 小さくシンプルで依存ゼロ
  • テストや CI で品質も担保

ぜひ、日々の開発で「毎回同じ処理を書いているな」と思ったときに strlistutils を試してみてください。

https://github.com/shinagawa-web/strlistutils

https://pkg.go.dev/github.com/shinagawa-web/strlistutils

Xでシェア
Facebookでシェア
LinkedInでシェア

記事に関するお問い合わせ📝

記事の内容に関するご質問、ご意見などは、下記よりお気軽にお問い合わせください。
ご質問フォームへ

技術支援などお仕事に関するお問い合わせ📄

技術支援やお仕事のご依頼に関するお問い合わせは、下記よりお気軽にお問い合わせください。
お問い合わせフォームへ

関連する技術ブログ