プログラミングを始めると、環境作成や、まず動かしてみよう、といった、具体的な部分からはいることが多いと思います。
プログラミングを実際に始めると、コンピュータを動作させているOS(オペレーティングシステム)について少し理解しておくとよいと思います。
OS(オペレーティングシステム)とは?
OS(オペレーティングシステム)は、一般的に身の回りでよく触れ合うものとしては、windowsが多いと思います。大抵、会社でよく使うパソコンに入っているOSです。
また、スマホでは、iPhoneにはいっているiOSや、Android携帯のAndroidというOS(オペレーティングシステム)もよく利用されています。
日常で一般的に触れ合うのは、これらのOS(オペレーティングシステム)が多いです。デザインや、音楽制作、動画編集などでよく使われるmacの場合、mac OS Xもよく使われています。
コンピュータ好きな男子の中では、mac派、windows派みたいな話題になることがあると思います。macはオシャレでかっこいい、windowsはいろいろなソフトが使える、そういったイメージもあったりするのではないでしょうか。
windows、mac OS XやiOSなどのOS(オペレーティングシステム)が具体的に何をしているのかを見ていきます。
※以下、OS(オペレーティングシステム)を、単にOSと呼びます。
コンピュータの雑用係
ハードディスクに保存したり、マウスやキーボードの操作を読み取ったり、画面に表示したり、ネットワークで通信をしたり、コンピュータには常にいろいろな仕事が発生しています。このような、息をするように使っている機能は、OSが提供しているもので、普段あまり意識することはないと思います。
OSは、コンピュータをコンピュータとして使うことができるようにしている雑用的なことを一手に担ってくれています。
たしかに、どうしてマウスの矢印が画面上を動くの?とか、キーボードの文字がどうして表示されてるの?みたいな疑問はあまり感じたことがない・・・
OSは力業でできている
ロジクールのマウス、エレコムのキーボード、バッファローのハードディスク、インテルのCPU・・・コンピュータの部品って、いろいろなメーカーが作っています。
ハードディスクだけを見てもバッファローや、IOデータ、いろんなメーカーがありますよね。
同じ種類の部品でも、メーカー毎に若干動かし方が違ったりします。車もメーカーが違うとウィンカーが逆についていたりしますよね。
このようなメーカーや機種の違いによって、OSがなるべく多くのものに対応するようにして、どんなメーカーのどんな機種が来ても動かすことができます、という状態になっています。
特に、周辺機器への接続は、デバイスドライバというOSの一部の機能が受け持っています。デバイスドライバをOSの一部としてみなすかはOSの種類にもよりますが、基本的にOSが、ハードウェア(物)の種類の違いをまとめてくれているという点に注目です。コンピュータを使う側からしたら、マウスを使いたいからつなぐ、程度で済むということですね~。
その裏側では、たくさんの物に対応できるようにエンジニアが頑張って作っています。
物とOSの関係は分かったけど、OSもいろいろあるよね。今度はOSに合わせてプログラミング言語を合わせたり、いろいろ大変じゃないのかな?
OSごとに違うプログラミング言語があるよ。でも、OSの違いがあまり関係ないものもあるよ。
OSとプログラミングの関係
OSは、mac OS Xやwindowsといったいろいろなものがあります。そして、それらに対して行うプログラミング言語もそれぞれ異なるものが用意されています。
・macでアプリを作ろうとすると、objective Cという言語
・windowsならC#
というOSに準備された言語で作ります。
一方で、OSに関係なく、すべてのOSで同じように動くような言語もあります。
代表的なものには、Javaや、Pythonがあります。完全にOS間で全く同じ、とはいかないところもありますが、基本的に、macで作成したプログラムがwindowsで同じように動くみたいなことができます。このような、OSに関係なく動作するプログラミング言語は、それぞれのOSに対して同じように動くよう、プログラミング言語が作成されています。
専用言語のメリット
このように聞くと、OSによって専用に用意された言語があまりメリットがないように思いますが、OS専用に作られた言語には次のようなメリットがあります。
・処理速度が速い
・OSのユーザーインターフェースを簡単に作ることができる
OSが違っても同じように動作する言語にも、限度もありますので、基本的には作る目的によって、どのOSを使うのか、どんなプログラミング言語を利用するのか、を選択することになります。
ツリー構造でデータの場所をイメージ
パソコンやスマホの中には、動画ファイルや画像ファイル、テキストファイル、アプリ、色々なデータがあります。このデータにパス(path)という「ハードディスクのどこに保存されているか」という住所をつけることで、データを管理できるようにしています。
いろいろなOSで、ツリー構造でパスを管理するという共通の考え方があります。データがどこにあるのかをツリー構造でイメージできるようになると便利です。
パスはデータの位置を表すものなんだね。
※主にwindowsとmacの場合で説明をします。
ツリー構造について
下の図は、ツリー構造を図式化したものです。
「ルート」という大本のフォルダ(難しく言うと階層)の中に「ユーザー」というフォルダがあり、その中に「デスクトップ」というフォルダがあります。「デスクトップ」フォルダの中には画像ファイルと書類ファイルが保存されている、というイメージです。
データの紐づけが木のようになっていて、ツリー構造と呼んでいます。
このツリー構造で上の図の画像データの位置を実際に、windows風とmac OS X風でパス表記してみると、次のようになります。
windows風の表記の場合
ルート:\ユーザー\デスクトップ\画像ファイル
「\」マークで区切ることで目的のファイルの位置を示します。
mac OS X風の表記の場合
/ユーザー/デスクトップ/画像ファイル
mac OS X風表記の場合は、ルートが「/」と、短縮して表記されます。こちらの表記方法は、Linux系のOSでも同様です。
実際には、Windowsでは、上の図の「ルート」が「C」となっています。mac OS Xでは、「Machintosh HD」という名前がついていたりします。ルートディレクトリは、基本的にハードディスクやSSD(保存媒体自体)を示すことが多いです。
※GUI(グラフィカルインターフェースという機能)を持つ場合OSの場合大抵デスクトップが表示されます。マウスでポチポチファイルを選択できるような操作ができるOSの場合GUI機能が備わっています。
パスの表記方法には主に2種類あるってことがわかれば難しいことは後で学べば大丈夫!
有名なOS
mac OS X
Appleが作ったパソコンを動かすためのOS。Appleが作ったmacのみで動作します。
windows
Windows用に作られたいろいろなメーカーのパソコンを動かすためのOS。
Linux
オープンソース(有志が作成した)のOSで、いろいろなところで使われているOS。自由に改造して、いろいろなところで利用できます。サーバー(24時間動かすコンピュータ)に入っていたり、組込機器(家電や特定用途に作られた機械)によく使われています。LinuxはカーネルというOSの必要最低限のソフトで、一般的には、すぐに使えるようにDebianやUbuntuといった使いやすい配布形式(ディストリビューション)で使われます。
Android
Googleが作成したOS。AndroidもLinuxをベースに作られました。
iOS
iPhoneとiPad用のOS。
まとめ
・OSがあるからパソコンをパソコンとしていろいろな仕事で使うことができる。
・特定のOSでしか動作しないプログラミング言語と、動作するプログラミング言語がある。
・ツリー構造のデータの感覚をつかんでおくとプログラミングで役立つ。パスという概念がある。
プログラミングをするということは、OSに指示書を書いてるような感じなんだね。
OSがプログラムという指示書を見て、実際に物を動かしてくれるよ。
もっとOSに身を寄せようと思います。