「ITスキルとアプリケーション」の版間の差分

削除された内容 追加された内容
編集の要約なし
Ef3 (トーク | 投稿記録)
冒頭加筆
タグ: 2017年版ソースエディター
3 行
----
 
本書は、コンピュータのハードウェアとユーザーの間のインターフェースとして機能するオペレーティング・システム(Operating system; OS)を対象としている。オペレーティング・システムは、コンピュータの限られた資源の共有や活動の管理・調整を担っている。
== OSとは ==
'''OS'''は'''オペレーティング・システム''' (Operating System) の頭文字を使った略称である。もっとも「[[w:オペレーティングシステム|オペレーティング・システム]]」という言葉を聞いても、それがどんな働きをするものなのかは、あまりわかりやすいものではないかもしれない。OSは(過去においては)「基本ソフトウェア」と呼ばれていたこともあったが、こちらの呼び名のほうが、それが何であるのか何となくイメージしやすいことだろう。OSとはいったい何であるのか、この古い呼称を持ち出して説明するならば、それは、全てのアプリケーション・ソフトウェア(「応用ソフトウェア」)の“ベースとなる”ソフトウェアのことである、と言うことができる。
 
== オペレーティング・システムとは ==
たとえば、ハードウェアの利用に着目して考えてみよう。旧来のコンピューターには、統一された規格がなく、それぞれ独自の仕様を持っていた。そうなるとソフトの対応状況などもマシンごとに違っていたため、別のハードウェアを使うごとにソフトの設定を変更したり、[[w:入出力|入出力]]などの基本的な部分から新たに作り直したりなど、多くの時間やコストを浪費していた。また、利用者側としても、統一された操作方法や[[w:インターフェース|インターフェース]](外部接続端子)がなかったため、ハードウェアごとに違う操作方法であったりなど、とてもコンピュータ利用のハードルが高い時代であった。
オペレーティング・システムは、通常、カーネルとユーザーランドに分離される。
 
; カーネル
そこで、OSという統一規格を提供するソフトウェアを組み込むことで、そのOSに対応したソフト作りをすれば、あとはそのOSの入ったマシンならどれでも、同様の操作性で動かすことができるようになった。そうなれば、開発者としては他社へのソフトウェアの提供も容易であり、また規格が決まっているためソフトウェア開発にも目標設定が明確にできる。ユーザーとしても、操作方法が統一されるので、1つの操作方法を覚えれば他の場所でもそのノウハウをそのまま生かすことができる。そういった莫大なメリットを携え、OSは急速に普及した。
: ソフトウェアがハードウェアと相互作用するための境界線を提供する。
: カーネルはハードウェアを抽象化し、多くのソフトウェアが全く異なるハードウェア上で同じように動作することを可能にする。
: カーネルは、ユーザーランドがカーネルと対話できるようにするためのシステムコールを提供する。
: ファイルシステム(常にではありないが、通常は)、デバイス、プロセスの制御を含む多くのことを処理する。
; ユーザーランド
: カーネル以外のすべてのものとして存在する。
: 端末を含め、ユーザーが作成するすべてのプロセスはユーザーランド属する。
: プログラムを表示するGUI(Graphical User Interface)もユーザーランドに属する。
: ウェブサーバーなどのデーモンもユーザーランドに属する。
 
== OSの種類 ==
一般的に用いられているOSには、以下のような種類が存在する。
* [[w:Microsoft Windows|Windows]](ウィンドウズ)
* [[w:MacOS|macOS]] (マックオーエス)
* [[w:Unix|Unix]](ユニックス) (※ [[w:Linux|Linux]]や[[w:BSD|BSD]]など含む)
* [[w:Linux|Linux]](リナックス)
* [[w:Solaris|Solaris]](ソラリス)
* [[w:TRONプロジェクト|Tron]](トロン)
29 ⟶ 39行目:
 
=== Windows ===
『Windows』(ウィンドウズ)は、米[[w:Microsoft|Microsoft]]社(マイクロソフト社)が販売する商用OSである。ウィンドウズを使用できるハードウェアは、かつては「[[w:PC/AT互換機|PC/AT互換機]]」と言われたが、現在ではほぼすべての市販のパソコンでウィンドウズは動作する。ウィンドウズは、企業から一般家庭まで、多くのパソコンのOSとして用いられており、事実上の世界標準である。[[w:CPU|CPU]][[w:アーキテクチャ|アーキテクチャ]]は[[w:x86|x86]]および[[w:amd64|amd64]]をサポートするほかARMアーキテクチャをサポートしたエディションも存在する。
 
ウィンドウズは、歴史的に[[w:MS-DOS|MS-DOS]](エムエス ドス)の後継・互換OSとしてスタートしている。1985年以降、初期のWindows(Windows1.0-Windows 3.1などまで)はMS-DOS上の補助アプリケーションとして動作していた。その後の1995年、Windows95が発表され、爆発的に普及した。その後も、複数回にわたってバージョンアップ版が提供された。その変遷は以下の通りである。
267 ⟶ 277行目:
米Apple社(アップル社)が開発・販売するPC向けのOS。対応するプラットフォームはMac OS X以前では最初は[[W:MC68000|MC68000]]後に[[w:PowerPC|PowerPC]]のみである。Mac OS Xで初めてPC/AT互換機、x86(Intel製CPUのみ)プラットフォームへの対応がなされたが、Appleが販売するコンピュータ以外のPC/AT互換機では動作しない。ユーザー主体の操作性を重視している。その登場はWindowsよりも早く、1984年の最初のシステムからすでにGUI(文字だけでなく、アイコンなどの画像や映像などで視覚的に分かりやすくした操作環境)を搭載していた。2001年にMac OS Xがリリースされたが、これは従来のMac OSとは仕様が大きく異なるものとなっている。
 
一般ビジネス用としてのシェアはWindowsに全く及ばないが、グラフィックデザイン、音楽、映画など、芸術・コンテンツ産業といった、いわゆる「クリエイティブ」な分野では一定の支持を得ており、また家庭用としても根強いユーザーを確保している。2006年、プロセッサのIntel製への全面移行に伴い、起動時にMac OS XとWindowsを選択したりあるいはMac OS XとWindowsを同時に使用できる機能(ブートキャンプ)が実用化、Windows専用PCからの乗り換えを検討するユーザーが増え始めた。また、Mac OS XはBSD系Unix(後述)ベースになっており、その中核部分(カーネル)は[[w:オープンソース|オープンソース]]OSであるBSDFreeBSDをもとにして開発されていると言われる(マック(Mac OS自体、オープンソースの Darwin と、非オープンソースであのコンポーネントから構成されている)。 そのため、Unix系のコマンドがマックOS上でも使用できる場合も多く、このようなUnixとマックとの親和性の高さから、Unix系 OSのプログラマーが、Mac OS X環境でUnixアプリケーションのプログラムを開発する例も見られる。
 
大まかに次のような変化をたどる。
400 ⟶ 410行目:
=== Unix ===
 
1960年代,米[[w:AT&T|AT&T]]社(エーティー アンド ティー社)の[[w:ベル研究所|ベル研究所]]で誕生した。しかし近年はUnixそのものが使われることは殆どなく、Unixシステムをベースとして様々な改良を施したOSがUnix系OSとして利用されている。主なものとしては、Linux(リナックス)ディストリビューションBSD系Unix, HP-UXやSolarisなど。
 
Unixの特徴としては、
411 ⟶ 421行目:
一般ユーザーの使用に関してはWindowsのシェアは圧倒的に大きいが、しかしIT企業などでのサーバや基幹コンピュータといった分野においては、現在でもUnixが多くのシェアを占める。
 
==== Linux ====
 
「Linux」(リナックス)は、厳密に単体でその中核部分である「カーネルだけなみを指しOSとしてFSF実装は「Linuxディス提供すGNUソフリビューション」と言うのが厳密ウェア群用法ある。「Linuxディストリビュショザーラ」とは、Linuxカドを補いオペレネルを元に、実用OSティング・システムして構成されためにことがくのアプリケーションの実装を行ったものである
 
このため、FSFでは Linux カーネルにGNUのユーザーランドを組合せてオペレーティング・システムとしているプロダクトを「GNU/Linux」と表記する事を推奨している。
カーネルにどのようなアプリケーションを加えるかにより、何通りもの実装がありえて、実際にOSとしての実装が何十通りもあるので、それら個々の実装については「Linuxディストリビューション」と表現することでカーネルとは区別することもある。
 
オペレーティング・システムとしてのプロダクトは「Linuxディストリビューション」と言うのが厳密な用法である。「Linuxディストリビューション」とは、Linuxカーネルを元に、実用OSとするために多くのアプリケーションの実装を行ったものである。
 
カーネルにどのようなアプリケーションを加えるかにより、何通りもの実装構成がありえ、実際にOSとしての実装構成が何十通りもあるので、それら個々の実装プロダクトについては「Linuxディストリビューション」と表現することでカーネルとは区別することもある。
 
Linuxディストリビューションは、各生産メーカーごとにカスタマイズされて配布されており、[[w:Fedora|Fedora]](フェドラ)、[[w:Ubuntu|Ubuntu]](ウブンツー)、[[w:Debian|Debian]](デビアン)などのディストリビューションがある。
 
 
===== Linuxの利点 =====
====== パッケージ管理 ======
Windowsに対するLinuxの大きなアドバンテージは、[[w:パッケージ管理システム|パッケージ管理システム]]が充実していることである。
 
430 ⟶ 444行目:
この依存性解決のためのソフトウェアがすでに開発されており、[[w:RPM|RPM]](レッドハット系)、dpkg (デビアン系)などの依存性解決ソフトウェアがある。これらを用いると、依存性を自動的に解決できる。
 
現在2022年7月の時点はMac OS、macOS X上のた動作をするソフトウェアとして、[[w:Fink|Fink]]などがあり、Homebrew (パッケージ管理がLinuxの専売でシステム)|Homebrew]]いことは注意する必要がある。ただし、Fink自身も内部では debian dpkg を用いているため、これらは同じものということもできる。
また、Linuxの誕生以前にBSD Unixでパッケージ管理システム ports/pkg があり、 パッケージ管理としてはLinuxは後発である。
 
====== カスタマイズ ======
 
Windows, Mac OS Xと大きく異なる点として、Linuxでは広範囲の[[w:カスタマイズ|カスタマイズ]]ができることがあげられる。例えば、LinuxにおいてはGUIは[[X Window System]]が用いられるが、これはオプションであり必須では無い。特に、主にサーバーとして扱う場合には、GUI無しで導入した方がよい場合もあるかも知れない。
441 ⟶ 456行目:
Linuxを用いる上で難しいのが、ハードウェアのドライバ(そのハードウェアをパソコンで制御できるようにするためのプログラム)の導入である。特に、既に所持しているハードウェアがLinux上で動作するかを知るのは難しい。具体的にこれらについて調べるには、[[インターネット]]を使うのが普通だが、多くの情報は英語で与えられている場合があり、英語が使えないなら調べることは ほぼ不可能である。
 
別の方法として、LinuxはOSのソースコードが公開されているため、特に linux-x.x.x/drivers/ 以下を参照することで、自分の所持する機器のドライバが存在するかを確かめることができる。ただし、これには相当のコードリーディング力と英語力が必要なため、あまりおすすめはできない。
 
====== ソフトウェア互換性 ======
451 ⟶ 466行目:
しかし、画像などのようなのは例外で、いわゆる実行ファイル(Windowsでいう拡張子「.exe」)のようなものは、まずLinuxでは読み取り不可・起動不可である。
 
世間のソフトウェアのなかには、[[w:Mozilla Firefox|Firefox]](ファイアフォックス)、[[Inkscape]](インクスケープ)、[[GIMP]](ギンプ)などのように、Windowsと Linuxの両側で同じソフトウェアがあるが、これらは、それぞれのOSのライブラリに合わせて、1つのースツリーから、別々のプラッウェアが作り直されホーム向けのバイナリーを生成している(ハズだと思う)
 
:※ Firefoxなどのコミュニティが、いちいちそういう内部構造を説明しないので、真相は未確認。Firefoxのソースコード解析なんか、私たちwikibooksでは、したくない。
 
そのため、Windows用のインストールファイルをLinuxで実行しても、インストールできない。そもそも公式サイトからダウンロードをする時点で、すでに、各OSごとに対応バージョンのインストールファイルをダウンロードするようになっている。
675 ⟶ 688行目:
 
==== コンパイラ ====
[[w:ソースコード|ソースコード]]を実行形式に変換するソフトウェア。個別のプログラム言語に対して、それぞれのプログラム言語用のコンパイラが10種類<ref>インタープリターしか言語処理系がない言語もある。</ref>以上、存在する。
 
Windowsの場合、マイクロソフト社の提供するVisual Studio を導入すると(現在(2019年)は無料版がある)、いっしょにWindows用プログラムのコンパイラが付いてくる。