関心の分離
キッチンでは料理をつくることに徹し、ホールでは接客に徹する。
どんな客がどこに座っているのかはキッチンでは知る必要がない。
今食材がどれだけ余っているかをホールでは知る必要がない。
関心の分離を行うことで、作業者は専任業務に集中でき全体効率が上がる。
関心の分離 (separation of concerns, SoC)とはプログラミングにおける専門用語で、
保守性を高めるために, ファイル/クラス/メソッド それぞれの役割を明確に分割することである。
例えば電子カルテを作る、ということになったとき、
「保存」ボタンの形や大きさ、色といった見た目の情報と、
「保存」ボタンを押した時のデータベースへの保存命令コードは、それぞれ
「デザイン」「振る舞い」という別々の関心事項であるから、
別なファイルに書くようにする、というものである。
関心の分離ではそれぞれの領分を超えないことが重要である。
デザインに関するコードを振るまいの部分に書いてしまうと、
デザインの修正をしようというというときに、振る舞いのコードまで読まなくてはならなくなる。
医療界では科ごとに専門が分かれ、一人の患者さんを別な視点から評価する。
例えばある腫瘍の手術に際して、放射線科はCT/MRI等で大きさや形、広がりを確認する。
外科はそれらの情報から術式を決定し、執刀を行う。
術前心電図の判読や心エコーの評価は循環器内科の専門医が行い、
麻酔科は全身状態を評価し麻酔法を決定、術中の全身管理を担う。また術後の疼痛管理も担う。
術中に採取された検体の病理診断は迅速に病理科が診断。
このようにそれぞれの専門性を生かした業務の分担がなされている。
一方で、医業における関心の分離はそれぞれの領分を超えうるという点が通常と異なる。
例えば手術の際、外科医はもちろん麻酔科医も病理医も放射線画像を評価しながら判断する。
これは、あらゆる情報が判断に影響を及ぼすためである。
だからイメージとしては、裾野の広い山。
頂点が自分の専門にフォーカスされていながらも他の分野の知識も必要なのである。
高い山は裾野が広いとはよく言ったもので、
専門にフォーカスしようとすればするほど、他分野の知識が必要ということを実感する世界である。