育ちが違う Windows!

記事
IT・テクノロジー

育ちが違う Windows!


Web 開発の OS として、Mac、Windows、Linux でほぼ同じ環境で開発できることは既に別の記事で紹介した通りです。しかし、Windows はちょっと「育ち」が違います。この記事では、Web 開発の OS の観点から見た Windows について紹介します。


ソフトウエアの開発の元祖は UNIX

UNIX という OS を聞いたことがありますある方もいらっしゃるとおもいます。実は、ソフトウエアの開発で広く使われていた OS が UNIX です。最近では、PC の性能が向上して、殆どのソフトウエアの開発は、PC を利用するのが普通になっていますが、ちょっと昔は、UNIX 系の OS が動作する、ワークステーションなどと呼ばれる PC の上位のコンピュータで開発するのが主流でした。

もちろん、開発用のパッケージも市販されていましたが、多くのオープンソース系のツールなどの開発に広く利用されていました。ただ、一般の利用には価格が非常に高かったため個人の開発者などが手軽に利用するのは難しいという問題がありました。

そうした、問題を解決するために、UNIX を模倣して作られた OS が Linux というわけです。開発者の名前と UNIX をくっつけて Linux になったようです。

一方で、Mac OS の元祖も UNIX です。UNIX には二つの大きな流れがあって、その一つの BSD 系の UNIX(アメリカの UC バークレーが中止になって開発された UNIX)を元に開発された OS です。

つまり、Linux と Mac OS は、UNIX の流れを汲む OS という事になります。現在も広く利用されているオープンソースのパッケージの多くはこうした、UNIX 系の OS の上で開発されて配布されているものがたくさんあります。

一方で、Windows はマイクロソフトが開発した OS で、UNIX 系の OS とはちょっと違った系統の OS です。これが、「育ち」が違うと表現した理由です。

コマンドラインが違う!

元々、UNIX はコマンドラインのインターフェースの OS です。従って、今でも UNIX 系の OS には、コマンドラインでいろいろな事ができるようになっています。呼び方はいろいろで「シェル」と呼ばれたり、「ターミナル」などと呼ばれたりしますが、基本の操作は、このシェルを使うとほとんどの事ができるようになっています。

実際に、これらのコマンドライン上で利用するアプリが Web 開発をはじめとするソフトウエアの開発で広く利用されています。Web 開発でよく利用する「npm」や「git」なども基本的には、このコマンドラインで利用するアプリです。

一方の Windows では、当初は「DOS ウインドウ(DOS プロンプト)」などと呼ばれる、コマンドラインが利用されていました。これは、当初、インテルの CPU を利用した PC の標準的な OS だった「MS ー DOS」の名残りです。MS ー DOS の機能がメインで機能も UNIX 系のシェルに比べると比較になりませんでした。

現在の Windows(Windows10)では、「Power Shell」と呼ばれる、マイクロソフトが開発したシェルが搭載されています。後から、開発されたシェルなので、現在 Linux 系の OS で標準的に使われている「bash」より、実は高機能で、Linux などにも移植されていますが、一般的なソフトウエア開発者につ変わるような状況にはなっていません。

Windows 向けに公開されている、パッケージのアプリは、この PowerShell 上で Linux や Mac OS で利用できるようになっているので、実質的には同じような感じで利用できるようになっています。

あるいは、Git のように、UNIX 系のシェルと互換のある専用シェルを提供している場合もあります。(Git は PowerShell からも利用できます)

微妙に違う Windows のコマンドライン

Windows でも Web 開発に使うアプリやコマンドは、ほぼ同じように使えるのですが、実は微妙に違う点も幾つかあります。

一つ例を挙げると、プログラムの入力にマイクロソフトの VSCOD などを利用すると、エディタからコマンドラインの機能を使える機能があります。VSCODE では「ターミナル」と呼んでいますが、これで PowerShell を利用すると一部のコマンドが機能しない場合があります。コマンドラインのプログラムを PowerShell からコマンドプロンプトに変えると Linux や MacOS とほぼ同じように使えます。

この原因は、PowerShell の標準設定です。PowerShell には「execution plicy」という設定があって標準では、スクリプトの実行などが禁止になっているのが原因です。

この設定を変更して、スクリプトの実行を可能にすれば、UNIX 系のシェルとほぼ同じような感覚で利用できます。

$ Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope CurrentUser
コマンドラインで実行するスクリプトは場合によってはシステムの設定を変えたりできるため、セキュリティ対策で標準設定では無効化されているための起こります。古いコマンドラインのコマンドプロンプト(cmd.exe)ではこうした設定がないので、シェルプログラムを変更すれば設定を変更しなくても利用できます。

一旦設定を変更してしまえば、次回からは特に設定をする必要はありません。設定を記憶していて、同じ設定で利用できるようになります。

設定を戻したい場合(セキュリティを強化する場合)には、

$ Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
などのように、設定値を変更すれば実行を禁止できます。

Windows で開発を行う場合

Windows の PC で開発を行う場合には、大きく二つの設定方法があります。

一つは、Windows の標準シェルプログラムの「PowerShell」を活用する方法で、全て Windows 版のアプリをダウンロードしてきて設定すれば、Web 開発が可能です。使い勝手も上で紹介したような微妙な違いはありますが、基本的には同じです。

もう一つは、Windows の機能として「WSL(Windows Subsystem for Linux」を導入して、仮想マシーン(Virtual Machine)上で Linux を動作させて、この Linux 上で開発を行う方法です。

私は、Windows で開発する場合は、WSL を利用しています。この方法だと、Linux のシェルプログラムが利用可能で、開発で利用するパッケージも Linux 版を利用することができます。PowerShell より使い慣れているので、使い勝手が良いのが大きな理由です。

インターネット上で公開されている豊富な Linux 系の開発ツールを利用できるので便利です。

まとめ

この記事では、簡単な OS の歴史を含めた、MacOS/Linux などの UNIX 系 OS と、Windows の違いを紹介しました。Windows の場合、コマンドラインのインターフェースに、UNIX 系とは違うシェルプログラム、PowerShell を採用しているので、微妙に設定や操作が違います。大きな問題ではありませんが、設定の違いなどがあって知らないと困る場合もあります。

最近の Windows では Windows 上で Linux を動かす機能もサポートされているので、ソフトウエア開発に Windows を利用する場合は、WSL の機能を利用すると、Mac /Linux に違い感覚で開発を進めることが可能です。Windows を利用する場合の開発環境の設定についてはさらに詳しく別の記事で紹介予定です。お楽しみに!
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す