思考過程のメモです「アプリケーションが動いている状態はある種の平衡状態である」簡潔に言語化できてなかったけどまさにそれを言いたかったんです。2019アプリケーションの設計とはアプリケーションの設計とは、「空間を定義し」「問題を識別し」「解決手段を選択する」工程である。空間の定義システムの中で、設計の対象とする領域とそうでない領域を定義する。システムへの要求により空間は大きくなる。フレームワークは空間を狭める効果がある。システムの空間のなかで設計の対象範囲を広く定義するほど「設計の自由度が高い」とみなせる。設計の自由度が高ければ選択できる解決手段も増えるが、同時に問題の量も増える。設計空間の中で、問題を識別し、それを解決できる手段を選択する。システムの問題を解決するためにはシステムに作用する必要があり、その作用により別の問題が発生することが常である。トレードオフと呼ばれ、解決前の問題と解決後の問題の重みを比較し、どちらを受け入れるかを選択する。結果として、問題と解決、それによる問題を補う解決、というようにネットワークがつながっていく。問題を解決するための手段はほとんどの場合複数ある。複数の問題を一挙に解決できる手段もある。目先の問題を解決するための手段が連鎖の先で大きな問題を誘起することもある。良い設計は、全体としてネットワークの分岐やサイズをコンパクトに抑える。すべての問題が解決されることはない。ネットワークの末端や途中には未解決の問題が残る。それらを解決することでさらにシステムを拡張する選択もあるが、解決しないという選択を取ることもできる。それは仕様と呼ばれたりレガシーと呼ばれたり負債と呼ばれたり、認識はいろいろである。その問題から先のチェーンをふるい落とし、システムをコンパクトに維持するための先送りである。そのようにして設計されたシステムは、全体として釣り合いがとれた平衡状態になる。システムは時間とともに外部からの刺激を受ける。新しい機能の追加、仕様の変更、あるいはインフラ環境の変化など。それらはシステムの中で新たな問題を生み出す。新たな問題を解決するためにまたシステムに手を加える必要が生まれる。良くない設計は、新たな問題に対して必要な変更が大きいシステムを生み出す。柔軟性が低く、衝撃を吸収できない。メンテナンス性が低いともいう。新たな作用により既存の問題と解決に影響してしまうこともあり、ネットワーク全体で新しい平衡に達するまでに時間がかかる。良い設計は新しい平衡に達するまでの時間が短い。新たな問題の発生を予測してあるシステムは、解決のために既存のネットワークに加える変更が小さい。設計すべきか現在観測できる問題をスマートに解決できるシステムであっても、未来に受ける新たな外部刺激から生まれる問題に弱くては良い設計とは言えない。いって最初からあらゆる問題を想定することは早すぎる最適化のような別の問題も引き起こし、開発コストも増加する。どこまでを現在の設計でカバーし、どこから先を未来の再設計に先送りするかの選択こそが必要である。それすらもトレードオフである。多くの問題は一般的に発生するパターンがある。多くの選択肢の中から最良の決定をする。一度達した平衡が崩れる将来リスクを認識し、備える。読者になる@laco2netをフォローらこらこファンクラブhttps://www.patreon.com/lacolacoPatreonで支援を受け付けています。(5)月別アーカイブはてなブログをはじめよう!lacolacoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。