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

今さら聞けない!OSとは何か?〜基礎の基礎を学ぼう〜

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

OSって何?

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

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

OSとは?

shutterstock_95643235

画像:Shutterstock

OSの定義

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

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

引用元:Wikipedea

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

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についてさらに理解を深め、徐々にプログラミング言語について学ぶ過程で、改めて「プログラミングを学ぶ目的」を明確にする必要があります。「プログラミングを学んでどうなりたいのか?」が具体的になることで学ぶべき言語も決まります。

あなたがもし、学ぶ目的がまだ不明確であるならば、一度プログラミングを学ぶ目的を考えてみましょう。目的はあるけど、何を学べばいいか分からないという方は、まずプログラミング言語の特徴を知ったうえであなたにあったプログラミング言語は何かを考えてみましょう。

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

【2019年最新】おすすめプログラミング言語を徹底比較ランキングTOP10
更新日 : 2019年11月11日

 

やっぱり自分だけで決めるのは少し不安……。
どうせならプロの意見を聞きたい!

なかにはこのようにお考えの方もいらっしゃるのではないでしょうか? 

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

実際にIT業界に精通しているコンサルタントと話すことで更にOSについての理解も深まる機会になるかと思いますので、お気軽にお越しください。

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

OSの種類

代表的なOS

  • Windows
  • Mac OS
  • iOS
  • LinuxAndroid

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

Windows

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

Windowsには、

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

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

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

Mac OS

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

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

iOS

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

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

Linux

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

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

Android

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

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

OSの機能

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

入出力の制御

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

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

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

タスク管理

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

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

ファイル管理

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

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

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

その他の機能

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

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

独学でプログラミングを学習しているあなたへ

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

また、独学でプログラミング学習を行なっているあなたは、


出来ればもっと早く身につけたい!
現場で生きるスキルを習得したい!

などと思っていませんか?最初のころは自分が勉強していることが合っているかどうかも分からないし、本当に使うかどうかも分からない・・・なんだか遠回りな気もしてしまいますよね。

そんなあなたはまず弊社「侍エンジニア塾」の無料体験レッスンを受けてみてはいかがでしょうか?弊社では現役生徒500名以上が在籍し、未経験から転職・フリーランスへ多くの卒業生を輩出しております。

プログラミングを学ぶ目的を明確化し、その明確になったキャリアに向かって最短で学習するための学習プランを提案させて頂きますので、無駄のない学習で最速でエンジニアになれるイメージが湧くと思います。

未来に向かって一歩踏み出そうとしているあなたを全力でサポートいたしますので、下記のカレンダーより空いているお日にちを選んでお気軽にお越しください。

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】
プログラミング講師@佐野裕史
自分でプログラミングができない人のために情報を発信しています。
お気軽にフォローください。

おすすめコンテンツ

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

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