見出し画像

抽象と具体を行ったり来たりの具体を考える

この記事の目的

・抽象と具体を行ったり来たりという例え話の分かりづらさを取り除きたい
・抽象と具体を行ったり来たりには難しさがあることを自分が再認識したい

自分の言葉で書きたいため、引用を避けます。よって一般的な意味合いとは違うことが多分に含まれることをご承知おきください。

抽象化とは何か

抽象化とは、共通している特徴を持つ様々な具体例を一般化して、まとめて扱うことです。
数学などで、ある規則に従って並んでいる数列(2,4,8,10、…)などを、y=2xと表したり、0.1、0.2、0.3、などの数値を「小数」とまとめて呼ぶことです。

抽象化を使うと嬉しいこと

・まとめて扱えるので、1個1個のことについて議論する手間が省けます。
・情報量を圧縮することができるので、要点を理解しやすくなります。

抽象化の具体例

・テスト項目書作成において、1は入力するか?1000は入力するか?500は入力するか…一つずつ考えるより、「入力値」という共通項で括って「入力値は何をテストするか?」と考えたほうが早い

・テスト項目書レビューにおいて、テスト項目書の1行1行が何をテストしているかの具体値を説明するより、「何を確認しているか」という項目レベルにで説明した方が分かりやすい

具体化とは何か

具体化とは、ふんわりしている事柄が具体的には何を表しているのかを明確にすることです。
ふんわりしている事柄は、話をしている人が持つ背景や知識に理解度を左右されます。よって認識齟齬が発生することがあります。
例えば、「ある入力フォームに小数を入力するとゼロになってしまう」という不具合があったとします。この小数が「0.1」であるのか「0.000000001」であるのか、「小数」という言い方だけでは特定できません。
認識に幅がある一般化された事柄を、その事柄そのものを示すことで明確にして、認識の齟齬をなくすことが具体化です。

具体化を使うと嬉しいこと

・想像力で補う部分が減るため、認識齟齬が少なくなります。
・認識齟齬が減り、解決したい事柄、話したい事に短い時間でフォーカスを合わせることができます。
・具体的にどうすればいいかを検討することができます。

具体化の具体例

・不具合を説明するときに誰が読んでも分かる手順を記載する
(概要はざっくりと書き、手順は具体的に書く)

・テスト項目の正解動作に具体的な値を記載する
(テスト分析の段階で抽象的な観点を使用していたら、具体的にどういう風にそれを確認するかに落とし込む)

抽象と具体を行ったり来たりする目的

どちらも、場面に応じて物事を「認識しやすくする」ためです。
一例として、情報の伝わりにくさで考えてみると良いです。

話が細かすぎて伝わらない場合や、1万行以上あるテストケースの羅列のみのテスト項目書…これは、具体的すぎる=情報量多すぎて伝わらない例です。
抽象化、つまりどういうことかという方向に話をまとめたほうが、人類の扱える情報量になるため、伝わり易くなります。

逆に、アレがアレしてアレするなどの代名詞だらけの会話や、ざっくりと「確認すること」しか書いていない、手順も結果もないテスト項目書…これは、抽象的すぎる=情報量少なすぎて伝わらない(伝えたかったことの再現性がなくなる)例です。
これは、具体的な名詞や手順、結果を出した方が、伝えたかった情報を正確に伝えることができます。

抽象と具体を行ったり来たりは何故難しいか

抽象と具体を行ったり来たりの難しさについて考えます。
難しさを考える上では「自分の中で考えを整頓する」ということと「他人に伝えるために抽象度をコントロールする」という側面に分かれると思うので、両者から考えます。

自分の中で考えを整頓するときに難しい「行ったり来たり」

自分の中で抽象と具体を行ったり来たりするときは、どちらも自分の知識,視点に大きく左右されます。
自分でいうと「ここは壁にぶつかって具体化できない」は品質的な改善点を考えるときにあるかもしれません。自分がテスト担当としての視点しか持っていないので、それ以外を思い付きにくいとは思います。
このように「持っていない視点」に対して抽象化、具体化ともにしづらさを感じることがあります。

 他人に伝えるときに難しい「行ったり来たり」

抽象と具体を行ったり来たりは視点の移動に大体等しいですが、人によって視点、考える基準は異なり、その「移動できる幅」も異なります。
人に伝えるために話を抽象的にしたり具体的にしている場合、前述の違いによって必ずしも伝え易くならないことがあります。

例えば、テストを作ったことがない人に同値分割や境界値分析の技法の話をしてもあまりピンとこないのではないでしょうか。
また、JSTQBを学んだことがない人に「境界値分析でテストしてね」といっても、うまく伝わらないのではないでしょうか。

難しさを自覚する

人によって思考の方法(頭の中で言葉で考えているか、図形でとらえているか、もっと概念的にとらえているか)や理解している言葉は、異なります。
視点の移動ができない人もいます。

抽象と具体を行き来するという言葉自体も理解しがたい人もいるでしょう。
抽象度のコントロールができることが当たり前ではなく、
また、抽象度をコントロールできれば全てが伝わりやすくなるわけでもないのです。

伝えることを放棄しない

他人に伝える手段としての抽象度のコントロールについて記載します。

抽象度をコントロールするというのはあくまで伝え易くするための手段の一つです。
しかし前述の通りそれぞれの視点の違いがあるため、抽象度のコントロールだけで伝え易くするというのは無理筋です。

ただ、完璧には分かってもらえないとしても、伝え易くする手段はあります。
相手の視点を読み、相手の中にある言葉を使い、相手の分かる抽象度、具体例を想像する。
伝えたい人になるべく思考の負荷をかけない手段を選ぶことこそが、抽象化をコントロールしてやろうとしていたことそのものなのではないでしょうか。

まとめ

抽象化、具体化とは物事を認識しやすくする手段の一つ
抽象化、具体化は人それぞれの知識量・視点に左右される
抽象化、具体化を使っても誰にでも分かりやすくなるわけではない
それでも伝えるための手段はある