Windows Subsystem for Linuxの導入をしたはいいけれど

今更感がありますが、わりと新ネタです(笑)。そもそも、Windowsは普段使いではなく、もっぱらVBA開発のためだけに使っている状況なので、スペックもそれほど高いものを要求されません。なんなら10年近く前のVAIO(VGX-TP1)にWindows10をインストールして使っていたくらいなので、その程度*1のスペックで問題なく開発ができます。Excelだったら一時期流行っていたスティックPCでも十分開発可能だったりします(昨年の夏頃に実践済み)。

AccessVBA開発をするとちょっともたつくなぁ、と思っていて(メモリが少ないのが原因:経験上)、他にも拡張性のなさや(もちろんそれをわかっていてTP1の所有をしていましたが)、たまに突然電源が落ちることがあったり、「もう寿命に近いのかなぁ*2」とも考えていたので、ちょっと小遣いをはたいてVAIOより少しだけ新しいマシンを買ってきました。BTOのジャンクマシン。と言っても、(初代ですが)Core i5搭載でメモリも最大16GB積める(マザボMSIH55M-P33です)、それなりのマシンです*3。個人的には「スゲーまともな開発マシン」を買ってきたと思っています。

とりあえずWindowsの導入

x86かx64か、という選択も実は悩んだのですが、とりあえずx64のWindowsを導入することにしました。我が家に現在使っていないWindows7 Proのメディアがありましたのでそれを使います。そこからごにょごにょしてWindows10 Proが無事インストール完了です。

開発環境の構築

Office365

「開発環境」と言っても、Officeを入れるだけです。私は数年前からOffice365を使っています。Windows版だけでなくMac版も最新のOfficeを導入でき、かつ5台のマシンにインストールができるということで重宝しています。ネックといえば、クライアント環境で古いOffice(と言っても2007以降ですが)を使っている場合にバージョンが合わないということくらいでしょうか。昔はバージョンごとに違うコマンドが存在しているなどわけがわからないことが起こっていましたが(今でもあるらしいので開発時にはちょっとだけ気を使います)、それほど気にせず普通にコードを書いています。

Git/ungit

もう一つ、開発環境構築作業としてはGitの導入をします。Officeのファイルは基本バイナリファイルという扱いになるので、Gitを使う意味がないと思われるかもしれないのですが、Diffが取れないというのが問題だと思うくらいで、わざわざVBAのコードを取り出したりしてはいません。単純に「このコミットのタイミングでなんの作業をしたか(抜け漏れがないか)」のチェック用に使っている感じです。Gitと一緒にungitというGUIツールを入れています。以前GCPのDatalabを扱ったときに基本ungitでバージョン管理をするということで目にして、その当時は使いにくいなぁ、と思っていたのですが慣れてくるとこれが使いやすくなってきて、Windowsには入れています*4

WSLの導入

一応Windowsの、というかVBA開発環境構築が一段落したので、噂レベルで耳にしていた、「WindowsLinuxが実行できるんだって」的なWSL(Windows Subsystem for Linux)の導入をします。この辺の記事が導入やら注意事項やらがまとまってるんじゃないですかね。

www.atmarkit.co.jp

コンパネ開いてプログラムの有効化→ディストロのインストール、という手順です*5

さてUbuntu Linuxです

cat /etc/issue

でバージョンが表示されます。「Ubuntu 18.04.1 LTS」と表示されます。ワォ。

で...。

何をしていいのかわからない

個人的にはコレ、想像力の欠如だとも思っているんですが、新しい動作環境、というかコマンドラインで言うなら新しいコマンド群がいきなり大量にインストールされた、のは良いんですが、さてそれをどうやって使うのか、ということを全く考えつきません。Linuxでサーバを立てるなら、例えばApache入れて、なんならLAMP(Linux/Apache/MySQL/PHP)環境でも構築しとこうか、とか思うわけですが、残念ながらMacにその環境がすでに構築済(Vagrantで)。サーバだよね?じゃファイルサーバを作らなきゃと思っていたのでSambaでも、と思っても、べつにWindowsの共有でMacとのファイル共有は事足りるし、あとなにか使うっけ、Gitとか?うーんさっき入れたばっか...。

使い方をググって見る

わかんないならググってみようぜ、とばかりに、「WSL 使い方」で検索をしますが、出てくるのはインストールと「初期設定」って結局なにUbuntuデスクトップを動かしました、で終わり?...。 あと、大事なコマンドはaptですって。このコマンドは定期的に実行しなくちゃだめだぞ(はぁと

そもそもなんで「Linux ON Windows」なの?

Windowsの上でLinuxを動かす、ってなんでそんなことをしなければいけないのだろう、と思うわけですよ。 確かにMacのOSも昔(OSX以前)はコマンドとか使わないでGUIオンリーだったけど現行版(MacOS)はよりUnixライクな使い方をするようになって、Linuxとコマンドの共通点も多いし何ならHomebrewだったりMacportだったりを使えばよりLinuxライクな使い方ができるし、それに比べてMS-DOSの進化版とも言える現在のWindowsコマンドラインUnixとは別の進化をしてるし、更にその進化版であるPowershellはもはや新しすぎて何がなんだか、みたいな感じではあるけれど、そういえばCygwinなんかもうずっと昔から*6Unixライクに使えるようなものもあったわけじゃない?みたいなことが頭をよぎるわけです。

公式のサイトでは、

docs.microsoft.com

WSLは「開発者向けツール」という扱いをしているようです。テキストの置き換えとかでちょいちょい使うsedとかawkとか、それこそLAMPじゃないけどPythonだったりRubyだったり、Linux(Unix系OS?)で使い慣れているコマンドラインをそのまま実行させられる、というのが、「今どきの」開発者にとって助かる、という意味合いなのかもしれません。そしてもう一つ、上のリンク先にあったのですが、VMでない理由、というか、VMではないのでマシンリソースもそれほど食うことなく、つまりぶっちゃけて言うと軽い、ということなんですが、わざわざVM(VagrantでもDockerでもいいんですが)を立ち上げてLinuxを使うのではなく*7、コマンドを使うくらいのレベル感で使って欲しい、というのが正直なところなんでしょうね*8

さて、どうやって使いましょうか

そんな使い方を考えあぐねた状態でひとっ風呂浴びたり一杯引っ掛けたりすると*9良いアイデアが浮かぶもんです。今回は風呂でリラックスして考えをまとめてみました。

GitはやっぱりLinuxで動かすのが良くね?

本当についさっき入れたばっかりなんですけどね、Git for Windows

gitforwindows.org

確かにクセのあると言うかなんか慣れないと言うか、bashなのでLinuxと同じ使い勝手なんですけどね。紫とか黄色とかの文字になるのがイマイチダサいんですよねぇ。アンインストールしてWSL(Ubuntu)側でインストールし直してみましょう。ついでにungitと、それを使うために必要なNode.jsも。

エディタを入れよう!

最近LinuxでもMac(のコマンドライン)でもエディタはNanoを使っています。昔はEmacs派で、Windowsには「xyzzy」を入れていましたが、Windows10になった頃くらいからあまりテキストエディタを使わなくなってインストールしないマシンもありました。これもついさっき入れたばっかだ...。

xyzzy-022.github.io

各種「開発言語」を入れておく

開発に使う言語、というのも含むんですよね。それこそ公式の例でもあったsedだのawkだのもそうですし(使うことが稀なんで使うときに入れる感じですが)、PythonだとかPHPだとかも必要に応じてインストールして使えば良いんじゃないかな、という感じです。

LAMPは作らない

サーバー用途としての利用を想定していないということなので、Apacheであったり(nginxも然りです)TomcatのようなWebアプリケーションサーバーの立ち上げは考えません。同じ理由でデータベース(MySQLPostgreSQL)なんかも使わないような想定ですね。だって、だったらVagrantだったりDockerだったりでいいわけだし(とうとう仮想化対応のCPUとOSを導入したわけだし)。

MacのHomebrewと同じようなイメージかな

HomebrewやMacportもいわゆる「パッケージ管理システム」であり、そういう意味ではUbuntuの中にあるaptと同じにはなるのだが、使い慣れたapt*10で必要なパッケージのインストールができる(逆にアンインストールもしやすい)というのはメリットなのだろうな、とは思います。そのためにはWindows起動時に必ずWSLが起動してないといけない、ということなんだろうけれど、それに慣れてしまえば問題なさそうですけどね。

そのうちやりますリプレース

結局のところGit関連アプリのリプレースが発生する様子&なんかネタ用でインストールする*11、という程度で徐々にリプレースをかけていく感じでしょうか。本当に「導入したはいいけれど思っていた以上に『普通の使い方』になりそう」という、オチの少ないお話でした*12

*1:VAIO VGX-TP1Core2Duoの1.6GHzでMax2GBメモリかな。「お櫃」型のちょっと洒落た形のマシンです。

*2:往年のSONYタイマーが発動したという可能性もありますが...。

*3:メモリは購入時点で4GB(2GBが2枚)挿してありました。とりあえず開発に差し障りがないので追加購入はしていません。

*4:Macでの各種開発ではGitは導入していますがungitは今のところ未導入です。検討中というか。

*5:ちなみに私は先にディストロを入れ、起動しないあれなんで?、となりました。

*6:昔の会社の同僚が会社のPCにも自分のノートにも入れてました。もう20年も前の話。

*7:これだとVM分のリソースを割くことになるのでWindows自体がリソースが少ないので重くなり、その上で走るVMも重くなってしまうわけですよね。

*8:ということは、X Windowを立ち上げるとか全くもって想定外の使い方だし、そんなことをする意味は、「俺やってやったぜ」以上の意味を持たない、ってことになるんだろうなぁ。

*9:散歩をするのもいいらしいですが今この投稿の原稿を書いているのは5月初旬、GW明けのとある夜の11時過ぎです。散歩するだけで不審者扱いされそう...。

*10:Ubuntuはずいぶん前から使っているので慣れてます。というかRHEL系に慣れてないんです。使えるけど。

*11:Pythonを使ったOffice自動化」という結構壮大なネタを先日目にしました。VBAとの組み合わせでなんか面白いことができないかなぁ、とは思っていますがまぁネタで止まるでしょう(笑)。

*12:システム屋にオチが多いのはちょっと信頼性に欠ける気がしますよね...。