クラウドにはユーザーが利用するサービスの構成要素(クラウド事業者が提供する範囲)によって、大きく次の3つに分類されます。 いずれの名称もクラウドサービスの関連情報を調べていると、よく目にすると思います。しかし、具体的に何がどう違って、どのような特徴があるかまでは、よく知らないという方もいるでしょう。 IaaSは、「Infrastructure as a Service」の略で「イアース」や「アイアース」と読まれることもあります。アプリケーションを利用する環境も含めて一括で提供するSaaSとは異なり、IaaSはサーバーやストレージ、ネットワークなどのハードウェアやインフラまでを提供するサービスです。 現在、提供されている代表的なIaaSのサービスとして、Amazonが提供する「Amazon Elastic Compute Cloud (Amazon EC2)」
、マイクロソフトが提供する「Microsoft Azure」、Googleが提供する「Google Compute Engine(GCP)」などがあり、外資系メガクラウドベンダーとしてサービス展開しています。 サーバーやストレージなど提供するサービスと聞いて、ホスティングサービスを思い起こす人もいるかもしれません。ホスティングと比較した場合、IaaSはCPUやメモリ、ストレージなどのスペックを自由に選択でき、スケールアップにも柔軟に対応できる点で優れています。自社に必要なシステム環境を自由に設計でき、料金も構成したスペックに応じて利用した分だけを支払う形なので、コストも安くなるケースが多いです。 このように自由度が高い反面、インフラ設計やサーバー管理・運用のスキルなど、IaaSの利用を前提とした専門知識が必要となります。 サービス対象が広範なSaaSや汎用用途であるIaaSと異なり、システム開発領域をターゲットにしているサービスがPaaSです。「Platform as a Service」の略で「パース」と呼ばれています。 「開発環境を提供する」、「プラットフォームを用意する」など一般ユーザーには聞き慣れない言葉で説明されることが多いPaaSですが、システム開発に必要なアプリケーションとOSをつなぐミドルウェアやデータベース管理システム、プログラミング言語、WebサーバーOSなどといったソフトウェア一式を提供してくれます。 現在、提供されているPaaSのサービスには次のようなものがあります。エンドユーザーにはなじみが薄いものばかりですが、システム開発や運用管理をされている方ならば、すでにチェックしているものもあるかもしれません。 なお、ニフクラでは、DBサーバーの構築・運用・規模拡大の作業をコントロールパネルから簡単に行うことができる「RDB」などのサービスを、エンジニアリングパーツ(PaaS)というサービス群で提供しています。 ブログやWebサイトを公開したことがある人なら、レンタルサーバーを利用した際にPHPやMySQLといったプログラミング言語やデータベース管理システムもあわせて提供されたという経験があるかもしれません。PaaSは、開発で必要になるこれらの言語や管理システム、OSといった基盤や開発ツールをすべて提供してくれるため、複雑で面倒な開発環境を整える手間がなくなり、システム開発に集中できるようになるのです。 一方で利用できる開発言語やデータベースはPaaSが提供しているものに限られるため、自由に開発環境を構築することができないというデメリットもあります。
SaaSは「Software as a Service」の略で従来はパッケージとして提供されていたアプリケーションを、インターネット上で利用する提供形態です。エンドユーザーにとっては、このSaaSが一番なじみのあるクラウドサービスかもしれません。端末にアプリケーションをインストールすることなく、必要なサービスをインターネット経由で手軽に利用することができます。 現在では、さまざまな内容のサービスが数え切れないほどSaaSとして公開されていますが、代表的な例としては以下のようなものがあります。中にはご自身がエンドユーザーとして利用したサービスもあるのではないでしょうか。 インターネットを経由してサービスを利用するSaaSでは、複数の端末から同じアカウントでアプリケーションを利用することができ、1つのデータを複数のユーザーが閲覧・編集することも簡単です。端末にはデータが保存されないので紛失・盗難時の情報漏えいリスクを抑えることができ、さらにはアップデートも自動で行われるためセキュリティも常に最新に保つことができます。 しかし、その一方でインターネットに接続できないとサービス自体が利用できなかったり、使いにくい場合があるのがSaaSの欠点です。また、完成されたサービスを利用する形式なので、機能追加などのカスタマイズへの対応が難しく、自社にあわせたサービスを提供してほしいという要望が叶いにくい面もあります。加えて、データがクラウド上という“外部”に置かれることになるため、データ損失などの不安を感じるという方もいるようです。 IaaS、PaaS、SaaSの中からどの形式のサービスを選べばよいか迷った時には、どのような目的でサービスを利用したいのか、サービスに対してどの程度の自由度を求めるのか、それによって選ぶべきサービスが見えてきます。 サーバーなどの構成やコスト・セキュリティなどを見直したいならIaaS、短期間で新しいサービスを開発してリリースしたいならPaaS、手軽に便利なアプリケーションを利用したいならSaaSといったように、クラウドサービスの導入にあたっては、利用する目的や解決したい課題を明確にしておくことで、最適なクラウドサービスを導入することができるでしょう。IaaS、PaaS、SaaSそれぞれのクラウドサービスの違いとは?
例えば、パソコンを使う場合、必要になるのは、1.パソコン本体、2.WindowsやmacOSなどのオペレーティングシステム、そして3.Microsoft
Officeなどのアプリケーションです。この3つの階層(レイヤー)の考え方はクラウドサービスでもよく似ていて、それぞれのサービスがどのレイヤーまで提供しているかによって、IaaS、PaaS、SaaSと名称が異なります。それぞれの特徴について順番に見ていきましょう。インターネット経由でサーバーやネットワークなどを利用するIaaS
IaaSとは?
IaaSの代表的なサービス
また、日本国内で展開している国産のIaaSクラウドベンダーもあり、当社が提供するVMware基盤とした「ニフクラ」も数あるIaaSの中の1つです。IaaSのメリットとデメリット
インターネット経由で開発環境を利用するPaaS
PaaSとは?
PaaSの代表的なサービス
PaaSのメリットとデメリット
インターネット経由でアプリケーションを提供するSaaS
SaaSとは?
SaaSの代表的なサービス
SaaSのメリットとデメリット
最適なクラウドサービスを選択するためには
こんにちは! インストラクターの佐野です。
OSってなに?
って思っている方は多いのではないでしょうか。調べて説明を読んでもわからない、理解ができない...そんな声を多くいただきます。そこで、今回は「OS」について徹底的に解説します。
いままでモヤモヤしていたものが、一気に解消されること間違いないでしょう!
この記事の目次
- 1 OS(オペレーティングシステム)とは
- 2 OSを理解するための3つのポイント
- 3 OSの主な6つの種類
- 4 OSの主な4つの機能
- 5 OSについてもっと知りたいなら
さまざまなOS
OSの定義
画像:OSはハードウェアとソフトウェアを仲介する役割
OS(オペレーティングシステム)とは、コンピュータ全体を制御してユーザーが使いやすくするためのシステムです。もう少し具体的にいえば、OSは「ソフトウェアとハードウェアを仲介する」という重要な役割を担っています。
たとえばパソコンでドキュメントを作成する場合、メモ帳などの「ソフトウェア」を使いますよね。しかしドキュメントを保存するためには、ハードディスクなどの「ハードウェア」に記録しなければなりません。
そこで欠かせないのがOSです。作成したドキュメントは、OSがハードディスクに保存。そして保存したドキュメントを開いて閲覧できるのも、OSがハードディスクから読み込んでくれるためです。
キーボードを押すとメモ帳に文字が入力されるのも、実はOSがキーボードの操作内容をメモ帳に伝えてくれています。OSの存在があるからこそ、ユーザーはハードウェアを意識することなくソフトウェアを使えるのです。
OSが制御するのは「コンピュータ」だと表現しましたが、コンピュータとは「情報処理を高速かつ大量に行える機械」を指します。よってパソコンに限らず、スマートフォンを制御している「iOS」や「Android」も、OSの一種です。
OSはアプリ開発になくてはならないもの
OSは、普段私たちが「当たり前だと思う機能」を提供してくれています。たとえば、
- キーボードから文字を入力すると、入力した文字が画面に表示される
- マウス・タッチパッドなどを操作すると、操作した位置がわかる
- イヤフォンを指すと、イヤフォンから音が聞こえる
などの機能です。「そんなのパソコンだから当たり前でしょ?」と思われるでしょう。
しかし、これらの基本的な機能はパソコンの機能ではなく、OSによって実現されている機能なのです。ちなみに、OSによって実現されている機能は、アプリケーション開発者があらためて作成する必要がありません。
OSを理解するための3つのポイント
画像:OSを理解するポイント
OSを理解するうえで重要なポイントは、以下の3点です。
- OSとアプリの役割分担を理解する
- 開発に必要なキーワードを理解する
- 複数のOSの使い方を理解する
それぞれ順番に解説していきます。
OSとアプリの役割分担を理解する
OSは「コンピューターの仕組み」といえるほど、コンピューターの土台を支えているソフトウェアです。OSを知ることはコンピューターの仕組みを知ることでもあり、プログラミングのポイントを知ることにつながります。
プログラミングを進めていくと、事細かにプログラムを書いていないのに、他のアプリケーションと同様に動作することがでてきます。それはほとんどの場合、「OS」が提供する機能を利用しているのです。
アプリケーションを開発するときはOSについてしっかりと理解しておくことで、必要以上に悩まずスムーズに開発できるなど、様々なメリットがあるでしょう。逆に、OSの仕組みや動作が理解できていないと、
- プログラムが理解できない
- 実装方法がわからない
- バグの原因になる
などの影響が出ることがあります。OSの仕組みや動作をしっかりと理解し、OSの動きを考えたコードを書くことで高品質なアプリケーションをスムーズに作れるようになるでしょう。
開発に必要なキーワードを理解する
画像:キーワードを理解することでスムーズに開発できる
ドキュメントの管理に使われる「ファイル」や「フォルダ」という言葉は、パソコンを使ったことがある方なら一度は耳にしますよね。これらのキーワードは、プログラミングをする際には当然ながら知っていなければいけません。
しかしボタンをクリックしたときに、OSからプログラムに「メッセージ」が送信されることは知らない方も多いのではないでしょうか。このようなキーワードを数多く知っておくことで、プログラミングがスムーズになるでしょう。
またOS自体も、プログラミング言語で作られているのです。こちらの記事では、弊社インストラクターと共に初心者向けの人気プログラミング言語を解説しています。ぜひ参考にしてくださいね。
人気のプログラミング言語ランキング!編集部が3つの指標で独自に調査
更新日:2022年10月10日
プログラミングを学ぶには
OSはC言語など、初心者が学ぶには難易度が高いプログラミング言語で作られています。
プログラミングを学習して、OSやコンピュータの理解を深めたい!
という方もいるのではないでしょうか。
このような方は、ぜひ弊社「侍エンジニア」の無料カウンセリングをご利用ください。専属コンサルタントが、あなたに最適な学習プランや言語選定を提案いたします。実際にIT業界に精通しているコンサルタントと話すことでOSについての理解も深まるはずです。どうぞお気軽にお越しください。
「無料カウンセリングの詳細はこちら」
複数のOSの使い方を理解する
詳しくは後述しますがOSにはさまざまな種類が存在し、使うOSによって開発できるプログラムも変わってきます。たとえば、iOSアプリを作るためには「Mac OS」でなければ開発できません。
さまざまなOSについて理解し習得することで、より幅広い開発を行えるようになるのは大きなメリットです。しかし、複数のOSを使うためにパソコンを複数台用意するのでは、かなりコストがかかってしまいますよね。
そこで、複数のOSを使う際には「VirtualBox」の使用がおすすめ。「VirtualBox」はパソコン内に仮想環境を構築して、他のOSを仮想的に使えるソフトです。
「VirtualBox」を導入することにより、たとえばMac環境でWindowsやLinuxなど複数のOSを切り替えて使用できます。VirtualBoxについて詳しく知りたい方は、こちらの記事を参考にしてください。
いまさら聞けない!Virtualboxとは何か?基礎の基礎を解説!
更新日:2022年9月13日
OSの主な6つの種類
※「OS X」は「Mac OS」を意味します。
OSには様々な種類があり、世界中の人がパソコンやスマートフォンを通して日々利用しています。Web分析サイト大手の「StatCounter」が調査している、世界のOSシェアはグラフのとおりです。
パソコンのOSではWindows、スマートフォンのOSではAndroidが高いシェアを誇っていると分かります。しかし、それぞれのOSにはメリットもデメリットもあるため、シェアだけでOSを選ぶのはおすすめしません。
たとえばLinuxはOSシェアこそ高くありませんが、パフォーマンスが良いためサーバーとして使っている企業も多いのです。この章では、知っておきたい代表的なOSを6種類ご紹介します。
Windows
画像:Windows
「Windows」はMicrosoft社が開発したOSで、パソコンで使われるOSの中ではトップシェアを誇っています。グラフィック関連の機能が充実しており、マウスやキーボードを使ったGUI操作がしやすいのがメリット。
■特徴
- GUI機能が充実しており、操作性が高い
- ユーザーが多いので、使えるソフトウェアも多い
- セキュリティには注意が必要
ユーザーが非常に多いので、パソコン用のソフトウェアを開発するとしたら大抵はWindowsに対応させるでしょう。そのため、使用できるソフトウェアが豊富な点も魅力のひとつです。
その一方で、ユーザーが多いゆえにウイルスなどの脅威も広まりやすいという側面があります。Windowsを使用する際は、セキュリティリスクにも十分注意しましょう。
Mac OS
画像:Mac OS
「Mac OS」はApple社が開発したOSで、パソコンで使われるOSの中ではWindowsに次ぐシェアの高さです。表計算ツールなどの便利なアプリが最初から入っているため、OSさえ導入してしまえば色々な作業ができます。
■特徴
- 便利な付属アプリが多い
- Apple社製品との相性が良い
- 導入コストは高め
Apple社製品との相性が良く、オフラインで別Apple端末とのデータ転送も可能。前述のとおりMac OSがあれば、iPhoneアプリも開発できます。
ただし、Windowsに比べて導入コストは高めなのがデメリットです。とはいえOSのアップグレードは基本的に無料なので、初期コストを気にしない方であればMac OSを選ぶ手もあるでしょう。
Linux
画像:Linux
「Linux」は、フィンランド人のリーナス・トーバルズ氏が開発したパソコン向けOS。オープンソース(ソースが公開されている)のため、無料でインストールできるのが大きな特徴です。
■特徴
- 無料でインストールできる
- 独自のカスタマイズも可能
- GUI機能はあまり充実していない
またソースが公開されているため、自分で使いやすいようにカスタマイズできるのもメリットです。その反面GUI機能はあまり充実していないため、WindowsやMacのようなマウスを使った操作がしづらいデメリットがあります。
しかし裏を返せば、グラフィック関連の処理負荷が少ない分、軽い動作で使えるという側面も。そのためLinuxは、動作の安定性が求められるWebサーバーとして良く使われています。
なおLinuxを導入する際には、「CentOS」などの使いやすくカスタマイズされた「ディストリビューション」がおすすめです。以下の記事ではディストリビューションについて詳しく解説しているので、ぜひご覧くださいね。
【Linux】ディストリビューションとは何か?
更新日:2022年9月13日
Chrome OS
画像:Chrome OS
「Chrome OS」は、Google社が前述のLinuxをベースに開発したパソコン向けOS。Linuxの弱点であるGUI機能を補強しているのが最大の特徴で、マウスを使った操作も簡単にできます。
■特徴
- LinuxにGUI機能がプラスされている
- アプリをインストールせずに色々な機能が使える
- オフラインでは使いづらい
また、Chrome OSの場合はWebブラウザの「Google Chrome」上でさまざまな機能を使えます。そのためWindowsなどのOSと違い、多くのアプリをインストールする必要がないのもメリットです。
その一方でWebに依存することとなるため、オフラインではできる作業が限られるデメリットがあります。とはいえChrome OSは「Chromebook」というパソコンを購入するだけで使えるため、比較的安価なので試してみる価値はあるでしょう。
Android
画像: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には4つの機能がある
最後に、プログラミングの際にも関係がありますので、OSの機能を整理しておきましょう。
入出力の制御
画像:OSは外部入力を認識してソフトウェアに伝えることができる
キーボード操作マウス操作については、OSは「どのキーを押したか」「マウスをどのくらい動かしたか」「マウスの左ボタンを押したか」などを管理しています。
アプリケーション開発者は、OSから「何が入力されたか」「マウスポインタがどこにあるか」「画面上のどのUIをクリックしたか」を受け取ったり、アプリケーションからOSに問い合わせたりして必要な処理を作成していきます。
また、画面表示についても見てみましょう。画面表示もOSの機能ですので、アプリケーション開発者は、OSから画面を描画するための何か(Windowsの場合はウィンドウハンドルとかデバイスコンテキストと呼ばれます)を借りて、様々なものを描画するという流れになります。
タスク管理
画像:OSはタスク管理も行っている
最近のOSでは、アプリケーションを同時に2つも3つも起動できることが一般的になりました。アプリケーションの起動や終了、アプリケーションの切り替えは、OSが管理しています。
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ってなに?
という疑問にお答えしました。
OSが様々な機能を提供していることと、アプリケーションはOSの機能を利用しながら動作していることを理解していただけたでしょうか? OSの知識は、プログラミングだけでなく広くIT分野で生かせます。ぜひ身につけておきましょう!
また、独学でプログラミング学習を行なっていて、OSの理解を深めアプリなどの開発に結びつけたいなら、弊社「侍エンジニア」の無料カウンセリングを受けてみてください。
弊社では現役生徒500名以上が在籍し、未経験から転職・フリーランスへ多くの卒業生を輩出しておいます。無料カウンセリングでは、プログラミングやIT業界に精通したコンサルタントが、あなたの目標を最短で実現するための学習プランを提案いたします。
下記のカレンダーより空いているお日にちを選んでお気軽にお越しください。全力でサポートいたします。