Skip to content
Published on

監視インフラを作る手 — 開発者倫理とプライバシーエンジニアリング

Authors

はじめに — なぜ今このテーマなのか

2026年の技術コミュニティにおいて、監視(surveillance)はもはや陰謀論者の言葉ではありません。ここ数か月、GeekNews と Hacker News の上位を占めた三つの流れが、このテーマを正面から押し上げました。

第一に、Oracle 共同創業者 Larry Ellison の発言が再び話題になっています。AI ベースの監視システムを論じながら、彼はこう言いました。「市民は最善の行動をとるようになる。我々が起きているすべてを常時録画し報告するからだ」。治安向上の約束として包装されましたが、多くの人にとってこの文章は、プライバシー侵食に対するディストピア的警告文のように読めました。そして Oracle は、実際にそうしたインフラを売れる会社です。

第二に、coveillance.org の「シアトル監視インフラ徒歩ツアー」という記事が Hacker News で大きな話題になりました。普通の街路を歩きながら、CCTV、ナンバープレート自動認識装置(ALPR)、交通センサー、私設ドアベルカメラがどこにどう埋め込まれているかを案内するこの記事は、監視が抽象的な言説ではなく、物理的に存在する都市基盤であることを示しました。

第三に、複数の国で進行中の年齢認証義務化の立法です。未成年者保護という名分の下、アダルトサイトや SNS へのアクセスに本人確認を要求する法律が拡散しています。保護の目的は正当ですが、実装方式によっては「すべての市民のインターネット利用に実名タグを付ける」インフラになり得るという点で、技術コミュニティの論争が熱いのです。

この三つの流れの共通点は何でしょうか。それらのシステムはすべて、我々のような開発者が作るということです。カメラのファームウェア、映像分析モデル、位置データパイプライン、年齢認証 API — どれもひとりでに生まれはしません。本稿は「監視技術は悪だ」という宣言文ではなく、その技術を作る席に座った開発者が持つべき判断基準と実務の道具(プライバシーエンジニアリング)を整理する記事です。

2026年監視論争の地形

まず論争の軸を整理します。監視技術をめぐる立場は単純な賛否ではなく、おおよそ四つの象限に分かれます。

                    安全優先
                       |
        (A) 全面導入    |   (B) 条件付き導入
        「技術が犯罪を   |   「効果の立証 + 令状主義
         予防する」     |    + 監査可能性が前提」
                       |
  国家/企業の統制 ------+------ 市民の統制
                       |
        (C) 全面反対    |   (D) 設計で牽制
        「監視インフラは |   「作るとしても最小化/
         存在自体が     |    分散化/透明性を
         危険」        |    技術で強制」
                       |
                    自由優先

開発者の視点から見て現実的な立ち位置は、ほとんどの場合 (B) と (D) の間です。我々は通常、システム導入の可否を決める席にはいませんが、どう作るかは相当部分、我々の手の中にあるからです。同じ要件でも、「全国民の位置履歴を中央 DB に平文で5年保管」と「端末内処理 + 集計のみ送信 + 90日自動破棄」は完全に別のシステムです。

監視技術のスペクトラム — 何がどこまで来ているか

徒歩ツアーの記事が示すように、監視は単一の技術ではなく、幾重ものレイヤーです。

レイヤー代表技術収集情報核心の争点
固定映像CCTV、私設ドアベルカメラ映像、時間、場所公的空間と私的空間の境界
車両追跡ALPR(ナンバープレート自動認識)車両移動履歴一枚は無害、連結されれば移動パターン全体
生体認識顔認識、歩行パターン認識身元そのもの取り消し不可能な識別子、誤認識バイアス
位置データ通信基地局、アプリ SDK、データブローカー精密位置履歴同意の形骸化、再販エコシステム
オンライン行動トラッキングピクセル、広告 ID、フィンガープリンティング閲覧/購買/関心事プロファイリングとダークパターン
身元ゲート年齢認証、実名制身元と行動の連結環匿名性の終焉の可能性

重要な洞察は、危険がレイヤー単独ではなく結合から来るということです。ALPR 一台は盗難車を探す道具ですが、都市全体の ALPR 記録を時系列で連結すれば、特定の市民がいつ病院、集会、宗教施設に行ったかを復元できます。データブローカーのエコシステムは、この結合を商業的に実行しています。だからプライバシーエンジニアリングの核心の問いは「このデータが流出したら?」ではなく「このデータが他のデータと結合されたら?」なのです。

開発者が直面する瞬間 — 倫理は抽象ではなくチケットとして来る

倫理的選択はたいてい、大げさな会議ではなく平凡な業務チケットの姿でやって来ます。実際に直面する場面を見てみましょう。

場面1: ロギングの過剰収集

「デバッグのためにリクエスト全体をロギングしてください」というチケット。リクエストボディにはユーザーの検索語、位置、時には健康関連のキーワードが入っています。全量ロギングはデバッグには便利ですが、そのログは事実上シャドープロファイルになります。アクセス制御の甘いログシステムは、会社で最大の非公式監視インフラであることが多いのです。

場面2: トラッキング SDK の追加依頼

マーケティングチームがコンバージョン測定のためにサードパーティ SDK の追加を依頼します。SDK のドキュメントを読むと、広告 ID、インストール済みアプリ一覧、精密位置まで収集しています。「うちはコンバージョンデータしか使いません」と言っても、データは SDK ベンダーのサーバーへ行き、彼らの規約に従って再利用されます。あなたが追加した一行の SDK が、ユーザーの位置をデータブローカーのエコシステムへ送る最初の関門になり得ます。

場面3: ダークパターンの要求

「同意率が低いので、拒否ボタンを二階層奥に移してください」という依頼。法的には同意を取ったと主張できるかもしれませんが、設計意図そのものがユーザーの真意を迂回するものです。GDPR も韓国の個人情報保護法も、形式的同意ではなく実質的同意を求める方向で執行が強化されてきており、ダークパターン自体を制裁した事例も積み上がっています。

場面4: 「とりあえず全部集めておこう」

「後で何が必要になるか分からないから、とりあえず全部収集してデータレイクに入れておこう」というアーキテクチャ決定。機械学習時代のよくある誘惑ですが、目的のない収集はほとんどの個人情報法制でそれ自体違法の恐れがあり、セキュリティ事故の際に被害範囲を際限なく拡大させます。2026年の npm サプライチェーン攻撃の事例が示すように、侵害は「あうかどうか」ではなく「いつあうか」の問題です。持っていないデータは流出しません。

プライバシーエンジニアリング実務 1 — データ最小化の設計

原則は一文です。目的に必要な最小限だけを、必要な期間だけ、必要な人にだけ。 これをコードとスキーマのレベルで強制するのがプライバシーエンジニアリングです。

収集時点の最小化 — スキーマで強制する

-- 悪い設計: 「とりあえず全部保存」
CREATE TABLE user_events_bad (
    id          BIGSERIAL PRIMARY KEY,
    user_id     BIGINT,
    raw_request JSONB,          -- リクエスト全体のダンプ(検索語、位置、すべて)
    ip_address  INET,
    user_agent  TEXT,
    created_at  TIMESTAMPTZ
);

-- 良い設計: 目的別カラム + 仮名化 + 保存期限の内蔵
CREATE TABLE user_events (
    id            BIGSERIAL PRIMARY KEY,
    user_pseudo   TEXT NOT NULL,        -- 一方向の仮名 ID(原本マッピングは分離保管)
    event_type    TEXT NOT NULL,        -- 定義済みイベントのみ(自由テキスト禁止)
    coarse_geo    TEXT,                 -- 都道府県レベルに切り詰めた位置
    created_at    TIMESTAMPTZ NOT NULL DEFAULT now(),
    expires_at    TIMESTAMPTZ NOT NULL  -- 行単位の保存期限をデータに内蔵
        DEFAULT now() + INTERVAL '90 days'
);

-- 破棄を運用手順ではなくシステムの動作に
CREATE INDEX idx_user_events_expiry ON user_events (expires_at);

ポイントは expires_at です。保存期限をポリシー文書にだけ書いておいても誰も守りません。行単位で満了時刻を刻み、削除ジョブがそのカラムだけを見て動くようにすれば、保存ポリシーはコードになります。

保存期限の自動化 — 破棄をデフォルトに

# retention_worker.py — 保存期限を自動執行するワーカー
import logging
from datetime import datetime, timezone

RETENTION_POLICIES = {
    # テーブル: (保存根拠, 破棄方式)
    "user_events":      ("サービス品質分析、90日", "hard_delete"),
    "access_logs":      ("セキュリティ監査、180日", "hard_delete"),
    "payment_records":  ("税法上の義務保存5年",     "archive_then_delete"),
    "support_tickets":  ("紛争対応3年",            "anonymize"),  # 削除の代わりに匿名化
}

def enforce_retention(db, now=None):
    now = now or datetime.now(timezone.utc)
    report = []
    for table, (basis, method) in RETENTION_POLICIES.items():
        if method == "hard_delete":
            n = db.execute(
                f"DELETE FROM {table} WHERE expires_at < %s", (now,)
            ).rowcount
        elif method == "anonymize":
            n = db.execute(
                f"UPDATE {table} SET user_pseudo = 'expired', "
                f"free_text = NULL WHERE expires_at < %s", (now,)
            ).rowcount
        else:
            n = archive_then_delete(db, table, now)
        report.append((table, basis, method, n))
        logging.info("retention: table=%s purged=%d basis=%s", table, n, basis)
    return report  # このレポート自体がコンプライアンスの証跡になる

三点を強調したいです。

  1. 破棄ログこそが証跡です。 「我々は90日後に破棄する」という主張は、破棄ジョブの実行記録があって初めて意味を持ちます。
  2. 法定保存義務との衝突をポリシーテーブルに明示してください。 決済記録のように税法上保存すべきデータは、「なぜ残すのか」の根拠をコードの隣に書いておきます。
  3. バックアップまで追跡してください。 本番 DB から消してもバックアップに7年分が残っていれば破棄ではありません。バックアップのローテーション周期と保存ポリシーを整合させるところまでが仕事です。

目的制限 — データに用途タグを付ける

# data-catalog.yaml — データセットごとの目的制限宣言の例
datasets:
  - name: user_events
    purpose: ["service_quality", "abuse_prevention"]
    prohibited: ["ad_targeting", "sale_to_third_party", "model_training"]
    legal_basis: "正当な利益(利用規約7条)"
    owner: data-platform-team
    review_cycle: quarterly

  - name: precise_location
    purpose: ["delivery_routing"]
    prohibited: ["analytics", "retention_beyond_delivery"]
    legal_basis: "明示的同意(位置情報サービス同意)"
    owner: delivery-team
    review_cycle: monthly

このカタログがあれば、「このデータを推薦モデルの学習に使ってもいいですか?」という質問に勘で答えなくなります。アクセス要求時に purpose のマッチングを自動検査するデータプラットフォームまで行けば理想的ですが、YAML 一枚と四半期ごとのレビューだけでも、無断の用途拡大(purpose creep)のかなりの部分を防げます。

プライバシーエンジニアリング実務 2 — 匿名化と差分プライバシーの基礎

匿名化は思ったより難しい

名前と ID 番号さえ消せば匿名だという考えは、とうの昔に崩れました。生年月日 + 性別 + 郵便番号の組み合わせだけで米国人口の大多数が一意に識別されるという古典的研究があり、Netflix の視聴記録のような行動データは数ポイントだけで再識別が可能でした。位置履歴はさらに深刻で、3、4個の時空間ポイントがあればほとんどの個人が特定されます。

だから実務の匿名化は「識別子の削除」ではなく、結合攻撃を前提にした設計です。k-匿名性(同じ属性の組み合わせを持つ人が最低 k 人)、切り詰め(位置を都道府県レベルに)、集計(個人の行ではなく統計のみ保管)といった技法を組み合わせます。

差分プライバシー — 概念と限界

差分プライバシー(differential privacy)は、「ある個人がデータセットに含まれていてもいなくても、分析結果がほとんど変わらないように」ノイズを注入する数学的フレームワークです。直観をコードで見るとこうなります。

# dp_count.py — ラプラスノイズを用いた差分プライバシーカウント(概念例)
import numpy as np

def dp_count(true_count: int, epsilon: float) -> float:
    """epsilon が小さいほどプライバシー保護は強く、結果はより不正確。
    カウントクエリの感度(sensitivity)は1: 一人の有無が
    結果を最大1だけ変える。"""
    sensitivity = 1.0
    noise = np.random.laplace(loc=0.0, scale=sensitivity / epsilon)
    return true_count + noise

# 使用例: 「先週の機能A利用者数」を外部レポートに出すとき
true_value = 1843
print(dp_count(true_value, epsilon=1.0))   # 例: 1841.7 — 十分有用
print(dp_count(true_value, epsilon=0.05))  # 例: 1812.3 — 保護は強いが誤差大

知っておくべき限界も明確です。

  1. プライバシー予算(epsilon)は消耗品です。 同じデータへの問い合わせを繰り返すほど累積露出が大きくなります。予算会計なしに「ノイズを混ぜたから安全」と言うのは差分プライバシーではありません。
  2. 小規模データには過酷です。 数十人単位の分析に十分なノイズを入れると結果が無意味になります。大規模な集計統計に向いた道具です。
  3. DP は出力の保護であって、収集の免罪符ではありません。 原本を過剰収集しておいて出力にだけ DP を適用するのは半分の解決策です。収集の最小化が常に先です。

プライバシー影響評価(PIA) — 軽量テンプレート

正式な PIA は重いですが、機能単位の軽量バージョンはスプリントの中で消化できます。設計レビューのテンプレートに以下の1ページを追加するところから始めてみてください。

=== 軽量プライバシー影響評価(機能単位、30分バージョン) ===

1. 何を収集するのか
   - 新たに収集するデータ項目:
   - そのうち個人情報/機微情報に該当する項目:
   - 未成年者データが含まれる可能性: はい / いいえ

2. なぜ必要なのか(目的の明細)
   - この機能の目的:
   - 各項目がその目的に必須である理由(項目ごとに一行):
   - より少ないデータで同じ目的を達成する代替案の検討結果:

3. どこへ流れるのか(フロー)
   - 保存場所と暗号化の有無:
   - サードパーティへの送信の有無(SDK/API 含む):
   - 他のデータと結合される可能性:

4. いつ消えるのか
   - 保存期限とその根拠:
   - 破棄方式(自動/手動、hard delete/匿名化):
   - バックアップ内の残存期間:

5. 何が間違い得るのか
   - 流出時の最悪シナリオ:
   - 結合攻撃シナリオ(他のデータと合わさったら?):
   - 内部者の悪用シナリオとアクセス制御:

6. 決定
   - 進行 / 修正後進行 / 保留
   - 修正の条件:
   - レビュアー(開発/セキュリティ/法務)の署名:

このテンプレートの本当の価値は5番です。「流出したら?」だけでなく「結合されたら?」「内部者が悪用したら?」を問うた瞬間、評価の質が変わります。そして6番の記録が積み上がれば、組織は「我々があのとき何を知り、何を決定したか」を立証できるようになります。

断る技術 — 組織の中で異見を述べる方法

倫理的な懸念を感じることと、それを組織の中で効果的に提起することは、別のスキルです。順序があります。

ステップ1: 事実とコストの言語に翻訳する

「これは非倫理的です」は議論を閉じる文章です。同じ内容をコストとリスクの言語に翻訳すると議論が開きます。

  • 弱い言い方: 「ユーザーをこっそり追跡するのは間違っています」
  • 強い言い方: 「この SDK は精密位置をベンダーのサーバーへ送信します。同意画面にその事実がないため個人情報保護法違反の恐れがあり、発覚すれば課徴金と信頼の損失が予想されます。コンバージョン測定が目的なら、集計ベースの測定 API で同じ指標を得られます」

核心の構造は**事実(何が起きるか)+ リスク(法的/セキュリティ/評判)+ 代替案(目的を達成する別の方法)**です。代替案のない反対は拒否権の行使のように聞こえますが、代替案のある反対はエンジニアリングです。

ステップ2: 記録に残る異見の提起

口頭の反対は蒸発します。設計文書のレビューコメント、チケットの懸念事項欄、議事録の反対意見の記録のように、追跡可能なチャネルに残してください。これは自己防衛でもありますが、組織が後から「あのとき誰かが警告していた」という学習をできるようにする公共財でもあります。

ステップ3: エスカレーション経路 — はしごを一段ずつ

  1. 直属リードと1対1           -- 「この設計に懸念があります + 代替案」
       | 解消されなければ
       v
  2. 設計レビュー/アーキテクチャ会議 -- 公式の議題として上程、記録を残す
       | 解消されなければ
       v
  3. セキュリティ/プライバシー/法務 -- DPO、セキュリティチーム、コンプライアンスに助言要請
       | 解消されなければ
       v
  4. 倫理通報チャネル/オンブズマン  -- 匿名チャネルがあれば活用
       | 解消されなければ
       v
  5. 個人の選択                  -- プロジェクト異動の要請、転職、(最後に)内部告発

はしごを飛ばさないことが重要です。ステップ1~3で解決できる問題をステップ5に持ち込むと、組織と個人の両方のコストが大きくなります。逆に、ステップ1で黙殺されたからといって止まるのも、職業的責任を果たしたことにはなりません。

内部告発の現実 — 慎重に

ステップ3~4がすべて失敗し、事案が公共の安全や法律違反に関わるなら、内部告発という選択肢が残ります。ただし現実を直視する必要があります。内部告発者保護の法制は国によって強度が異なり、保護があっても経歴と生計のコストはしばしば告発者が負います。だから勧告は保守的です。第一に、まず弁護士に相談してください(メディアより先に)。第二に、会社の機密資料の無断持ち出しはそれ自体が法的リスクなので、証拠収集の方法も法律の助言を受けてください。第三に、韓国の公益申告者保護法、日本の公益通報者保護法など、公式の経路を優先的に検討してください。内部告発は倫理的英雄譚ではなく、他のすべての経路が失敗したときの最後の手段として残しておくのが正しいのです。

ACM 倫理綱領 — 開発者のための抜粋解説

ACM Code of Ethics は、ソフトウェア職種で最も広く引用される職業倫理綱領です。監視技術に直結する条項だけを抜き出します。

条項原則の要旨監視技術の文脈での意味
1.1社会と人間の福祉に貢献せよシステムの影響評価は株主ではなく、影響を受けるすべての人を基準に
1.2害悪を避けよ意図された機能だけでなく悪用の可能性まで設計責任に含む
1.6プライバシーを尊重せよ最小収集、明確な告知、目的外使用の禁止を明示的に要求
1.7秘密を尊重せよ職務上知った情報の扱い — ただし法と倫理の違反の隠蔽には適用されない
2.5徹底した影響評価をせよPIA のような評価は推奨事項ではなく専門家の基本義務
3.1公共善を中心に置けリーダーは構成員が倫理的懸念を提起できる構造を作る責任を持つ

1.6 条項は特に具体的です。個人情報の収集は正当な目的に必要な最小限であるべきで、当事者が知り得る状態であるべきで、収集目的外の使用は同意なしには不可と明記しています。本稿で扱ったデータ最小化、目的制限、保存期限は、そのまま綱領の要求事項なのです。倫理綱領は飾りではなく、「専門家ならこの程度は基本」という職業的な基準線です。

バランス — 安全 対 自由、双方の論拠を正直に

このテーマは片方の論拠だけを聞きがちなので、双方を正直に要約します。

安全優先側の論拠:

  1. 監視技術が実際に犯罪解決に寄与した事例は否定し難いものです。行方不明者の捜索、車両盗難、凶悪犯罪の捜査において、CCTV と ALPR は日常的な道具です。
  2. 年齢認証の議論の出発点である未成年者保護の問題は実在します。アルゴリズムフィードが子どもに与える害悪についての証拠が積み上がる中、「何もしないこと」も倫理的な選択肢ではなくなりました。
  3. 公的空間でのプライバシーの期待はもともと限定的だという法理も古くからあるものです。

自由優先側の論拠:

  1. 監視の害悪は摘発ではなく萎縮効果(chilling effect)から来ます。Ellison の「最善の行動」発言が正確に示すように、常時観察される人間は合法的な行動(集会、取材、相談)さえ自己検閲するようになります。
  2. インフラは政権とともに移動します。善良な政府の下で構築された監視網は、次の政府にそのまま相続されます。システム設計は最悪の運営者を想定すべきです。
  3. 悪用は仮説ではなく記録です。警察官による ALPR の私的照会、データブローカーを通じた令状迂回の購入など、文書化された事例がすでに多数あります。
  4. 効果の検証が弱いのです。監視カメラ拡大が犯罪率に与える効果の研究は結果が割れており、特定の犯罪(駐車場の車両犯罪)でのみ有意というメタ分析が多いのです。

正直な結論はこうです。安全と自由はゼロサムではありませんが、タダの昼食でもありません。だからこそ開発者の役割が重要です。同じ安全目標をより少ない自由のコストで達成する設計が存在することが多く、その設計を知っているのは政治家ではなくエンジニアだからです。令状ベースのアクセス制御、短い保存期限、端末内処理、監査ログの公開 — これらが (D) 象限、すなわち「設計で牽制」の道具箱です。

開発者行動チェックリスト

最後に、明日出勤してすぐ使えるチェックリストとしてまとめます。

[ 設計段階 ]
[ ] 新しいデータ収集項目ごとに「これがなければ機能が不可能か」を問うた
[ ] 軽量 PIA を設計レビューのテンプレートに含めた
[ ] 保存期限をスキーマ(行単位の expires_at)に内蔵した
[ ] 位置/生体/未成年者データは別途の承認手続きを経るようにした

[ 実装段階 ]
[ ] ログの個人情報フィールドをデフォルトでマスキングするミドルウェアを敷いた
[ ] サードパーティ SDK のデータ収集範囲を文書で確認し記録した
[ ] 破棄ワーカーの実行結果がモニタリング/アラートにつながるようにした
[ ] 内部者アクセスに監査ログとアラート(誰が誰を照会したか)を付けた

[ 組織段階 ]
[ ] データカタログに目的/禁止用途を宣言した
[ ] 懸念の提起を記録可能なチャネル(レビューコメント、チケット)で行った
[ ] エスカレーションのはしごの次の段がどこかを知っている
[ ] ACM 綱領 1.6 をチームのオンボーディング文書にリンクした

[ 個人段階 ]
[ ] 自分が作るシステムを敵対的な運営者が持ったときのシナリオを想像してみた
[ ] 「結合されたらどうなるか」を習慣的に問う
[ ] 断るときは事実 + リスク + 代替案の構造で話す

韓国・日本のコンテキスト — 我々の街の監視地形

最後に、韓国と日本の開発者に特に身近な争点を押さえておきます。

韓国は世界的に CCTV 密度が高い国であり、公共 CCTV 統合管制センターが自治体単位で運営されています。個人情報保護法は固定型映像情報処理機器への案内板設置と目的制限を要求し、2023年の改正で移動型映像機器(ドローン、自動運転車)の規定も整備されました。開発者の視点で重要な変化は、個人情報保護委員会の課徴金上限が全体売上基準に変わったことと、仮名情報制度によってデータ活用と保護のバランス点をコードで実装する仕事が増えたことです。住民登録番号体系という強力な全国民識別子が存在する環境では、結合攻撃の威力が他国より大きいという事実を設計の前提にすべきです。

日本は個人情報保護法(APPI)が3年ごとの見直しで更新され、顔認識データの取り扱いや仮名加工情報の制度が整備されてきました。防犯カメラ映像の捜査活用に関するガイドラインの議論、マイナンバーカードの活用拡大とそれに伴う懸念など、韓国と平行する争点が多いのです。両国に共通する実務の教訓は同じです。法が許容する範囲とユーザーが期待する範囲の間には常に隙間があり、その隙間で評判リスクが育ちます。適法性の検討だけで止まらず、「ユーザーがこの事実を知ったら驚くだろうか?」という驚きテスト(surprise test)を設計レビューに追加することをお勧めします。

よくある質問

Q1. うちは B2B ですが、それでもこれが必要ですか?

必要です。B2B SaaS が処理するエンドユーザーデータの責任は契約上の委託構造で流れますが、侵害事故の評判コストと受託者の義務はそのまま残ります。むしろ B2B は、顧客企業のセキュリティ実査(security review)でデータ最小化と保存ポリシーをますます深く検証される傾向にあります。

Q2. スタートアップで専任のプライバシー人材がいません。どこから始めればいいですか?

本稿の順序どおりで大丈夫です。第1週にデータカタログの YAML 一枚、第2週に保存期限カラムと破棄ワーカー、第3週に軽量 PIA を設計レビューのテンプレートに追加。この三つが費用対効果の大部分を占めます。

Q3. 監視技術の会社から採用オファーを受けました。受けてもいいですか?

個人の価値観の問題ですが、判断のフレームは提供できます。その会社の製品が上の象限のどこを目指しているか(令状主義・監査可能性・保存制限を製品に内蔵しているか)、内部の異見提起の構造があるか、販売先の制限ポリシー(輸出管理、権威主義政権への販売禁止)があるかを面接で聞いてみてください。質問への反応そのものが最良のデータです。

おわりに — 作る手の責任

シアトル徒歩ツアーの記事の力は、告発ではなく可視化にありました。いつもそこにあったのに見えなかったインフラを、見えるようにすること。本稿がやろうとしているのも同じです。監視インフラはどこかの悪党が作るのではなく、平凡なスプリントで平凡なチケットを処理する我々の手から作られます。

だからといって悲観する必要はありません。作る手に責任があるという言葉は、作る手に力があるという言葉でもあります。保存期限の一行、マスキングミドルウェアひとつ、設計レビューの質問ひとつが、数百万ユーザーのデータ露出面積を変えます。Ellison の言う「すべてが録画される世界」が来るとしても、何がどれだけの期間、誰に見える形で録画されるかは依然として設計の問題であり、設計は我々の仕事です。

技術倫理は結局、職業的卓越性のひとつの形です。良いエンジニアが障害シナリオを想像するように、良いエンジニアは悪用シナリオを想像します。その想像力が、2026年の開発者に求められる新しい基本技だと思います。

参考資料