絞め殺しのイチジクの応用

2004年6月29日

シンディと私がオーストラリアに行ったとき、クイーンズランド州の海岸の熱帯雨林でしばらく過ごしました。この地域の自然の驚異の一つに、巨大な絞め殺しのイチジクがあります。それらは木の上の枝に種をまき、徐々に木を下って土に根を張ります。何年もの間、それらは幻想的で美しい形に成長し、その間、宿主であった木を締め付けて殺します。

このメタファーは、重要なシステムのリライトを行う方法を表すものとして私に響きました。私のキャリアの多くは、重要なシステムのリライトに関わってきました。新しいものを古いものと同じように作れば簡単だと思うでしょう。しかし、それらは常に見た目よりもはるかに複雑で、リスクに満ちています。大規模な切り替え日が迫り、プレッシャーがかかります。新しい機能(常に新しい機能が存在します)は好まれますが、古いものは残しておく必要があります。古いバグでさえ、書き直されたシステムに追加する必要があることがよくあります。

もう一つの方法は、古いシステムの周縁に新しいシステムを徐々に作成し、古いシステムが締め付けられるまで数年かけてゆっくりと成長させることです。これを行うのは難しいように聞こえますが、ますます試されていないことの一つだと思います。特に、うまく機能するいくつかの基本的な戦略に気づきました。基本的な戦略はイベントインターセプションであり、絞め殺しのイチジクに機能を徐々に移行するために使用でき、アセットキャプチャを有効にすることができます。

私の同僚であるクリス・スティーブンソンは、最近、この方法で大きな成功を収めたプロジェクトに関与していました。彼らは最初の論文XP 2004で発表しました。このプロジェクトのより多くの側面を説明するものをさらに期待しています。彼らはまだ古いアプリケーションが締め付けられる段階には達していませんが、チームにさらに進むための信頼を与える貴重な機能をビジネスに提供しました。そして、たとえ今ここで止めても、彼らは大きな投資収益率を得ています。これは、多くの切り替えリライトが達成する以上のものです。

切り替えリライトよりも絞め殺しのイチジクのアプリケーションを検討する最も重要な理由は、リスクの低減です。絞め殺しのイチジクは着実に価値を提供でき、頻繁なリリースにより、その進捗状況をより注意深く監視できます。多くの人は、絞め殺しのイチジクはコストがかかると考えているため、依然として検討しません。私はそれについて確信が持てません。絞め殺しのイチジクではより短いリリースサイクルを使用できるため、切り替えリライトで発生することが多い不要な機能の多くを回避できます。

ここにはもう一つ重要なアイデアがあります。新しいアプリケーションを設計するときは、将来締め付けられやすくなるように設計する必要があります。正直に言うと、私たちが行っているのは明日のレガシーソフトウェアを今日書いているだけです。将来、絞め殺しのイチジクを追加しやすくすることで、今日の作業をスムーズにフェードアウトさせることができます。

参考資料

ポール・ハマンは、このアプローチを使用したケーススタディの良い要約を持っています。

改訂

2019年4月29日にURLと名前を絞め殺しのイチジクのアプリケーションに変更

この投稿は良いメタファーだと思いましたが、それが人気を博すとは思っていませんでした(最近では月間3000ページビューを超えています)。人気は良いのですが、問題があります。元の投稿のタイトルは「絞め殺しアプリケーション」で、使用すると、パターンは「絞め殺し」と呼ばれることがよくあります。しかし、その使用法はメタファーのルーツから切り離され、不快な暴力的な含意を帯びています。

したがって、一部の人々は名前を避けたり、変更したりすることを提唱しています。私はそれについて特に反対はありません。私は最初の投稿以降、自分の文章でその名前を使用していません。しかし、名前を変更しようとすると、一度コミュニティの心に定着した名前を追い出すのは非常に困難です。

最近、少し役に立つかもしれない小さな調整を思いつきました。投稿の名前を「絞め殺しのイチジクアプリケーション」に変更し、「絞め殺しのイチジク」という用語をできるだけ多く使用すると、名前のポイントであるメタファーリンクを強化することで、暴力的な含意を減らすことができるはずです。小さな変更なので、おそらく十分に広まる価値があり、それほど手間もかからないので、試してみる価値があるようです。