まさかのやらない理由3選!

2017/7/30 · 12 mins read
※ この記事は公開されてから1年以上経過しているため、情報が古い可能性があります。
まさかのやらない理由3選!

最近更新が止まっていてすみません。。。
(と言っても誰が見てるんだって話ですが…)
諸々とあって忙しく、技術的なネタも収集できていなかったので、ポエム的なものを書こうと思います<(_ _)>

※ 半分ネタ程度に読んでください。。

ごくごくフツーのエンジニアさんであれば「?」となる内容だと思います(^ω^;)
直近のネタではありませんが、きっと私の受け取り方がおかしかったのであろう内容を 3 つ、紹介いたします!

テストコードをテストするコードも必要??

ずっと Unit テストも導入されていなかったプロジェクトの改修にアサインされた時の話です。

1 度直したらしばらく直さないようなものであれば、既に動いているシステムなので、手作業でテストでもまぁいいかとも思ったのですが、頻繁に項目の変更があり、その都度デグレードテスト含めかなり網羅的に手作業でテストをし、Excel にキャプチャを貼ってエビデンスを残していました。
テスト方法もさることながら、同じことを繰り返し手で行うのはあまり効率的な開発ではないように思えました。
なので一部に対し Unit テストの導入を提案してみたのですが、そこで言われた導入しない理由がビックリで、反論できませんでした。。。

テストコード書くのはいいけど、そのコードの妥当性を検証するコードも必要になるよね!

そのテストコードの妥当性を検証するテストコード、の妥当性を検証するテストコード、の妥当性を検証する…(ry
無限ループの発生です( `・ω・´)
確かにテストコードの妥当性のチェックは必要です。
なので Unit テストは細かく分け、1 つ 1 つはコードを見ればある程度妥当性があるか判断できるようにし、コードとテスト結果をレビューするのが定石だと思っていました。
まさかこんな反論されるなんて、夢にも思いませんでした。

例えば

  • テストコードを知らない人の学習コスト
  • テストコードの導入範囲
  • 手作業との住み分け
  • 導入に向けての取り組み方

というような反論はあるあるですし、想定もしていたので回答を用意して挑んだのですが、斜め上の回答に何も言えず、導入はされないことになりました(´・ω・`)
何度かに分けて導入に向けて話し合いに挑戦してみましたが、最後の方では「自動テスト嫌いなんですよ!」と怒られてしまったので、その後は何も言わないことにしました。
きっと手作業が正しい何かしら別の理由があったのだと思いますが、私にはこのような曲解しかできませんでした。
今思えば、ここでは「せめてテスト仕様書を 1 から作るのは大変だから、共通でグレードテスト仕様書を作成しましょう。」が正しかったのでしょう。

手作業のテストは間違いない??

その際に、手作業でのテストの素晴らしさを得得と説明されました。
その中でも衝撃的な一言を紹介できればと思います!

手作業なら、テスト仕様書外の動き(作業ミス)でバグが見つかることもあるんだよ!
テストコードじゃできないだろう??

テスト仕様書の不備を肯定しました(`・ω・´)
テスト仕様書の不備はもちろん 0 にはならないと思ってますし、人が書く以上バグ 0 も不可能だと思います。
特に古い密結合なソースでは、テストコード作成の難易度も上がります。
だからと言って、テストコードよりも手作業テストが正しい結果を生む…という趣旨の発言には驚かされました(^ω^;)
今でも本当に意図したことが何なのか、経験を積んでも悩みます。。。

手作業の運用は間違いない??

定期的な運用って、ドコにでもあると思います。
そのような運用を、皆さんだったらどうするでしょうか?

cron?バッチ?マクロ?
色々とあるとは思いますが、「手作業でやれ」と言われたことがあります。
その理由が凄いのです!

コードだとバグる可能性があるし、毎週 30 分かからないじゃん!

  • 自分で書いたコードすら信用ならない
  • 手作業で間違えない絶対的自信
  • 費用対効果なんて知らんがな

という 3 つを同時に言い放ったのです( `・ω・´)
そもそも「テスト仕様書外の動き(作業ミス)でバグが見つかることもあるんだよ!」を一蹴するお言葉。。
一定数ではありますが、手作業信者がいるのは残念ながら事実です。
自動化により「人の作業を奪った」として、世の中には可哀想なことに減給された方までいらっしゃるようです(>_<)
(ネタでしょうが…)
さすがに私はそこまでには至りませんでしたが、やらない理由に驚きを隠せませんでした。。。

全ての技術がどの現場にも適応できるものではないと思っていますし、検証・検討した結果やらない…というのは大賛成です。
ですがそこでの言い方は、私には「分からないからやりたくない」と言ってるようにしか感じられませんでした。。。
私には受け取れなかった、違う意図があったのでしょう。

各メディアでも言われているよう、やらない理由を探すのは簡単です。
ですが新しく導入する側は大変であることを、身をもって実感しました。
この経験を、今後も活かせていけたらと思います!

上記の説明から 1 年くらい経ったある日、これらを言っていた上司は別のエンジニアに自動化やテスト手法について聞いていました。
何がキッカケだったんでしょうか?
恐らくこの時の私の説明が、相当下手だったことは間違いないのでしょう。
上手く説明できなかったことが悔やまれます。。。