【保存版】3大思考法の徹底比較と実践方法

# はじめに
この記事では、エンジニアリングをする上でも重要な

1. ロジカルシンキング
2. クリティカルシンキング
3. ラテラルシンキング

の、3つの思考法について
それぞれの違いと、どのようにプログラミングや日常生活で活用できるかを解説します。

## 1. ロジカルシンキングとは
### 1.1 ロジカルシンキングの定義

![3大シンキング_page-0003.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552881/e76c3553-d5c0-e974-965c-0ec98dc33fd8.jpeg)

#### 特性

![3大シンキング_page-0004.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552881/5b591057-13eb-81e6-b28a-1bf8453b4829.jpeg)

#### 例えば
日常生活においても、選択肢が複数ある場合にメリットとデメリットを比較し、最も合理的な選択をする際にロジカルシンキングが活用されます。
また、ビジネスの世界では、戦略的な意思決定や、プレゼンテーションでの説得力を高めるためにも重要です。

### 1.2 プログラミングにおけるロジカルシンキングの役割
プログラミングにおいて、ロジカルシンキングは不可欠なスキルです。
コードを書く際には、論理的に考えることで、エラーを防ぎ、効率的なアルゴリズムを構築することが可能です。

#### コードの設計と構築
プログラムを設計する際、問題を分解し、各パーツがどのように相互作用するかを論理的に考える必要があります。
例えば、関数やクラスの設計では、各機能がどのように他の部分と連携するかを明確にすることで、バグを減らし、メンテナンス性を向上させることができます。

#### デバッグとトラブルシューティング
プログラムにバグが発生した場合、原因を特定し修正するには、ロジカルシンキングが不可欠です。
エラーメッセージや動作の不具合をもとに、コードのどの部分に問題があるかを論理的に推測し、修正していくプロセスが求められます。
ここでは、条件分岐やループの構造を再確認し、問題点を順序立てて特定することが重要です。

#### アルゴリズムの選択と最適化
プログラミングには、同じ結果を得るために複数のアプローチがあります。
ロジカルシンキングを活用することで、どのアルゴリズムが最も効率的かを判断し、選択することができます。
例えば、データのソートや検索において、入力データの特性に応じた最適なアルゴリズムを選ぶ際には、論理的な判断が必要です。

#### コードの可読性と保守性の向上
ロジカルシンキングは、他の開発者が理解しやすいコードを書くためにも役立ちます。
コードを明確でシンプルに保つことで、後に保守や拡張が必要になったときにも、誰もが容易に理解できる状態にしておくことが重要です。
このため、変数名や関数名を適切に選ぶ、コメントを適切に挿入するなど、論理的な整理が求められます。

#### システム全体の最適化
複雑なシステムを設計する際には、各部分が効率的に機能するように考慮する必要があります。
例えば、分散システムでは、データの同期や処理の並列性を考慮して、全体のパフォーマンスを最適化する必要があります。
ここでも、ロジカルシンキングを使ってシステム全体を分析し、最も合理的な設計を行うことが求められます。

### 1.3 つまり

![3大シンキング_page-0005.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552881/42c8b946-0be5-7926-bf2b-45112cd0e70b.jpeg)

## 2. クリティカルシンキングとは
### 2.1 クリティカルシンキングの定義

![3大シンキング_page-0007.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552881/a3dfdd3a-24a9-3594-7c91-de0be3ac96a4.jpeg)

#### 特性

![3大シンキング_page-0008.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552881/6db5e34e-c9f7-1244-78c3-ebf9c9519512.jpeg)

#### 例えば

クリティカルシンキングは、ニュース記事を読む際に役立ちます。
表面的な見出しや感情に訴える内容に惑わされず、その情報源や裏付けとなるデータを確認し、事実と意見を区別します。
また、日常生活においても、何かを購入する際に製品レビューを慎重に検討し、信頼できる情報に基づいて判断を下す際に活用されます。

### 2.2 問題解決におけるクリティカルシンキングの重要性
クリティカルシンキングは、問題解決において非常に重要な役割を果たします。
特に複雑な問題に直面した際に、表面的な解決策に飛びつくのではなく、問題の根本原因を分析し、最適な解決策を見つけるために必要な思考法です。

#### 根本原因の分析
問題が発生した際に、その原因を探るプロセスでは、クリティカルシンキングが欠かせません。
単に表面的な現象に注目するのではなく、問題の背後にある根本的な要因を分析し、解決するための道筋を見つけることが重要です。
例えば、システムのパフォーマンスが低下している場合、単にハードウェアの問題と考えるのではなく、ソフトウェアの構造やデータ処理のボトルネックを含む複数の要因を評価する必要があります。

#### 仮説検証
解決策を考える際には、クリティカルシンキングを活用して、仮説を検証することが重要です。
新しいアイデアやアプローチを試す前に、その実現可能性や潜在的なリスクを批判的に評価します。
例えば、新しい技術スタックの導入を検討する場合、その技術がチームのスキルセットに合っているか、既存のインフラと互換性があるかを慎重に評価することが求められます。

#### リスク評価と管理
問題解決にはリスクが伴うことが多いため、クリティカルシンキングを活用して、リスクの評価と管理を行います。
潜在的な問題や障害を予測し、それらに対する対策を計画することが重要です。
例えば、新しい機能をリリースする際には、ユーザーに与える影響やセキュリティリスクを事前に評価し、適切な対応策を講じることが求められます。

#### バイアスの排除
人間の判断にはしばしばバイアスが影響を与えます。
クリティカルシンキングは、これらのバイアスを認識し、排除するためのツールとしても機能します。
例えば、過去の経験や直感に基づいた判断が、必ずしも最適ではない場合があります。
このような場合には、データや証拠に基づいて判断を下すことで、バイアスを排除し、より客観的な結論に至ることができます。

#### 複数の視点からの検討
問題解決において、複数の視点から問題を検討することも重要です。
クリティカルシンキングを活用することで、異なる立場や見解を考慮し、最も包括的で効果的な解決策を見つけることができます。
例えば、顧客のニーズに応えるための新機能を開発する際には、エンジニアリング、デザイン、マーケティングなど、各チームの視点を統合して考えることが求められます。

### 2.3 つまり

![3大シンキング_page-0009.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552881/0299a076-0f87-aee3-db85-f285231e0c34.jpeg)

## 3. ラテラルシンキングとは
### 3.1 ラテラルシンキングの定義

![3大シンキング_page-0011.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552881/44c0839f-173e-1c26-ef0c-ea9afa182072.jpeg)

#### 特性

![3大シンキング_page-0012.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552881/f2a9bbaf-46d0-fe3f-6f59-66f8a8bb1468.jpeg)

#### 例えば

ラテラルシンキングは「どうすれば最短距離で目的地に到達できるか？」という問いに対して、単に距離を短くする方法を考えるのではなく、目的地そのものを変える、移動手段を変えるといった新しい視点を取り入れます。
このように、従来の枠組みを超えて、より広い視点で解決策を模索することがラテラルシンキングの本質です。

### 3.2 創造的な解決策を導くラテラルシンキング
ラテラルシンキングは、特に新しいアイデアや革新的な解決策を必要とする場面で有効です。

#### 新機能の開発
新しい製品やサービスを開発する際には、従来の発想ではなく、全く新しい視点からアイデアを生み出すことが重要です。
ラテラルシンキングを活用することで、既存の市場ニーズに対応するだけでなく、ユーザーがまだ気づいていない潜在的なニーズを発見し、それに応える製品や機能を開発することができます。

例えば、スマートフォンの通知機能を改善する際、単に通知の音やバイブレーションを変更するのではなく、ユーザーの行動パターンに基づいて通知のタイミングや方法を自動的に最適化する仕組みを考えるといった発想が、ラテラルシンキングによって導かれる可能性があります。

#### 制約条件下での問題解決
リソースや時間、コストに制約がある中で問題を解決する際には、従来の方法ではうまくいかない場合があります。
ラテラルシンキングを用いることで、制約を逆に活かした解決策を見つけることが可能です。

例えば、プロジェクトの予算が限られている場合、既存のリソースを最大限に活用するために、他のチームとコラボレーションする、新しいツールや技術を導入するなど、従来とは異なるアプローチを考えることができます。
このように、制約を単なる制限と捉えるのではなく、創造性を発揮するきっかけとして活用することが重要です。

#### ユーザーエクスペリエンス（UX）の改善
ユーザーが製品やサービスをどのように体験するかを改善する際にも、ラテラルシンキングが役立ちます。
従来の設計や使用方法に囚われず、ユーザーがより快適に、楽しく利用できる方法を探ることが求められます。

例えば、アプリケーションのインターフェースを改善する場合、単にボタンの配置やデザインを変えるのではなく、音声操作やジェスチャー操作など、全く新しい操作方法を提案することも考えられます。
また、ユーザーが求めている機能を追加するだけでなく、予想外の便利な機能を提供することで、より良いエクスペリエンスを提供できるかもしれません。

#### チームビルディングとコミュニケーション
チーム内でのコミュニケーションやコラボレーションを促進する際にも、ラテラルシンキングが効果的です。
従来の上下関係や役割分担に縛られず、新しい形の協力体制を構築することで、より効率的で創造的なチームを作ることができます。

例えば、プロジェクトチーム内でアイデアを共有する際に、従来のミーティング形式ではなく、デザインシンキングの手法を取り入れて、ブレインストーミングセッションを行うといったアプローチが考えられます。
また、異なる専門分野のメンバーを組み合わせることで、新たな視点やアイデアが生まれる環境を作り出すことも可能です。

#### マーケティング戦略の立案
製品やサービスを市場に展開する際、従来のマーケティング手法に囚われず、革新的な戦略を考案することが求められることがあります。
ラテラルシンキングを活用することで、消費者の関心を引き、競合との差別化を図る新しい方法を見つけることができます。

例えば、既存の広告媒体だけでなく、SNSやインフルエンサーを活用した新しいプロモーション戦略を考えることができます。
また、顧客のライフスタイルに密着したユニークなキャンペーンを展開することで、製品やブランドの認知度を高めることも可能です。

### 3.3 つまり

![3大シンキング_page-0013.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552881/a10e14ac-920d-97bf-f63b-748ede33ea57.jpeg)

## 4. それぞれの思考法の違いと使い分け
### 4.1 各思考法の特徴比較

![3大シンキング_page-0015.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3552881/4b937186-bc06-53e0-72f4-181b3242fe81.jpeg)
それぞれの強みを理解し、場面に応じて使い分けることが重要です。

### 4.2 ケーススタディ：シチュエーションごとの活用法
### ロジカルシンキングを活用

#### バグの発見と修正
プログラムにバグが発生した場合、原因を特定し修正するプロセスにはロジカルシンキングが重要です。
まず、問題が発生している部分を特定し、その原因を論理的に探りながら修正していきます。
デバッグ時に、入力と出力の因果関係を明確に理解することが求められます。

#### アルゴリズムの最適化
既存のアルゴリズムを改善して、効率を向上させる際もロジカルシンキングが役立ちます。
アルゴリズムの各ステップを分解し、無駄を削減するために論理的に分析していくことで、処理速度やメモリ使用量を最適化できます。

#### プロジェクトの計画立案
プロジェクトを進行する際のタスク分割やスケジュール作成も、ロジカルシンキングが求められる場面です。
各タスクの依存関係や優先順位を論理的に整理し、無理のない計画を立てることで、プロジェクト全体を効率的に進行させることができます。

### クリティカルシンキングを活用
#### 複数の解決策の比較検討
問題に対して複数の解決策がある場合、各選択肢のメリットとデメリットをクリティカルシンキングを使って評価します。
表面的な情報に惑わされず、どの解決策が最も効果的で現実的かを批判的に分析することが求められます。

#### コードレビュー
他の開発者が書いたコードをレビューする際には、コードの意図や効率性、可読性をクリティカルに評価することが重要です。
単に動作するかどうかではなく、改善の余地がないか、セキュリティ上の懸念がないかなどを深く考える必要があります。

#### リスク管理
新しい技術やツールを導入する際に、そのリスクをクリティカルシンキングで評価します。
新技術がもたらす利点と共に、潜在的なデメリットや失敗した場合の影響も冷静に検討し、最適な判断を下します。

### ラテラルシンキングを活用
#### 新機能のアイデア出し
新しい機能を考える際、既存の枠組みにとらわれず、斬新で革新的なアイデアを出すためにラテラルシンキングが有効です。
通常の発想では思いつかないような機能やアプローチを生み出すことで、他との差別化を図れます。

#### ユーザーインターフェース（UI）のデザイン
使いやすさを重視したUIを設計する際には、従来のデザインパターンに囚われずに、新しいユーザー体験を提供するための発想が求められます。
ラテラルシンキングを活用して、直感的でユーザーフレンドリーなインターフェースをデザインできます。

#### 障害発生時の解決策提案
サーバーやシステムの障害が発生した際、通常の方法では解決できない問題に直面することがあります。
この場合、ラテラルシンキングを使って、従来の解決策以外の方法を考え、状況を打開する新しい手段を見つけ出します。

## まとめ
各思考法には、それぞれの**重要性と役割**があります。
これらの思考法を状況に応じて効果的に使い分けることで、問題解決能力を向上させることができます。
練習を積み重ねて、これらのスキルを実践に取り入れていきましょう。


## 参考リンク
[【超入門】ロジカルシンキング仕事でもっと簡単に活かす方法を知りたい人向け 論理的思考術](https://www.youtube.com/watch?v=b1248v1V6Xk)
[【超入門】クリティカルシンキング](https://www.youtube.com/watch?v=AC87sHdwIMI)
[水平思考ーラテラルシンキングを身に付ける](https://www.youtube.com/watch?v=aKxH894MwPI)

## さいごに
弊社のご紹介もさせてください！

「日本で一番エンジニアが成長できる会社を創る」
[株式会社PRUM](https://prum.jp/)

エンジニアリングの募集
[いつから挑戦しても遅くない！Webアプリ開発エンジニアを目指しませんか？](https://www.wantedly.com/projects/1771548)
PM・Webディレクションの募集
[プロジェクトの企画・要件定義から携わりたいPMを募集しています！！](https://www.wantedly.com/projects/1355235)
セールス・事業開発の募集
[RA・CAの両面型で、自社従業員に寄り添い成長を見届けることができる営業！](https://www.wantedly.com/projects/1792065)
コーポレート系の募集
[育ち盛りのエンジニアたちを支えてくれる労務経験者を大募集！](https://www.wantedly.com/projects/1752874)
コンサルティングの募集
[システム開発の失敗を極限まで減らすことができるITコンサルに挑戦しませんか](https://www.wantedly.com/companies/company_8173074/projects)

弊社メンバーは日々学習した内容をアウトプットしております！
ちょこっとでもご興味を持たれた方は求人を見てみてください！
（ご応募もお待ちしております！）

### 最後までご覧いただき、ありがとうございました！