3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「テスト文字列に"うんこ"と入れてみよう!」

Posted at

概要

何度もお会いしてる札幌のまついしゃちょーことインフィニットループ会長松井さんの恒例資料「テスト文字列に“うんこ”と入れるな 2025 年版」が 30 万 View を達成したので、これに “アンサーソング” として開発者目線の実践ネタを盛り込んだ Qiita 記事を書きました。主眼は 「笑いを取りつつ CI/CD に組み込める具体的対策を提示」 です。 

image.png

アンサーソングです。


🍜 TL;DR

  • “うんこ混入” は技術的負債の臭い玉

    • 問題は ネタ文字列 自体より「テスト≒冗談でも本番に漏れる設計」のほう。
  • 処方箋 3 点セット

    1. git bisect unko ワンライナー:犯人コミットを 10 sec で隔離。
    2. Pre-commit Hook & CI Regex Guard(?i)(unko|💩) を検出したら即失敗。
    3. Data-Masking/ダミー生成:テストデータは “合コン相手の名前” ではなく faker で生成。
  • やらかした時のインシデントレスポンス

    • git revert && git push --force-with-lease+ Slack #postmortem で初動 1 時間。
    • それでもニュース化したら 「うんこ 2025」 の資料に逆輸入してネタにする。

1️⃣ 元記事を 3 行で復習

概要 View 数
2021 初出。「人類はうんこに勝てない」宣言 (北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ)
2024 23 万 View、はてブ総合 1 位 (ITmedia) 230 k
2025 30 万 View、最新事例 & スライド追加 (北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ, Speaker Deck) 300 k

2️⃣ なぜ “うんこ” は漏れるのか

2.1 ヒューマンファクター

2.2 プロセスと設計

  • Reviewフローにユーモア検知がない
  • 本番 DB に直アクセスできる権限モデル

git bisectを覚えよう!

git エイリアス化sやらかし検出:git bisect unko

git config --global alias.unko '!f() { \
  git bisect reset; \
  git bisect start; \
  git bisect bad HEAD; \
  git bisect good $(git rev-list --max-parents=0 HEAD); \
  git bisect run sh -c '\''git grep -iqE "(unko|💩)" && exit 1 || exit 0'\''; \
}; f'

  • 使い方:git unko で二分探索スタート。
  • ツイ主も alias 化してた (X (formerly Twitter))
  • git bisect の基本はこの Qiita 記事が丁寧 (Qiita)

4️⃣ 予防策:CI/CD に仕込む 2 行

- name: unko-lint
  run: |
    if grep -r -i -E "(unko|💩)" --exclude-dir=.git .; then exit 1; fi
  • GitHub Actions / GitLab CI どちらでも OK。
  • “爆速差分 grep” なら ripgrep がベター。
  • 専用ルールを組むなら Envader の解説が分かりやすい (エンベーダー)

5️⃣ 根本解決:テストデータを “マスキング” せよ

  1. 生成系ライブラリ faker

  2. DB レベルの Data-Masking(Oracle/AWS 例)

  3. Privacy by Design を工程に組み込む (AWSドキュメント)


6️⃣ インシデントが炎上したら

秒数 アクション
+00:00 Hook でビルド落ち、Slack に @channel 💩 Detected
+00:15 git unko → 犯人コミット PO に DM
+00:30 revert --no-edit, 強制プッシュ
+05:00 ポストモーテムドラフト/再発防止策を Notion 共有
+60:00 外部から記事化 → 逆手に取って “ネタとして再発信” (例: GameMakers 記事) (ゲームづくりの最新情報やアイデアを紹介!|ゲームメーカーズ)

7️⃣ “うんこ警察” Slack Bot (オマケ)


8️⃣ まとめ & Call-To-Action

「うんこは文化、でも本番 DB は聖域」

本記事のサンプル Hook/Bot スクリプトは Gist に置いたので、導入して “うんこゼロ運動” を始めよう。
もし “うんこ誤爆” を防げたら、ぜひ #うんこレス開発 ハッシュタグでシェアしてバズらせてください。


参考リンク

  1. インフィニットループ公式 2025 年版記事 (北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ)
  2. ITmedia ニュースまとめ (ITmedia)
  3. 2021 年初版資料 (北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ)
  4. SpeakerDeck(2025 年版スライド) (Speaker Deck)
  5. GOROman ツイート①(記事共有) (X (formerly Twitter))
  6. GOROman ツイート②(git unko alias) (X (formerly Twitter))
  7. Qiita: git bisect 入門 (Qiita)
  8. Envader+: git bisect 詳解 (エンベーダー)
  9. GameMakers: ネタ記事化 (ゲームづくりの最新情報やアイデアを紹介!|ゲームメーカーズ)
  10. Oracle Data-Masking Best Practice PDF (オラクル)
  11. AWS Well-Architected Lens: Mask Test Data (AWSドキュメント)
  12. Privacy by Design (AWS) (AWSドキュメント)

バグも💩もゼロで行こうぜ。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?