AI時代の開発現場:スピードと品質の両立
NECソリューションイノベータは10,000人を超えるシステムエンジニア・ソフトウェア技術者を擁する国内最大規模のシステムインテグレータ。業務ソリューションやソフトウェア基盤など幅広い開発を手がけている。その中で、藤原氏はアジャイルチームでAI製品の開発に携わっている。

藤原氏は、「アジャイル開発とAIの普及で、開発には以前よりも短い期間で、より高い品質が求められるようになっている」と指摘する。
アジャイル開発が普及した背景には、不確実性が高く、市場に何が受け入れられるかわからないというビジネス環境がある。高い品質のプロダクトをすばやく作って市場に問うために、アジャイルという手法が普及したのだ。
この「品質と速度」を両立するために、開発現場ではすばやい「検証」が重要になってくる。藤原氏はその一つとして「テスト」の工程を取り上げて、重要な考え方を共有した。
「テストにおいて重要なのは、そのテストの結果が製品の目的に適合しているかを確認することです。しかし製品の目的を表現できていないテストも多く、とくにコード化されていないテストでは自然言語での記載になり、目的が不明瞭になりやすい。結果として、エンジニアの判断が製品の目的にとってかわることになるでしょう」
そのため藤原氏は、「製品目的を理解していないエンジニアがテストを行うと、バグの原因となる」と指摘し、「チームに所属するエンジニア全員が製品や機能のゴールを語れることが、品質に寄与する」と強調した。
次に藤原氏は、素早い検証活動の一つとしてTDD(テスト駆動開発)におけるUT(単体テスト)の課題に着目。開発中に「テストコードを書くのが大変」という声をよく聞くが、その原因をコードが複雑になってしまっているからだと考察する。
反対に、「UTがすんなり終わる」コードは、SOLIDの原則のS「単一責任の原則」に忠実なキレイなコードだ。「キレイなコード=テストしやすいコードと言える」と藤原氏は言う。
また、「関数やメソッドが動くことをテストしても意味がない。そのメソッドが何をしないといけないのか。その役割が製品においてどういう位置づけなのかをテストする必要がある」と藤原氏。
つまり、TDDにおいてエンジニアが製品のゴールを表現するには、「仕様や要件を適切な機能やクラスに落とし込むスキル」と「関数やメソッドを単一責任の原則に従い実現するスキル」が求められる。加えて、キレイなコードを維持し続けるために「リファクタリングに踏み切る勇気」も必要だという。