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

## 概要

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


https://www.infiniteloop.co.jp/tech-blog/2025/05/unko2025/


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30621/eb1c8650-4e5c-4934-90a8-c13d59d1fc7d.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・ゲーム・システム開発 インフィニットループ][1])                         | ―      |
| 2024 | 23 万 View、はてブ総合 1 位 ([ITmedia][2])                                                       | 230 k  |
| 2025 | 30 万 View、最新事例 & スライド追加 ([北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ][3], [Speaker Deck][4]) | 300 k  |

---

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

### 2.1 ヒューマンファクター

* 新人は「とりま文字列入れとこ」で **`"unko"`** を打つ → 後で忘れる。

  * 会長も「うんこの人」と呼ばれて胃が痛いらしい ([北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ][3])

### 2.2 プロセスと設計

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

---

## git bisectを覚えよう！

https://x.com/GOROman/status/1786364125167358066

## git エイリアス化ｓやらかし検出：`git bisect unko`

```bash
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'
```


https://x.com/GOROman/status/1786386532670292237


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

---

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

```yaml
- 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 の解説が分かりやすい ([エンベーダー][7])

---

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

1. **生成系ライブラリ `faker`**

2. **DB レベルの Data-Masking**（Oracle/AWS 例）

   * Oracle のベストプラクティス ([オラクル][8])
   * AWS Analytics Lens: 「非本番は全部マスク」 ([AWSドキュメント][9])

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

---

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

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

---

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

* **Events API** → `message.channels` で流量監視
* regex マッチしたら `🤮` リアクション＋スレッドでベストプラクティス URL を自動投稿
* 歴代スライドも自動リンクすることで教育コスト削減 ([北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ][3], [Speaker Deck][4])

---

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

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

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

---

### 参考リンク

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

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

[1]: https://www.infiniteloop.co.jp/tech-blog/2021/09/unko/?utm_source=chatgpt.com "新卒向け研修資料「テスト文字列に”うんこ”と入れるな」を公開しま ..."
[2]: https://www.itmedia.co.jp/news/articles/2505/15/news120.html?utm_source=chatgpt.com "「テスト文字列にうんこと入れるな」 ゲーム会社の新卒向け資料 ..."
[3]: https://www.infiniteloop.co.jp/tech-blog/2025/05/unko2025/ "今年も出たぞ！「テスト文字列にうんこ入れるな」研修資料2025年版！〖祝・30万View突破〗｜技術ブログ｜北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ"
[4]: https://speakerdeck.com/infiniteloop_inc/xin-zu-xiang-keyan-xiu-zi-liao-tesutowen-zi-lie-ni-unko-toru-reruna-2025nian-ban?utm_source=chatgpt.com "[新卒向け研修資料] テスト文字列に「うんこ」と入れるな（2025 ..."
[5]: https://twitter.com/GOROman/status/1786386532670292237/history?utm_source=chatgpt.com "Edit History / X"
[6]: https://qiita.com/usamik26/items/cce867b3b139ea5568a6?utm_source=chatgpt.com "git bisect で問題箇所を特定する - Qiita"
[7]: https://envader.plus/article/395?utm_source=chatgpt.com "Gitコマンドでバグが混入したコミットを見つける！便利な「git ..."
[8]: https://www.oracle.com/mx/a/tech/docs/technical-resources/data-masking-best-practices.pdf?utm_source=chatgpt.com "[PDF] Data Masking Best Practice - Oracle"
[9]: https://docs.aws.amazon.com/ja_jp/wellarchitected/latest/analytics-lens/best-practice-2.2---create-test-data-and-provision-staging-environment..html?utm_source=chatgpt.com "Best practice 2.2 – Create test data and provision staging environment"
[10]: https://docs.aws.amazon.com/wellarchitected/latest/analytics-lens/best-practice-3.1-privacy-by-design..html?utm_source=chatgpt.com "Best practice 3.1 – Privacy by Design - Data Analytics Lens"
[11]: https://gamemakers.jp/article/2025_05_14_102815/?utm_source=chatgpt.com "『テスト文字列に「うんこ」と入れるな』2025年版が公開。国交省 ..."
[12]: https://twitter.com/GOROman/status/1786364125167358066?utm_source=chatgpt.com "GOROman on X: \"うんこ混入の犯人を二分探索で探すgit bisect git ..."