スライドショースライドショースライドショー

今さら聞けない!OSとは何か?〜基礎の基礎がわかる〜

こんにちは! インストラクターの佐野( @HiroshiSano0711)です。

OSってなに?

って思っている方は多いのではないでしょうか。調べて説明を読んでもわからない、理解ができない...そんな声を多くいただきます。そこで、今回は「OS」について徹底的に解説します。

いままでモヤモヤしていたものが、一気に解消されること間違いないでしょう!

OSとは?

さまざまなOSのロゴ

さまざまなOS

OSの定義

まずはWikipediaの説明を見てみましょう。

オペレーティングシステム(Operating System, OS)は、コンピュータにおいて、ハードウェアを機能毎に抽象化したインターフェースを利用者またはアプリケーションソフトウェアに提供するコンピュータプログラムである。

引用元:Wikipedea

上の通りに説明されていますが、これではわかりませんよね。OSとはOperating System(オペレーティング・システム)の略で、直訳すると「動作システム」となります。

OSはアプリ開発になくてはならないもの

OSはハードウェアとソフトウェアを仲介する役割があります

OSは、普段私たちが「当たり前だと思う機能」を提供してくれています。たとえば、

  • キーボードから文字を入力すると、入力した文字が画面に表示される
  • マウス・タッチパッドなどを操作すると、操作した位置がわかる
  • イヤフォンを指すと、イヤフォンから音が聞こえる

などの機能です。「そんなのパソコンだから当たり前でしょ?」と思われるでしょう。

しかし、これらの基本的な機能はパソコンの機能ではなく、OSによって実現されている機能なのです。ちなみに、OSによって実現されている機能は、アプリケーション開発者があらためて作成する必要がありません。

なぜ、OSについて理解を深める必要があるのか?

shutterstock_250785562

画像:Shutterstock

プログラミングではOSとアプリの役割分担を理解する

OSは「コンピューターの仕組み」といえるほど、コンピューターの土台を支えているソフトウェアです。OSを知ることはコンピューターの仕組みを知ることでもあり、プログラミングのポイントを知ることにつながります。

プログラミングを進めていくと、事細かにプログラムを書いていないのに、他のアプリケーションと同様に動作することがでてきます。それはほとんどの場合、「OS」が提供する機能を利用しているのです。

アプリケーションを開発するときは、OSについてしっかりと理解しておくことで、必要以上に悩まずスムーズに開発できるなど、様々なメリットがあるでしょう。逆に、OSの仕組みや動作が理解できていないと、

  • プログラムが理解できない
  • 実装方法がわからない
  • バグの原因になる

などの影響が出ることがあります。OSの仕組みや動作をしっかりと理解し、OSの動きを考えたコードを書くことで、高品質なアプリケーションをスムーズに作れるようになるでしょう。

開発時に必要なキーワードを理解する

何かを記録したり、記録してある内容を利用する場合は、「ファイル」を使います。ファイルが保存されている場所は、「ディレクトリ」とか「フォルダ」と呼びますね。

これらのキーワードは、プログラミングをするときは絶対に知っていなければいけないキーワードです。ここまでは、プログラミングを経験したことがなくても知っていますね。

それでは、ボタンをクリックしたときに、OSからプログラムに「メッセージ」が送信されることは知っていますか?「メッセージ」の代わりに「イベント」が発生するという言いかたもあります。

このようなキーワードを数多く知っておくことで、プログラミングがスムーズになるでしょう。

複数のOSを使用するには?

OSによって開発環境が異なることはお分かり頂けましたね。

しかし、

Windowsだけど、Macの開発環境が欲しい
色々な環境で開発したいけど、パソコンをいくつも用意するのはきつい・・・

といった悩みをお持ちになる方も多いと思います。そんな悩みを解決してくれるのが「VirtualBoX」です。

「VirtualBoX」は使用環境に仮想環境を構築して、他のOSをインストールすることができるソフトです。「Virtualbox」を導入することにより、たとえばMac環境でWindowsやLinuxなど複数のOSを切り替えて使用することが可能になります。

詳しくはコチラの記事を参考にしてください。

OSの理解を更に深めるには

OSもプラグラミング言語で作られています。こちらの記事では、弊社インストラクターと共に初心者向けのプログラミング言語を一挙に解説しています。ぜひ参考にしてくださいね。

もう迷わない!フローチャートでわかるプログラミング言語の選び方
更新日 : 2020年1月5日

プラグラミングを学ぶには

OSはC言語など、初心者が学ぶには難易度が高い言語で作られています。プログラミングを学習して、OSやコンピュータの理解を深めたい! そんな方もいらっしゃるのではないでしょうか?

このような方は、ぜひ弊社「侍エンジニア塾」の無料体験レッスンをご利用ください。専属コンサルタントが、あなたに最適な学習プラン言語選定を提案させていただきます。

実際にIT業界に精通しているコンサルタントと話すことでOSについての理解も深まるはずです。どうぞお気軽にお越しください。

無料体験レッスンの詳細を見る

OSの種類

代表的なOS

  • Windows
  • Mac OS
  • iOS
  • Linux
  • Android

プログラミングをするにあたっては、対象となるOSについて知っておけば、そのほかのOSについて事細かに知っておく必要はありません。ただ、どんな種類があるのか、くらいは一般常識として知っておいた方がいいでしょう。

Windows

os-win

WindowsはMicrosoft社が開発したOSです。パソコンで使用されているOSの中では、世界で最もユーザーが多いOSです。一般的にWindowsと言うと、「Windowsがインストールされたパソコン」のことを指しています。

Windowsには、

  • Windows XP
  • Windows 7
  • Windows 8
  • Windows 10

など、たくさんのバージョンがあることはご存知のとおりです。最近ではバージョンを言及することが面倒になり、また、Windowsが普及しすぎたため、パソコン自体が「Windows」と呼ばれている場合もあります。

これがOSとパソコンを混同する1つの要因になっているかもしれませんね。

Mac OS

画像:Shutterstock

Mac OSはApple社が作ったOSです。銀色のアルミボディが特徴的なMac(パソコン)にインストールされています。なめらかに操作できるタッチパッドや、Windowsにはないシンプルさで、最近では人気があります。

カフェにいくとMacを使っている人がいるという光景も当たり前になってきましたね!

iOS

iOSは、Apple社がMac OSを携帯端末用に改良して作ったOSです。iPhoneやiPadなどにインストールされています。もとはMac OSから作られたこともあり、Mac OSとの相性は抜群です。

ユーザーの使いやすさを徹底的に追い求めた、洗練されたデザインや機能には感服の一言です。

Android

os-android

Google社がLinuxを携帯端末用に改良して作ったOSです。Xperia、Galaxyなどのスマートフォンやタブレットに入っています。

自由に改良できるLinuxをもとに作っているため、スマートフォンやタブレットなどを開発するメーカーによって積極的にカスタマイズされ、特徴のある様々な端末が発売されています。ここがAndroidの魅力の1つです。

Linux

OS-Linux

WindowsやMacが有料なのに対して、Linuxは無料で使えます。また、Linuxには、誰でも自由に改良できるという特徴もあります。Linuxは誰でも自由に改良できるので、車、科学で使われるスーパーコンピューター、ロボットなど、いたるところで利用されています。

サーバーで使用されているOSの中では、世界で最もユーザーが多いOSです。

OS市場のシェア推移

2003年から2018年までのパーソナルコンピュータで利用されたOSのシェアを表した動画です。Windows系が揺るぎなくシェアのほとんどを占めていますが、ジワジワとmacOSやLinuxもシェアを拡大させているのがわかります。

OSの機能

最後に、プログラミングの際にも関係がありますので、OSの機能を整理しておきましょう。

入出力の制御

OSは外部入力を認識してソフトウェアに伝えることができる

キーボード操作マウス操作については、OSは「どのキーを押したか」「マウスをどのくらい動かしたか」「マウスの左ボタンを押したか」などを管理しています。

アプリケーション開発者は、OSから「何が入力されたか」「マウスポインタがどこにあるか」「画面上のどのUIをクリックしたか」を受け取ったり、アプリケーションからOSに問い合わせたりして、必要な処理を作成していきます。

また、画面表示についても見てみましょう。画面表示もOSの機能ですので、アプリケーション開発者は、OSから画面を描画するための何か(Windowsの場合はウィンドウハンドルとかデバイスコンテキストと呼ばれます)を借りて、様々なものを描画するという流れになります。

タスク管理

タスク管理

最近のOSでは、アプリケーションを同時に2つも3つも起動できることが一般的になりました。アプリケーションの起動や終了、アプリケーションの切り替えは、OSが管理しています。

OSは、アプリケーションの起動や終了、切り替えが起きたことを、「メッセージ」でアプリケーションに通知しますので、アプリケーション開発者は、通知されたときの処理を作成することになります。

ファイル管理

OSはファイルの管理もできます
ファイルに名前を付けたり、ファイルの内容を読んだり、ファイルに書き込んだりといった機能も、OSが管理しています。したがって、ファイル管理についても、OSの機能を利用して行う必要があります。

ただ、前述の「入出力の制御」や「タスク管理」とは異なり、ファイル管理は、プログラミングにおいては基本的な機能です。そのため、プログラミング言語がファイル管理を行うための機能を提供しているケースがほとんどで、OSの機能であることを意識しなくても、スムーズに開発できるようになっています。

もちろん、プログラミング言語の機能だけでは不足する場合もありますので、OSの機能を利用してファイル管理を行う場合もあるでしょう。

その他の機能

その他にもOSが提供している機能がたくさんありますが、ここでは、最後にネットワーク通信を紹介します。最近は、HTTPサーバーなどとデータをやり取りするアプリケーションが増えてきています。

インターネットを通じてデータをやり取りする場合は、TCP/IPという方式を利用します。TCP/IPを利用するには、OSから「ソケット」と呼ばれるモノを借りて、データをやり取りします。

OSについてもっと知りたいなら

OSってなに? という疑問にお答えしました。

OSが様々な機能を提供していることと、アプリケーションはOSの機能を利用しながら動作していることを理解していただけたでしょうか? OSの知識は、プログラミングだけでなく広くIT分野で生かせます。ぜひ身につけておきましょう!

また、独学でプログラミング学習を行なっていて、OSの理解を深めアプリなどの開発に結びつけたいなら、弊社「侍エンジニア塾」の無料体験レッスンを受けてみてください。

弊社では現役生徒500名以上が在籍し、未経験から転職・フリーランスへ多くの卒業生を輩出しておいます。無料体験レッスンでは、プログラミングやIT業界に精通したコンサルタントが、あなたの目標を最短で実現するための学習プランを提案いたします。

下記のカレンダーより空いているお日にちを選んでお気軽にお越しください。全力でサポートいたします。

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通して、プログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

cta_under_btn

書いた人

佐野裕史

佐野裕史

侍エンジニア塾インストラクター。
主に技術担当をしています。

【経歴】
力仕事、接客業、営業職など様々な業界を経てIT業界に参入。
IT未経験からスタートし、1ヶ月で仕事獲得に奇跡的に成功。
1年半後にフリーランスに転身。

Web開発を主に行っており、得意とするのはRails、Ruby。
【技術スキル】
Rails、Ruby、Swift、Java(Android)、JavaScript

【趣味、趣向】
麻雀
MTG(マジックザギャザリング)
ダーツ、卓球、野球、ボウリングなどの球技

【Facebookページ】
https://www.facebook.com/hiroshi.sano.7
【Twitter】
プログラミング講師@佐野裕史
自分でプログラミングができない人のために情報を発信しています。
お気軽にフォローください。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説