エンジニア的なネタを毎週書くブログ

東京でWebサービスの開発をしています 【英語版やってみました】http://taichiw-e.hatenablog.com/

守備には3種類あると思った

今、自分の中では世紀の発見をしたくらいのキモチになってまして、忘れないように書きとめておこうと思います。
多分後で読み返したら「なにを当たり前のことを言ってるんだ」って感じだと思うんですけど。

その昔書いたこの記事のように、サッカーだったり剣道だったり、時々野球だったりをイメージしてるんですが、団体競技でも個人競技でも何かしら攻防のある、お好みのスポーツをイメージしてもらえれば意味は通じる…と思います。多分。
ログイン - はてな(仕事の話です)剣道とサッカーと交渉ごとって似ていると思うんですよ - エンジニア的なネタを毎週書くブログ

さて、その上でタイトルに書いたとおり、「守備には3種類ある」のだと思い至りました。
1. 相手の攻撃を止める守備
2. 相手の攻撃を止めた上で攻撃に転じる守備
3. 相手をコントロールし、相手の攻撃の幅を狭めることによって行う守備

1. 相手の攻撃を止める守備

サッカーであればとりあえずシュートを止めるとか。自陣内で相手からボールを奪うとか。
剣道であれば打ってきた面をとりあえず竹刀で受けるとか。
相手がポイントを取ろうとしてきた攻撃をなにかの方法で防いで、失点を0にする、最も直接的な守備です。

2. 相手の攻撃を止めた上で攻撃に転じる守備

1.で相手の攻撃を止めた上で、その機を逃さずに攻撃に転じることです。狭義では「守備」ではないかもしれませんが、
相手に攻撃を仕掛ける → 相手が守りに転じる → 相手の攻撃の機会を奪う
となり、結果的に相手に攻撃させない、広義での「守備」となります。
スポーツで言えばカウンターが相当すると思います。

3. 相手をコントロールし、相手の攻撃の幅を狭めることによって行う守備

1.は相手の攻撃に対して応じた動き、2.はそこで終わらずにそこから攻撃に転じることによって相手の攻撃機会を減らすアクションでした。
3.は、よりこちらから働きかけていく守備です。
右サイドを固めておくことで左側へ誘導する…といったことです。

システムの「運用」も同じ!

ここまで、一体何の話が始まったんだ!? という内容をお送りしてまいりました。
システムの開発/運用における「守備」とも言える運用においても、同様に3つの守備 が定義できると思います。

1. 相手の攻撃を止める守備

とにかく被害を出さないアクションです。
トラブルが発生しているのであれば復旧する、バグがあるなら直してリリースする、期日までに終えないとサービスに問題がある作業があるのであれば終える。
などです。
流通など、実際のサービスへの影響が起きない、または置きても小さくて済めば成功と言えると思います。

2. 相手の攻撃を止めた上で攻撃に転じる守備

1.で被害を出さなかった上で、1で起こるような問題の原因を潰しに行くようなアクションがこちらです。
手順がまとまっていないオペレーションが原因でトラブルが起きやすいので再発防止のために手順書をちゃんと書く とか
SQLに不慣れなメンバーが多くてバグが多いのでSQLを勉強してもらう とか
何か能動的なアクションを起こすことによって、これまで発生している問題を潰しに行くのが2です。
一見、次の3.のようにも感じますが、
何か悪いコトがまず起こり、発生した問題に対応するなにか施策を行う
というアクションですので、2.です。

3. 相手をコントロールし、相手の攻撃の幅を狭めることによって行う守備

では3.は何かというと、そもそもまだ発生していない問題を察知し、先に潰しに行く というアクションです。
例えば、

  • トラフィック増に伴って検索処理の性能劣化が見られるので、システム増強しておくことでトラブルを未然に防ぐ

など、まだ問題の形にすらなっていない種を発見し、潰しにかかるのがこちらです。