複数のNGワードを設定できるように、改修作業に着手。
まずはテストから記述
引数を２個受け取るように実装を変更。
テストコードが通るように、まずはベタにプロダクションコードを実装。
引数を２つ取る場合でも、引数を１つ取る場合のテストも満たさなければならな
いため、１つの場合のテストコードをコピペして実装
share_examples_forとit_should_behave_likeを利用してテストコードをDRYにし
た。
share_examples_forの名前が文字列かつ説明的な長い名前である理由は、
share_examples_forやshare_as(Symbol)はファイルを超えてcode exampleを共有
する機能である。そのため、定義する場所と利用する箇所が離れている可能性
が高い。説明的な名前をつけておくことで、実際の定義先を見に行かなくても内
容を予測できるようにしておいたほうが良いため。
テストコードのリファクタリング。
同じ対象に対する、別の状況のテストだったものを、MessageFilterに対するテ
ストであるという意図を示すために、ネストされた構造にテストコードを変更
テストの対象を表す場合はdescribe。
テストの状況を表す場合はcontextを利用する。
今回はdescribeがネストしていたため、内側のdescribeをcontexに書き換えて状
況を説明するようにリファクタリングを行った。
プロダクションコードをリファクタリング。
実装の方法が、安易だったためRubyのEnumerable#any?を利用するように変更。

any?メソッドは、すべての要素が偽である場合にfalseを返す。
真である要素があれば、直ちにtrueを返す。
ブロックを渡すことができるため、各要素の判定条件を変更することが可能