ドメイン知識
ドメイン知識(ドメインちしき、英: Domain knowledge)または領域知識は、はっきり限定された、ある専門分野に特化した分野の知識であり、一般知識またはドメイン独立の知識と対比される。
低レイヤーと言っているのは、今から作る機能に直接は関係ないけども、なぜその機能が必要とされているのか、という背景部分になります。ユーザーをとりまく外部/内部環境・ステークホルダー・そして歴史についてのドメイン知識です。
ちょっとわかりづらいので、皆さんもよく聞く「確定申告」の機能を例に、低レイヤーのドメイン知識の例示をしてみます。
・日本にはいろいろ税金がある。消費したら消費税、相続したら相続税。そして稼いだら稼いだ分払う「所得税」
・「所得」というのは事業的にいえば利益のことで、売上から経費を差し引いた額のこと。
・確定申告とは、この所得税を納めるにあたり「私は今年いくら所得がありましたよ、だからこれだけ税金を払います」と国に対して提出する書類。個人事業主も法人も両方必要で、会社員なら”源泉徴収”という形で毎月給与から引かれてるので申告は不要。
・税金の払い方には、申告と賦課(ふか)方式がある。確定申告はその名のとおり「申告方式」で、納税者が自分で納付すべき税額を正しく計算し、それに基づいて納付するという制度で、税額を税務官庁に勝手に決められることがないので、より民主的な方式と言える。所得税は戦後賦課方式から申告方式に変わった。
どうでしょうか、なんとなく「確定申告」の解像度が上がったように思いませんか。 これらは、一見すると直接関係がなさそうに見えますが、私は非常に大事なことだと思ってます。
UI/UXデザイナーがジャーニーマップを描きやすいように。QAがいろんなテストケースを思いつけるように。エンジニアが細かい挙動を自分達で考えて実装できるように。
そしてなにより、それぞれ自分の技術が、これから社会にどんなインパクトを与えられるのかイメージして、ワクワクできるように、という想いを込めています。
最初のうちは試験的にやっていましたが、やはりこの勉強会があるかないかで進み方が大きく違うので、ドメイン知識が重要な開発では必ず実施するようにしています。
開発メンバーが「何を作っているのか、誰のどんな課題のために作ってるかわからん」っていう状態は、なんとしても避けたいですね。