「テストコードを書くのは面倒だ」そんなふうに考えていた時期が俺にもありました

f:id:ryoutaku_jo:20190430010307p:plain

【結論】

・テストコードはいいぞ

【目次】

【本題】

テストコードなくして完成のカタルシスはありえねェ

閲覧ありがとうございます!

私の記事をご覧いただいたということは、
もしかして私とおなじようにテストコードを書いているor興味があるんですか?

今回は、テストコードの有用性について
色々と感じる事があったので、それを取りまとめました。

上等な料理にハチミツをブチまけるがごとき思想!!!

記事のタイトルにもある通り、
プログラミングの学習を始めた当初の私はテストコードを敬遠していました。

その理由は下記の通りです

・独特の記法で書きづらい(RSpec
・実装しても、あまり多くの人の目に触れない
・ブラウザでチェックすれば問題ない

これらが要因で、私は自身が製作したアプリケーションに対しても
テストコードの実装は最小限or全く行っていませんでした。

そんな状態にまま、未経験からエンジニアとして転職する事になりました。

たかだか一時間余りで蚊トンボを獅子に変化る。テストコードとはそういうものだ

就職した職場は、どのプロジェクトにおいても、
原則テストコードを記述する運用でした。

その為、テストコードを敬遠し、今までロクに実践を重ねて来なかった私は、
かなり苦戦する事となりました。

しかし、何度も繰り返し書く内に、
記述内容にそこまで多くのパターンがある訳では無いと気づき、
コードをテンプレート化させる事で、テストコードを書く事に慣れて行きました。

また、まだ経験が浅い事もあって、自身が実装したコードの影響範囲を
正確に想定出来ず、バグを発生させてしまう事もありましたが、
テストコードのおかげで未然に察知する事が出来て、
本番環境へのバグの混入を防いでくれました。

こういったところから、私の様な経験値の低いエンジニアほど、
テストコードは効果的に作用する
と実感しました。

よーいドンでしかテストコードを書けぬものはエンジニアとは呼ばぬ

そうこうする内に1ヶ月が経ち、ゴールデンウィークがやって来ました。

ゴールデンウィークては個人アプリ開発を行う事に決めたのですが、
10日間という短い期間での開発だったので、速度優先する為、
ある程度アプリケーションが形になるまでは、
テストコードは書かないで行こうと考えました。

しかし、それが大きな間違いでした。

テストコードを実装していない時と比較すると、
ブラウザ側では動作を検証するのは非常に時間が掛かります。

実際に実務でテストコードによるデバックの効率化を体感した身からすると、
この差は非常に大きいものに感じられました。

テストコード「俺が守護らねばならぬ」

・コマンド一つでバグが発生していないかチェック出来る
・自身が想定していなかった影響範囲もチェックしてくれる

実際にテストコードを書く開発と書かない開発を往き来する事によって、
私はこれらの有用性をしっかりと再認識する事が出来ました。

そして、やはりテストコードは必須なのだと、身に沁みて感じました。

めちゃ強「キサマ等のいる場所は既に我々が2000年前に通過した場所だ!」

さて、ここまでテストコードの有用性を力説しましたが、
これらの内容は全て先人達が既に繰り返し言及されてきた内容です。

有名な著書やQiitaの投稿も多数ありますので、
そちらをご参照される事をお勧めいたします。

そして、実際に双方の開発手法を試して、有用性を実感頂ければと思います。
「百聞は一見にしかず。百見は一テストコードにしかず」です。

それがテストコードなんですねぇ・・・・

いかがでしたか?

残念ながら今回、テストコードの実践方法は見つけられませんでした!
しかし、テストコードの恋人は皆さんだということが分かりました!

それでは、素晴らしいJavaライフを!

〜Fin〜

(ちょっと疲れていたと思います、駄文お許し下さい)

参考情報

漫画:グラップラー刃牙

【JS】いかがでしたか!?値渡しと参照渡しの使い分け!? - Qiita

《今日の学習進捗(3年以内に10000時間に向けて)》

先日、先輩が上げられていた業務日報を見ると、
CTOとの1on1にて「最後は私(CTO)が何とかしてくれると
思って仕事しているよね?」と諭されて、
全員が「最後の砦意識」を持つ重要性を再認識したという内容だった。

これは結構耳が痛かった。自分の仕事を振り返ると、
新人という立場に甘え、「動けばOK」くらいの気持ちでプルリクを出して、
品質の担保をコードレビューに依存し、セルフチェックがおざなりになっていた事が、
全く無かったと聞かれると否定は出来ない・・・

新人とはいえ、一人のエンジニアとしての職責を全うする為にも、
自身が「最後の砦」であるという意識は常に持って業務に取り組みたい。

学習開始からの期間 :143日
今日までの合計時間:1387h
一日あたりの平均学習時間:9.7h
今日までに到達すべき目標時間:1306h
目標との解離:81h
「10,000時間」まで、

残り・・・「8613時間!」