こんにちは。たにです。
今日はタイトルの通りですが、ITエンジニアには欠かせない基礎知識として、コンピュータの原理原則について、自分なりに整理したいと思います。
物事には原理原則というものがありますよね?変わらないこととかお決まりみたいなことです。これを理解できているかどうかで、表面的なものではなく、本質的に考えることができるかに繋がってくると思っています。
ITエンジニアになりたいという方はもちろん、そうでない方もコンピュータに触れる機会は多いと思うので知っておいて損はないと思います!そういった方をターゲットに出来るだけわかりやすく書きたいと思っているので、どうぞご覧になってください。
- コンピュータの基本的な仕組み
- ハードウェアとソフトウェアの関係性
- 入力・処理・出力のサイクル
- コンピュータが0と1で動く理由
コンピュータとは?
いきなり原理原則に入る前に、コンピュータについておさらいしておきましょう。
一昔前(大昔か?)までは、とても高価な専用機器でしかなかったコンピュータが、今ではパソコンはもちろん、スマートフォンなども含めて小型化や低価格化が進み、一般家庭にもかなり浸透している状況だと思います。
そんな、ビジネスでもプライベートでも身近になったコンピュータについて、あなたはどの程度知っているのか、さっそく原理原則を見ていきましょう。
コンピュータの原理原則その1:ハードウェアとソフトウェアの2つで成り立っている
「ハード」と「ソフト」という2つの用語はおそらく聞いたことはあると思います。では、それぞれ言葉の意味を調べてみましょう。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ここに書いてある通りですが、少し言い換えると、ハードウェアは物理的に実体がある物の部分を指します。対してソフトウェアは、物理的な実体がなく、ハードウェア上で動作するプログラムやアプリケーションの部分を指します。
具体例をあげると、パソコン本体はハードウェアで、WindowsなどのOSやOfficeなどのアプリケーションがソフトウェアです。これはスマートフォンにも当てはめることができて、iPhoneがハードウェアで、iOSやSafariなどのアプリがソフトウェアになります。
ITエンジニアの大半はこのうちのソフトウェア側の開発者としてプログラマからスタートすることになると思うので、この関係性を覚えておいてください。
広告
コンピュータの原理原則その2:入力(インプット)→処理(ロジック)→出力(アウトプット)の3つに分けることができる
これは先ほどのハードウェアとソフトウェアに分けて説明したいと思います。
ハードウェアの視点
まず、ハードウェアの視点でそれぞれ構成要素を整理してみましょう。
- 入力装置 : キーボード、マウス、マイク、カメラ、など
- 演算装置 : CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、など
- 出力装置 : ディスプレイ、スピーカー、など
例えば電卓アプリを使う場面で言うと、キーボードで数字や演算子(プラスやマイナスなどの記号のこと)を入力し、入力された計算式をCPUで演算し、演算結果をディスプレイに出力する、といった感じです。
ソフトウェアの視点
続けてソフトウェアの視点でみてみます。
- 入力 : リクエストパラメータ、引数、入力画面、など
- 処理 : 関数、メソッド、処理内容、処理手順、登録処理、など
- 出力 : レスポンス、返却値、戻り値、結果画面、など
こちらは実際にプログラミングをしたことがないと聞き慣れない言葉ばかりだと思うので、なかなか理解が難しいかもしれません。具体例を書いてみると、例えばTwitterでツイートを入力し、ツイートボタンを押すとツイート処理が実行され、処理が成功するとタイムラインに出力される、といったイメージです。
この3点セットは人間にも当てはめることができますね。外からの情報をインプットして、自分の頭で解釈・理解して、ノートなどにアウトプットする。これと同じことがコンピュータでも行われていると思ってもらって構いません。
AI(人工知能)との関連
ここで人間の脳と機械を同じように例えました。ただ、人間の脳は人間の意思で解釈や理解を変えることができますが、機械は意思を持たずに決められた通りに処理することしかできないという点が決定的に違います。そして、機械にも意思を持たせて、処理や出力を変えることができるようにしようとしているのが、AIの分野になります。
この入力、処理、出力の3つに分けて考えることでたくさんのいいことが生まれるので、それについてもまた別の記事にしたいと思っています。
コンピュータの原理原則その3:ハードもソフトも全てを0と1で扱っている
これはどこかで聞いたことがあるかもしれませんが、コンピュータは0と1という2つの値しか認識することができません。理由をハードの観点で説明すると、コンピュータは回路で計算するときやデータを転送する時に、電気が通っているか通っていないか(言い換えるとONかOFFか)でしか判断できません。なので、最終的には2値のみで扱う必要があります。
次にソフトの観点でみてみると、普通のプログラミングをしている範囲では気にしなくても困ることはないかもしれません。ただ、0と1で扱っているという特性から2進数というものが必要になり、ビットやバイトの考え方に繋がったりするので、知っておいた方が理解が深まるので、ぜひ覚えておいてください。
ちなみに、SDカードの容量が16GB、32GB、64GBと2倍ずつになっているのも、この2進数による影響だったりします。
まとめ
いかがだったでしょうか。少しでもコンピュータの知識が深まっていただければ嬉しいです。
今後も自分の理解を言語化するため、そして読んでいただけた方の参考になっていただければという思いで、こういったIT知識の記事を書いていければと思っています。
もし、誤りだったり、わかりづらい点などあれば修正しますので、ご連絡いただけると嬉しいです。
では!