タケハタのブログスマートフォン用の表示で見るタケハタのブログプログラマの生き方、働き方、技術について雑多に書いていくブログです。2018-10-17テストファーストは良いぞという話テストはじめに今やっているプロジェクトでサーバーサイドの実装をする時、テストファーストでやっています。実装を進めて行けば行くほどテストファーストのありがたみを感じてきたので、その良さを羅列して書いておこうと思います。ちなみに言語はKotlinで、テストフレームワークはこの前も書いたKotlinTestを使っています。テストファーストでやってて良かったこと後になるほど実装が楽になる実装が進むに連れて徐々にロジックの量も増えてきましたが、テストコードがあるおかげでポチッと一発テスト流せば全ての動作確認できるので、安心して進められるようになりました。テストコードがなかったら何度も「あのパターンと、あのパターンと・・・」とか考えながら色んな退行テストをしないといけないし、しかも大体漏れます。あとそもそもサーバーサイドプログラムの動作確認は手動でやると、トークンとか気にしながら色々パラメータいじりながら叩かないといけないので、繰り返しやるのは面倒です。作業時間も削減できるし、確実にテストもできるわけです。やってないですが、これでリファクタリングとかも積極的にできますね。設計が整理されるコードを書く時、基本的に頭の中で設計を考えてから実装すると思います。それをプログラム設計みたいなドキュメントに起こす人もいれば、手書きで整理して書き始める人も。テストファーストの場合、この設計で考えていたことをそのままテストコードとして書くような感じになります。設計を考えて書く時間は取るし、それがテストコード書く時間に置き換わるだけと考えるとテストコード書くことによる時間のロスも少ないですね。その設計を実現してエラーが出ないようにしていく形になるので、ドキュメントとか書き起こすより分かりやすいし実装しやすいんじゃないかなと個人的には思っています。テストしやすいこれはよくTDDの解説でよく言われることですが、テストを先に書くことで、自然としっかりと分離された、テストのしやすい設計になります。一通りの実装が終わった後にテストを書こうとすると、ちょっと都合の悪い設計になっていたりして苦労することがあります。書くなら先に書いておいた方が早いし、いい設計になります。作業の目標にもなる全部実装したあと「さあ、テスト書こう!」と思ってもなかなかモチベーション上がりづらいですよね。ロジック書いてる時の方が楽しいし。「この時間までにここまでやる」みたいな目標にもなるし、作業を進めやすくなります。あと、作業中断する時にテストコードだけ作ってエラーになるようにしておけば、作業再開する時に「なにやってたっけ?」を思い出すのにちょうどいいので、その思い出す時間も削減できますね。言うまでもなく品質も上がる当然ながら、テストをちゃんと書いてるので品質は上がります。テストちゃんと通してることによる動作保証もそうだし、動作確認とかデグレの修正で取られる時間も抑えられるので、その分ゆとりができて作業の質も上がったり、潜在的な効果も大きいです。結果早い「時間なくてテスト書かない」はよくありますが、よっぽど超小規模(単純なAPI数本とか)でない限りはテスト書いた方が早いと思います。実装途中の段階ですが、既に感じてます。サーバーサイドエンジニアの人は、是非単体テストをしっかり書いて欲しいですし、テストファーストで実装すると書きやすいのでおすすめです。最後にと、いうことで繰り返しになりますが、サーバーサイドエンジニアの人は是非テストファーストで実装することをおすすめします!(注:効果には個人差があります)ちなみにテストファーストを本格的にやり始めようと思ったきっかけは、ケント・ベックの「テスト駆動開発」という本を読んでからでした。新しいプロジェクトでコードを書き始めようかという時期だったのもあり、最初からちゃんとやっておこうと。shop.ohmsha.co.jp@t_wadaさんの翻訳ですごく分かりやすくていい本なので、興味ある方は是非読んでみてください。Buffersの色々なオプシ...前回の記事から始めた「サーバーサイドKotlin×gRPCコトハジメ...2018-12-07プレイングマネージャーとは?この前この記事がバズっていましたね。はてなブログProプログラマとしての生き方とか、働き方とか、技術のことを雑多に書いていきます。CODE-セブンスコード-」のバックエンド技術DockerでMySQLを起動した時はバージョン差異に注意ブログの技術記事で書く内容をパターン分けしてみた2019年を雑に振り返る月別アーカイブはてなブログをはじめよう!take7010さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。