「えがおと」の人力フィルタリングについて解説するよ

"えがおと"の人力フィルタリングについて、id:hyukixに「受信メール手作業で登録してるの?(_´Д`)ノ~~オツカレー」という謂れのない激励を受けたのでちょっと解説してみますよ

フィルタリングの概要

今回実装した人力フィルタリングは、送られてきた写真・メッセージに不適切なものが含まれていないかどうか?という判定処理を人力で行っているだけで、各種メールデータのパースや地域データの取得については、ある程度の自動化をしています。

簡単に流れを書くとこんな感じです

1:メール受信 [自動]

MTAのプログラム連携機能を利用して、メールを処理モジュールに渡します

  • メールデータをパースして件名、本文、添付ファイル(画像)を取得
2:サムネイルを作成 [自動]

受信メールの添付ファイル(画像)を編集して、公開用の画像を作成します

  • 受信した画像ファイルを縮小して一覧表示用画像を作成
3:地域情報を取得 [自動]

Yahoo APIを利用して地域情報を取得します

  • 画像にExifデータ(GPSinfo)が含まれる場合は、Exifの緯度経度情報から逆ジオコーディング
  • 画像にExifデータが含まれない場合は、件名の文字列から地域情報を取得
4:各種データをDBに保存 [自動]

ここまで生成した各種データをDBに保存しますデス

5:保存された各写真を管理画面より確認して、公開・非公開を判定 ← 「ここが人力」
  • メッセージや画像回転などの、ちょっとした修正をする場合もあり
  • 公開処理時に地域情報を自動的に更新

…と、人力のフェーズは1箇所なので、徹夜で登録してるわけではないのです(´・ω・`)

地域情報の表記ゆれ対策

ちなみに、メール件名からの地域情報の取得は表記ゆれの対策として、次のようなAPI問い合わせを2度も行うというエコじゃない動きになっております…そのうち何らかの対処したいところですが…

  1. 件名の文字列(地域名)から緯度経度情報を取得(ジオコーディング)
  2. 取得した緯度経度から正式な地域名を取得(逆ジオコーディング)

お世話になっているAPI

地域情報取得の際に、都道府県データ自体はマップを作るっている手もありそうだったのですが、市町村その他の区域を検討するのが面倒だったので…とてもありがたく利用させてもらっています…デス

そんなわけで、えがおとをよろしくお願いします

上記のように半自動化された人力フィルタリングなので、お昼休みなんかのちょっとした時間で公開できるようになっておりますデス

そんなわけで、お送りいただいた写メールの公開はそんなにお待たせすることは無いはずです…ど忘れしないように頑張ります(´・ω・`)