こんにちは! インストラクターの佐野です。
って思っている方は多いのではないでしょうか。調べて説明を読んでもわからない、理解ができない...そんな声を多くいただきます。そこで、今回は「OS」について徹底的に解説します。
いままでモヤモヤしていたものが、一気に解消されること間違いないでしょう!
この記事の目次
OS(オペレーティングシステム)とは

OSの定義

OS(オペレーティングシステム)とは、コンピュータ全体を制御してユーザーが使いやすくするためのシステムです。もう少し具体的にいえば、OSは「ソフトウェアとハードウェアを仲介する」という重要な役割を担っています。
たとえばパソコンでドキュメントを作成する場合、メモ帳などの「ソフトウェア」を使いますよね。しかしドキュメントを保存するためには、ハードディスクなどの「ハードウェア」に記録しなければなりません。
そこで欠かせないのがOSです。作成したドキュメントは、OSがハードディスクに保存。そして保存したドキュメントを開いて閲覧できるのも、OSがハードディスクから読み込んでくれるためです。
キーボードを押すとメモ帳に文字が入力されるのも、実はOSがキーボードの操作内容をメモ帳に伝えてくれています。OSの存在があるからこそ、ユーザーはハードウェアを意識することなくソフトウェアを使えるのです。
OSが制御するのは「コンピュータ」だと表現しましたが、コンピュータとは「情報処理を高速かつ大量に行える機械」を指します。よってパソコンに限らず、スマートフォンを制御している「iOS」や「Android」も、OSの一種です。
OSはアプリ開発になくてはならないもの
OSは、普段私たちが「当たり前だと思う機能」を提供してくれています。たとえば、
- キーボードから文字を入力すると、入力した文字が画面に表示される
- マウス・タッチパッドなどを操作すると、操作した位置がわかる
- イヤフォンを指すと、イヤフォンから音が聞こえる
などの機能です。「そんなのパソコンだから当たり前でしょ?」と思われるでしょう。
しかし、これらの基本的な機能はパソコンの機能ではなく、OSによって実現されている機能なのです。ちなみに、OSによって実現されている機能は、アプリケーション開発者があらためて作成する必要がありません。
OSを理解するための3つのポイント

OSを理解するうえで重要なポイントは、以下の3点です。
- OSとアプリの役割分担を理解する
- 開発に必要なキーワードを理解する
- 複数のOSの使い方を理解する
それぞれ順番に解説していきます。
OSとアプリの役割分担を理解する
OSは「コンピューターの仕組み」といえるほど、コンピューターの土台を支えているソフトウェアです。OSを知ることはコンピューターの仕組みを知ることでもあり、プログラミングのポイントを知ることにつながります。
プログラミングを進めていくと、事細かにプログラムを書いていないのに、他のアプリケーションと同様に動作することがでてきます。それはほとんどの場合、「OS」が提供する機能を利用しているのです。
アプリケーションを開発するときはOSについてしっかりと理解しておくことで、必要以上に悩まずスムーズに開発できるなど、様々なメリットがあるでしょう。逆に、OSの仕組みや動作が理解できていないと、
- プログラムが理解できない
- 実装方法がわからない
- バグの原因になる
などの影響が出ることがあります。OSの仕組みや動作をしっかりと理解し、OSの動きを考えたコードを書くことで高品質なアプリケーションをスムーズに作れるようになるでしょう。
開発に必要なキーワードを理解する

ドキュメントの管理に使われる「ファイル」や「フォルダ」という言葉は、パソコンを使ったことがある方なら一度は耳にしますよね。これらのキーワードは、プログラミングをする際には当然ながら知っていなければいけません。
しかしボタンをクリックしたときに、OSからプログラムに「メッセージ」が送信されることは知らない方も多いのではないでしょうか。このようなキーワードを数多く知っておくことで、プログラミングがスムーズになるでしょう。
またOS自体も、プログラミング言語で作られているのです。こちらの記事では、弊社インストラクターと共に初心者向けの人気プログラミング言語を解説しています。ぜひ参考にしてくださいね。

複数のOSの使い方を理解する
詳しくは後述しますがOSにはさまざまな種類が存在し、使うOSによって開発できるプログラムも変わってきます。たとえば、iOSアプリを作るためには「Mac OS」でなければ開発できません。
さまざまなOSについて理解し習得することで、より幅広い開発を行えるようになるのは大きなメリットです。しかし、複数のOSを使うためにパソコンを複数台用意するのでは、かなりコストがかかってしまいますよね。
そこで、複数のOSを使う際には「VirtualBox」の使用がおすすめ。「VirtualBox」はパソコン内に仮想環境を構築して、他のOSを仮想的に使えるソフトです。
「VirtualBox」を導入することにより、たとえばMac環境でWindowsやLinuxなど複数のOSを切り替えて使用できます。VirtualBoxについて詳しく知りたい方は、こちらの記事を参考にしてください。

OSの主な6つの種類

※「OS X」は「Mac OS」を意味します。
OSには様々な種類があり、世界中の人がパソコンやスマートフォンを通して日々利用しています。Web分析サイト大手の「StatCounter」が調査している、世界のOSシェアはグラフのとおりです。
パソコンのOSではWindows、スマートフォンのOSではAndroidが高いシェアを誇っていると分かります。しかし、それぞれのOSにはメリットもデメリットもあるため、シェアだけでOSを選ぶのはおすすめしません。
たとえばLinuxはOSシェアこそ高くありませんが、パフォーマンスが良いためサーバーとして使っている企業も多いのです。この章では、知っておきたい代表的なOSを6種類ご紹介します。
Windows

「Windows」はMicrosoft社が開発したOSで、パソコンで使われるOSの中ではトップシェアを誇っています。グラフィック関連の機能が充実しており、マウスやキーボードを使ったGUI操作がしやすいのがメリット。
■特徴
- GUI機能が充実しており、操作性が高い
- ユーザーが多いので、使えるソフトウェアも多い
- セキュリティには注意が必要
ユーザーが非常に多いので、パソコン用のソフトウェアを開発するとしたら大抵はWindowsに対応させるでしょう。そのため、使用できるソフトウェアが豊富な点も魅力のひとつです。
その一方で、ユーザーが多いゆえにウイルスなどの脅威も広まりやすいという側面があります。Windowsを使用する際は、セキュリティリスクにも十分注意しましょう。
Mac OS

「Mac OS」はApple社が開発したOSで、パソコンで使われるOSの中ではWindowsに次ぐシェアの高さです。表計算ツールなどの便利なアプリが最初から入っているため、OSさえ導入してしまえば色々な作業ができます。
■特徴
- 便利な付属アプリが多い
- Apple社製品との相性が良い
- 導入コストは高め
Apple社製品との相性が良く、オフラインで別Apple端末とのデータ転送も可能。前述のとおりMac OSがあれば、iPhoneアプリも開発できます。
ただし、Windowsに比べて導入コストは高めなのがデメリットです。とはいえOSのアップグレードは基本的に無料なので、初期コストを気にしない方であればMac OSを選ぶ手もあるでしょう。
Linux

「Linux」は、フィンランド人のリーナス・トーバルズ氏が開発したパソコン向けOS。オープンソース(ソースが公開されている)のため、無料でインストールできるのが大きな特徴です。
■特徴
- 無料でインストールできる
- 独自のカスタマイズも可能
- GUI機能はあまり充実していない
またソースが公開されているため、自分で使いやすいようにカスタマイズできるのもメリットです。その反面GUI機能はあまり充実していないため、WindowsやMacのようなマウスを使った操作がしづらいデメリットがあります。
しかし裏を返せば、グラフィック関連の処理負荷が少ない分、軽い動作で使えるという側面も。そのためLinuxは、動作の安定性が求められるWebサーバーとして良く使われています。
なおLinuxを導入する際には、「CentOS」などの使いやすくカスタマイズされた「ディストリビューション」がおすすめです。以下の記事ではディストリビューションについて詳しく解説しているので、ぜひご覧くださいね。

Chrome OS

「Chrome OS」は、Google社が前述のLinuxをベースに開発したパソコン向けOS。Linuxの弱点であるGUI機能を補強しているのが最大の特徴で、マウスを使った操作も簡単にできます。
■特徴
- LinuxにGUI機能がプラスされている
- アプリをインストールせずに色々な機能が使える
- オフラインでは使いづらい
また、Chrome OSの場合はWebブラウザの「Google Chrome」上でさまざまな機能を使えます。そのためWindowsなどのOSと違い、多くのアプリをインストールする必要がないのもメリットです。
その一方でWebに依存することとなるため、オフラインではできる作業が限られるデメリットがあります。とはいえChrome OSは「Chromebook」というパソコンを購入するだけで使えるため、比較的安価なので試してみる価値はあるでしょう。
Android

「Android」はGoogle社が開発した、携帯端末向けのOSです。パソコン向けOSを除けばトップシェアを誇っており、比較的安価なわりに幅広い機能を使えるため高い人気があります。
■特徴
- 比較的安価で高機能
- ダウンロードできるアプリが豊富
- 有害なアプリには注意が必要
Androidユーザーはとても多いので、スマホアプリを開発するならAndroidに対応させることが多いでしょう。そのためAndroidの場合は、多くのアプリから選んで使えるのもメリットです。
その反面、Android用アプリを配信するGoogle Playでは、後述のiOSほどアプリを厳しく監視していません。出回っているアプリが多いことも相まって、有害なアプリに遭遇することもあり得るので注意が必要です。
iOS
「iOS」はApple社が開発した携帯端末向けOSで、Androidに次ぐシェアの高さを持つ人気のOS。スマートフォンの「iPhone」が有名ですが、「iPod touch」などのApple社製品には基本的にこのiOSが搭載されています。
■特徴
- シンプルで使いやすい
- ダウンロードできるアプリの安全性が高い
- 導入コストは高め
iOSはアイコンや操作方法がシンプルで、使いやすいのが魅力のひとつです。国内シェアはAndroidに引けを取らないほど高いので、iOSの情報を探すのに困ることはないでしょう。
また、iOS用アプリを配信するApp Storeではかなり厳しい審査が行われているので、アプリの安全性が高いこともメリットです。ただし、iOSを搭載した製品は比較的高価なものが多いので、コスト面ではAndroidに軍配が上がります。
OSの主な4つの機能

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

キーボード操作マウス操作については、OSは「どのキーを押したか」「マウスをどのくらい動かしたか」「マウスの左ボタンを押したか」などを管理しています。
アプリケーション開発者は、OSから「何が入力されたか」「マウスポインタがどこにあるか」「画面上のどのUIをクリックしたか」を受け取ったり、アプリケーションからOSに問い合わせたりして必要な処理を作成していきます。
また、画面表示についても見てみましょう。画面表示もOSの機能ですので、アプリケーション開発者は、OSから画面を描画するための何か(Windowsの場合はウィンドウハンドルとかデバイスコンテキストと呼ばれます)を借りて、様々なものを描画するという流れになります。
タスク管理

最近のOSでは、アプリケーションを同時に2つも3つも起動できることが一般的になりました。アプリケーションの起動や終了、アプリケーションの切り替えは、OSが管理しています。
OSは、アプリケーションの起動や終了、切り替えが起きたことを「メッセージ」でアプリケーションに通知しますので、アプリケーション開発者は通知されたときの処理を作成することになります。
ファイル管理

ファイルに名前を付けたり、ファイルの内容を読んだり、ファイルに書き込んだりといった機能も、OSが管理しています。したがって、ファイル管理についても、OSの機能を利用して行う必要があります。
ただ、前述の「入出力の制御」や「タスク管理」とは異なり、ファイル管理はプログラミングにおいては基本的な機能です。そのため、プログラミング言語がファイル管理を行うための機能を提供しているケースがほとんど。OSの機能であることを意識しなくても、スムーズに開発できるようになっています。
もちろん、プログラミング言語の機能だけでは不足する場合もありますので、OSの機能を利用してファイル管理を行う場合もあるでしょう。
ネットワーク通信
他のコンピュータとやり取りをするネットワーク通信にも、OSの機能が使われています。ネットワーク通信にはプロトコル(ルール)が決められており、最も一般的なのは「TCP/IP」と呼ばれるものです。
TCP/IP通信では、手紙でいうところの「郵便受け」に相当する「ソケット」が欠かせません。コンピュータ間でのやり取りは、相手のソケットに向けてデータを送り合うことで行われます。
ただしネットワーク上のコンピュータは無数に存在するので、「IPアドレス」と呼ばれるネットワーク上の「住所」により相手の宛先を特定します。このようなソケットの管理やデータの送受信を行うのも、OSの役割です。
またWebサイトを閲覧する際にもネットワーク通信が行われており、「HTTPS」と呼ばれる通信プロトコルが一般的です。HTTPS通信では、Web利用者のパソコンからWebサーバーへとWebページの表示要求を送信します。
そして、Webサーバーから返信されたWebページのデータをWebブラウザに表示することで、Web利用者が閲覧できるのです。HTTPS通信を利用したWebサーバーとのやり取りも、OSが行っています。
挫折なくOSに欠かせないプログラミングスキルを習得するなら
OSとは何かを知り「プログラミングを勉強してみようかな」と興味が湧いてきた方もいるのではないでしょうか。ただ、いざプログラミングを学ぶとなると
独学で習得できるかな...
途中で挫折したらどうしよう...
と不安な方もいますよね。
実のところ、プログラミング学習に挫折する独学者は多くいます。事実、弊社の調査では
- 不明点を聞ける環境になかった
- エラーが解決できなかった
- モチベーションが続かなかった
などの理由から、87.5%が「プログラミング学習で挫折や行き詰まりを経験した」と回答しています。


調査概要:プログラミング学習の挫折に関するアンケート
調査対象:10代〜80代の男女298名
調査期間:2019年8月13日~8月20日
調査方法:インターネット調査
掲載元:PR TIMES
またこうした背景もあってか、弊社がプログラミングに興味がある人100名へ実施した別の調査では
- 確実にスキルを身につけられると思ったから
- 独学では不安がある
- 効率よく学べそう
などの理由から、61%が「プログラミングの勉強を始めるならスクールを選ぶ」と回答しています。


調査概要:プログラミングに興味がある方の意識調査
調査期間:2021/11/19~2021/12/3
対象者:プログラミング学習を検討している10代~50代の男女100名
調査媒体:クラウドワークス
掲載元:PR TIMES
「効率よく学べそう」という回答に関しては、プログラミングスクールの卒業生に「独学ではなくスクールを活用した理由」を聞いたインタビューでも「できるだけ短い期間でITエンジニアへの転職や副業に必要なスキルを身につけたかった」という回答も多く寄せられました。
上記から、1人でプログラミングスキルを習得できるか不安な人や短期間でスキルを習得したい人ほど確実性を求め、現役エンジニアといったプロの講師に質問できるプログラミングスクールを利用する傾向にあるのがわかります。
いざ独学でプログラミングを学び始めても、勉強の最中に挫折しまっては学習にかけた時間を悔やむだけでなく「プログラミングスキルを身につけるのって思っていたよりも難しいんだな...」とスキルの習得自体を諦めかねません。
仮にわからないことを飛ばしながら勉強を進めたとしても、ITエンジニアへの転職や副業での収入獲得を実現できるほどのスキルが身につかなければ、結局後悔することになります。
そこで、おすすめしたいのが「SAMURAI ENGINEER(侍エンジニア)」です。
料金 | 月分割4.098円~ |
実績 | ・累計指導実績3万5,000名以上 ・受講生の学習完了率98% ・受講生の転職成功率99% |
侍エンジニアをおすすめする最大の理由は「挫折しづらい学習環境」にあります。
先ほど述べたとおり、独学者の多くは自力で不明点やエラーを解決できないためにプログラミング学習を挫折しています。そのため、未経験者が現役エンジニアのようなプロに質問や相談できない状況で、プログラミングスキルを習得するのは非常に難易度が高いといえます。
しかし、侍エンジニアでは
- 現役エンジニア講師によるマンツーマンレッスン
- 現役エンジニアに質問できるオンラインでのQ&Aサービス
- 不安や悩み・勉強の進み具合を相談できる学習コーチ
といったサポート体制を整えているため、学習中に出てきたわからないことや不明点をいつでも相談可能です。「受講生の学習完了率98%」「転職成功率99%」という実績からも、侍エンジニアなら挫折しづらい環境でプログラミング学習を進められるといえます。
侍エンジニアのサポート体制
また、侍エンジニアではカウンセリングにて受講生一人ひとりの目的をヒアリングしたうえでカリキュラムを作成するため、限られた受講期間でもITエンジニアへの転職や副業での収入獲得に必要なスキルだけを効率的に習得可能です。
侍エンジニアのカリキュラム例
最短距離で目的を実現できるようカリキュラムが組まれているため、勉強する順番や内容を誤り非効率に時間や手間を費やす心配もありません。
なぜ侍エンジニアが挫折せずプログラミングスキルを習得できるのか気になる人はぜひ公式サイトをご覧ください。
公式サイトで詳細を見る