Build Insiderオピニオン:arton(3)
テクノロジーカンファレンスがSurfaceで埋まる日は来るか
―― Windows 10上でLinuxが動くことの意味 ――
この数年、多くの開発者はMacを愛用するようになっている。それにはUNIXが大きく関係しているのかもしれない。Windows 10上でLinuxを実行できるようになったことで、Windowsは開発者人気を取り戻すことができるのだろうか?
「マカー多すぎ」になったわけ
2008年ごろから、テクノロジーカンファレンスを舞台から撮影すると、リンゴのマークで席が埋め尽くされているのが観察されるようになった(参考:前田さんの『マカー多すぎ』を参照。他にもJava One2011やJava One 2014のパネラーなど検索すれば多数見つかる)。
それまでも、例えば「デザイナーはMac」「DTPといえばMac」(実際はアドビのWindowsシフトがあったので必ずしも21世紀には正しいとはいえないのだが)「フォントにこだわればMac」というような言葉は耳にしていたが、ある時期を境にプログラマーが大量にMacを持つようになったのが印象的だった。
彼らは別にMac(というよりもiOS)をターゲットとしたプログラマーではなく、どちらかといえばサーバーサイドプログラマーたちで、それまでであればPCにLinuxを入れていたと思うのだが、とにかく多様性を重んじるオープンソース界隈を中心に、気付けば開発者が持ち歩くコンピューターがMac一色に染まっていて、あまりの画一性に何ともいえない微妙な気分になったものだ。
詳細な理由は個々それぞれだとは思う。とはいうもののこれだけ一斉にみんながMacを使うことになった時代の気分というのは筆者も共有しているので、理屈は分かる。
- ハードウェアの安定性――具体的にはスリープからの確実な復帰とそれも含めたバッテリーの持ち
- 手頃な価格(特に2010年前後数年はその傾向が強かった)
- ターミナルは
bash
で、grep
、diff
、sed
といったUnixコマンドのほとんどがあらかじめインストールされているか、移植されている - エディターとしてVimは当然最初から利用できるし、Emacsの移植もある
- 当然Subversion、今はもちろんGitといったSCMも普通に利用できる
- Javaも移植されているのでNetBeansやEclipseも動作する
ひと言でいえば、Unixのユーザーインターフェースを安定したハードウェアで動作させられるということだ。
ちなみに筆者が最初にMacを手にしたのはiBook(2004年ごろ)で、この時点ではps
コマンドで全プロセスを一覧するときに指定するオプションがBSDそのままのax
で、SysV育ちの筆者にはえらく使い勝手が悪かった記憶がある。しかしいつの間にか-ef
をオプションに取れるようになっていたから、アップルもLinux(SystemV系コマンド)からの乗り換え先として意識しているのではないかと想像する。
こうなると、ノートPCの個々のハードウェアによって異なるドライバーを用意したり、まともにACPIを動かすのに試行錯誤が必要だったりすることがあるLinuxや、同じくスリープからの復帰に問題を抱えていたり、実に貧弱なコマンドラインツールしか持たなかったりするWindowsが駆逐されるのもある意味当然だ。
筆者はWindowsが大好きなのだが、それでもデフォルトのエディターのメモ帳が、改行コードがLFのテキストをまともにハンドルできなかったり、UTF-8の先頭に余分なBOMを付加したり、うかつに保存すると拡張子txt
を勝手に付けたりする(これを回避するには「名前を付けて保存」するときに「ファイルの種類」に「すべてのファイル (*.*)」を選択する必要がある)のには辟易している。
「メモ帳が嫌ならVisual Studioを使えばいいじゃない」というようなマリーアントワネットな意見には、起動時間を計測してから口を開いた方がよいと勧めたくなる(なお、どんなにEmacsが好きでも、Emacsを起動していない状況で/etc/hosts
ファイルを編集するときはvi
を使うものだ。つまりコマンドの起動時間はものすごく重要だ)。
WindowsはIDE指向が強いので、プログラマー用のコマンドラインツールが貧弱なのもうれしくない。特に重要なdiff
とgrep
についていうと、diff
はWindiffという今ひとつ使い勝手が悪いツールがSDKに入っているだけだ。それに比較すれば既定で用意されているファイル内の文字列検索ツールのFINDSTR
というユーティリティはなかなかに機能的ではある。例えばサブディレクトリ内のファイルを含む検索をしたければオプションの/S
を指定することができるし、ファイルリストをコマンドラインから受け取る/F:/
オプションを利用すれば「dir /b ワイルドカード|findstr /f:/ 検索語
」といった呼び出しができる。
コンソールプログラムのcmd.exe
自体もWindows 10になってからもまだ改良が続いている。しかし、徹底的に異なるのは、それがどこから湧いたか分からない独自の世界だということだ。/f:/
というオプションがすらすら出てくるものだろうか。
なるほど、マイクロソフトはPCによって世界を変えた。メインフレームに取って代わろうとしたミニコンやワークステーションを蹴散らしてPCの覇権を打ち立て、PCがサーバーになるという逆転現象すら起こした。
しかし、どうやらコアな開発者をUnixから引き離すことはできなかったようだ。それが冒頭で紹介したテクノロジーカンファレンスにおけるMacの隆盛だ。
というわけで、1977年のPWB/UNIX 1.0のリリースからほぼ40年たった現在でも、UnixこそがPWB(プログラマーズ・ワークベンチ)なのだ(もちろん、SCCSはGitに取って変わられているし、提供元もAT&TではなくほとんどがGNUとなっているが)。
『Unix考古学』の面白さ
Unixといえば4月の末にアスキードワンゴから上梓 (=出版)された『Unix考古学 Truth of the Legend』が面白かった。
ここでの「面白い」は書籍についてではない。
もちろん書籍そのものは文句なく面白い。当時の論文や記録を調べてMulticsからいかにしてUnixが誕生し(ここにビジネスや企業内における組織力学といった切り口が出てきていることが、本書を単なる技術歴史物語にとどめずに普遍的な教訓をくみ取れる優れた書籍にしている点だ)、文化として広まっていくかについて書いてあるのだから興味深いことはなはだしい。
しかし、筆者が本当に面白いなぁと感じたのは、筆者の藤田氏による「Unix考古学の夕べ」というプロモーション(意図してそうなったのかは分からないが)講演が大人気を博し、東京で3回(筆者は2回目に参加した)、福岡、京都で各1回と開かれていずれも盛況だったことだ。なんとなく雰囲気としては1980~90年代からの生き残り技術者の同窓会+アルファみたいな様相を呈しているのだが、こういう場が作られるという点にUnixが単なるOSではなく開発者の文化だということが如実に示されていると思えるのだ。
もちろん、話はこれで終わるわけではない。
Windows 10上でLinuxが動くことの意味
ここであらためてマイクロソフトって面白いなぁ/すごいなぁとつくづく感嘆するのは、もちろん、Windows 10 Anniversary Updateで導入できる「Windows Subsystem for Linux(Beta)」(以降SFL)だ。
仕組み的にはWindows Server 2008 R2まで提供されていたSUA(Subsystem for UNIX-based Applications)あるいはWindows Server 2003まで提供されていたSFU(Microsoft Windows Services for UNIX)に近いもののように見える。とはいえ、実際にOSS(オープンソースソフトウェア)をmake
しようとするとヘッダーやライブラリの欠如で全く使い物にならなかったSFUなどと異なり、まともにLinuxが動いているだけあって(※ただしコードページ65001のUTF-8を選択し、日本語フォントを設定してもカーソル移動や文字列表示などはベータ品質である)、少なくとも標準入出力ベースのプログラムについては問題なくmake
できるし、使える。
例えば、RubyであればSFLをインストールした直後にbash
に対して、
sudo apt-get install binutils autoconf make clang llvm libssl-dev libz-dev libreadline-dev
wget http://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.1.tar.bz2
tar xvf ruby-2.3.1.tar.bz2
mkdir buildruby
cd buildruby
../ruby-2.3.1/configure --with-gcc=clang
make
|
と入力すればよい(もっともmake test-all
で全てのテストが通るわけではない)。
Windowsとの相互運用性については以下の点に気を付ければそれほど問題は感じられない。
bash
の中ではファイル名の大文字・小文字が区別される。例えばメモ帳は/mnt/c/Windows/notepad.exe
であり、/mnt/c/WINDOWS/Notepad.exe
としても見つからないbash
から起動できるのはELF 64-bit LSBであり、Win32の実行ファイル(PE32+)は実行できない。逆も同様である
というわけでしばらく使ってみての印象だが、以前に提供されていたSUAやSFUは実用本位の運用互換性のためのサブシステムなのに対して、
SFLはUnix文化を引っ張る開発者互換性(早い話がプログラマーズワークベンチ)のためのサブシステム
だということだ。
もちろんSFLを運用に利用できないことはないだろう。しかし、一般論として「ベータ」が名前に付くソフトウェアを運用に利用したい人はいない。そもそも運用にはPowerShellが十二分に利用できる。
それに対してベータであろうがなかろうが、使えるものを平然と使うのは開発者だ。しかも彼らはUnix文化を引きずっている。この点からしてSFLのターゲットは明確ではなかろうか。
つまり、
SFLの直接のターゲットは、テクノジーカンファレンスにおける超巨大勢力となったMac
に違いない。
というわけで、来年あたりの各種テクノロジーカンファレンスにSurfaceの壁ができるかどうか、実に興味深い*1。
- *1 とはいってみたもののスリープからの復帰の安定性というハードウェアの問題がもっと大きいかもしれない。ちなみに筆者が愛用しているSurface 3は、スリープからの復帰についてはこれまでのこところ問題はないが、スリープし損なってチンチンに熱くなったうえにバッテリーが空になるというトラブルは数回経験している。
arton
垂直統合システムベンダーに所属し、比較的大規模なOLTPシステムの端末からセンターシステムまでの設計、開発に従事している。著書にJava、C#、Ruby関連のものがある。
1. 2016年、本格導入から4年目を迎えるRFIDの現状とウソ・ホント
Ruby/C#/Javaなどのプログラミング言語に精通しているarton氏がオピニオンコラムに初登場。今回のテーマは、本業であるPOS周りの話題からRFIDについて。
3. 【現在、表示中】≫ テクノロジーカンファレンスがSurfaceで埋まる日は来るか
この数年、多くの開発者はMacを愛用するようになっている。それにはUNIXが大きく関係しているのかもしれない。Windows 10上でLinuxを実行できるようになったことで、Windowsは開発者人気を取り戻すことができるのだろうか?
4. 電気売り場はアンドロイドの夢を見るか ― レジロボ & Amazon Go
ロボット、機械学習、センサーデバイスなど、最先端の技術が人々の生活にどんな変化をもたらすのだろうか。POS業界に身を置く筆者が予想する、新時代の店舗の在り方とは。