19
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ちょうぜつAdvent Calendar 2020

Day 16

マンガでわかるおんぼろ煙突化ミニアンチパターン

Posted at

7D3999A4-F605-4622-8B46-FAFFE019A279.png
http://wiki.c2.com/?AutogeneratedStovepipeAntiPattern

薪ストーブというのは燃焼時の腐食物質のせいで、使っているとすぐに修理が必要になります。場当たり的なつぎはぎ修理を繰り返してボロボロになった煙突にたとえて、その場しのぎの対応を積み重ねたソフトウェアを、ストーブパイプと呼ぶことがあります。

ストーブパイプのアンチパターンは複数あり、これは英語名で Autogenerated が頭に付いているバージョンです。当時は、自動生成ウィザードが生成したコードからアプリケーションを作ろうとするブームがありました。そうして作られたものは、プロトタイプ段階での単独動作はうまくいきますが、実際にリアルな要求にさらされると、当然、手作業であちこちにつぎはぎのようなコーディングが必要になります。アーキテクチャ設計をもとにした計画に沿ってではなく、具合の悪い場所を見つけるたび無計画にコードが追加されることになるため、プロダクトはおんぼろ煙突になります。

現代ではこの自動生成を、安易なフレームワーク信仰に置き換えて読むことができるでしょう。もしかすると、自分たち固有の問題と、聞きかじって採用したフレームワークが想定している状況との間に、本当は致命的な相性の悪さがあるかもしれません。フレームワークが暗黙的にやってくれている処理は、フレームワーク作者がこれでいいだろうと考えた、最大公約数でしかありません。

また多くの場合、人気のあるフレームワークプロダクトは、デモアプリを作るのには非常に長けている、という点が、自動生成コードとの類似点として挙げられます。デモが魅力的であることが、人気を得た理由なのです。魅力的なデモにとって都合のいい暗黙の動作が、それぞれ固有の問題を抱えた開発者にとっても都合の良いものであるのかどうかは、十分に検討するべきです。

アンチパターン本では、この種のストーブパイプ化を避けるには、より普遍性の高い安定したインターフェースに依存したアーキテクチャが大切だと説明されています。複数のスケールに対応できる共通基盤を安定抽象とすることで、後から都合の悪い箇所に醜いパッチを当てるようなコーディングを避けることができるという考えかたです。

19
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?