なずなログ

ただのSIer系SEが思ったことや色々書く感じのアレです

テストコードがないプロジェクトの話

私はとあるSIerで働く、そこらへんのSEだ。

学生時代は資格勉強と作り方を教わっただけの、そこらへんにいる新卒と同じ状態で入社した。

新人教育でも同じように作り方ばかり教わった私が、テストコードがないプロジェクトで目が開いたときの話をしようと思う。

入社してからマネジメント側に回るまで

SEと一言で言っても、実際にコードを書く人や設計だけする人、管理するだけの人、保守担当など実態は多様だ。

私は入社してからしばらくはコードを書く開発をさせてもらっていた。普通に詳細設計を書いて、コードを書いて、テストをする。よくあるSIerの日常を大した炎上もなく過ごした。 時折何か一部の管理を任されたり、課題の調査チーム(と言っても二人だけだけど)を任してもらったりしたけれど、弊社の同期の中ではそこそこコードは書いてたほうだと思う。

そんな中で、ふとしたタイミングで一つの開発チーム(5名くらい)を任せられた。「ちょっとだけ……」というPMのセリフを信じてみたが、大人のいう「ちょっと」は大体デカイことを忘れていた。子供の頃に雪見だいふくをちょっとだけ分けてと言われて半分持っていかれるのと同じだ。

それからしばらく時間は経ったが、残念ながら結局管理するだけの人になってしまった。 本当はコードをバリバリ書いていたいが、当分そのような機会は得られそうにもない。

ある程度慣れて落ち着いた頃に、今後マネジメントに徹することになろうとも、仕組みのことがわからない数字だけを追うようなSEにはなるまいと思い、個人開発をするようにした。

個人開発をして得た考え方と影響

個人開発を始めてみたら、学びの連続だった。 自分で地雷を埋め込んですぐに飛び込むような感じで、ソフトウェアの設計原則が生み出された理由を一つ一つ理解していくのは、少し辛かったのと同時に楽しいとも思えて「あ、やっぱプログラミングって面白いな」と感じられた。

それと同時に、本業のSEの方にも影響が出ていた。

「改善しなければいけないのではないか?」と思うことが山のように出てきたことだ。

その中の代表が、テストコードがないことだ。

テストコードのないプロジェクト

私が新人の頃に教えてもらったテストのやり方は、テストコードがない。 正確に言えばないわけではないが、モジュールの入力データ(Excelベース)を投入する単純なドライバーとしての機能しか持ち合わせておらず、汎用化されすぎていた。

結果として、検証は出力されたデータをExcelにペタペタ貼ったものに吹き出しで「テストNo.1-1 ○○が□□であること」と書いたり、Excelの数式を組み合わせまくってデータベースとの整合性確認をしていた。 (なおデータベースのダンプもExcelである)

テストライブラリはあるにも関わらず、この有様である。 日本のSIerに求められるのはコーディングスキルよりもExcelスキルであるというのは、比喩でもなく現実だった。

テストコードがないから、デグレテストも実施することができない。 テストデータは資産として管理しておらず、バージョン単位に使い捨てだ。

目視確認に使い捨てテスト…。 今まで入社してから見てきた光景だが、実際に地雷を踏み抜く経験をすると明らかにヤバイということが認識できるようになった。

マネジメント側としてどう立ち振る舞うか

幸が不幸かはわからないが私はマネジメント側にいる。プロジェクトの中で中間的な立場にいるから、意見は言いやすいのはいいことだ。

このポジションとして出来る業務フロー改善を試みていこうと思う。まずは自分のチームだけでも。 (本当は開発者として、開発者のために仕組みを変えたかったが)

テストコードがあるプロダクトの良さを布教していこう。 適切なテストコードがあれば安心してリファクタリングが出来るし、CI/CD(自動テスト/自動デプロイ)も視野に入ってくる。 何より、目視検証という一貫性のないメソッドをある程度排除できる。

もちろん絵空事をいうだけで人がついてくるわけではない。 思考を言語化するだけでも難しいのに、それをプロセスに組み込んで仕組みとするのが更に難しいことは想像に容易い。

たぶん何回か失敗もすると思う。だけど、失敗することで更に良くできるなら失敗するのもありだと思う。

詰まるところ、もっとみんなに安心して開発して少しでも余計な関心事を減らしたいだけなのだ。みんなが楽になれば自分も楽になる。

そんなこんなで考えることは多いけれど、明日もがんばろうと思う。