はじめに
AWS を触り始めたばかりの頃にやらかした初歩的なミスをまとめたアドベントカレンダー、題して「AWS初歩ミス図鑑」の 13 日目です。
今回は二回目の閑話休題、番外編として 一日八時間 xxx を見続け、心が崩壊するまでの軌跡 という話を書いていきます。
xxx とは
アドカレの六日目に書いた、以下のお話に関連する事柄です。
こちらの記事で私は、 「ユーザーが投稿したものの中に、AWS の規約に違反する画像が含まれていた」 というようなことを書いています。その性質上、内容はとても具体的にはかけないのですが、この世に存在するありとあらゆる刺激的なコンテンツを思い浮かべ、それらすべての複合体が xxx だと思ってください。
なぜ私は一日八時間 xxx と向き合うことになったのか
本題です。
六日目の記事と内容が被ってしまいますが、恣意的ではないとはいえ、xxx を静的コンテンツとして配信し、Abuse Report を受け取りすぎた弊社は、早急にその対応を求められました。
つまり、数百テラにも及ぶデータの中から違反と思われるデータのみを検出し、削除する必要が出てきたのです。これは部署間で協力して大々的に動く必要があるな…と勝手に思っていたのですが、その対応は当時バケットを好き勝手できる Admin 権限を有していた私一人へ一任されることになりました。
そもそも、AWS から「このままだとあなたのアカウントには S3 バケットを無期限で使わせないし、現行のバケットもすべてなかったことにするんでよろしく(意訳)」というようなメールが来ているのに、ほかの部署の方はマネージャー層を除いてそのメールの存在すら知りませんでした。
試行
取り組むのが私一人ということを除いても、データ量的に人力でのチェックは不可能です。そこで私は Amazon Rekognition というサービスに目を付けました。
こちらは機械学習を用いて様々な画像処理ができるサービスですが、中でも私が注目したのはモデレーションという不適切なコンテンツにスコアをつけたり AWS 基準のカテゴリで評価してくれる機能です。
こちらを用いて、以下の構成を考えます。
- ユーザーがコンテンツへアクセス
- CloudFront と S3 の間に Lambda を配置
- Lambda で Rekognition の CLI を実行し、コンテンツの内容を評価
- スコアが一定の基準値を上回ったコンテンツに対し、非表示と削除処理
最初から S3 のデータをすべて Rekognition で判断してもらおうとすると、膨大な処理時間とコストがかかるため、それならばユーザーが表示しようとしたコンテンツを都度処理しようと思ったのです。自分なりの工夫でした。
さて、結果はどうなるでしょうか。
敗北
早すぎるオチをつけてしまい恐縮ですが、無理でした。
具体的に何が無理だったのかというと、以下の点です。
本当に違法なコンテンツを検知できない
モデレーションは、AWS があらかじめ用意したカテゴリに対応したコンテンツが評価されます。「タバコ」は「タバコ」というカテゴリが用意されているので問題ないですが、例えば「火のついた細い紙」を「タバコ」として検知したい場合は、別途学習が必要になります。
再び例え話になってしまいますが、我々がやりたかったことは 「犬」の中でも「マルチーズ」のみ非表示として「柴犬」や「ヨークシャーテリア」は表示したい というようなもので、そんな高度なフィルタリングは Rekognition の標準機能だけでは無理でした。
コスト面
Rekognition は決して安くありません…。
上記の構成を運用にのせると、アクセス数やコンテンツ量を鑑みた結果、毎月サラリーマンの平均月収をはるかに上回る金額がかかる計算で、とても社内稟議を通せる見込みがありませんでした。
苦しみの始まり
それじゃあどうやって違法コンテンツに対応したのか? というと、ここでタイトルのお話になります。
機械がダメなら人間がやるしかないじゃないか! ということで、私の一日のスケジュールに「S3 の中身を端からチェックし、だめそうな画像を手動で削除する」という業務が加わりました。これが本当に苦しかったです。以下に苦しみの理由を三つほどかいていきますが、ただの感情の羅列になってしまいますので、読み飛ばしていただいて構いません。
自分がやっていることを誰も知らない
通常のフローでは、自社のコンテンツを削除をするときは関係部署各位の許可が必要です。しかしながら、当時は AWS からメールが届いていることすら認知されていない状況で、さらに xxx を手動で削除することになったということは、私と私の上司など、ごく一部の人間しか知りませんでした。
なので、通常のフロー通りに作業を行おうとした場合、まずは他部署へ経緯の説明と、削除するコンテンツの中身の説明が必要になるわけですが、内容が内容なので、コンプラ的にもうかつに説明が行えません。結果、今回この対応に限っては、ほか部署の許可なく私の独断で削除を行って良い、ということになりました。言い換えれば、私がやっている作業が一部の方を除いて誰にも認知されなくなった瞬間でもあります。
無駄なことをやっている気がする
コンテンツは日々新鮮にアップロードされるため、消したら増え、消さなくても増え、のいたちごっこでした。しかしながら、Abuse Report を受け取り AWS に対策を求められた際に「違法コンテンツの根絶をお約束します!」などという返信をしてしまっている手前、やめることもできません。あとは S3 バケットのコンテンツを一つずつダウンロードして、中身をみて、削除、という単純作業を永遠とも思える時間やっていると、無駄か無駄じゃないか以前に理性が溶けそうになります。
xxx を見たくない
いろいろ書きましたが、これに尽きます。プライベートのリラックスした時間に見てもつらいものを、業務時間中に強制でずっと見続けるという行為は、想像以上に厳しいものでした。当時の私の席はオフィスでも人通りの多いところにあったため、ほかの社員が偶然私のモニターを見てしまったら…という可能性を鑑み、小さな会議室に引きこもって誰とも苦しみを分かち合わず作業をしていました。このせいで余計に負荷がかかっていたと思います。
まとめ
結局弊社は、一定の売り上げがあったそのサービスを閉鎖することにしました。ほかのサービスも動いている S3 を丸ごと使えなくなるか、サービスを一つ閉鎖するか、を考えた場合、圧倒的に後者の方がダメージが少ないからです。(もっとはやくそう判断してくださればよかったのに……)
数年後の今に振り返れば貴重な経験だったなあとは思いますが、もう一度同じことをやれるかと聞かれたら、やりたくないと答えると思います。
最後まで読んでくださった皆様におかれましては、心身ともにご自愛ください。