コンピューターサイエンスとITの全体像

ITの進化は早く、新しい言葉がどんどん出てきて、情報に追いつくのが難しく感じてしまう。

もしコンピュータサイエンスやITの内容の基礎だったり全体像を把握しておけば、今後新しいITがどんどん出てきても早く吸収していけるのではないかと思い、全体像をざっくりだがまとめてみた。

このページがコンピュータサイエンスやITの全体像の理解を手助けし、今後のテクノロジーの流れを見据える教養の一部となってくれれば嬉しい。


Contents

コンピュータサイエンスとは

いくつか定義を比較してみる。

計算機科学(けいさんきかがく、英: computer science、コンピュータ科学)とは、情報と計算の理論的基礎、及びそのコンピュータ上への実装と応用に関する研究分野である

Wikipedia - 計算機科学

コンピューターを導入して行う科学研究。コンピューターのハードウエアやソフトウエアについての研究のこともいう。計算機科学。→情報科学

コトバンク

the study of the principles and use of computers.

Oxford Languages

様々な定義があるが、簡単にまとめれば

  • コンピューターの仕組みを研究する
  • コンピューターを使って何ができるかを研究する

を研究する分野だと言える。


そもそもコンピュータとは?

現在ではコンピュータを使ってショッピング、チャット、動画をみる、写真を撮るなど様々なことを行っているが、もともとコンピュータは計算機として作られた。

現在でも「コンピュータ=電子計算機」として訳されている。


計算の歴史

コンピュータ(電子計算機)が出る前から、人類は計算の道具を使って計算をしていた。

アバカスといったツールや、ネイピアの骨といった手動の計算器具が作られ、使われていた。


電子計算機の進化

コンピューターサイエンスとITの全体像ー電子計算機の進化
Wikipedia - Enigma in use, 1943 / CC BY-SA 3.0 de

第二次世界大戦には、ドイツ軍がエニグマという暗号機を発明。相手に通信内容などが漏れないよう、暗号化して通信していた。

そしてこの暗号機を解読するため、英国も暗号解読機を作成し、暗号解読を試みた。

この暗号機を通した技術の進歩が、現代のコンピュータの技術へと繋がっている。


どんどん小さくなるコンピュータ

コンピューターサイエンスとITの全体像ーENIAC
プログラミングされるENIAC / パブリック・ドメイン

初期に開発された電子計算機として、ENIAC (Electronic Numerical Integrator And Calculator)が知られている。

第二次世界大戦中の1943年に、米陸軍が大砲の弾道計算を高速に行える計算機を計画したことから始まり、1946年に完成した。

Wikipediaによれば大きさは幅30m、高さ2.4m、奥行き0.9m、総重量27トンに及び、かなり大きなコンピュータであることが分かる。

そこからパーソナルコンピュータが生まれ、現在のスマホが生まれてどんどんコンピュータが小型化していき、使いやすくなり、多くの人にコンピュータが浸透するようになった。


データについて

私たちが使うコンピューターは文章、画像、動画、音楽など、様々な情報を扱う。

ではそもそもこの「データ」や「情報」とはなんだろう?この情報はどのようにコンピュータは理解しているのだろう?

コンピュータはどのようにこの情報を扱っているのだろう?


ビット

コンピューターサイエンスとITの全体像ービット

コンピュータは情報を「ビット」に変換して理解する。

「データ」や「情報」、「ビット」とは何か?下記に書いた。



ビットの関連キーワード:

ビット、binary digit、符号化、ブール演算、ゲート、フリップフロップ、二進数、16進数、ビットパターン、ASCII、Unicode、2の補数、浮動小数点、ピクセル、ビットマップ、アナログ、デジタル、指数フィールド、仮数フィールド、データ圧縮、JPEG、GIF、TIFF、MPEG、MP3など


コンピュータのアーキテクチャ

コンピューターサイエンスとITの全体像ーコンピュータのアーキテクチャ

コンピュータは演算装置、制御装置、入力装置、記憶装置、出力装置からできている。

これらは合わせて五大装置と言われる。

詳しくは下記に書いた。


no image
コンピュータを形作る五大装置とは

続きを見る


五大装置の中でも、制御や演算の役目を持つCPUはコンピューターの中で中心的な役割を果たす。

CPUに関してはこちら。


no image
パソコンのCPUとは。構造や論理演算について図解で説明

続きを見る


アーキテクチャの関連キーワード:

メインメモリ、セル、RAM (Random access memory)、ROM(Read only memory)、動的メモリ、DRAM、揮発性、SDRAM、CPU、五大装置、フラッシュドライブ、SDカード、マザーボード、算術論理ユニット、制御ユニット、レジスタ、命令レジスタ、プログラムカウンタ、マシンサイクル、バス、キャッシュメモリ、プログラム内蔵方式、マシン語、並列処理


データベース

コンピューターサイエンスとITの全体像ーデータベース

データベースとは、整理されたデータの集まりであり、貯めたデータを活用するための仕組みだ。


[DB]データベース・リレーショナルデータベースとは

続きを見る


データベースの関連キーワード:

スキーマ、DBMS(データベース管理システム)、分散データベース、データベースモデル、SQL、MySQL、リレーショナルデータベースなど


ITインフラ

コンピューターサイエンスとITの全体像ーITインフラ

ITを使った様々なサービスを使うには、ITインフラが欠かせない。

ITインフラはIT環境の基盤であり、ITシステムを正常に動かすために必要な土台となる。


no image
ITインフラとは?ITインフラの全体像を把握する

続きを見る


ハードウェア

ハードウェアとは、現実世界に存在し、手に実際に触れることができ、操作に使われる部分を指す。

コンピュータであれば、マウスやキーボード、ディスプレイ、スマホなどあげられる。

プリンタやスピーカなどの周辺装置もハードウェアの一種。

ウェアラブルデバイスやVRヘッドセット、スマート家電など、コンピューティングにおけるハードウェアとして続々新しい形で登場している。


ソフトウェア

ソフトウェアは、コンピュータの中で動いているプログラムのこと。

例を考えてみると、日常生活や仕事でソフトウェアを頻繁に使っていることに気づく。

  • チャット:LINE, slack
  • SNS : Facebook, Twitter
  • 文章・資料作成:word, excel, powerpoint
  • 画像編集・動画編集・イラスト:photoshop, Illusutrator
  • OS:マイクロソフトのWindows, appleのmacOSなど
  • webブラウザ:Google Chrome, Safariなど

これらは全てソフトウェアだ。


ソフトウェアの種類

コンピューターサイエンスとITの全体像ーソフトウェアの種類

ソフトウェアの種類として

  • より具体的な機能を持った「アプリケーションソフトウェア」
  • アプリケーションソフトウェアを動かすために必要な「OS」
  • アプリケーションとOSを繋げるための「ミドルウェア」

がある。


アプリケーションソフトウェア

コンピューターサイエンスとITの全体像ーアプリケーション

アプリケーションソフトウェアはOS上で動くソフトウェアのこと。

  • チャット:LINE, slack
  • SNS : Facebook, Twitter
  • 文章・資料作成:word, excel, powerpoint
  • 画像編集・動画編集・イラスト:photoshop, Illusutrator

これらは全てOS上で動くため、アプリケーションソフトウェアと言える。


webアプリケーションとの違いは?

従来のアプリケーションソフトウェアはパソコンやスマホにインストールして使用していが、webアプリケーションはwebブラウザ上で使うことができる。

webアプリケーションの例としては食べログ、Youtube 、Zoom、noteなどあげられる。

これらはみんなwebブラウザから検索してそのままサービスとして使えるのが特徴。

Webサービスについて詳しくはこちら。


no image
クラウドサービスとは?サービス例を交えて解説

続きを見る


OS

コンピューターサイエンスとITの全体像ーOS

OS(オペレーティングシステム)はアプリケーションソフトウェアを動かすのに必要なソフトウェア。

マイクロソフトのWindowsやAppleのMacOSなどが当てはまる。

特定の役割(文章作成・画像編集など)を持つアプリケーションと比べ、OSはコンピュータを動かすためのより基本的な機能を提供する。(キーボードを打ったら文字が表示されるなど)

詳しくはこちら。


no image
OS(オペレーティングシステム)とはなにか

続きを見る


OSの関連キーワード:

バッチ処理、対話型処理、FIFO、リアルタイム処理、タイムシェアリング、マルチタスキング、CUI、GUI、シェル、カーネル、デバイスドライバ、ディレクトリ、フォルダ、メモリマネージャ、スケジューラ、ディスパッチャ、仮想メモリ、プロセス


ソフトウェア工学

コンピューターサイエンスとITの全体像ーソフトウェア工学
Photo by ThisisEngineering RAEng on Unsplash

ソフトウェアを作る時、特に大規模なシステムを作る時、スムーズな開発のために様々な手段が存在する。

建築や他の工学と一緒で、大勢の人が協力して何かを作るときは、人事管理やプロジェクト管理など様々な管理が必要になる。

例えばソフトウェア開発の方法としてアジャイル開発とウォーターフォール開発がある。


ソフトウェア工学の関連キーワード:

IDE(統合開発環境)、開発、保守、要求分析、ウォーターフォール開発、アジャイル開発、プロトタイピング、インクリメンタルモデル、モジュールなど


コンピュテーショナルシンキング

コンピューテーショナル思考は、問題を把握し、コンピュータあるいは人間(またはその双方)が理解可能な形の解決方法を発見する、そのプロセス全体を意味します。

クレール・クイグリー, パトリシア・フォスター, 山崎 正浩, ヘレン・コールドウェル. 決定版 コンピュータサイエンス図鑑 (Japanese Edition) (Kindle Locations 73). Kindle Edition.

コンピュータを使っていく上で、コンピュテーショナルシンキングはとても重要だと言える。

どんな考え方があるのだろうか。


抽象化

抽象化は不必要な情報を抜き取り、必要な情報だけ残すこと。


地図の例

例えば地図を見て道順を簡単に知りたい場合、正確な道の図と分かりやすい建物などの目印だけあれば見やすい。

不必要に建物や道路、その他情報がたくさん載っていると逆に見にくくなってしまう。

Google Mapなどを見ると、ズームに合わせて、地図の情報の詳細が変わる。

例えば浅草駅から浅草寺に行くとき、なんとなくの道筋を知りたいときには、全ての建物の情報などを入れる必要はない。


浅草寺の近くに来て、より詳細を知りたい時は、それぞれの建物の情報があった方が今度は便利になる。

コンピューターサイエンスとITの全体像ー抽象化の例


このようにどれだけズームされたかで、ユーザーに合わせて本当に必要な情報を取捨選択して表示させることは、抽象化の例の一つと言える。


アルゴリズムとデータ構造

コンピューターサイエンスとITの全体像ーアルゴリズム

アルゴリズムは問題解決のための一連の手順のこと。


no image
ITにおいて重要なアルゴリズムとは?

続きを見る


アルゴリズムの関連キーワード:

サーチアルゴリズム(探索アルゴリズム)、リニアサーチ(線形探索法)、バイナリーサーチ(二分探索法)、ソートアルゴリズム(整列アルゴリズム)、バブルソート、選択ソート、挿入ソート、シェルソート、クイックソート、マージソート、データ構造、リスト、スタック、キュー、木、ポインタなど


プログラミング

コンピューターサイエンスとITの全体像ープログラミング


プログラミングとは何か?


no image
プログラミングとは何か?簡単にわかりやすく説明

続きを見る


プログラミングの関連キーワード:

マシン語、デバッグ、アセンブラ、アセンブリ言語、コンパイラ、インタプリタ、論理プログラミング、オブジェクト指向プログラミング、オブジェクト、メソッド、クラス、コンストラクタ、インスタンス、宣言文、命令文、変数、データ型、データ構造、配列、スクリプト言語、定数、リテラル、引数、関数、C、C++、Java、Python、PHPなど


ネットワーク、インターネット、ウェブ

コンピューターサイエンスとITの全体像ーネットワーク・インターネット

ネットワーク・インターネットの発展によって、社会は大きく変わった。

インターネットが身近になり、友人や家族と連絡をとるのがより簡単になり、ショッピングやお店の情報が調べやすくなり、音楽、動画、映画をインターネット上で楽しめるようになった。

個人で発信することも簡単になったし、ネットでショッピングもでき、テレビ電話もできるようになった。

大きく社会を変えたネットワーク・インターネットとは何か?


ネットワーク

ネットワークとは?


no image
コンピュータのネットワークとは?

続きを見る


ネットワークの関連キーワード:

LAN、WAN、アクセスポイント、プロトコル、TCP/IP、WIFI、スイッチ、ブリッジ、ルーター、P2P(ピアツーピア)、プロセス間通信、分散システム、クラウドコンピューティング、ISP(Internet Service Provider)、IPアドレス、ドメイン、DNS(Domain name system)、SMTP、POP、FTP、SSH、WWW(World wide web)、ハイパーテキスト、ウェブサイト、HTTP、URL、公開鍵暗号、公開鍵、秘密鍵、公開鍵証明書、認証、デジタル署名など


ウェブサイト・ウェブアプリケーションの作成

ウェブサイトはどのように作られるのか?

HTMLでのホームページの作り方


HTMLでのホームページの作成方法

続きを見る


HTMLサイトの作り方のまとめ記事はこちら。


HTMLとCSS、Javascriptを使ったwebサイトの作り方まとめ

続きを見る


Javaを使ったウェブアプリケーション


Javaでwebアプリケーションを作る

続きを見る


ウェブサイト作成の関連キーワード:

ブラウザ、Webサーバ、HTML、CSS、FTPサーバー、FTPソフト、データベース


コンピューターグラフィックス (Computer Graphics / CG)

コンピューターサイエンスとITの全体像ーコンピューターグラフィックス
Photo by Balázs Kétyi on Unsplash

コンピュータグラフィックスは絵や図、画像など、視覚で表現するものをコンピュータで作る技術を研究する分野。

CGと呼ばれることも多い。3DCGも使われ、映画などにも使われている。

コンピュータグラフィックスの技術として、レンダリング、モデリング、レンダリング、シェーディングなどがある。

アニメやビデオゲームには3Dグラフィックスが使われることもあり、3Dグラフィックスではより物理法則に近い動きを再現するために、運動学や動力学なども応用される。


コンピューターグラフィックスの関連キーワード:

画像処理(image processing)、モデリング、レンダリング、デジタイズ、手続きモデル、パーティクルシステム、レンダリングパイプライン、クリッピング、シェーディング、OpenGL、レイトトレーシング、ラジオシティ、モーションキャプチャなど


HCI(Human Computer Interaction)

コンピューターサイエンスとITの全体像ーHCI/Human Computer Interaction

HCI(Human Computer Interaction)とは、直訳すると「人間とコンピューターの相互作用」となり、人間とコンピューターがどのように相互に情報を交換し、コミュニケーションを取るかを考える研究分野。

例えば、

  • 人間がキーボードで操作→コンピューターは文字で情報を返す (CUI)
  • 人間がマウスでクリックして操作→コンピューターはフォルダやファイルの絵などで情報を返す (GUI)
  • 人間が手でタップして操作→コンピュータはアプリの絵などで情報を返す
  • 人間がコンピューターに話しかけて操作→コンピューターは音声で情報を返す

という形で、人間とコンピューター間の相互の情報交換のやり方は変わってきている。

今後VRやMRが出てきたり、脳にコンピューターが埋め込まれるというようなことが実現したとき、どのように人間が操作し、どのように情報を受け取ると使いやすいのか?

そういった未来のコンピューターにおいてのコミュニケーションの新しい方法を考える。


HCIの関連キーワード:

UCD(ユーザー中心設計)、 HCD(人間中心設計)、インタラクションデザイン、エルゴノミクス(人間工学)、VSD(Value delicate design)、Activity Theory、BCI(Brain computer interface)など


AR / VR / MR

コンピューターサイエンスとITの全体像ーAR / VR / MR
Photo by UNIBOA on Unsplash

VR(Virtual Reality / 仮想現実)、AR(Argumented Reality / 拡張現実)、MR(Mixed reality / 複合現実)ともに仮想の世界を体験する技術。

Mixed Realityとは?


no image
Mixed Reality (複合現実)とは?

続きを見る

no image
MR (複合現実) デバイス、Hololens2でできること

続きを見る


AR/VR/MRの関連キーワード:

コンピュータグラフィックス、ヘッドマウントディスプレイ、VRゴーグル、没入型、リアリティ、3Dモデル、シースルー型など


人工知能 (Artificial Intelligence / AI)

人工知能が今後社会に与える影響はどのようなものになるのか、未だ議論はつきない。

社会がさらに便利になっていく反面、AIが人の仕事を奪うとか、AIが人より賢くなって人類を支配するとか、様々な議論が飛び交う。

そんな議論が飛び交うほどの大きなインパクトを持つAIの技術の研究分野としては、下記のようなものがある。

  • 探索と推論
  • エキスパートシステム
  • 機械学習 (Machine Learning)
  • 音声認識
  • 自然言語処理 (National Language Processing / NLP)

など。


AIの関連キーワード:

推論・探索、探索木、エキスパートシステム、機械学習、自然言語処理、統計的自然言語処理、教師あり学習、教師なし学習、ディープラーニング(深層学習)、最近傍法、ナイーブベイズ法、決定木、サポートベクターマシン、ニューラルネットワーク、特徴量、シンギュラリティ、クラスタリング、主成分分析、アソシエーション分析、データクレンジング、K-分割交差検証、過学習、アンサンブル学習など


機械学習 (Machine Learning)

機械学習とは、コンピューターが大量のデータからパターンを見つけ出し、見つけ出したパターンをもとに新しいデータを分類したり、パターンを元に将来を予測する技術。

コンピューターの学習方法には、下記のようなものがある。

  • 教師あり学習
  • 教師なし学習
  • 強化学習


音声認識

コンピューターサイエンスとITの全体像ー音声認識
Photo by Loewe Technologies on Unsplash

音声認識は人の音声をコンピュータに認識させるための技術。

AppleのSiriやAmazon Echo(Alexa)などのスマートスピーカーに使われている。

音声による指示によってインターネット検索をしたり、アプリを起動する。音声を文章化することで、議事録を書くなど、私生活や仕事問わず、これからのさらなる応用が予想される。


自然言語処理 (National Language Processing / NLP)

人間が使っている言語(自然言語)をコンピュータに理解させるための技術。


人間の言語はコンピュータにとって意味が曖昧

なぜこの技術が必要なのかというと、人間の言語はコンピュータにとって意味が曖昧だから。

例えば、言葉の同音異義語がある。

「かき」を食べる。

と聞いたとき、「柿」か「牡蠣」どちらを思い浮かべるか?

人間なら言語の音や、話の文脈で理解できるが、コンピュータが理解することは難しい。

文の構造でも曖昧性は出てくる。

「黒い耳の大きな猫」

と聞いたとき、「黒い 耳の大きな 猫」と「黒い耳の 大きな猫」の二つの可能性がある。

コンピューターサイエンスとITの全体像ー自然言語処理(NLP) の例

このように言葉の曖昧さも踏まえて理解させるのが自然言語処理の技術になる。


コンピュータビジョン

コンピューターサイエンスとITの全体像ーコンピュータービジョン

コンピュータビジョンはコンピュータに人間と同じような視覚を持たせることを目的にした分野。

この分野が進むことで、コンピューターに画像や動画内の人物や物を認識させたり、人かものかを識別させたり理解させることができる。

この技術はカメラの顔認識に使われたり、自動運転で人やものを認識するのに使うこともできる。


暗号資産 (仮想通貨 )

暗号資産は主にインターネット上で使われ、完全にデジタル化された通貨。

法定通貨(円やドルのように国に認められた通貨)のように国に管理されていないという特徴がある。

暗号資産の例としてはビットコインが有名。


暗号資産の関連キーワード:

ウォレット、アドレス、マイナー、ブロックチェーン、マイニング、分散化、デジタル通貨、アルトコイン、仮想通貨取引所、P2P(Peer to Peer)、公開鍵暗号方式、ハッシュ関数、スマートコントラクト、PoW(Proof of Work)、Bitcoin、Ethereum、Ripple、NEMなど


IoT (Internet of Things)

IoTは家電などのものをインターネットにつなげる技術。

IoTでスマホやPCで家電を操作できるようになる他、普段の家具の活用データを集めることでその人の習慣なども把握することもできる。

例えばIoTにつなげることで付けられる付加価値は下記のようなものがある。

  • 家のロック:誰がいつどこで鍵を開け閉めしたかスマホで把握、外出しててもスマホから施錠できる
  • お部屋環境:IoT付きの電動窓シャッターや、照明、エアコンなどをスマホで一括操作。起床時間を設定してリモートでオンにするなど

アナログデータをデジタルに変換し、コンピューターで制御するためのセンサやアクチュエータなどのテクノロジーの発達によって、IoTも発達してきている。


写真の素材サイト20選!無料で商用可能の素材もあり

続きを見る


IoTの関連キーワード:

モノのインターネット、ウェアラブルデバイス、センサー、アクチュエータ、A/D変換、D/A変換、ビッグデータ、通信チップ、スマートウォッチ、スマートハウス、自動運転車、GPS、指紋センサー、加速度センサー、近接センサー、ジャイロセンサー、照度センサー、振動センサー、集音マイクなど


生体情報インタフェース

声、指紋、脳波、筋肉の活動から起きる電気信号など、あらゆる生体情報をデジタルのシステムに活用する技術。

身近な例としては、スマホで指紋や顔という生体情報を使うことで、世界に一つだけのパスワードとして使うことができる。


理論計算機科学 (Theoretical computer science)

理論計算機科学はコンピュータサイエンスの分野であるとともに、数学の一分野でもあり、コンピューターや情報に関して数学的に研究する。

下記は理論計算機科学の分野である。

  • 計算理論
  • グラフ理論
  • 計算幾何学
  • 数理論理学
  • オートマトン
  • 数論
  • 型理論
  • 圏論
  • 量子計算


計算理論 (Computational theory)

計算理論によって、コンピューターの能力について調べることができる。

コンピュータによってどんな問題が解けて、どんな問題が解けないのかを理論的に探索することで、コンピューターに何ができて何ができないかを理解することができる。(停止性問題(Halting Problem)など)

コンピューターが扱うことができるのは数字だけなので、「計算できない=コンピューターにはできない」ということにつながる。

また、理論的には解くことができても複雑すぎて現実的には解けない問題なども存在することがわかっている。

このように、計算理論よって、コンピュータの限界を探ることができる。

実用面では、「複雑すぎて効率的に解けない」という性質が分かったことで「公開鍵暗号システム」に使われ、Webサービスの不正ログインや情報の不正な取得から守るために役立てられている。


計算理論の関連キーワード:

関数、チューリングマシン、計算可能性理論、チャーチ=チューリングの提唱、停止性問題(halting problem)、計算複雑性理論、計算量、ビッグオー記法、多項式問題、非多項式問題、NP問題、NP完全問題、巡回セールスマン問題、RSAアルゴリズム、暗号化鍵、複合鍵、公開鍵暗号、など


コンピューターサイエンスで使われる数学分野

コンピューターサイエンスでは様々な分野の数学が使われている。


離散数学

離散数学は確率、グラフ、論理、木など、アルゴリズムを学ぶ上で欠かせない基礎的な知識を学ぶ。

他にもグラフ理論はネットワークやOSに使われるし、確率は機械学習やネットワークなどにも使われる。

特にアルゴリズムはコンピューターサイエンスの中で根幹となるので、離散数学はコンピュータサイエンスの基礎を学ぶと言っても良い。


基数・n進数

普段私たちは0 - 9の数字を使う10進数を使っているが、コンピューターは2進数、16進数といった少し形の異なる体系の数を扱う。


no image
n進数・基数変換について説明。コンピュータで使われるn進数とは

続きを見る


コンピューターで2進数を使って四則演算をする場合は、補数やシフト演算などの考え方も必要。


no image
補数とは?補数や2の補数表現をわかりやすく解説

続きを見る

no image
シフト演算とは?論理シフトや算術シフトを分かりやすく解説

続きを見る



線形代数

機械学習、ディープラーニングにおいて、線形代数は重要な役割を果たしている。

また、コンピューターグラフィックスの分野でも、線形代数は使われる。


微分積分

微分積分も、線形代数と同じく機械学習、ディープラーニングの分野で重要。

また、ゲームプログラミングで現実世界の動きを表現するときなどにも使われる。


統計

ビッグデータの解析などに使われ、ビジネスの場面にもよく使われる。

統計学者がR言語という統計に特化した言語を作るほど、統計は重要な位置を占めている。


まとめ

ざっくりであるが、コンピューターサイエンスとITの全体像についてとまとめた。

ここでまとめた分野以外にも、「コンピューターサイエンス×〇〇」という分野は多く存在していて、日々新しい技術が生まれている。

今後新しいキーワードが出てきてもどの分野の技術なのかある程度当てはまる位置、関連技術が分かれば理解が速くなるはず...?