BT

アーキテクチャ、技術、そしてアンチパターン「溶岩流」

| 作者: Jan Stenberg フォローする 34 人のフォロワー , 翻訳者 徳武 聡 フォローする 0 人のフォロワー 投稿日 2015年1月20日. 推定読書時間: 2 分 |

原文(投稿日:2015/01/12)へのリンク

アーキテクチャと技術を連続して変えながらアプリケーションを走らせると、脆弱で断片的なコードベースが生まれ、理解やメンテナンスが難しくなる。Mike Hadlow氏は溶岩流または溶岩層とこのアンチパターンを命名し、このアンチパターンが時折表れる理由について自身の経験を書いている。

氏はフリーランスのソフトウエアエンジニアであり、企業向けソフトウエアの世界でこのアンチパターンをよく経験している。特に、大規模でミッションクリティカルで長い間動いているソフトウエアで、社員の配置換えが頻繁な企業で起こりがちだ。また、このアンチパターンはソフトウエアを改善したいと思うときに姿を現す。氏はこのアンチパターンの出現を説明するために、あるアプリケーションについてのフィクションを書いている。これは、氏のたくさんのプロジェクトの経験から生まれたものだ。

新しいアプリケーションの開発は.NETが比較的若いときに始まり、ウェブアプリケーションをASP.NETで作ることになった。設計もMicrosoftの設計ガイドラインに従い、ADO.NET RecordSetを使ってデータアクセス層を作り、Datasetsで直接UI層に公開していた。

アプリケーションはリリースされ、少したったあとに、新しい要件が生まれ、新しいバージョンのための予算が付く。新しいリード開発者は、DALの実装とDatasetsの使い方が気に入らない。そこで、新しい設計を採用する。システムの新しい部分にはオブジェクト指向のアプローチが採用され、テーブルを表現するクラスとコードが関係スキーマから生成される。

さらに数年経って、システムを開発している新しい開発者はふたつの異なるモデルが理解できない。DatasetsもActive Recordも解らないので、3番目のバージョンには新しい設計が採用される。ドメインモデルとObject-Relational Mapper, ORMを使ったアプローチだ。完全な書き直しはできないので、最終的には3つのデータアクセスソリューションと同じ種類の関数の違う実装が生まれる。

これは、フィクションだが、氏は実際にこのようなプロジェクトをよく見ている。一貫した設計戦略や設計哲学がないプロジェクトでは、新しい設計や実装を導入できるが、それが、古いものを完全に置き換えることはほぼあり得ない。その結果、アプリケーションの歴史を示す古層が生まれ、異なる技術的流行が使われる。氏は開発者のシステムをより良くしたいという動きは認めるものの、必要なリソースがなく、結果、氏が名付けた溶岩流というアンチパターンが生まれる。

氏は既存アプリケーションの設計上の変更や技術上の変更は注意深く評価することを推奨している。場合によっては、古いと思われる方式でも、技術的に一貫しているほうがいいかもしれないのだ。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

この教えは大事 by Narushima Hironori

ソフトウェア開発者の最初の願いとしては「その時点での最高の技術を、最高の設計で実装したい」のですが、とはいえ、変更にかかるコストを冷静に見なければいけません。最高じゃなくとも、そこそこ一貫性があれば、それで十分な場合が多いんですね。一貫性もなにもないどう見ても破綻状態というなら別ですが、一見古臭くて冗長でも、筋が通ってるなら、そういうものだと思って維持し続けるのが、ROIという最重要指標の観点からしてみればベストでしょう。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

1 ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT