前回のDay5では、GUIから危険ワードを手動登録できるようにした。
差出人、件名、本文。
それぞれに対して怪しいキーワードを登録し、rules.json に保存できるようになったことで、このツールはかなり“育てる迷惑メールフィルタ”らしくなってきた。
ただ、実際に使ってみると、次の問題が見えてきた。
1件ずつメールを開いて本文を表示し、解析するのは少し面倒。
もちろん、精密に見るなら本文解析は必要だ。
しかし、迷惑メールが大量にある場合、まず欲しいのは、
「どのメールが怪しいのかを一覧でざっくり見たい」
という機能である。
そこでDay6では、メール取得件数を20件から60件へ増やし、さらにメール一覧へ、
- 判定
- スコア
を表示するようにした。
本文までは取得せず、まずは件名と送信者だけで軽く一次判定する。
これにより、
「怪しいメールを1件ずつ探す」
から、
「一覧を見て怪しいメールを見つける」
段階へ進めることになった。
いよいよこのツールも、ただのメールビューアから“迷惑メールを探すツール”へ進化してきた感じがある。
メール取得件数を20件から60件へ拡張
これまでは、最新20件のメールを取得して表示していた。
接続テストや初期開発の段階では、20件でも十分だった。
ただ、迷惑メール対策ツールとして使うなら、20件では少し物足りない。
Yahooメールの受信箱には詐欺メールが大量に入っている。
その中からパターンを見つけたり、登録したルールがどれくらい反応するか確認したりするには、もう少し多くのメールを見たい。
そこで今回は、取得件数を20件から60件へ増やした。
変更自体はかなりシンプルだ。
latest_ids = mail_ids[-20:]
となっていた部分を、
latest_ids = mail_ids[-60:]
に変更するだけである。
本当はGUI上で取得件数を選べるようにしてもいい。
ただ、今はまだプロトタイプ段階だ。
機能を増やしすぎるより、まずは単純な形で動かした方がいい。
ということで、今回は60件固定にした。
これだけでも、迷惑メールの傾向を確認するにはかなり使いやすくなった。
一次判定機能を実装してみる
60件もメールを表示するようになると、次に欲しくなるのが、
「どのメールが怪しいのかをすぐに知りたい」
という機能だ。
そこで今回は、本文を開かなくても大まかな危険度が分かるように、一次判定機能を実装してみた。
と言っても、やっていることはシンプルだ。
今回は本文までは取得しない。
件名と送信者だけを使って、軽くスコアを付ける。
例えば、
【重要】Apple IDの確認が必要です
とか、
楽天カード利用制限のお知らせ
のようなメールであれば、本文を見なくてもある程度怪しいことが分かる。
逆に、
自転車部品の注文確認
とか、
ブログサービスからのお知らせ
のようなメールであれば、そこまで警戒しなくても良さそうだ。
つまり今回は、
「まず怪しいメールを見つける」
ための軽量な判定処理を追加したことになる。
本文解析ほど精密ではないが、その分かなり高速だ。
60件のメールを一覧表示しても、体感では特に重さは感じなかった。
むしろ、
「まず一覧で怪しいメールを探し、気になったものだけ本文を見る」
という使い方ができるようになり、かなり実用的になったと思う。
Treeviewに「判定」と「スコア」を追加
一次判定を入れるなら、GUI側にも結果を表示したい。
そこで今回は、メール一覧の表示項目を増やした。
これまでは、
件名
送信者
だけだった。
Day6ではここに、
判定
スコア
を追加した。
つまり一覧は、
件名 / 送信者 / 判定 / スコア
という形になる。
これだけで、かなり見やすくなった。
例えば、一覧を見た時に、
高危険 90
注意 55
通常 0
のように表示されるので、どのメールから確認すればいいか分かりやすい。
今までは、怪しいメールを探すために件名を目視で追う必要があった。
しかし今回からは、スコアと判定を見れば、優先的に確認すべきメールがすぐ分かる。
これはかなり大きい。
まだ本文まで見た精密判定ではないが、
「まず怪しいメールを炙り出す」
という目的なら十分使えると思う。
実際に使ってみた感想
実際に60件取得で動かしてみたところ、文句ない程度に動いた。
これまでは最新20件だけだったので、確認できるメールの範囲が少し狭かった。
しかし60件まで広げると、迷惑メールの傾向がかなり見えやすくなる。
特に、
- iCloud系
- 楽天系
- Amazon系
- Apple ID系
この辺りのメールは、件名や送信者だけでもかなり反応してくれる。
一覧に「注意」や「高危険」が表示されると、
「あ、この辺から見ればいいな」
とすぐ分かる。
これが思った以上に便利だった。
もちろん、一次判定なので完璧ではない。
本文を見ないと分からないメールもあるし、逆に件名だけでスコアが上がるメールもある。
ただ、今回の目的は精密判定ではなく、
“怪しいメールを一覧から見つけやすくすること”
なので、その意味では十分に成功だと思う。
1件ずつ開いて確認するより、かなり楽になった。
「迷惑メールを読む」から「迷惑メールを探す」へ
今回のアップデートで一番変わったのは、使い方そのものかもしれない。
これまでは、
メールを選ぶ
↓
本文を表示する
↓
解析する
という流れだった。
つまり、1件ずつメールを開いて確認する必要があった。
もちろん、これはこれで必要な機能だ。
ただ、迷惑メールが大量に届いている状態だと、毎回これを繰り返すのは少し面倒だった。
そこで今回、
件名 / 送信者 / 判定 / スコア
を一覧表示するようになったことで、
「まず怪しいメールを探す」
という使い方ができるようになった。
例えば、
楽天カード利用制限のお知らせ 高危険 85
iCloud確認通知 高危険 90
自転車部品の注文確認 通常 0
こんな感じで表示されれば、どこから確認するべきか一目で分かる。
実際に使ってみても、
「このメールは後回しでいいな」
「これはすぐ見た方が良さそうだな」
という判断がかなりしやすくなった。
まだ完全自動ではない。
でも、
“怪しいメールを見つける”
という目的に対しては、かなり実用的な段階まで来た気がする。
少しずつではあるが、
ただのメールビューアから、
自分専用の迷惑メール解析ツール
へ進化してきているのを実感できた。
今後の課題と次回やりたいこと
Day6では、
- 最新60件の取得
- 一次判定
- 判定とスコアの一覧表示
まで実装できた。
プロトタイプとしては、かなり満足度の高い状態になってきたと思う。
ただ、実際に使ってみると、
「もっとこうしたいな」
という部分も見えてきた。
例えば、
高危険メールを色付きで表示する
機能はかなり便利そうだ。
一覧を開いた瞬間に、
赤:高危険
黄色:注意
白:通常
みたいに分かれていれば、さらに見やすくなる。
また、
高危険メールだけ表示するフィルタ
なんかも面白そうだ。
迷惑メールが大量に届いている時は、怪しいものだけを一覧表示できた方が圧倒的に楽になる。
そして、そろそろ考え始めたいのが、
ホワイトリスト機能
である。
例えば、
Amazonは使っている
PayPayは使っている
この差出人は安全
といった情報を登録できれば、誤判定もかなり減らせそうだ。
ただ、今の段階で機能を増やしすぎるのも考えものだ。
まずは、
「60件取得+一覧判定」
をしばらく使ってみて、
- 誤判定はどれくらいあるか
- どんな迷惑メールが来るのか
- 新しく登録したいワードは何か
を観察する方が大事だと思う。
焦って完成を目指すより、
実際に使いながら少しずつ育てていく。
このくらいのペースが、このツールにはちょうど良さそうだ。
Day6時点のまとめ
Day6では、
- メール取得件数を20件から60件へ拡張
- 件名と送信者による一次判定を実装
- 一覧へ「判定」と「スコア」を追加
することができた。
今回の改修は、見た目以上に大きな変化だったと思う。
これまでは、
「メールを1件ずつ開いて解析する」
という流れだった。
しかし今回からは、
「まず一覧を見て怪しいメールを探す」
という使い方ができるようになった。
これは実際に使ってみるとかなり便利で、
高危険なメールがどこにあるのか、一目で分かるようになった。
また、60件まで取得件数を増やしたことで、迷惑メールの傾向も見えやすくなった。
新しいワードを登録する時も、
「最近こういう件名が増えているな」
というのが把握しやすい。
そして何より、今回の改修はプロトタイプとしてかなり安定していた。
動作も軽く、一覧表示も問題なし。
文句ない程度には動いている。
もちろん、まだ完成ではない。
今後は、
- 高危険メールの色付け
- ホワイトリスト機能
- 高危険メールのみ表示
- 自動学習の補助機能
など、まだまだやりたいことはある。
ただ、焦って機能を増やしすぎるより、
実際に使いながら、
「ここが不便だな」
「こういう機能が欲しいな」
という部分を少しずつ改善していく方が、このツールには合っている気がする。
最初は、
「Yahooメールの迷惑メールが多すぎて腹が立つ」
という、ほぼ勢いだけで始めたプロジェクトだった。
それが気付けば、
自分専用の迷惑メール解析ツール
として、少しずつ形になってきている。
詐欺メールとの戦いは、まだ続く。
でも、ようやくこちらにも少しずつ武器が揃ってきた気がする。