要件定義の不安をなくす。要件定義の不安をなくす。ユニファのバックエンド分割に学ぶイノベーションメタバース開発に必要な技術の基本知識をおさらい。Boost」など、さまざまなカンファレンスを企画・運営しています。BOOKS(コードジン・ブックス)は、CodeZineの連載からカットアップした、開発現場の課題解決に役立つ書籍シリーズです。11:00開発プロセスデブサミイベントレポートツイートデブサミ2020の1日目、「質とスピード」というセッションが人気を集めた。2019で評価の高かったセッションをアップデートして再演したものだ。登壇したのは、テスト駆動開発者として有名な、タワーズ・クエストの和田卓人氏。ライオンのアスキーアートといっしょに紹介されることが多いという。プロジェクトマネジメントにはQCD(Quality:品質、Cost:コスト、Delivery:納期)という概念があり、トレードオフの関係になると言われている。確かに開発の現場でも、「いまは大事な時期だから、品質を犠牲にしてスピードを優先しよう」といった判断が行われることは少なくない。和田氏は、ソフトウェア開発の文脈において、逆の効果をもたらすことを、多くの資料を引用して再構築してみせた。最初に、和田氏は書籍『アジャイルサムライ』に載っていた「荒ぶる四天王」を紹介した。スコープ」が限られている場合、どれを犠牲にすべきかという問題だ。多くの現場では、品質を犠牲にして、スピードを得ようとするだろう。和田氏は、品質を犠牲にすれば短期的にはスピードが得られるが、中期的には逆効果になり、長期的には致命傷になると述べた。これには、多くの人が同意するだろう。本当は何を犠牲にしているのだろう。この短期・中期・長期とは、どのくらいの期間を指すのだろうか?そこで、和田氏は、品質という言葉に注目した。品質は、操作性や信頼性など「○○性」がつく言葉であらわされる。英語では「Usability」や「Reliability」など、末尾に「ility」がつく多くの言葉が該当するという。ソフトウェアの品質には、お客様から見える外部品質と見えない内部品質があり、「内部品質を作り込んだ結果として、外部品質として定義される特性の実現に近づくことができる。内部品質は結果ではなく原因であり、良いソフトウェアが備えているべきものだ」と、『レガシーコードからの脱却』という本を引用して説明した。品質を犠牲にしてスピードを得ようというとき、この内部品質の保守性(Maintainability)や柔軟性(Flexibility)を犠牲にしていると述べた。保守性を犠牲にしても、中長期的にスピードは上がらないでは、保守性の低さという技術的負債は、何をもたらすのだろうか?和田氏が描写したのは、第1次世界大戦の野戦病院のように疲弊しきった現場、どこに影響があるか分からないスラム街の長屋のように荒みきったコード、爆弾処理のようなリリースという、短期的に無理し続けたプロジェクトの姿だった。このような現場では、技術的な負債が蓄積された結果、いろんなところが裏で手をつないで、足を引っ張りあっており、ひとつひとつの変更に余計な時間がかかるようになっている。その結果、単位時間あたりの生産量は下がっていく。保守性を落とした結果、スピードも落ちてしまうのだ。それでは、スピードを落として時間をかけたら、保守性は向上するだろうか?これについては、「技術力のある人はある程度急いで作ったとしても一定以上の品質のコードを書くし、意図的に品質を落としたとしても速度はあまり上がらない。逆に、技術力が高くない人が時間をかけて作ったとしても、その人の技術力以上の品質のコードは書けないだろう」と述べた。保守性とスピードは、トレードオフの関係ではないのだ。興味の対象はオープンソースの日常利用、ライセンス、プログラミング学習など。オープンソースライセンス」。学生時代にソフトウェア工学を学び、オブジェクト指向分析/設計に傾倒。執筆活動や講演、ハンズオンイベントなどを通じてテスト駆動開発を広めようと努力している。『プログラマが知るべき97のこと』(オライリージャパン、2010)監修。『SQLアンチパターン』(オライリージャパン、2013)監訳。『テスト駆動開発』(オーム社、2017)翻訳。3.12」の最初のベータ版がリリース新着記事一覧を見るイベント今後の予定を見るCodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。イラストの無断転載を禁じます。記載されているロゴ、システム名、製品名は各社及び商標権者の登録商標あるいは商標です。