43 コンピューターサイエンス
43.1 抽象化
抽象化(abstraction)とは,事物や表象を,ある性質・共通性・本質に着目し,それを抽き出す方法である.抽象化により,不要な性質を排除し,複雑なシステムを簡単に利用できるようにする.
現代生活では,自動車,スマートフォン,コンピューターなど,抽象化されたシステムが数多く存在する.これらのシステムは,複雑な内部構造を持ちながらも,ユーザーにとっては簡単に操作できるようになっている.
例えば,スマートフォンを使って,動画をみるときに,スマートフォン・インターネット・動画に関する技術について考える必要はない.ユーザーは,タッチスクリーンを操作するだけで,動画を楽しむことができる.
43.2 コンピューターシステム
コンピューター(computer)とは,電子回路を用い,指示された通り自動的にデータの貯蔵・検索・加工を行う装置であり,電子計算機とも呼ばれる.計算機という言葉は,狭義では電子計算機を指すが,広義では計算を行う装置全般を指す.
コンピューターには,日常生活で使われるパーソナルコンピュータをはじめ,スーパーコンピューター,スマートフォン,タブレットなどがある.個人が利用するために設計されたコンピューターをパーソナルコンピュータ(パソコン,PC)と呼ぶ.パソコンは,デスクトップパソコンとノートパソコンに分けられる.
下の図は,日本のスーパーコンピューター「富岳(英語:Fugaku)」を示している.

コンピューターは,ハードウェア(hardware)とソフトウェア(software)から構成されている.
ハードウェアは,コンピューターを構成する物理的な装置である. 一般的に,ハードウェアは,演算装置,制御装置,記憶装置,入力装置,出力装置から構成される.
ソフトウェアは,コンピューターを利用するためのプログラムの総称である.ソフトウェアは,システムソフトウェアとアプリケーションソフトウェアに分類される.
特定の仕事をするために作成されたソフトウェアをアプリケーションソフトウェア(application software)と呼ぶ.ワードプロセッサ,表計算ソフト,電子ゲームなどがアプリケーションソフトウェアの例である.
システムソフトウェア(system software)は,コンピューターのハードウェアを制御や管理するためのソフトウェアである.また,アプリケーションソフトウェアが動作するための環境を提供する.よく知られているシステムソフトウェアとして,オペレーティングシステム(operating system, OS)がある.Microsoft Windows,macOS,Linux,Androidなどがオペレーティングシステムの例である.
43.3 コンピューターサイエンスとは
A computer system is like an onion, made up of many layers.
– N. Dale and J. Lewis, Computer science illuminated, 7th ed. Sudbury, MA: Jones and Bartlett, 2024.
抽象化という概念は,コンピューターサイエンスにおいて重要な役割を果たす.コンピューターサイエンスで,ハードウェア,プログラミングなどは抽象化されたシステムとして扱われる.それらを理解した上で,他の層との関係を学ぶことで,コンピューターシステム全体を理解することができる.
43.3.1 情報の表現
- 二進数
- 文字コード
- 画像の表現
- 音声の表現
- 動画の表現
43.3.2 ハードウェア
- ゲート
- 論理回路
- アーキテクチャ
43.3.3 プログラミング
- 機械語,アセンブリ言語,高水準言語
- アルゴリズム
- データ構造
43.3.4 オペレーティングシステム
- Windows, macOS, Linuxなど
- プロセス管理,メモリ管理
- ファイルシステム
43.3.5 アプリケーション
- Word, Excel, PowerPointなど
- データベース
- 人工知能
- シミュレーション
- 最適化
43.3.6 ネットワーク
- OSI参照モデル,TCP/IPモデル
- HTMLとCSS
- セキュリティ
43.4 CSと経営システム工学
コンピューターサイエンスは,経営システム工学と密接に関連している.
経営システム工学は,科学的・工学的方法論に基づく,コンピュータを用いて,企業経営を含む社会システムの設計・運用・改善を行う学問である.
経営システム工学においては,主な研究手法として
- システム最適化
- シミュレーション
- データ分析
- モデリング
が用いられる.
経営システム工学の研究対象は,生産システム,物流システム,社会システムなど多岐にわたる.これらのシステムは,多数の要素が相互に作用し,複雑なシステムになっているため,分析や最適化を行うためには,大規模な計算が必要となる.
以下では,いくつかの経営工学において有名な問題と手法を紹介し,なぜコンピューターサイエンスの知識が必要なのかを説明する.
43.5 練習
Google検索の利用は許可されているが,ChatGPTなどのAIツールの利用は禁止する.
練習 43.1
- 私たちの身の回りにある抽象化されたシステムを一つ挙げ,そのシステムがどのような抽象化を行っているかを説明せよ.(例:スマートアプリ,ゲーム機,ATMなど)
- 講義資料で紹介された経営システム工学に関連する問題の中から興味のあるものを一つ選び,以下の2点について述べよ.
- その問題が,現実社会のどのような課題に関連しているのか.
- その問題を解決するために,なぜコンピューターサイエンスの知識(アルゴリズムや計算能力など)が必要不可欠なのか.
- コンピューターサイエンスの各層の中から,自分の専門分野を深める上で最も重要だと思う層を一つ選び,その理由を説明せよ.(正解はないが,理由を明確に述べること.)