テストエンジニアが身につけておきたいスキルの一つに「論理スキル」があります。
この連載では、「プログラムのレベル」「文や文章のレベル」に分けて、論理スキルの基本である「論理の言葉」を徹底解説します。
第1回の今回は、論理スキルが重要である理由、身につけておくべき理由を解説します。
筆者のnoteサイトで、「論理スキル[再]入門」を書こうと思った理由・経緯を綴っています。
■論理スキル・“入門編”のこと (T3:Pt1:Ch01)
よろしかったらご覧ください。
<テストエンジニアのための論理スキル[再]入門 連載一覧>※クリックで開きます
[第1回] なぜ、テストエンジニアに(も)論理のスキルは重要なのか【連載初回、全文公開中】
[第2回] プログラムレベルのロジック (1)概要編
[第3回] プログラムレベルのロジック (2)解説編・基本の論理演算
[第4回] プログラムレベルのロジック (3)解説編・論理演算の組合せ
[第5回] 文レベルのロジック (1)文レベルのAND/OR/NOT
論理(ロジック)の話をする理由
“論理的”とは
ビジネスの場でしばしば重要とされることのひとつに、“論理的であること”があります。
「論理的に考える/話す」「論理的な文章」など、耳に(目に)することも多いと思います。
ここでいう“論理的”とは、「矛盾や不整合、飛躍や欠落が見られない」「首尾一貫している(筋道が立っている)」……といった特徴を指していると言えるでしょう。
ソフトウェアは論理の塊
ソフトウェアはその殆どの工程/作業を通して“論理的”に構築されます。とりわけ、以下のような……
- AとBで○○を計算する。その結果がCなら、その結果を用いてDを計算する。そうでなかったら、Eを用いてFを計算する
- αの状況で、利用者がβという操作をしたら、画面をγに切り替えてδという動作をする
- 処理ができない状況になったら、処理を続行せずに停止する
- etc.
どんな場合に何をするのか(してはいけないのか)といった“条件/場合”に応じた処理/動作は矛盾や欠落がないようにしなければなりません。
また、どの工程の成果物(文書類)でも、その記述内容に食い違いや不明瞭な箇所があると 、構築したソフトウェアが適切な動作をしなかったり、暴走やフリーズに至ることもあります。こうした意味で、論理(ロジック)はソフトウェア開発の“生命線”とでも言えるでしょう。
テストにとっても論理は大切
テストをする立場にとっても論理(ロジック)は重要です。
- テスト対象の振舞いを、自分の解釈を加えたり想像で補ったりせずに、テストベースの記述の筋道を辿って理解する
- (テスト対象を操作しながら理解することもありますが、その場合は「どんな場合にどうなるのか」などを自分の頭の中で整然と組み立てていくことになります)
- テストすべきことを 当てずっぽうや思いつきではなく 根拠を持って、筋道を立てて 考える
本記事では、“論理的”に考えるための「基本的な道具」である「論理(ロジック)の言葉」をいくつか見ていきます。
以下のような人に読んでもらうことを想定しています。
- テストエンジニアとして、読解力、設計力を強化したいと考えている人
- 論理演算などを復習したい人
- (これからテストエンジニアを目指す人にもお勧めです!)
(ただし、テスト対象を理解したりテストすべきことを考えたりするのに、「論理の言葉」をひねり回すだけで十分というわけではありません。頭の中で考えるだけでなく、考えたことを図に表すなど視覚化してみて理解を確かめたりチェックしたりすることも大切です)
「筋道を辿る/筋道を立てて考える」とは
「筋道を辿って理解する」「筋道を立てて考える」ってどんな感じのことなの? と思う人もいると思います。かんたんな“例題”で体感してみてください。
“論理パズル”
この国のどこかに、正直者と嘘つきが住む村があります。
正直者は常に正しいことを言い、嘘つきは常に正しくないことを言います。村にはこの2種類の人間しかいません。
この村を歩いていたら、二人の住人AとBに出逢いました。Aは言いました。「私たちは二人とも嘘つきだ」
(【出典】『記号論理学 一般化と記号化』(スマリヤン / 丸善出版 問題1.3)
A, Bは、それぞれ正直者でしょうか、嘘つきでしょうか。
(ぱっと解答に辿り着けなくても気にすることはありません。ソフトウェア業界人なら誰でもこうした“論理パズル”がすらすら解ける、というわけではありません(筆者も論理パズルが苦手です(´・ω・`)))
※この論理パズルの考え方を文末に掲載しています。
どう考える?①
ある遊園地のあるアトラクションに、次のような注意書きが掲げられていました。
本アトラクションは以下の方のみ利用できます。
・身長130センチ以上190センチ以下
・体重90キログラム以下
・年齢満15歳以上
このアトラクションを利用できる人/できない人はどんな人でしょうか。
どう考える?②
とあるシステムのユーザーアカウント名の仕様です。登録できるユーザーアカウント名には以下の条件があります。
- (a) アカウント名に使える文字は以下のいずれかに限ること
- 半角英大文字(A~Z), 半角英小文字(a~z), 半角数字(0~9)
- (b) アカウント名は16文字以下であること
- (c) 既に登録済みのアカウント名は登録できない
新規ユーザーとして登録できないアカウント名文字列はどのようなものでしょうか。
論理的に考えることは、“スキル”
誰でも身につけることができるスキル
“論理的”に考えることは、持って生まれた何か特殊な才能やセンスによるものではなく、「論理の言葉」の意味や働きの理解・習得を通して身につけるスキルです。
- 言葉と言葉、文と文のつながりを把握し、条件や場合とその結果とのつながりを丁寧に結びつけて、文章の筋道を把握する
- 主張と根拠のつながりを明確にする
才能/センスということでいえば、誰しも物心ついた時から論理の才能/センスを育んでいる と言えます。誰しも、日々の生活や勉強、仕事などを通して(無意識的にでも)「論理的に考える」ということをいくらかは学んでいるからです(100%徹頭徹尾非論理的に考え、生きる人間は、たぶん一人もいません)。
意識を向ければ、その分(早く)上達する、というわけです。
誰しも身につけておきたいスキル
ソフトウェアやソフトウェアテストを離れてみても、論理のスキルは身につけておきたいスキルです。
“論理的”に考えることは、文章を読んだり話を聞いたりする上でも大切ですし、「報告・連絡・相談」をはじめとするコミュニケーション全般の質を左右するのは、 「話が一貫しているか、整合が取れているか」「言うべきこと、言いたいことを適切に表せているか」 ということだからです。
“裏づけ”を知っておこう
ここまで読んで、次のように感じた人も相当数いると思います。
- 「何を当たり前のことを言っているんだ?」
- 「特に勉強をした憶えはないけど、全然困ってないぞ!?」
そう感じた人は、自信を持ってよいと思います。意識せずに論理のスキルを身につけているのは素晴らしいことです。
そういう人も、「当たり前のようにできていること」にも基礎や裏づけがあると知っておくのは悪いことではありません。基礎や裏づけは「なぜそう考えるのか」を説明する助けになってくれるからです。
むすび
これから何回かに分けて「論理(ロジック)の言葉」をいくつか取り上げ、その意味や働き、注意点などを紹介していきます。
- プログラムレベルのロジック……基本の論理演算
- 文レベルのロジック ……文や文章の筋道を把握するための論理の言葉
(これだけですべて、というわけではないので、タイトルに「入門」とついています)
なお、本記事は「ロジカル・シンキング」を解説するものではありません。ロジカル・シンキングは主にビジネスコミュニケーションにおける体系的な思考・発想の技術です(本記事で取り上げる“論理のスキル”は、その中の一部として関係はしますが、イコールではありません)。
“論理パズル”の考え方
- Aが正直者だとすると、「私たちは二人とも嘘つきだ」はA自身も嘘つきと言っていることになってしまい、矛盾します。
- 従って Aは嘘つきで、「二人ともに嘘つきだ」は正しくありません。ということは、二人のうちどちらかが正直者ということになります。
- (「二人とも正直者」という可能性もありますが、2でAは嘘つきと判明しているので、これはあり得ません)
- Aが嘘つきなので、 Bは正直者です。
※なんでそうなるの!? と思った人は、「 [第3回] プログラムレベルのロジック (2)解説編・基本の論理演算」をご覧ください!
参考文献
- 『入門!論理学』(野矢茂樹 / 中央公論新社)
- 『新版 論理トレーニング』(野矢茂樹 / 産業図書)
- 『記号論理学 一般化と記号化』(スマリヤン / 丸善出版)
連載一覧
[第1回] なぜ、テストエンジニアに(も)論理のスキルは重要なのか【連載初回、全文公開中】
[第2回] プログラムレベルのロジック (1)概要編
[第3回] プログラムレベルのロジック (2)解説編・基本の論理演算
[第4回] プログラムレベルのロジック (3)解説編・論理演算の組合せ
[第5回] 文レベルのロジック (1)文レベルのAND/OR/NOT