thinking-utils.js•7.79 kB
/**
* 思考プロセス関連のユーティリティ関数
*/
const ThinkingUtils = {
/**
* 問題分解 - テーマを小さな部分に分解
* @param {string} theme - 分解するテーマ
* @returns {Object} 分解結果
*/
decomposeTheme: (theme) => {
// 基本的な質問セットによるテーマ分解
const aspects = [
{ aspect: "定義", question: `「${theme}」とは正確には何を意味するか?` },
{ aspect: "原因", question: `「${theme}」を引き起こす要因は何か?` },
{ aspect: "結果", question: `「${theme}」がもたらす結果や影響は何か?` },
{ aspect: "歴史的背景", question: `「${theme}」の歴史的背景や発展経緯は?` },
{ aspect: "関連要素", question: `「${theme}」に関連する要素や概念は何か?` },
{ aspect: "分類", question: `「${theme}」はどのように分類または体系化できるか?` }
];
return {
mainTheme: theme,
aspects: aspects
};
},
/**
* 仮説生成 - 複数の可能性を提示
* @param {string} theme - 仮説を生成するテーマ
* @returns {Array} 生成された仮説一覧
*/
generateHypotheses: (theme) => {
// 仮説フレームワークを使用
const hypothesisFrameworks = [
{ type: "因果関係", template: `「${theme}」の主要な原因は特定の要因Xである` },
{ type: "相関関係", template: `「${theme}」と現象Yの間には強い相関関係がある` },
{ type: "予測", template: `将来的に「${theme}」はZ方向に発展する可能性が高い` },
{ type: "分類", template: `「${theme}」は実際にはAとBの2つのカテゴリに分類できる` },
{ type: "矛盾点", template: `一般的な「${theme}」の理解にはCという矛盾が含まれている` }
];
return hypothesisFrameworks.map(framework => ({
type: framework.type,
hypothesis: framework.template,
confidence: "要検証",
supportingEvidence: [],
counterEvidence: []
}));
},
/**
* 論理的推論プロセス
* @param {string} theme - 推論を適用するテーマ
* @returns {Object} 推論アプローチ
*/
applyLogicalReasoning: (theme) => {
const reasoningApproaches = [
{
type: "演繹的推論",
steps: [
"一般的な原則または既知の事実を確認",
"具体的なケースに原則を適用",
"論理的に必然的な結論を導出"
],
application: `${theme}に関する既知の原則から具体的な結論を導き出す`
},
{
type: "帰納的推論",
steps: [
"具体的な観察・事例を収集",
"パターンや共通点を特定",
"一般化または仮説を形成"
],
application: `${theme}に関する複数の事例から一般的なパターンを見出す`
},
{
type: "アブダクション(最良の説明への推論)",
steps: [
"観察された現象や問題を特定",
"可能な説明を複数生成",
"最も説得力のある説明を選択"
],
application: `${theme}を最もよく説明する仮説を複数の可能性から選定する`
}
];
return {
theme: theme,
reasoningApproaches: reasoningApproaches
};
},
/**
* 証拠評価 - 仮説を評価するための証拠フレームワーク
* @param {string} hypothesis - 評価する仮説
* @returns {Object} 証拠評価フレームワーク
*/
evaluateEvidence: (hypothesis) => {
const evidenceFramework = {
supportingEvidence: [
{ type: "論理的整合性", question: "この仮説は論理的に一貫しているか?" },
{ type: "既存研究との整合性", question: "この仮説は既存の研究や理論と一致するか?" },
{ type: "観察データとの一致", question: "この仮説は観察可能なデータや事実と一致するか?" },
{ type: "予測能力", question: "この仮説は正確な予測を可能にするか?" }
],
counterEvidence: [
{ type: "反例の存在", question: "この仮説に反する事例や例外は存在するか?" },
{ type: "代替説明", question: "同じ現象をより単純に説明できる代替仮説はあるか?" },
{ type: "方法論的問題", question: "この仮説を支持するデータ収集や分析に問題はないか?" },
{ type: "限界と制約", question: "この仮説にはどのような限界や適用範囲の制約があるか?" }
]
};
return {
hypothesis: hypothesis,
evidenceFramework: evidenceFramework
};
},
/**
* メタ認知 - 思考プロセス自体の評価
* @param {string} thinkingProcess - 評価する思考プロセス
* @returns {Object} メタ認知評価
*/
applyMetaCognition: (thinkingProcess) => {
const metaCognitionQuestions = [
"このアプローチで考慮していない重要な側面はあるか?",
"使用している前提や仮定に問題はないか?",
"思考プロセスにバイアスやエラーが含まれていないか?",
"別の思考アプローチを適用すると異なる結論が導かれるか?",
"現在の情報の質と量は結論を導くのに十分か?",
"過度の単純化や過度の複雑化を避けているか?"
];
return {
thinkingProcess: thinkingProcess,
metaEvaluation: metaCognitionQuestions
};
},
/**
* 複数の視点からの思考
* @param {string} theme - 多角的に考察するテーマ
* @returns {Object} 複数の視点からの分析
*/
thinkFromMultiplePerspectives: (theme) => {
const perspectives = [
{
name: "歴史的視点",
approach: `「${theme}」の歴史的発展と変遷から分析`,
keyQuestions: [
"どのように時間とともに発展してきたか?",
"主要な転換点は何か?",
"過去のパターンから将来の傾向は予測できるか?"
]
},
{
name: "システム思考",
approach: `「${theme}」を構成要素間の相互作用を持つシステムとして分析`,
keyQuestions: [
"構成要素とその相互関係は?",
"フィードバックループと因果関係は?",
"システム全体の挙動を予測できるか?"
]
},
{
name: "批判的視点",
approach: `「${theme}」に対する反論や限界を分析`,
keyQuestions: [
"どのような批判や反論が可能か?",
"限界や弱点は何か?",
"前提条件に問題はないか?"
]
},
{
name: "創造的視点",
approach: `「${theme}」に関する新しい可能性や代替案を探索`,
keyQuestions: [
"従来とは異なるアプローチは?",
"組み合わせや統合の可能性は?",
"パラダイムシフトの機会はあるか?"
]
},
{
name: "実用的視点",
approach: `「${theme}」の実際の応用と実装に焦点`,
keyQuestions: [
"実際にどのように適用できるか?",
"実装における課題は?",
"成功の測定方法は?"
]
}
];
return {
theme: theme,
perspectives: perspectives
};
}
};
module.exports = ThinkingUtils;