テクノロジーの進化は早く、新しい言葉がどんどん出てきて情報に追いついていくのがとても難しい。
もしコンピュータサイエンスやITの内容の全体像や歴史を把握しておけば、今後新しいテクノロジーの言葉が出てきた時に早く吸収していけるのではないかと思い、全体像をざっくりだがまとめてみた。
目次
- 1 コンピュータサイエンスとは
- 2 そもそもコンピュータとは?
- 3 データについて
- 4 ITインフラ
- 5 ハードウェア
- 6 ソフトウェア
- 7 コンピュテーショナルシンキング
- 8 アルゴリズムとデータ構造
- 9 プログラミング
- 10 ネットワーク、インターネット、ウェブ
- 11 コンピューターグラフィックス (Computer Graphics / CG)
- 12 HCI(Human Computer Interaction)
- 13 AR / VR / MR
- 14 人工知能 (Artificial Intelligence / AI)
- 15 暗号資産 (仮想通貨 )
- 16 IoT (Internet of Things)
- 17 生体情報インタフェース
- 18 理論計算機科学 (Theoretical computer science)
- 19 コンピューターサイエンスで使われる数学分野
- 20 まとめ
コンピュータサイエンスとは
いくつか定義を比較してみる。
計算機科学(けいさんきかがく、英: computer science、コンピュータ科学)とは、情報と計算の理論的基礎、及びそのコンピュータ上への実装と応用に関する研究分野である
Wikipedia – 計算機科学
コンピューターを導入して行う科学研究。コンピューターのハードウエアやソフトウエアについての研究のこともいう。計算機科学。→情報科学
コトバンク
the study of the principles and use of computers.
Oxford Languages
様々な定義があるが、簡単にまとめれば
- コンピューターの仕組みを研究する
- コンピューターを使って何ができるかを研究する
を研究する分野だと言える。
そもそもコンピュータとは?
現在ではコンピュータを使ってショッピング、チャット、動画をみる、写真を撮るなど様々なことを行っているが、もともとコンピュータは計算機として作られた。
現在でも「コンピュータ=電子計算機」として訳されている。
計算の歴史
コンピュータ(電子計算機)が出る前から、人類は計算の道具を使って計算をしていた。
アバカスといったツールや、ネイピアの骨といった手動の計算器具が作られ、使われていた。
電子計算機の進化
第二次世界大戦には、ドイツ軍がエニグマという暗号機を発明。相手に通信内容などが漏れないよう、暗号化して通信していた。
そしてこの暗号機を解読するため、英国も暗号解読機を作成し、暗号解読を試みた。
この暗号機を通した技術の進歩が、現代のコンピュータの技術へと繋がっている。
どんどん小さくなるコンピュータ
初期に開発された電子計算機として、ENIAC (Electronic Numerical Integrator And Calculator)が知られている。
第二次世界大戦中の1943年に、米陸軍が大砲の弾道計算を高速に行える計算機を計画したことから始まり、1946年に完成した。
Wikipediaによれば大きさは幅30m、高さ2.4m、奥行き0.9m、総重量27トンに及び、かなり大きなコンピュータであることが分かる。
そこからパーソナルコンピュータが生まれ、現在のスマホが生まれてどんどんコンピュータが小型化していき、使いやすくなり、多くの人にコンピュータが浸透するようになった。
データについて
私たちが使うコンピューターは文章、画像、動画、音楽など、様々な情報を扱う。
ではそもそもこの「データ」や「情報」とはなんだろう?この情報はどのようにコンピュータは理解しているのだろう?
コンピュータはどのようにこの情報を扱っているのだろう?
ビット
コンピュータは情報を「ビット」に変換して理解する。
「データ」や「情報」、「ビット」とは何か?下記に書いた。
ビットの関連キーワード: ビット、binary digit、符号化、ブール演算、ゲート、フリップフロップ、二進数、16進数、ビットパターン、ASCII、Unicode、2の補数、浮動小数点、ピクセル、ビットマップ、アナログ、デジタル、指数フィールド、仮数フィールド、データ圧縮、JPEG、GIF、TIFF、MPEG、MP3など
コンピュータのアーキテクチャ
コンピュータは演算装置、制御装置、入力装置、記憶装置、出力装置からできている。
これらは合わせて五大装置と言われる。
詳しくは下記に書いた。
五大装置の中でも、制御や演算の役目を持つCPUはコンピューターの中で中心的な役割を果たす。
CPUに関してはこちら。
アーキテクチャの関連キーワード: メインメモリ、セル、RAM (Random access memory)、ROM(Read only memory)、動的メモリ、DRAM、揮発性、SDRAM、CPU、五大装置、フラッシュドライブ、SDカード、マザーボード、算術論理ユニット、制御ユニット、レジスタ、命令レジスタ、プログラムカウンタ、マシンサイクル、バス、キャッシュメモリ、プログラム内蔵方式、マシン語、並列処理
データベース
データベースとは、整理されたデータの集まりであり、貯めたデータを活用するための仕組みだ。
データベースの関連キーワード: スキーマ、DBMS(データベース管理システム)、分散データベース、データベースモデル、SQL、MySQL、リレーショナルデータベースなど
ITインフラ
ITを使った様々なサービスを使うには、ITインフラが欠かせない。
ITインフラはIT環境の基盤であり、ITシステムを正常に動かすために必要な土台となる。
ハードウェア
ハードウェアとは、現実世界に存在し、手に実際に触れることができ、操作に使われる部分を指す。
コンピュータであれば、マウスやキーボード、ディスプレイ、スマホなどあげられる。
プリンタやスピーカなどの周辺装置もハードウェアの一種。
ウェアラブルデバイスやVRヘッドセット、スマート家電など、コンピューティングにおけるハードウェアとして続々新しい形で登場している。
ソフトウェア
ソフトウェアは、コンピュータの中で動いているプログラムのこと。
例を考えてみると、日常生活や仕事でソフトウェアを頻繁に使っていることに気づく。
- チャット:LINE, slack
- SNS : Facebook, Twitter
- 文章・資料作成:word, excel, powerpoint
- 画像編集・動画編集・イラスト:photoshop, Illusutrator
- OS:マイクロソフトのWindows, appleのmacOSなど
- webブラウザ:Google Chrome, Safariなど
これらは全てソフトウェアだ。
ソフトウェアの種類
ソフトウェアの種類として
- より具体的な機能を持った「アプリケーションソフトウェア」
- アプリケーションソフトウェアを動かすために必要な「OS」
- アプリケーションとOSを繋げるための「ミドルウェア」
がある。
アプリケーションソフトウェア
アプリケーションソフトウェアはOS上で動くソフトウェアのこと。
- チャット:LINE, slack
- SNS : Facebook, Twitter
- 文章・資料作成:word, excel, powerpoint
- 画像編集・動画編集・イラスト:photoshop, Illusutrator
これらは全てOS上で動くため、アプリケーションソフトウェアと言える。
webアプリケーションとの違いは?
従来のアプリケーションソフトウェアはパソコンやスマホにインストールして使用していが、webアプリケーションはwebブラウザ上で使うことができる。
webアプリケーションの例としては食べログ、Youtube 、Zoom、noteなどあげられる。
これらはみんなwebブラウザから検索してそのままサービスとして使えるのが特徴。
Webサービスについて詳しくはこちら。
OS
OS(オペレーティングシステム)はアプリケーションソフトウェアを動かすのに必要なソフトウェア。
マイクロソフトのWindowsやAppleのMacOSなどが当てはまる。
特定の役割(文章作成・画像編集など)を持つアプリケーションと比べ、OSはコンピュータを動かすためのより基本的な機能を提供する。(キーボードを打ったら文字が表示されるなど)
詳しくはこちら。
OSの関連キーワード: バッチ処理、対話型処理、FIFO、リアルタイム処理、タイムシェアリング、マルチタスキング、CUI、GUI、シェル、カーネル、デバイスドライバ、ディレクトリ、フォルダ、メモリマネージャ、スケジューラ、ディスパッチャ、仮想メモリ、プロセス
ソフトウェア工学
ソフトウェアを作る時、特に大規模なシステムを作る時、スムーズな開発のために様々な手段が存在する。
建築や他の工学と一緒で、大勢の人が協力して何かを作るときは、人事管理やプロジェクト管理など様々な管理が必要になる。
例えばソフトウェア開発の方法としてアジャイル開発とウォーターフォール開発がある。
ソフトウェア工学の関連キーワード: IDE(統合開発環境)、開発、保守、要求分析、ウォーターフォール開発、アジャイル開発、プロトタイピング、インクリメンタルモデル、モジュールなど
コンピュテーショナルシンキング
コンピューテーショナル思考は、問題を把握し、コンピュータあるいは人間(またはその双方)が理解可能な形の解決方法を発見する、そのプロセス全体を意味します。
クレール・クイグリー, パトリシア・フォスター, 山崎 正浩, ヘレン・コールドウェル. 決定版 コンピュータサイエンス図鑑 (Japanese Edition) (Kindle Locations 73). Kindle Edition.
コンピュータを使っていく上で、コンピュテーショナルシンキングはとても重要だと言える。
どんな考え方があるのだろうか。
抽象化
抽象化は不必要な情報を抜き取り、必要な情報だけ残すこと。
地図の例
例えば地図を見て道順を簡単に知りたい場合、正確な道の図と分かりやすい建物などの目印だけあれば見やすい。
不必要に建物や道路、その他情報がたくさん載っていると逆に見にくくなってしまう。
Google Mapなどを見ると、ズームに合わせて、地図の情報の詳細が変わる。
例えば浅草駅から浅草寺に行くとき、なんとなくの道筋を知りたいときには、全ての建物の情報などを入れる必要はない。
浅草寺の近くに来て、より詳細を知りたい時は、それぞれの建物の情報があった方が今度は便利になる。
このようにどれだけズームされたかで、ユーザーに合わせて本当に必要な情報を取捨選択して表示させることは、抽象化の例の一つと言える。
アルゴリズムとデータ構造
アルゴリズムは問題解決のための一連の手順のこと。
アルゴリズムの関連キーワード: サーチアルゴリズム(探索アルゴリズム)、リニアサーチ(線形探索法)、バイナリーサーチ(二分探索法)、ソートアルゴリズム(整列アルゴリズム)、バブルソート、選択ソート、挿入ソート、シェルソート、クイックソート、マージソート、データ構造、リスト、スタック、キュー、木、ポインタなど
プログラミング
プログラミングとは、コンピュータに実行させたいタスクを指示するための手順や命令を書くこと。これらの手順や命令をプログラムという。C, JAVA, PHPなどは代表的なプログラミング言語として挙げられる。
プログラミング言語の歴史年表
以下はプログラミング言語の歴史年表になる。
年代 | 内容 |
1949 | アセンブリ言語が初めて使われる |
1957 | John BackusがFORTRANを開発 |
1958 | アルゴリズム言語としてAlgolが誕生。JavaやCなどのプログラミング言語の先駆け |
1959 | John McCarthyが、現在も使われているLISPを開発。人工知能の研究用に作られた。 |
1964 | John G. KemenyとThomas E. KurtzがBASICを開発 |
1972 | Dennis Ritchieが、C言語を開発。 Donald D. ChamberlinとRaymond F. BoyceがIBMのためにSQLを開発 |
1978 | Cleve Molerが、数学プログラムを書くためのMATLABを開発 |
1983 | Bjarne Stroustrupが、Cプログラミング言語を拡張したC++を作成 |
1987 | Larry Wallがスクリプト言語としてPerlを開発 |
1990 | 複雑な数学計算を処理するための関数型プログラミング言語として、Haskellが開発される |
1991 | Guido Van RossumがPythonを開発 マイクロソフトがVisual Basicを開発 |
1993 | Ross IhakaとRobert Gentlemanは、データ分析を必要とする統計学者向けにRを開発 |
1995 | Rasmus Lerdorfが、主にWeb開発のためにPHPを開発 まつもとゆきひろがRubyを開発 Brendan EichがJavaScriptを開発 |
2000 | Microsoft社がC++とVisual Basicの組み合わせとしてC#を開発 |
2003 | Martin OderskyがScalaを開発 |
2003 | James StrachanとBob McWhirterがJavaの分派としてGroovyを開発 |
2009 | Googleが、大規模なソフトウェアシステムでよく発生する問題を解決するためにGoを開発 |
2014 | AppleがSwiftを開発 |
プログラミングの関連キーワード: マシン語、デバッグ、アセンブラ、アセンブリ言語、コンパイラ、インタプリタ、論理プログラミング、オブジェクト指向プログラミング、オブジェクト、メソッド、クラス、コンストラクタ、インスタンス、宣言文、命令文、変数、データ型、データ構造、配列、スクリプト言語、定数、リテラル、引数、関数、C、C++、Java、Python、PHPなど
ネットワーク、インターネット、ウェブ
ネットワーク・インターネットの発展によって、社会は大きく変わった。
インターネットが身近になり、友人や家族と連絡をとるのがより簡単になり、ショッピングやお店の情報が調べやすくなり、音楽、動画、映画をインターネット上で楽しめるようになった。
個人で発信することも簡単になったし、ネットでショッピングもでき、テレビ電話もできるようになった。
大きく社会を変えたネットワーク・インターネットとは何か?
ネットワーク
複数のコンピューターやデバイスを接続し、データ通信を可能にする仕組みのことをネットワークといい、ネットワークによって、コンピュータ・スマホなどデバイス同士でデータのやり取りやが可能になる。
ネットワークの関連キーワード: 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やCSSなどを用いて作られたウェブページの集まりになるが、世界中の人が世界中で作られたページにアクセスできるのはネットワークを通じて情報をやり取りすることが可能になったからだと言える。
ウェブサイト制作に不可欠なHTMLは1989年にイギリスの計算機科学者であるティム・バーナーズ・リー氏を中心に、欧州原子核研究機構(通称:CERN)において開発された。ティム・バーナーズ・リー氏はロバート・カイリュー氏と共にWWW(ワールド・ワイド・ウェブ)を考案したことでも知られている。
● HTMLとCSS、Javascriptを使ったwebサイトの作り方まとめ
情報発信の効率化・システム改善のためにCMSが登場
インターネットが1990年代後半に普及し始め、Webサーバーの数も急激に増加し、より効率的な情報発信が求められるようになる。1ページごとにWebページのデータを作成し、保存・管理することはとても時間がかかり、HTMLやCSS、サーバーの知識のない人にとってはとても難しいことだったからだ。そこで、「CMS(Contents Management System)」が誕生する。
「CMS」とは、「Contents Management System:コンテンツ・マネジメント・システム」の略称で、Webサイトのテキストや画像、デザイン・レイアウト情報(テンプレート)などを一元的に保存・管理するシステム。これにより、HTML、CSS、サーバーの知識がない人でも、画像やテキストを簡単に管理し、ページを作成することができるようになった。
CMSの代表例としては「wordpress」が挙げられる。今は個人でも情報発信が簡単な時代となった。
● WordPress(ワードプレス)とは?メリットデメリットを解説
● ブログの始め方:WordPressを使ってブログを始める方法を1から解説
● WordPressの使い方まとめ:WordPressの始め方からダッシュボードの使い方、自作テーマ作成まで
ウェブサイト作成の関連キーワード: ブラウザ、Webサーバ、HTML、CSS、FTPサーバー、FTPソフト、データベース
ホスティング・インターネットの歴史
ここまでみてきたネットワーク・インターネットが発展していくまでの歴史をざっくり整理してみる。
年代 | 内容 |
1965 | MIT の科学者が2 台のコンピューターを互いに正常に通信させ、インターネットの基礎を築く |
1973 | ヨーロッパの 2 つの組織が、ARPANET に接続できるようになり、インターネットの黎明期が始まる |
1974 | 「Telenet 」が一般向けのバージョンの ARPANET を提供して最初の ISP(インターネットサービスプロバイダー)になる。 |
1983 | ARPANET がインターネット プロトコル スイート (TCP/IP) の使用を開始 DNS (ドメイン ネーム システム) が導入される |
1985 | 最初のドメイン (symbolics.com) が登録される |
1988 | 最初の Web ホスティング会社の 1 つ、1&1 Internet (現在の 1&1 IONOS) がドイツで設立 |
1989 | Tim Berners-Lee はグローバルで相互接続された「World Wide Web」を開発 |
1990 | HTMLの開始 |
1994 | Secure Sockets Layer (SSL) プロトコルの最初のバージョンが導入 |
1995 | PHPの最初のバージョンがリリース。 |
1999 | 最初のブログ プラットフォームの 1 つ「Blogger」がスタート→誰もが個人サイトを作って自分の興味について書けると言うアイデアが広まる。 |
2003 | wordpressの最初のバージョンがリリース |
ECサイトとウェブ広告の発展
インターネットの技術が基盤になって発展してきたeコマース。現在はSNS上のプラットフォーム上も含めて、様々な買い物体験ができるようになった。その発展もざっくり整理してみる。
年代 | 内容 |
1982 | 最初のeコマースサイトが誕生 |
1994 | 「バナー広告」がスタート |
1995 | Amazon.comが誕生 |
1996 | Amazon.com がアフィリエイト広告を開始 |
1998 | eコマースのペイメントシステム「paypal 」が誕生 Google が誕生 |
2000 | オンライン用の広告ツールである「google AdWords 」誕生 |
2004 | Facebookが誕生 |
2006 | Twitterが誕生 |
2007 | 最初のIphoneが誕生 |
2010 | Instagramが誕生 |
2014 | appleが支払いツールとして「Apple pay」を開発 |
コンピューターグラフィックス (Computer Graphics / CG)
コンピュータグラフィックスは絵や図、画像など、視覚で表現するものをコンピュータで作る技術を研究する分野。
CGと呼ばれることも多い。3DCGも使われ、映画などにも使われている。
コンピュータグラフィックスの技術として、レンダリング、モデリング、レンダリング、シェーディングなどがある。
アニメやビデオゲームには3Dグラフィックスが使われることもあり、3Dグラフィックスではより物理法則に近い動きを再現するために、運動学や動力学なども応用される。
コンピューターグラフィックスの関連キーワード: 画像処理(image processing)、モデリング、レンダリング、デジタイズ、手続きモデル、パーティクルシステム、レンダリングパイプライン、クリッピング、シェーディング、OpenGL、レイトトレーシング、ラジオシティ、モーションキャプチャなど
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
VR(Virtual Reality / 仮想現実)、AR(Argumented Reality / 拡張現実)、MR(Mixed reality / 複合現実)ともに仮想の世界を体験する技術。
Mixed Realityとは?
●MR (複合現実) デバイス、Hololens2でできること
AR/VR/MRの関連キーワード: コンピュータグラフィックス、ヘッドマウントディスプレイ、VRゴーグル、没入型、リアリティ、3Dモデル、シースルー型など
人工知能 (Artificial Intelligence / AI)
人工知能が今後社会に与える影響はどのようなものになるのか、未だ議論はつきない。
社会がさらに便利になっていく反面、AIが人の仕事を奪うとか、AIが人より賢くなって人類を支配するとか、様々な議論が飛び交う。
そんな議論が飛び交うほどの大きなインパクトを持つAIの技術の研究分野としては、下記のようなものがある。
- 探索と推論
- エキスパートシステム
- 機械学習 (Machine Learning)
- 音声認識
- 自然言語処理 (National Language Processing / NLP)
など。
AIの関連キーワード: 推論・探索、探索木、エキスパートシステム、機械学習、自然言語処理、統計的自然言語処理、教師あり学習、教師なし学習、ディープラーニング(深層学習)、最近傍法、ナイーブベイズ法、決定木、サポートベクターマシン、ニューラルネットワーク、特徴量、シンギュラリティ、クラスタリング、主成分分析、アソシエーション分析、データクレンジング、K-分割交差検証、過学習、アンサンブル学習など
機械学習 (Machine Learning)
機械学習とは、コンピューターが大量のデータからパターンを見つけ出し、見つけ出したパターンをもとに新しいデータを分類したり、パターンを元に将来を予測する技術。
コンピューターの学習方法には、下記のようなものがある。
- 教師あり学習
- 教師なし学習
- 強化学習
音声認識
音声認識は人の音声をコンピュータに認識させるための技術。
AppleのSiriやAmazon Echo(Alexa)などのスマートスピーカーに使われている。
音声による指示によってインターネット検索をしたり、アプリを起動する。音声を文章化することで、議事録を書くなど、私生活や仕事問わず、これからのさらなる応用が予想される。
自然言語処理 (National Language Processing / NLP)
人間が使っている言語(自然言語)をコンピュータに理解させるための技術。
人間の言語はコンピュータにとって意味が曖昧
なぜこの技術が必要なのかというと、人間の言語はコンピュータにとって意味が曖昧だから。
例えば、言葉の同音異義語がある。
「かき」を食べる。
と聞いたとき、「柿」か「牡蠣」どちらを思い浮かべるか?
人間なら言語の音や、話の文脈で理解できるが、コンピュータが理解することは難しい。
文の構造でも曖昧性は出てくる。
「黒い耳の大きな猫」
と聞いたとき、「黒い 耳の大きな 猫」と「黒い耳の 大きな猫」の二つの可能性がある。
このように言葉の曖昧さも踏まえて理解させるのが自然言語処理の技術になる。
コンピュータビジョン
コンピュータビジョンはコンピュータに人間と同じような視覚を持たせることを目的にした分野。
この分野が進むことで、コンピューターに画像や動画内の人物や物を認識させたり、人かものかを識別させたり理解させることができる。
この技術はカメラの顔認識に使われたり、自動運転で人やものを認識するのに使うこともできる。
暗号資産 (仮想通貨 )
暗号資産は主にインターネット上で使われ、完全にデジタル化された通貨。
法定通貨(円やドルのように国に認められた通貨)のように国に管理されていないという特徴がある。
暗号資産の例としてはビットコインが有名。
暗号資産の関連キーワード: ウォレット、アドレス、マイナー、ブロックチェーン、マイニング、分散化、デジタル通貨、アルトコイン、仮想通貨取引所、P2P(Peer to Peer)、公開鍵暗号方式、ハッシュ関数、スマートコントラクト、PoW(Proof of Work)、Bitcoin、Ethereum、Ripple、NEMなど
IoT (Internet of Things)
IoTは家電などのものをインターネットにつなげる技術。
IoTでスマホやPCで家電を操作できるようになる他、普段の家具の活用データを集めることでその人の習慣なども把握することもできる。
例えばIoTにつなげることで付けられる付加価値は下記のようなものがある。
- 家のロック:誰がいつどこで鍵を開け閉めしたかスマホで把握、外出しててもスマホから施錠できる
- お部屋環境:IoT付きの電動窓シャッターや、照明、エアコンなどをスマホで一括操作。起床時間を設定してリモートでオンにするなど
アナログデータをデジタルに変換し、コンピューターで制御するためのセンサやアクチュエータなどのテクノロジーの発達によって、IoTも発達してきている。
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進数といった少し形の異なる体系の数を扱う。
● n進数・基数変換について説明。コンピュータで使われるn進数とは
コンピューターで2進数を使って四則演算をする場合は、補数やシフト演算などの考え方も必要。
● シフト演算とは?論理シフトや算術シフトを分かりやすく解説
線形代数
機械学習、ディープラーニングにおいて、線形代数は重要な役割を果たしている。
また、コンピューターグラフィックスの分野でも、線形代数は使われる。
微分積分
微分積分も、線形代数と同じく機械学習、ディープラーニングの分野で重要。
また、ゲームプログラミングで現実世界の動きを表現するときなどにも使われる。
統計
ビッグデータの解析などに使われ、ビジネスの場面にもよく使われる。
統計学者がR言語という統計に特化した言語を作るほど、統計は重要な位置を占めている。
まとめ
ざっくりであるが、コンピューターサイエンスとITの全体像についてとまとめた。
ここでまとめた分野以外にも、「コンピューターサイエンス×〇〇」という分野は多く存在していて、日々新しい技術が生まれている。
今後新しいキーワードが出てきてもどの分野の技術なのかある程度当てはまる位置、関連技術が分かれば理解が速くなるはず…?