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