プリンキピア

第2章計算論的思考と設計の再利用性

2.1 Computational Thinking2.1 計算論的思考

Learning Objectives学習目標
By the end of this section, you will be able to:
この節を終えると、次のことができるようになる。
• Define computational thinking
• 計算論的思考を定義する。
• Discuss computational thinking examples
• 計算論的思考の例を論じる。
This chapter presents key aspects of computational thinking, including logical thinking, assessment, decomposition, pattern recognition, abstraction, generalization, componentization, and automation. These elements guide how computer scientists approach problems and create well-designed solution building blocks at both the business and technical levels. Computational thinking often involves a bottom-up approach, focusing on computing in smaller contexts, and seeks to generate innovative solutions by utilizing data structures and algorithms. Additionally, it may make use of existing design building blocks like design patterns and abstract data types to expedite the development of optimal combinations of data structures and algorithms.
英語のヒント
本章では、論理的思考、評価、分解、パターン認識、抽象化、一般化、部品化、自動化など、計算論的思考の重要な側面を紹介する。これらの要素は、コンピューターサイエンティストが問題へ取り組み、ビジネスと技術の両面で、よく設計された解決策の構成部品を作る際の指針となる。計算論的思考は、より小さな範囲の計算に焦点を当てるボトムアップの方法をとることが多く、データ構造やアルゴリズムを活用して革新的な解決策を生み出そうとする。また、デザインパターンや抽象データ型など、既存の設計部品を使うことで、データ構造とアルゴリズムの最適な組み合わせを迅速に開発することもある。

What Is Computational Thinking?計算論的思考とは何か

The problem-solving and cognitive process, known as computational thinking, is rooted in principles derived from computer science. It involves breaking down complex problems into smaller, more manageable parts and devising systematic approaches to solve them. Complex problems are situations that are difficult because they involve many different interrelated parts or factors. These problems can be hard to understand and often don’t have simple solutions.
英語のヒント
計算論的思考と呼ばれる問題解決と認知の過程は、コンピューターサイエンスに由来する原理に根ざしている。計算論的思考では、複雑な問題を、より小さく扱いやすい部分に分解し、それらを解決する体系的な方法を考案する。複雑な問題とは、互いに関連する多くの異なる部分や要因が関わるために、解決が難しい状況である。このような問題は理解しにくく、単純な解決策がないことが多い。
While “computational thinking” is still perceived by some as an abstract concept without a universally accepted definition, its core value is to facilitate the application of separate strategies and tools to address complex problems. In problem-solving, computers play a central role, but their effectiveness centers on a prior comprehension of the problem and its potential solutions. Computational thinking serves as the bridge between the problem and its resolution. It empowers solution designers to navigate the complexity of a given problem, separate its components, and formulate possible solutions. These solutions, once developed, can be communicated in a manner that is comprehensible to both computers and humans, adopting effective problem-solving.
英語のヒント
「計算論的思考」は、万人が認める定義のない抽象的な概念と捉えられることも依然としてある。しかし、その中心的な価値は、複雑な問題に取り組むために、個々の戦略や道具を適用しやすくする点にある。問題解決ではコンピューターが中心的な役割を果たすが、その有効性を左右するのは、問題と考えられる解決策をあらかじめ理解していることである。計算論的思考は問題と解決をつなぐ橋となる。設計者は、与えられた問題の複雑さを見極め、構成要素に分け、考えられる解決策を組み立てられるようになる。こうして作られた解決策は、コンピューターにも人間にも理解できる形で伝えることができ、効果的な問題解決が可能になる。
LINK TO LEARNING学習リンク
Computational thinking serves as the intermediary that helps us read complex problems, formulate solutions, and then express those solutions in a manner that computers, humans, or a collaboration of both can implement. Read this article for a good introduction to computational thinking (https://openstax.org/r/ 76CompThinking) from the BBC.
英語のヒント
計算論的思考は、複雑な問題を読み解き、解決策を組み立て、それをコンピューター、人間、または両者の協働によって実行できる形で表すための仲介役となる。わかりやすい入門として、BBCの計算論的思考の紹介記事(https://openstax.org/r/76CompThinking)を読んでみよう。
Vision構想
To further qualify computational thinking, Al Aho of the Columbia University Computer Science Department describes computational thinking as “the thought processes involved in formulating problems so their solutions can be represented as computational steps and algorithms.” Jeannette Wing, also of Columbia University, brought the idea of computational thinking to prominence in a paper she wrote in 2006 while at Carnegie Mellon University. She believes that computational thinking details the mental acts needed to compute a solution to a problem either by human actions or machine. Computational thinking encompasses a collection of methods and approaches for resolving (and acquiring the skills to resolve) complex challenges, closely aligned with mathematical thinking through its utilization of abstraction, generalization, modeling, and measurement (Figure 2.2). However, it differentiates itself by being more definitely aware than mathematics alone in its capacity for computation and the potential advantages it offers.
英語のヒント
計算論的思考をさらに明確にするため、コロンビア大学コンピューターサイエンス学科のアル・エイホは、それを「解決策を計算の手順やアルゴリズムとして表せるように問題を定式化する際の思考過程」と説明している。同じくコロンビア大学のジャネット・ウィングは、カーネギーメロン大学に在籍していた2006年の論文によって、計算論的思考という考え方を広く知らしめた。ウィングは、人間の動作または機械によって問題の解答を計算するのに必要な思考上の行為を、計算論的思考が具体化すると考えている。計算論的思考には、複雑な課題を解決するための、またその解決能力を身につけるためのさまざまな方法が含まれる。抽象化、一般化、モデリング、測定を用いる点で、数学的思考と密接に結びついている(図2.2)。ただし、計算する能力と、それによって得られる利点とを、数学だけの場合より明確に意識する点が異なる。
Figure 2.2

attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license · CC BY 4.0 · Source出典

Figure 2.2 This diagram illustrates the main components of computational thinking. (attribution: Copyright Rice University, OpenStax, under CC BY 4.0 license)
図2.2 この図は、計算論的思考の主な構成要素を示す。(出典:著作権Rice University、OpenStax。CC BY 4.0ライセンス)
Critical thinking is an important skill that can help with computational thinking. It boils down to understanding concepts rather than just mastering technical details for using software, prioritizing comprehension over rote learning. It’s a core skill, not an extra burden on a curriculum checklist, and it uniquely involves humans, not computers, blending problem-solving and critical thinking. Critical thinking focuses on ideas, not tangible items, applying advanced thinking to devise solutions. Critical thinking is essential for everyone and is, comparable to foundational abilities like reading, writing, and arithmetic.
英語のヒント
批判的思考は、計算論的思考に役立つ重要な技能である。その本質は、ソフトウェアを使う技術的な細部を習得するだけでなく、概念を理解することにあり、丸暗記よりも理解を優先する。それはカリキュラムのチェックリストに追加される余分な負担ではなく、中核となる技能である。コンピューターではなく人間が担う固有の働きであり、問題解決と批判的思考を結びつける。批判的思考は具体的な物ではなくアイデアを対象とし、高度な思考を使って解決策を考案する。読み、書き、算数といった基礎的な能力と同様に、誰にとっても不可欠である。
Computational Thinking Concepts計算論的思考の概念
The description provided by the International Society for Technology in Education (ISTE) outlines the key components and dispositions of computational thinking. Let’s explore each characteristic in more detail:
英語のヒント
国際教育工学協会(ISTE)の説明は、計算論的思考の主要な構成要素と心構えを概説している。それぞれの特徴を詳しく見てみよう。
• Decomposition: The analytical process of breaking down complex concepts or problems into smaller parts is called decomposition. This approach helps analyze and solve problems more effectively.
英語のヒント
• 分解:複雑な概念や問題を小さな部分に分ける分析の過程を、分解という。この方法により、問題をより効果的に分析し、解決できる。
• Pattern recognition (logically organizing and analyzing data): Computational thinking emphasizes the logical organization and analysis of data. This includes the ability to structure information in a way that facilitates effective problem-solving.
英語のヒント
• パターン認識(データを論理的に整理・分析すること):計算論的思考では、データの論理的な整理と分析を重視する。効果的な問題解決を促すような形で情報を構造化する能力も、ここに含まれる。
• Representing data through abstractions: An abstraction is a simplified representation of complex systems or phenomena. Computational thinking involves representing data through an abstraction, such as a simulation, which uses models as surrogates for real systems.
英語のヒント
• 抽象化によるデータの表現:抽象化とは、複雑なシステムや現象を簡略化して表すことである。計算論的思考では、シミュレーションなどの抽象化によってデータを表現する。シミュレーションでは、実際のシステムの代わりとしてモデルを使う。
• Automation through algorithmic thinking: Using a program or computer application to perform repetitive tasks or calculations is considered automation.
英語のヒント
• アルゴリズム的思考による自動化:プログラムやコンピューターのアプリケーションを使い、繰り返しの作業や計算を実行することを、自動化という。
• Identification, analysis, and implementation of solutions: Computational thinking emphasizes identification, analysis, and implementation of potential solutions to achieve optimal efficiency and effectiveness through a combination of steps and resources.
英語のヒント
• 解決策の特定、分析、実施:計算論的思考は、手順と資源を組み合わせて最適な効率と効果を得るため、考えられる解決策を特定し、分析し、実施することを重視する。
• Generalization and transferability: Generalizing and transferring this problem-solving process across a wide variety of problems showcases the adaptability and applicability of computational thinking.
英語のヒント
• 一般化と転用可能性:この問題解決の過程を一般化し、幅広い問題に転用できることは、計算論的思考の適応性と応用可能性を示している。
These abilities are supported and enriched by fundamental abilities integral to computational thinking. These abilities involve the following characteristics: confidence in navigating complexity, resilience in tackling challenging problems, an acceptance of ambiguity, adeptness in addressing open-ended issues, and proficiency in collaborating with others to attain shared objectives or solutions. Another illustration of computational thinking is the three As, which is organized into three phases, as visualized in Figure 2.3:
英語のヒント
これらの能力は、計算論的思考に欠かせない基礎的な能力によって支えられ、より豊かなものとなる。そこには、複雑なことに向き合う自信、難問に取り組み続ける粘り強さ、曖昧さの受容、答えが一つに決まらない問題への対処の巧みさ、共通の目的や解決策を達成するために他者と協力する熟練が含まれる。計算論的思考の別の表し方に「三つのA」がある。図2.3のように、次の三段階からなる。
1. Abstraction: The initial step involves problem formulation.
1. 抽象化(Abstraction):最初の段階では、問題を明確に定式化する。
2. Automation: Next, the focus shifts to expressing the solution.
2. 自動化(Automation):次に、解決策を表現することへ重点を移す。
3. Analysis: Finally, the process encompasses solution execution and evaluation.
3. 分析(Analysis):最後に、解決策を実行し、評価する。
Figure 2.3

credit photo: modification of “Avalanche on Everest” by Chagai/Wikimedia Commons, Public Domain; credit graph: modification of “Slope stability calculation for a model landslide” by B. Terhost and Bodo Damm/Journal of Geological Research, CC BY · CC BY (version not stated) / Public Domain · Source出典

Figure 2.3 The three As—abstraction, automation, analysis—illustrate the power of computational thinking. (credit photo: modification of “Avalanche on Everest” by Chagai/Wikimedia Commons, Public Domain; credit graph: modification of “Slope stability calculation for a model landslide” by B. Terhost and Bodo Damm/Journal of Geological Research, CC BY)
図2.3 三つのA、すなわち抽象化・自動化・分析は、計算論的思考の力を示す。(写真クレジット:Chagai/Wikimedia Commonsによる「Avalanche on Everest」を改変。パブリックドメイン。グラフのクレジット:B. Terhost、Bodo Damm/Journal of Geological Researchによる「Slope stability calculation for a model landslide」を改変。CC BY)