エンジニアリングにおいて、「依存」は重要な概念です。
たとえば『Clean Architecture』では、設計やコンポーネントの原則のなかに「依存」をテーマにするものもあるように、依存に対する理解は不可欠と言えるでしょう。
このエントリでは他の職種の人にも「依存」の重要性を知ってもらうため、「持ち家と賃貸」を例に挙げて、エンジニアリング関連の言葉を使わずに「依存」を説明するようなテキストを書いてみました。
ぜひ5分ぐらい時間を確保して読んでいただければと思います。
言葉の意味を考える
まず「依存」とは、どのような意味でしょうか。
Weblio辞書を引くと「他に頼って存在、または生活すること。1」と書いてあります。
つまりは「自身以外のものを必要とすること」と言えるでしょうか。
身近な「依存」
たとえば私たちは家に住んでいます。
そして「家は必要だ」と考えるとき「私は家に依存する」と表現できます。
「依存」というと「依存症」というような強烈なイメージのみ持つかもしれませんが、いたるところに依存はあります。
依存していない人は存在しません。
どんなものにも依存関係はあります。
依存することによって何が起きるか?
つぎに「依存することによって何が起きるか?」を考えてみましょう。
自分なりに説明すると、
「依存先の変更の影響を依存元は受ける」
と言えるでしょうか。エンジニアにとっては、この意味合いがとても重要です。
依存先の変更の影響を依存元は受ける
さきほど「私は家に依存する」と書きました。
「私は家に依存する」ということは、「家の変更があると私も影響を受ける」ということです。
- 素敵なソファーをリビングに置いたけれど、引っ越したら置き場所に困ってしまった
- 隣に越してきた人がうるさくて寝れない
みたいな例は一度はあるはずです。2
依存には強弱がある
そのままさらに「依存」の解像度を上げてみましょう。それは、
「依存には強弱(度合い)がある」
ということです。つまり強い依存と弱い依存があります。
強い依存
「強い依存」とは「依存先を変更できないものに対する依存」です。
たとえばあなたが持ち家を持っている場合、そう簡単には他の持ち家に変えることはできないでしょう。
この場合「私は持ち家に強く依存している」と表現できます。
「依存症」と呼ばれるものもこれに該当するでしょうか。「私はアルコールに強く依存している」つまり「アルコールという依存先を変更できない(やめられない)」わけですね。
弱い依存
一方で「弱い依存」は「依存先を容易に変更できる依存」です。
持ち家に対応させるなら、賃貸が正しい例でしょうか。来年違う家に住んでいるかもしれません。「私は賃貸に弱く依存している」わけです。
依存の度合いは変化するしコントロールもできる
最後に。依存をきちんと把握できると、いずれは依存をコントロールできるようになります。
変更が起きないものには強く依存する
たとえば持ち家を持っている人は、どうせ家の変更はないでしょうから、オーダーメイドされた本棚を設置したり、キッチンにさまざまな調理家電を置いたりしても構いません。
つまり「変更が起きないものには強く依存する」作戦をとっているわけです。
変更が起きやすいものには弱く依存する
しかし賃貸でこれをやるとどうでしょう。
その本棚は次の家には収まりきらず、まな板を置くスペースもないキッチンになるかもしれません。
言い換えれば「変更が起きやすいものには弱く依存する」必要があります。賃貸に変更が起きないことは考えられません。
繰り返し、ここで重要なのは、依存の度合いはある程度コントロールできるものだということです。
持ち家に住んでいたとしても「いつ地震で壊れるかわからない」と考えるのであれば、その人は「依存を弱める」戦略をとれます。
エンジニアがなぜ「依存」を重要視しているのか
エンジニアも日々いろいろな「依存」をコントロール、とくに弱く依存するように工夫しています。
なぜか。それは「刻々と変わっていく状況に対応するため」です。
ビジネスやエンジニアリングの現場は、持ち家とは違って、死ぬまで一生変わらないことが有り得ません。
オンプレミスからクラウドへ
最近ではもう当たり前になってきた「クラウド」は、その主な例でしょう。
自社のサービスが動くサーバの実物が社内に置かれているとき、そのサーバは用意に交換できないため「自社サービスはサーバに強く依存している」ことになります。
当然サーバの変更はモロに受けます(サービスの停止)。
これをクラウドに変えると、サーバは(上記例と比較して)変更容易なものになります。
いまあるスペックのサーバで満足できなければ、依存先を別のスペックのサーバに切り替えればいいだけです。「弱く依存している」と言えるでしょう。3
まとめ
本エントリのポイントをまとめなおすと、次の通りです。
- 依存とは、自身以外のものを必要とすること
- どんなものにも依存関係はある
- 依存先の変更の影響を依存元は受ける
- 依存には強弱の度合いがある
- 変わらないものには強く依存する
- よく変わるものには弱く依存する
- エンジニアリングにおいては「よく変わるもの」が多いので、弱く依存できるような工夫をしている
この記事が好評であれば、もうひとつだけ「依存関係は逆転できる」というテーマも書いてみようと思います。
またここまで読んでいただいた方は「強く依存しているもの」や「弱く依存しているもの」の実例を教えていただけたら幸いです。