当然ですがWindowsを使うプログラマも沢山います。大企業はセキュリティマネジメントの関係で原則Windowsしか使えないルールになっている事が多いので、ほとんどWindows上で開発していると思います。
最近は開発環境にVSCodeを使う人が増えています。その場合WindowsでもLinuxでもMacでも利用できるので、あまりOSは関係ないですね。
Webアプリケーションなんかは、PHPやPythonといったマルチプラットフォーム対応の言語で開発するので、どんなOSで開発しても関係ありません。
Unityも同じです。
ではLinux(仮想環境も含む)を使って開発している人の理由を考えましょう。
よくあるのが、Emacsやviエディタに慣れてしまってそれで開発がしたいという理由です。
あとはLinuxカーネルや、Linuxのデバイスドライバなどを開発する場合もLinuxで動作確認する必要があります。
セキュリティエンジニアなどは、解析ツールがLinux用に開発されている事が多いのでLinux使う傾向にあります。
そんなところですかね。
ただ、最近はDockerも仮想環境もあるし、クラウド上で開発する人も多いので、開発環境のOS選びは個人の好みであまり深い意味はないと思って良いと思います。
むしろWindowsは「多すぎる」のだと思います。
多すぎるモノは
- GUI(Graphical User Interface)
- 価格
です。
まずGUIですが、WindowsはGUIを消すことができません。Microsoftはできると主張するでしょうが、実質上、GUIをユーザ側で作成できる、Windows CE系は消えてしまいました。
近年は、Windows Nano ServerのようにGUIがないWindowsもあるそうです。
でも、これは間違いなく一般的ではありません。
今私がググってきて初めて知りました。残念ながらアプリケーションをWindows Nano Server用に別に作る必要があるようです。それでは意味がありません。それだけに使うことは考えにくいです。
さらに、このNano Serverに何かを追加すると、Windowsになるわけではないようです。要はWindows Nano Serverはその意味でWindowsではありません。
Windowsと別のOSを使うなら、それこそLinuxを使えはいいだけの話です。
そして価格ですが、Windowsはどうやっても台数インストールすると価格がかかります。
もちろんWindowsもディスカウントはするでしょうが、そもそもからしてそのための管理費用がかかります。何台インストールしたかを管理する必要があります。
Datacenter Editionなんて16台で6000ドル(約80万)です。でかいところでは、軽く1000台レベルで運用するでしょうから、6000万ほどかかります。
6000万そのものはいいでしょうが、IT系のシステムは、まず作って相手に提供するので当初はゼロ円です。いきなり6000万は躊躇するでしょう。
Linuxなら、そのどちらも不要です。そして、GUIも価格(サポート)も必要なだけ追加できます。
LinuxのGUIである、X-Windowをあとから追加しても、LinuxはLinuxです。既存アプリの修正は不要ですし、そもそも関係ありません。
サポートも同様です。大抵はディストリビューション単位で契約するでしょうけど。
開発者目線だけで言えば、近年はWSL2が出てきてだいぶ良くなりました。現状は、systemdがサポートされておらず苦労しますが、それも解消するようです。
ということで、本番でWindowsを使わないことと、開発環境ではWSL2が今までなかったので使われませんでした。開発環境側はこれから変わるかもしれませんが、本番環境に使わないのであればあまり意味がないと思います。
はい、Windowsは、Linuxが開発者に提供できるすべてを備えているわけではありません。私はとても代表的なウェブ開発者で、複雑なウェブやモバイルアプリ、バックエンドのAPIを作っています。そのために使うツールや言語のほとんどはLinuxでしか使えませんし、どうしても必要ならMacのHomebrewで間に合います。私は純粋にWindowsを使ってみましたが、大失敗でした。また、WebサーバはLinuxで動いていることが多いので、Linuxを使えば開発現場と生産現場の差はかなり少なくなります。あとRubyなんかはWindowsの方が10倍くらい遅いんですよ、変な理由で。
Windowsを使っても大丈夫なのは、デスクトップやモバイルのWindowsアプリや、Webの.Net系を開発する場合だけだと思います。あるいは、Linuxの仮想マシンをたくさん走らせることもできますが、その場合、本当にWindowsで開発していることになるのでしょうか?
編集:コメントでかなりの人がこの答えに関連するものとしてWSLとWSL2について言及しています。私はWSLはかなりクールだと思いますが、それは根本的に答えを変えるものではありません。それはまだLinuxがそれを提供しているのであって、あなたはただWindows経由でそれを使っているだけなのです。他の理由でWindowsが必要なら、それは合理的な代替手段です。
追記:もしあなたが私の答えがそんなに気に入らないなら、Fred Michellの答えを読んでください、彼は私がここで言おうとしていることにもっと多くの努力を払っていますし、私も心から同意しています。
GNU関係のソフトがまともに動かないと萎えます。
Linux、あとMacでも動くコード(Python、R)が、WindowsやWSLでは処理するデータ量が増えていくと落ちたり挙動がおかしかったりすることがありました。わざわざ環境を整える必要性を感じませんでしたので原因究明はしていません。そいうとこです。
Rubyとかやってた時にだんだんWindowsでは動かなくなるんですよね😭
gemで引っ張ってきても動かないんですよね。みんなLinux(あるいはMac)でやってるんだろうなと思いました。
- Windowsの方がLinuxよりずっと先に誕生しています。
- 初期のLinuxは汎用カーネルを目指していませんでした。
- Linuxがまともになった頃には、Windowsはもう膨大なソフトウェア資産を抱えていました。MSはそれらを大事にする戦略を取りました。つまりバージョンが上がってもそれらが不具合を起こさないように、OSの側に様々な仕掛けを入れる戦略です。
- Linuxカーネルを採用することで、ライセンスの問題は複雑になります。これはMSだけでなく、関連ソフト全ての開発者、使用者にも影響があります。これを嫌ったということは想像できます。
- Linuxの方針とMSの方針は必ずしも一致しません。対応するCPUの範囲やメモリ管理の仕方、ファイルフォーマットなど、MSにとっては余計なことやしてほしくないこともするし、してほしいことをしてくれないリスクが常に出てきます。
Windowsは、1985年11月にDOSに同梱のオペレーティング環境として導入されました。Linux 1.0は、約3年半の「オープンな」開発の後、1995年3月にリリースされました。成熟度を日数ベース(ローンのようなもの)と考えるなら、答えはMicrosoft Windowsです。
(急激に変化するのではなく、徐々に変化する)安定性を重視するならば、これは興味深いものです。しかし、Linux 2.x - 3.x や 3.x - 4.x へのジャンプは、「ビッグバン」や重要なアーキテクチャの変更ではありません...番号は、ほとんど完全に美観のために付けられたものなのです。Linuxの開発は、25年以上の進化の中で、方向性や哲学に大きな変化はなく、かなり直線的なものでした。大きく変わっていないとは言いません......確かに変わっています! しかし、すべての変更は、後方互換性、アーキテクチャのクリーンさの維持、およびパフォーマンスの観点から、十分に検討されたものです。
Windowsカーネルもほぼ同じように(革命的ではなく進化的に)進化してきましたが、2006年のWindows Vistaで「NT 6.0」が導入されてからはそうではありません。Vistaは、Microsoftがカーネルをユーザーインターフェイス(MinWinなど)から分離するというアイデアに真剣に取り組み始めた最初のバージョンで、それ以来10年以上にわたって、カーネルは巨大なスパゲッティの玉から、より組織的に進化してきました......すべて、古いソフトウェアやハードウェアとの高い互換性(100%ではありませんが)を維持しています。
しかし、Windows XP以前のWindowsカーネルとアーキテクチャの状況は、アーキテクチャ的に異なる2つのOSが「Windows」を名乗るという、混乱したものでした。その1985年のオリジナルリリースから進化したWindowsカーネルは、Linuxのような安定性や信頼性に欠けるガタガタのもので、2000年のWindows MEを最後に放棄されました。
それももう昔の話です。現在のWindowsカーネルは、非常に安定しています。世界第2位のクラウドコンピューティング環境であるAzureを動かすために使われているのです。何十もの巨大なデータセンターで、すべてWindowsが稼働しています。信頼性の高いカーネルがなければ、それは不可能なことなのです。
——
しかし、ユーザーインターフェースの成熟度についてはどうでしょう?というのも、人々はWindowsのGUIを話題に入れる傾向があるからです。一方、Linuxは一般的にコマンドラインインターフェースのあるカーネルと考えられており、GUIは本当の意味での「Linux」ではありません。しかし、同列比較をしてみると、なんだかんだで決着がつきましたね。
Microsoftは、Windows 8の導入以来、Windows GUIの変換と近代化に取り組んできました(Windows 8には、本当に優れたセキュリティモデルの上に、本当に悪いUIのアイデアがたくさん重ねられていました)。そして、その作業はWindows 10でも続けられています。2012年以降にUbuntuのデフォルトGUIで行われた進歩を見れば、そこでも多くのことが起きています(視覚的に同じものはほとんどありません)...ですから、ここでは「安定性」についてはどちらの側にも勝ち目はないのです。
OSのGUIに「成熟」を求めるなら、macOSに異を唱えるのは本当に難しいです。
Mac OS X 10.1(2001年)
macOS 10.13 High Sierra (2017)
WindowsやLinuxでは、KDEを除いて、これほどまでに単一のGUIアプローチにコミットしているものは見当たりません。
私がLinuxから離れられない理由は以下のしょーもない点です。
- cmd.exeではなくてzshを使いたい
- Perlでパス区切り文字を書く時\と/で悩みたくない
- 改行が0aか0d0aかで悩みたくない
- 文字コードはShift_JISは全廃してUTF-8に統一したい
- Emacsをスムーズに使いたい
しかし、これらの問題はすべてWindowsで起動するLinux環境WSLで解決しました。
これで不満の80%は解決です。
しかし、最近以下の問題が我慢ならなくなってきました。
- Linux側のFirefoxやChromeをWSLでうまく表示できない(出来ている人も多いので、ぼくの設定の未熟さの問題)
- グラボのGPUをWSLから直接使えない。この問題は来年のWSL2でも解決できないらしい。ディープラーニングに使うのであればこれは深刻な問題
でもExcelだパワポだっていう客がいる以上Windowsは必要。
私はLinuxサーバーをおいて、X Window Systemで入る運用を復活させようと思っているのですが、時間がなくて出来ません。
Windowsには出来ないことがあるんです。で、MSが頑張ればできるんです。それを待っている状態です。
あと、Updateでバグを送ってくるのは勘弁して欲しいわ~~
Linuxの場合はソースも公開されるので、ハッカーが寄ってたかってコードレビューするので、Updateのパッチはすぐ当たるんだけど、WindowsはMSが対応するまで闇の中だからな~~
2021–02–02追記:WSL2からWindows-PCに挿したグラボをCUDAで使えるようになったようです。
2022–06–10追記:WSL2からChromeが普通にXで動くようになりました。Selenium(ブラウザーの自動駆動)が使えて便利。
解釈が逆ですね。
Windowsだけにレジストリがあります。 他のOSにはそんな物ありません。
では、Windowsがレジストリを採用している理由ですが、これはツリー構造(ディレクトリ)の管理が出来る為です。
コンフィギュレーションファイル方式はシンプルですが、独立しているので相互の関係がわかりにくくなる事もあります。 例えば、pop3.confとmail.confは関連性を持っているとしても、それを見ただけではわかりません。
対して、Windowsレジストリはツリー構造で管理されて、パッケージやURLのように、local_machine.system.microsoft.windows…のように表される事で、local_machine...mailとlocal_machine...mail.pop3は親子関係にある事がすぐにわかります。 ただし、簡単なDBのようなシステムが無いとアクセス出来ませんが、逆にそのシステムにより統一的にアクセスできます。 この統一管理の仕組みにより、リモートから設定を直接に変更(ネットワークレジストリ)したり、グループ全体を管理するシステムによる一括管理(アクティブディレクトリ・ポリシ)を実現しています。 初期のレジストリWindowsの時代にはシステムへのリモート操作機能が無かったので、ssh等によるリモート管理の様な自動操作が行えず、リモートレジストリにより設定をコントロールできるようにすると言う実装ですね(現代ではPowerShellにより行えます)
私はWindowsのカーネルを熟知しており、Linuxのカーネルについてはそれなりに知っています。
意外に思われるかもしれませんが、類似点の方がずっと多く、違いは少ないです。私がよく言う違いの1つは、LinuxのI/OモデルはUNIXから継承した同期式が基本で、WindowsのI/OモデルはVMSから継承した非同期式が基本であるということです。WindowsのI/Oリクエストの設計は、同期式と非同期式のI/Oを美しく管理できる優れた設計になっています。Linux(及び普通のUNIX)でも非同期のI/Oは可能ですが、そのための統一された仕組みはありません。これは致命的な欠陥ではなく、設計思想の違いですが、個人的には、Windowsの方がアーキテクチャ的に優れた選択だったと思っています。
どちらもスレッドとプロセスをサポートしています(Linuxはタスクという共通の構造を用いていますが)。どちらもページング方式の仮想メモリをサポートしています。どちらもネットワークをサポートしています。どちらもファイルシステムの動的な組み込みが可能です(この機能のインターフェイスは両者で大きく異なっていますが)。
Windowsは膨大な時間と労力をかけて非常に移植性の高いデバイスドライバのモデルを構築しました。デバイスドライバは様々なバージョンのOSやCPUアーキテクチャに対応しており、1つのソースコードで様々なバージョンのWindowsに対応できるドライバを書けます。リッチなプログラミングモデルがあります(周辺バスの仮想メモリのサポート、多重スロット/多重割り込みのデバイス、その他様々な秘密奥義のサポート)。Linuxは歴史的に単発のドライバになっています。一定の構造化はされていますが、私が知る限り、移植性は高くありません。1つのソースコードに統合することもできますが、条件付きコンパイルの嵐で酷いコードになる可能性が高いです。
WindowsのAPIは文字列長付きの16ビットのユニコードを採用しています。Linuxは8ビットのUTFを採用しています。どちらにも批判はあると思いますが、長年C言語で開発してきた私としては、文字列長が組み込まれている方が好きです。NULL終端文字列は良くないと思っています。エラーになりやすいので。でもどちらでも機能します。
WindowsはMS-DOSから受け継いだ変な遺産があります。例えば、MAX_PATH_LENにマニフェスト定数(260)を追加した人がいます。でもWindowsのパスの長さは最長で32,767文字です。文字列の長さを符号なしの16ビットにしたためです。1文字は2バイトです。
Windowsのファイル・ハンドルとLinuxのファイル・ディスクリプタは、使用方法から見れば基本的に同じものです。ファイルはいずれも、バイトやブロックの単位でアクセスされます。
どちらもシステムコールは高速です。どちらも高度なスケジューラを備えています(Linuxは長年に渡り何度もスケジューラを作り直していますが)。信頼性に関して言えば、どちらも非常に堅牢です。Linuxに比べてWindowsは再起動が必要になることが多いとの批判がよくありますが、Windowsのカーネルは運用中の更新に対応しています。システムの再起動が必要になるのは、DLLの更新ができないためのようですが、これはいつも不満に思っています。カーネルモージュールは再起動しなくても更新できるのに、お粗末なユーザーモードのコードが再起動の原因になっているのです。まぁそれはさておき。
WindowsはLinuxのバイナリが動きます(Windowsのバイナリも一部はLinuxで動きますが)。確かに、これは新機能であり、まだベータ版ですが。
結局OSはツールに過ぎません。動けばよいのです。うまく動くのか動かないか。たいていは、非常に高度で大胆なトレードオフの結果でしょう。目の前の問題を解決するのに最適なものを選べばよいです。
John Gwinnerさんのコメント
とても公平な回答をありがとうございました。スレッドやプロセスについて言及されていますね。私は98年にWindowsで高速データ収集システムを開発しました。Windowsはプロセス内のスレッドをうまくサポートしており、少なくとも当時は、Linuxよりもずっと優れていたと思います。大半のLinux開発者は、別のプロセスを呼び出すことでマルチスレッドをする傾向がありますね(訳注:ここでは並列処理という意味であり、スレッド機能を使うという意味ではないようです)。これは過去の遺物であり、もっとうまい方法があるような気がします。知らんけど。
昔はコンテキストスイッチがとても気になっていました。これはCPUから見てコストの高い処理です。高負荷のマシンがあっても、CPU使用率が必ずしも100%ではないことがあります。プログラマーたちは「CPUを使い切っていないので、自分のコードには問題ない」と言ってこの問題を無視するでしょう。
Tony Masonさん(元の投稿者)のコメント
OSの歴史的な理由によります。UNIXやLinuxは元々プロセスのみをサポートており、進化してスレッドをサポートしました。そのため「マルチスレッド」をするには新しいプロセスを作るのがもっとも簡単であり、たいていの場合は、フォークしていました。カトラーのチームが作ったOSが最初からスレッドを考慮した設計になっており、APIもスレッドの使用を推奨する形になっていました。フォークのようなもの(Windowsカーネルの用語でクローン)もありますが、Win32 APIからは使えません。
Linuxでpthread_createのドキュメントをよく読むと、オリジナルの(ユーザーモード(UM)の)スレッド対応の名残が見られます。当時のUMスレッドはシステムコールを1つしか呼べなかったため、カーネルスレッド(Windows NTやSolaris等)と比べて不便でした。Linuxには割と前からカーネルスレッドがありましたが、プログラマーの習慣を変えるのは意外に難しく、今でも使えるフォークに慣れてしまうとそれに固執してしまうのです。
John Gwinnerさんのコメント
まさしく! 全く私の考えている通りです。オープンソースの初期はフォークを多用していましたので、LinuxアプリをWindowsに移植するときは本当にイライラしました。
Unix系OS(Solaris等)やLinuxはハイエンドマシンで動作しており、一般的なパソコンに比べて非常に高性能だったというところが両者の大きな違いだったと思います。別のプロセスにコンテキストスイッチするのに数千クロックの時間がかかる? まぁいいや、と。
80386だったら? そんなパワーはないですから。
Tony Masonさん(元の投稿者)のコメント
旧世代の人間ですみませんが、1980年代に1MBのメモリを搭載した68K系列のSunワークステーションを使っていました。(Solarisのカーネルがスレッドに対応した頃の)1993年当時のワークステーションのほとんどは、Windows NTの最小構成とほぼ同じでした(NT 3.1では最低16MB、NT 3.5では12MBに下がりましたが、非公式ながらどちらも8MBあれば起動して使用可能でした)。Linuxもローエンドのマシンが出自です。なので計算能力の問題ではないでしょう。
私が90年代後半にデバイスドライバの開発を教えていた時、マルチプロセッサの問題について解説しましたが、当時はマルチコアのマシンを誰も持っていない時代であり、笑われていました。Windows NTは最初からマルチコアを考慮した設計になっていました。その10年後にはマルチコアが登場し、逆にシングルコアの時だけに再現する問題について教えないといけなくなりました…。現在はデスクトップパソコンに64コアのCPUを搭載できます。ハードの進化に合わせてOSも進化しないといけません。
従って、システムの根本的な設計に違いがあったと言えます。カトラーとそのチームはこの問題を正しく認識していました。今のLinuxにはカーネルスレッドの機能があり、数多くのハイパフォーマンスコンピューティングで利用されています。フォークも動作しますが、確実にオーバーヘッドが大きいです。
WindowsとLinuxの間には、違いよりも共通点の方がたくさんあります。WindowsとLinuxは、OSが進化してきた過程が異なっているにも関わらず。
John Gwinnerさんのコメント
大筋で同意です。私がメモリマップドで言いたかったのは、メモリマップドが可能か否かという話ではなくて、ローダーが.exeの一部分だけを選んで読み取り、全体を読むことはほとんどなかったということです。これはNTの前からあるもので、Windows 1.Xで既に実装されています。
はい、私もその頃から業界にいる旧世代の人間です。ワークステーションに触れる機会がほとんどありませんでしたが、Oracleと仕事をする頃にはPCがかなり高性能になっていました。
Jean-Yves Landryさんのコメント
WindowsがGUIの大半をカーネルに「密結合」している点に言及されていません。GUIのパフォーマンスを向上させるために採用されました。Windows Vista以降はそれなりに安定していましたが、昔はこれがBSODの原因になっていました。またウイルスの攻撃対象にもなっています。
一方LinuxではGUIは完全にオプションです。カーネルに統合された「カードグラフィックドライバ」がオプションとして存在しています。しかもX-windowシステム(表向きのGUI)はほとんどユーザースペースのプログラムになっています。
Tony Masonさん(元の投稿者)のコメント
カーネル内でGUIをサポートしている部分はwin32k.sysというモジュールに完全に隔離されています。win32k.sysは独自のシステムコールを持ち、システムの他の部分とは独立した形でGDIドライバを管理しています。GDIをカーネル(NT 4.0)に移すという決定は、パフォーマンス向上の目的で実施されたことは確かですが、他にも方法があったかどうかについては私にはわかりませんし、マイクロソフトはユーザーモードから直接グラフィックデバイスを制御できるようにするための様々な仕組みを導入しています。
従って、私はこれを、WindowsがLinuxよりも優れた設計や実装であること示す例として挙げないことにしました。私にはこれが良いことかどうかはっきりしないからです。注目すべき設計であることに間違いありませんが、元の質問は、何が優れているのかという質問でしたので。
Jean-Yves Landryさんのコメント
win32k.sysをカーネル空間に配置するのは良くない設計です。これはサーバなどの目的で使用する際にWindows NTがUnixやLinuxのような信頼性を持つことができない重大な欠陥だと思います。
NT 3.1がリリースされたとき、Windows NTはOS/2のように、win32k.sysサブシステムの大部分をリング2に配置するのではないかと私は思っていました。実際のところ、カトラーがVMSで採用していたRMS(レコードマネージメントシステム)をスーパーバイザモードで実行し、ユーザーモードのプログラムから保護する昔のやり方の方が一貫性がありました。
でもVAXやAlphaと違って、インテルx86でのリングの切り替えはかなりのオーバーヘッドが発生するということをカンファレンスで聞きました。
またVAXはリアルタイム性のあるシステムではないと教わりました。プロセスの生成、ファイルの生成、小さなプログラムのロードなどは遅かったのです。ハイエンドのハードで動くタイムシェアリングシステムなので許容範囲内でしたが…。遅いディスクドライブと4MBしかないメモリを搭載したパソコンでは耐えられませんでした。
Johannes Schneiderさんのコメント
その通り。そしてマイクロソフトはここ数年間にコアOSを深いところまでリファクタリングし、その依存関係を取り除き、全てのサーバー管理機能をPowershellに移行させるということに凄い努力していました(現在のエンタープライズ向け管理者ツールは実際にはPowershellのラッパーに過ぎないと聞いたら驚くのでは!)。
その結果としてNano Server 2016は最小限のコアと拡張コンポーネントだけを搭載したヘッドレスのシステムで、GUIとの依存関係はもはや全くありません(2012年からあるCore Serverとは違うものです。これもヘッドレスでしたが、中身はまだ多少の依存関係が残っていました)。まぁ正直言って、こんな日が来るとは思いもよりませんでしたね…:)。
他人と関わるために必要です。
今どき「これさえあれば全てカバー出来る」とか「OSを一つに絞る」という発想はそろそろやめても良いのではないですかね。
完璧なOSなんて一つもないですから。WIndowsもMacもLinuxもiOSもipadOSもAndroidもChromeOSも全部使って、テクノロジーの恩恵を最大限に享受しましょう。
私が使っているマシンの1台には、1,835,008個のハードウェアスレッドがあります(つまり、システムはほぼ200万個のプロセッサーと見なします)。これは、約50万個の4ウェイSMTコアです(ハイパースレッディングと呼ぶ人もいます)。
想像してみてください。膨大な処理能力です。こんな感じです:
(ボーグ(訳注:『スタートレック』シリーズに登場する、架空の機械生命体の集合体)が作ったものみたいで、すっごくかっこいい。)
Linuxが動きます。
一方、私の家にはこうした小型のものがたっくさんあります:
多くのペットプロジェクトにこれらを使用しています。監視カメラ、タイムラプス写真、AI、音声認識、TVメディアセンター、ロボット工学など、何でもいいのですが、その何かしらに、これか似たようなものがくっついているのです。しかも、1台5ドルなんですよ。
ここでもLinuxが動きます。
Linuxといっても、バージョンが極端に違うというわけではありませんよ。大きなマシンで動かしているのとほぼ同じものです。片方のマシンで使っていたものをもう片方で再コンパイルしてテストすることもできます。実際、先週末に仕事のプロジェクトでそうしたばかりです。スパコンの一部をこの小さなマシン群でシミュレートして、高可用性についてもっと学びたいと思ったんです。ビッグボーイを止めるより、このマシンを1台焼く方が安上がりですからね :-
… (もっと読む)回答や世間一般に出回ってる情報に古い知識・常識が散見されるので、黙っていられなくなり書かせて頂きます。 また、エンジニアと思われる、CLIで色々やりたことが完結するITエキスパートの方達(WSL2があるからWindowsで良いーみたいな事を言う方達です)の視点はだいぶ偏っていますので注意が必要です。実際に日々LinuxをメインマシンとしてMacやWindowsと同じ感覚で(開発・サーバー用途ではなく)”普通に”日常用途・通常用途で使っている私の言うことに是非耳を傾けて頂けたら・・・と思います。(私自身はMacもWindowsもLinuxも別マシンとして所有していてそれぞれ使い分けています)
(覚悟)
- Linux用に一個、別途でSSDを購入しよう、という出費する覚悟
- 脱Adobe。画像編集はKrita・GIMP、動画編集はDavinci Resolve(やBlenderその他OSSアプリ)で行く。という覚悟
- MS Officeはクラウドで対応して生きる、という覚悟
- iTunesは使わない、という覚悟(Appleの製品・サービスとの連携はLinuxではちょっと不便です)
- DAWはある程度妥協またはやらない(Mac・Windowsに比べて音楽編集環境はまだまだです)覚悟
- ゲームはSteam経由でLinuxで動くゲームしかやらない、という覚悟(ネイティブ版はLinux版の方がパフォーマンス高いゲームも有り)
- Linuxの基本コマンドはある程度覚える気がある、という覚悟
- IT大手のサポートは要らない、問題解決は自力でググって探すか、Linuxコミュニティで質問したりして必要な情報を得る、という覚悟
- 2Dプリンターはドライバーがある対応機種を使う、互換性を調べる、ない場合はPDFにして他で印刷するもしくはあまり使わない、という覚悟
- 3DプリンターはChitubox対応のプリンターを使う、という覚悟
以上です。人それぞれ用途によって覚悟が違うのでなんとも言えませんが、上記の覚悟に問題がなければ普通に使えます。
(注意点)
覚悟と関係しますが、インストールするSSDは別途用意、が最もリスクが少ないです。
- Windowsが入っているSSD(HDD)は物理的に取り外してとっておくのが一番安心・安全です。
- 別途購入したSSDを取り付け、LinuxのLiveUSBで起動してそこにフルインストールして使う、が最も導入が簡単です。ものの数分で終わります。
いざとなったらWindowsの入ったSSDを戻せば元通りなので、安心してLinux環境をフルスペックで思い切り楽しむ事ができます。
デスクトップ機であればSSD2個挿しで起動時にWin / Linuxのディスクを切り替えてお互いの環境を心配する事なくフル環境で使う、という事も出来ます。
(アップデートして欲しいLinuxに対する思い込みと誤解その1:インストール)
インストールが難しかったのは昔の話です。いまだにそういう人がいますが、無視して良いです。3大OSでは古いマシンの対応の広さや互換性などを含めると
macOS>Linux>Windows
の順でインストールが簡単です。
- ISOファイルをダウンロードしてUSBスティックにISOを入れてLiveUSBを作ることが出来る
- BIOSで起動ディスクをUSB優先に設定することが出来る
- インストールする時にインストール先のSSDを間違えないように選択することが出来る
- ネットに繋げる環境にある
という条件が揃えば最近のLinuxはあっという間にインストールできます。普通にそこそこPC使えている人は上の条件クリアしてると思います。つまり、誰でも出来る、ということです。
(※補足)
ここで言う「インストールの難易度」というのは、ハードウェアにOSが入っていないまっさらな状態から使えるようになるまでにかかる作業量・時間・コスト的なハードルの事です。再インストールでOSを削除・フォーマット初期化してから元に戻すまでの時間や難易度も含めています。
macOSの場合、上記のまっさらの状態で起動するとそのハードに合うバージョンのmacOSをネットワークに探しに行きダウンロード・インストールまで完結できたりします。再インストールなども、TImeMacineを使った復旧などはスマホ並みの容易さです。インストールメディアすら要らないコスト・難易度の低さで「最も簡単」としました。
Windowsの場合は複数のエディションの選択、ライセンス認証またはプロダクトキーの購入(高コスト発生)、ライセンス認証の回数制限・上限に達した際の電話によるライセンス認証、DVDやUSBなどのインストールメディアの必要度、インストール→再起動→待たされ時間の発生することの多いWindows Update、MacのTimeMachineやLinuxのUser領域をそのままにしてOS部分だけをマルッと入れ替える「短時間でお手軽・超カンタン完全復旧」機能がないなど、最も時間と手間とコストがかかるので一番下、としました。
(アップデートして欲しいLinuxに対する思い込みと誤解その2:デスクトップアプリやゲーム)
デスクトップアプリやゲームの使い勝手やパフォーマンスはWindowsが上と思っている人が多いと思いますが、 ネイティブ版であればLinux版の方がパフォーマンスは高いケースもあります。というか、高いです。
- Blenderは圧倒的にLinux版がパフォーマンスが高いです。同じマシン上でWindowsと比較すればすぐ分かります。0.6秒〜1秒で起動します。低スペックマシンでも動きます(Windowsは低スペックマシンではインストールから撥ねられたりする)。レンダリング速度・動作速度とも3大OSで一番良いです。(単なる私の主観ではなく事実です。参考動画↓
- 上記の動画(↑)を見て実際私も自分のマシンで何度も検証しましたが、概ね同じような結果になりました。使うディストロによってはUbuntuよりももっと良い結果が出ます。
- ブラウザのパフォーマンスはとても高いです。OSがCPUやメモリをあまり食わず、使用効率が優秀なので、搭載したメモリをより多くアプリに使えます。メモリ大食いのChromeもタブ開き放題。
- MS TeamsやEdgeのようなマイクロソフトのアプリも、Windowsと遜色ないかむしろ早いくらいパフォーマンス良いです。
- ゲームパフォーマンスの高さ、ポテンシャルの高さは欧米PCゲーマー界隈では昨今話題になっています。互換レイヤーでWindows版を動かしても結構良いパフォーマンスを出しますし、ネイティブ版のあるトゥームレイダーなどはWindows版より高いFPSを叩き出しています。
- ワコムのペンタブは、ドライバーなどインストールなしにそのまま挿してすぐ使えます。
Linuxは、低スペックマシンや少ないRAMでも動くOS。普通に考えれば、そういう軽量OSを昨今の高性能マシンで動かしたら超サクサクで快適に決まってますよね。あまり誰もそこをメリットとして言及しないのが私にしてみれば謎です。いつも互換性の話ばかりでOSのポテンシャルを引き出そう、と前向きに考える声が少ないです。
(参考資料:パフォーマンスの高さ:PixarはLinuxを選んだ)
質問の「覚悟と注意点」とは若干逸れますが、参考資料として。
3D映画世界トップのPixarもLinuxベースでプロジェクトパイプラインを構築して沢山の名作を生み出してますね。ジョブズの会社だったPixarが、Macでなく(Windowsでもなく)Linuxを選んでいる。それだけでも十分根拠と説得力あると思います。
(関連1)Kevin Baker's answer to What operating system do Pixar employees use? (Kevin Baker's answer to What operating system do Pixar employees use? (Kevin Baker's answer to What operating system do Pixar employees use?))
プロデューサーやコンセプトアーチスト、編集者、ストーリボードアーチストなどはMacを使っているようですが、プロジェクト制作のメインパイプラインはLinuxとのことです。
(関連2)Pixarのプレゼン動画
「ニモ」の3D動画がノートPCにも関わらずグリグリ動いてます。PixarがLinuxを選ぶ理由とポテンシャルの高さが垣間見れると思います(↓)。
Pixarではプレゼンのパフォーマンスの高さでSystem76のマシンを選んでいるようですね。動画の方はDirk-Ann Van Gelderという方ですが、ご本人がFacebookでコメントしています。
Pixarだけでなく、「シュレック」などで知られるDreamworksもLinuxをメインにしているようですね。「シュレック」がDreamworks初めてのLinuxベースで開発された作品のようです(↓)。
(アップデートして欲しいLinuxに対する思い込みと誤解その3:MS製アプリ)
一般的に思われている「マイクロソフト製アプリはLinuxで動かない」は誤りです。
- Microsoft Edge(β版)
- Microsoft Teams(Preview版)
- VSCode
いずれもマイクロソフト製アプリですが、Linux版もあり、普通に使えます。私はどれも日常的に使っていますが、WindowsやMac上で使うのとなんら遜色ないレベルです。
そもそも、マイクロソフト自体が自社のWebサイトやクラウドサービスをLinuxベースで動かしてますね。つまりクラウド版OfficeはLinuxベースで動いている、ということです。自社のモバイルディバイスにもLinuxベースのOS・Androidを選んでます。社内用にCBL-MarinerというLinuxディストリビューションまで開発して使っている。Windowsを開発している会社がなぜ自社のWindowsを使わずLinuxを使っているのでしょう。不思議ですね。
つまり、
「すでにマイクロソフト自体がLinuxを使ってビジネスしている。」
それが答えではないでしょうかね。
(まぁ、マイクロソフト自体が昔のビル・ゲイツ時代のマイクロソフトとは全く別物の会社になっているというのも理由の一つでしょうけど。
(まとめ)
異論・反論はあると思いますが、私は実際に毎日使っているので、ある程度最新のLinux情報としては説得力はあると思っています。
Linux信者の戯言と思われるなら、まぁご自由に、というところです。先にも書きましたが私はMacもWindowsもLinuxも使う3叉ユーザーですので、客観的に評価して書いています。仮想環境でちょこっと使ったことあるだけで全部分かった気になったり実際に使ったことなくWeb上の情報をかき集めて妄想で書いているわけではありません。もちろん私も人間なので好みはありますのでつい自分の感想も織り交ぜていますが、極力事実ベースで例も示しています。
ちなみに、私が使っているLinuxディストロはPop!_OSとManjaro Linuxです。NVIDIAのGPU周りの対応が良いから、というのが理由です。
長いものに巻かれるのが好きな人、大手企業がバックにいるのが安心な人、エンタープライズ向けが良い人はUbuntu、Fedoraもおススメです。
他に私が使ったことがあるディストロはelementaryOS、Linux Mint、Zorin OS、Endeavour OS、などなどです。色々試して、Pop!_OSとManjaro Linuxに落ち着きました。
以上です。
これからLinuxを使ってみよう、と思う人の参考になれば幸いです。
(関連コメント書きました↓)
簡単ですよ
Linux使う人=ITリテラシーが高い人がほぼほぼ。かつ少人数
例:あれ?このデバイス動かないな、んじゃドライバいれとくか
Win使う人=ITリテラシーが低い人も多数。かつ圧倒的多数
例:うちのパートのおばちゃん「社長!マウス刺さらないです」
俺「逆です」
0 コメント:
コメントを投稿