先日、社内のSlackでこんなことを言われました。
TDDとかのdrivenを駆動って訳すの誤訳じゃないのかと思うんですけど、どう思いますか?
意味合いは駆動より操縦とか運転なんだと思うんですが
そこで「駆動」の意味を改めて考えてみました。
辞書で調べてみる
goo辞書では以下のように書かれています。
[名](スル)動力を伝えて動かすこと。「四輪駆動」「駆動輪」
書籍から考える
書籍『エクストリームプログラミング』の第2章には以下のように書かれています。
「運転というのはね、車を正しい方向に走らせることじゃないの。常に注意を払って、こっちに行ったら少し戻して、あっちに行ったら少し戻して、そうやって軌道修正していくものよ」
これがXPのパラダイムだ。注意して、適応して、変更する。
なぜ「駆動」が誤訳だと感じてしまったのか
テスト駆動開発(TDD)は「test-driven development」の略であるように、直訳すると「運転」が当てはまる気がします。
書籍『エクストリームプログラミング』の話にあるように、ここでの「driven」は微調整を繰り返すことこそが重要に感じられます。*1
一方で「駆動」だと、「動かす」というニュアンスが強くなり、「微調整を繰り返す」という意味合いが薄くなっているように思えます。
もしかしてリファクタリングが蔑ろにされる理由の1つ?
さらに最近では「テスト駆動開発=テストをきっかけとして開発を行う」という認識の人も出てきているように感じます。*2
昨年のSelenium Confでのt_wadaさんの講演では、リファクタリングが行われなくなってくる理由について、次のように語っていました。(t-wadaのブログより引用)
黄金の回転を構成するひとつひとつの矢印が、単一の目的を持ち、十分な長さを持ち、 きちんとした軌跡を描いて回転している限りは、テスト駆動開発は大きなパワーを発揮し続けます。
しかしテスト駆動開発の回転がもたらすパワーは、矢印のどれかが傷つき短くなっていくことによって、だんだん減っていきます。
では、3つの矢印のうちで、最も打たれ弱く傷つきやすい矢印はどれでしょうか。みなさんは、どう思いますか?
一番弱く傷つきやすいのは、リファクタリングの矢印です。
(中略)
外発的であれ内発的であれ「きれいにしている時間はない」「リファクタリングしている時間はない」などと焦燥感に駆り立てられると、 リファクタリングの時間が短くなったり、リファクタリングが先送りにされ始めます。 リファクタリングの矢印は弱く、折れたり短くなったりしやすいのです。
もちろん、焦燥感によってリファクタリングが行われなくなることは十分ありえます。
ただそれだけなく、「テスト駆動開発」という言葉自体が、リファクタリングという微調整を繰り返す意味を無くしてしまっていることも原因のように思えます。*3
都合の良いように解釈しているだけ?
いや、ちょっと待ってください。
もしかしたら「微調整を繰り返す」という意味を「駆動」という言葉から無くしているのは、都合の良いように解釈しているからかもしれません。
「駆動」の元々の意味は、最初に書いたように「動力を伝えて動かすこと」です。これは「微調整」や「きっかけ」などの場面に限定した意味ではないはずです。
とするならば、いつからか「テスト駆動開発=テストをきっかけとして開発すること」と認識してしまい、そこから逆算的に「駆動=きっかけ」という本来の意味とは少し異なる考えに至ってしまったのかもしれないです。
改めて「テスト駆動開発」の意味を考えてみよう(+宣伝)
私はこの一件で、改めて「テスト駆動開発」というものを意味から考え直すことができました。
皆さんも「テスト駆動開発」とは何か、改めて考えてみませんか?
そもそも「テスト駆動開発」を知らない、やったことないという人は、8/1にTDD Boot Campが久々に開催されるので、そちらに参加して体験してみてはいかがでしょうか?*4
追記
記事を公開したら早くもフィードバックが!ありがたやー。
テスト(に)駆動(される)開発なのではないかと。例えばSteam-driven 蒸気で駆動されるやつ(蒸気機関車とか)なので
— Yasunobu Kawaguchi (@kawaguti) 2020年7月8日
確かに「driven」と受動態になっている以上、「テストに駆動される開発」と考えた方が良さそうですね。
ただその解釈であっても、「駆動される」タイミングが新しいテストを書き始めた時だけの認識になり、リファクタリングのような微調整を伴う時の認識が薄れているなーという思いは変わりません。*5
Test-driven という用語自体がはらむ誤認の可能性の指摘ということであればわかります。誤訳ということではなく。
— Yasunobu Kawaguchi (@kawaguti) 2020年7月8日
確かにそうですね。「誤認の可能性がある」という方が納得感があります。
ただ、発端となった社内の人の発言は「誤訳」なので、記事のタイトルはこのままでいきます。