Linuxの問題に関する世界観です。
Linuxを、「インストールしただけで、開発出来ない」と言うが、むしろ、出来るわけがない。
熟練したUNIXのプログラマでも、カーネルを開発することは難しい。
GTK+で正しいアプリケーションを作るのは、Windowsで作るのより難しいだろう。
まずは、コマンドラインを覚えて、そして、出来たらサーバーが立てられるようになって、本当に上達したらPHPとSQLを組み合わせてWebアプリケーションを作れるようになるだろうが、そんなところまですぐに行けるわけがない。
Linuxを使ったからと言って、プログラミングが出来るわけではない。
だから、最初のうちは、ただ使うだけでも、何の問題もない。
GNOME 3は、新しいバージョンのGNOME Shellになってから、一気に使い辛くなった。
GNOMEエクステンションを使うか、MATEやCinnamonなどの他のデスクトップ環境を使うしかない。
個人的には、Xfceがおすすめ。軽くてカスタマイズ性が高いため、UNIXのツール群と相性が良く似ている。
XlibやGTK+/Qtなどで開発する方法が良く分からない。
ただ、それはGNOMEフレームワークやKDEフレームワークを良く知ると、Windowsと同じぐらい開発しやすくなる。
逆に、Windowsではコンパイラが有料だし、PythonやRubyなどのインタプリタ言語も豊富なので、Linuxでの開発はし辛くは無い。
X11設定とプログラミングやGNOMEやKDEやPythonやRubyを参照のこと。
プリンターは、現在、ドライバーをインストールしなくても使えるような、新しいやりとりの方式が開発中。
X11やネットワークを手動で設定するのは面倒だが、最近は自動認識技術が向上している。
Linuxプリンターを参照のこと。
コマンドラインなんか、使わなくて結構。たまに必要なことはあっても、たまにしか必要ない。
コマンドラインが使えないのにLinuxを触る意味がないとは言うが、それでも、Linuxの開発者が目指す「初心者に優しいOS」の第一歩になる。
UNIXコマンド(基本)を参照のこと。
特に日本語の環境では、フォントが汚いのは致命的だ。最近は、Adobeがオープンソースのフォントを公開したりしている。それらに期待だ。
Linuxフォントも参照のこと。
分かり辛いとは言うが、最近はGoogleの日本語入力システムであるMozcなど、昔よりは簡単に出来るようになってきた。
Linux日本語入力も参照のこと。
何か、目的を持って作ってみよう。ただ言語を学んだだけでは、何もスキルアップにはならない。自分なりにカレンダーやテキスト処理アプリでも作れば良い。
作るものが本当になくて、何を作って良いか分からない人間には、Webアプリケーションの開発がおすすめだ。GUIでの開発は、コマンドラインと全く違う、おかしな技術的要素ばかりで、本来のプログラミングから遠ざかっている。PHPの開発が良いだろう。PHPとMySQLの入門書を買って、入力フォームからSQLへデータを記録するだけのアプリケーションを作ると良いだろう。僕はプログラミングが出来るわけではないが、姉夫婦が言うには、「フローチャートを自分で書くこと」がとても有効だ。
僕の経験から言って、僕はDelphiと言うGUIのプログラミング環境でプログラミングの基礎を知った。直観的に分かった。それがしたいなら、きっとGNOMEやKDEでも、頑張れば出来るはずだ。だが、Webの方が簡単にかっこいいアプリケーションを作れる。僕は、Ruby on Railsもおすすめする。
全てをコマンドラインからコンパイルしてインストールし、自分でシステムを個別的に選択して作る、Gentoo Linuxのようなディストリビューションを使うと良いだろう。
Gentooを参照のこと。
そのうちきっと一緒になれる。今は、乱立して、それぞれが作ることが流行っているが、本当はオープンソースは融和してみんなで共有して作るコミュニティだ。
きっとFedora、SUSE、Arch、Debian、Ubuntu、Gentoo、Mint、みんなそれぞれに良い点がきちんとある。
Linuxディストリビューションを参照のこと。
仕方ない。失敗することもあるさ。GNOME 4に期待しよう。
ただ、きっとGNOMEの開発メンバーは、「今までのWindowsのパクリではないものにしたい」と思ったのかもしれない。だから、ウィンドウ一覧をタスクバーに表示しないようにしたり、最大化・最小化ボタンを消したり、メニューバーを表示しないようにしたのだと思う。もう少し、きちんと考えれば良かった。きちんと分かっていないユーザーにも問題はあるのかもしれない。
GNOMEデスクトップを参照のこと。
これは、きちんと機能的にも性能的にも向上している。UNIXではなくなっても、それはそんなに悪いことではないと思う。
ある意味、本当にGNOMEやKDEのような巨大なデスクトップ環境は、遅くて、重くて、汚くて、使い辛い。
だが、誰でもWindowsのような賢いインターフェースを作りたいものだ。
嫌なら、X11に軽いウィンドウマネージャを入れることは出来る。だが、それでもFirefoxなどの巨大アプリケーションが重くなってしまう。
みんなで完全に軽い環境を独立して作るしかないのかもしれない。
KDEデスクトップも参照のこと。
これは、きっとそれぞれの環境に、それぞれのアプリケーションを作るしかない。
統一されていない代わり、多様性がある。むしろ、一つのものでも、作り辛ければ使わない。切磋琢磨することで、両者どちらも、アプリケーションを開発しやすい環境になる。
GNOMEアプリケーションやKDEアプリケーションも参照のこと。
Microsoftが作ったCOMと言う技術と良く似ている。僕は、技術の詳細は知らなくても、色んな処理を行うコンポーネントに対して細かなプログラムが存在する、と思えば良いと思う。
CORBAも参照のこと。
GTK+は今のところ醜いが、テーマを使って外見を変えることが出来る。だが、テーマエンジンがQtと違うので、QtアプリケーションとGTK+アプリケーションの見た目が違う。
これは、多様性のための犠牲だと思うしかない。
これも、それぞれのプロジェクトの主権を守る、と言う意味では、悪の統一にならない、と言う意味で、むしろ、良く働いている。
XMLと文書形式を参照のこと。
そうでもない。色んなアプリケーションを試していると、オープンソース系、GPL系のプロダクトが一番色んな機能がある。
ただ、GUIアプリケーションの開発は遅れている。コマンドラインのアプリケーションを試すと、結構多機能なアプリケーションが多い。
これは、そうでもない。specファイルを自分で書くと分かるが、パッケージを作ったり、メンテナンスするのは簡単だ。インストール方法を記述して、バージョンだけを書き換えるだけで、保守できる。
Linuxパッケージ管理やFlatpak/AppImageやSnappyを参照のこと。
きっと、使い方がおかしい。そんなにパッケージをインストールしすぎたりしない方が良いし、開発をするなら壊れても良いような専用マシンでやろう。
基本的にパッケージマネージャを使えば良いのは分かるが、色んなアプリケーションをインストールしていると、システムが壊れるのは、Windowsと同じだ。
だから、もっと良く考えてプログラムをインストールした方が良い。
出来れば、Google ChromeとEmacs/VimとGIMPとInkscapeぐらいをインストールするのが良いだろう。
Linux WebブラウザやEmacsやviやGIMPやInkscapeを参照のこと。
これは仕方ない。Wineと言うWindows APIの実装もあるが、きっと、英語が読めないせいでそういうことになる。英語が分かる人なら、きっと英語圏の情報が読めるはずだ。開発にいずれ参加するためにも、英語の勉強はした方が良い。
ただ、僕は英会話教室に通っているが、今でも英語の情報を読むことは少ない。最近は日本語のフォントやかな漢字変換システムも豊富になったし、英語の情報を見なくても、基本的な情報サイトを見ることで、英語が分からなくてもLinuxは使えるだろう。だが、一次情報源を英語で読めることは、絶対に強みになる。だから、英語の勉強を頑張ってほしい。
Wineも参照のこと。
GPLは、「自由に利用出来る」と言うGNUの言っていることをそのまま受け取ると、気持ち悪くは見えるが、Linuxコミュニティとしては、共有されるコードを誰が許諾するか、と言う意味で、コミュニティが勝手にGPLでどんどん共有することの出来る、良いライセンスだ。
GPLを、「二次的著作物のライセンス継承」とは言うが、僕は、むしろ、オープンソースで許諾されたコードをどんどん増やす、と言う意味で言えば、ある意味、優れたライセンスだと思っている。
特に、ストールマン本人は、UNIXの反省に基づいている。みんなで作ったUNIXのパブリックドメインのコードが、後に独占的になって、フリーでないものになってしまった。今のコミュニティを守るために、ストールマンは永久にそのコードがフリーであり続けるような、そんなライセンスを作りたかった。
ただ、僕としては、そんなイデオロギーの問題ではなく、ただオープンソースで自分の独断でコードを共有し、みんなで開発し、共有し、協力し、共同開発するような、そういう公開された部分が好きだ。
だが、Linuxが絶対にオープンであるわけでもない。コードは無保証で、勝手に自由に使って良い。儲けても自由だ。だから、ある意味、出来ない人間や初心者は、サポートしない。自分の力で、自分の好きなように使って良い。
GNUも参照のこと。
僕は、わざわざおかしいと言う意味がないと思う。儲けられるなら、勝手に儲ければ良い。儲けられないなら、誰も儲けさせない。
だが、Red Hatはコミュニティを独占しているところがあるかもしれない。Windowsで言うMicrosoftが、そのままLinuxで言うRed Hatになっている。
それは確かに問題かもしれないが、僕はRed Hatと言う存在は結構面白いと思う。企業向けやエンタープライズ向けに開発したコードを、素のLinuxカーネルで共有すると、デスクトップやサーバーで使われる時も、そのコードが生きて、性能が良くなるはずだ。あらゆる場面に対応するOSになる。
僕としては、むしろ、誰もしたくないような、開発すること自体を誰もしたくないような場面で、Red Hatのような会社は、金でコードを書いてくれる。それと協力するのも、僕は悪くないと思う。現に、デバイスドライバーは豊富になり、ファイルシステムの性能は良くなり、ネットワークは自動設定するようになった。
Red Hatも参照のこと。
最近、Oracleなどの影響から再び再熱しているのが、オープンソース有害論です。「反オープンソース」と言っても良いでしょう。
Oracleも参照のこと。
一番言われているのが、「GNOMEとKDEの使えなさ」です。
はっきり言って、何も賢い点が無く、まともに使えません。バグや不具合が多く、使える代物になっていません。
GNOMEでMozillaしか使わないLinuxユーザーは、「Linuxを使う意味が無い」という問題に苛まれます。Linuxデスクトップは、何の意味もなく、インストールをして一度使って、そして嫌いになってWindowsに戻る、そうした人が99%でしょう。
また、オープンソースはサーバーなどの分野で良く使われていますが、ここで言われるのが「オープンソースは世界を馬鹿にした」ということです。
特に、Perl/CGIやPHPのようなWeb技術は、プログラム開発を退化させ、劣悪なものにしました。
また、データベース技術、特にMySQLのような技術は、Oracleなどから格好の批判の標的とされています。
Perl/CGIも参照のこと。
また、GNU/Linuxに言えることとして、「コピーレフトとボランティア労働の無意味さ」が言えます。
コピーレフトのような過激なコピー主義者を支持して、何の意味があるでしょうか。
それから、ボランティア労働は全く無意味です。なぜ、開発した貢献者に給与を払わないのでしょうか。一部の大学病院などが抱える「無給医」と同じ、コンピュータ業界の新しい問題でしかありません。
オープンソースも参照のこと。
また、Linuxカーネルのバザール開発は、今では完全に企業主導の開発になっています。クラウドなどで業績をあげているRed Hatなどが、完全に金儲けのために利用しています。
よって、僕は「反オープンソース」という姿勢も、悪くはないものだと思います。
Linuxの問題として、僕はLinuxには統一性がないということが言えると思います。
すなわち、それぞれのパッケージをそれぞれのソフトウェアの開発者が作っていて、それぞれまったく異なる操作性や使い方をするのです。
最たる例が「もっともユーザーフレンドリーでないテキストエディタ」であるviですが、ほかにもファイアウォールのiptablesなどはLinuxでありながら独自の特殊な使い方をします。そのほかにも例を挙げるに事欠きません。
そして、ディストリビューションも何種類もあり、デスクトップ環境も何種類もあり、はっきり言って選択肢がたくさんある代わりに統一性がなく、「標準」というものが一切存在しないのです。
ですが、これは逆に良いことでもあると思います。WindowsやmacOSでは、標準のデスクトップ環境が決まっていて、その環境以外の環境を使うことも導入することすらできません。Linuxは違います。Linuxではいくらでも自分の手で環境をカスタマイズできますし、開発者と同じ立場でウィンドウマネージャを開発でき、なんなら技術力を磨いて自分で作ることすらできるのです。
Linuxの周辺からは、よく「選択肢が多すぎる」という声が聞かれます。ですが、選択肢が多いということはいいことです。MicrosoftのMS-Officeしか選択肢の存在しないオフィススイート業界を見れば、選択肢がひとつしかないということがどれほど最悪なことであるか分かると思います。
Linuxはそのように、統一感がなく、バラバラで、標準がなく、選択肢が多すぎます。ですが、それこそがLinuxの高いカスタマイズ性であり、「フリーなソフトウェアの本来あるべき姿」であると言えるでしょう。
2023.06.15