itod-dev

チラシの裏
Log LinuxWindows

WindowsでLinux開発環境構築

2019/07/26

普段からLinuxサーバ上で動かすサーバサイドアプリケーションを開発することが多い。開発環境にはMacを使っている。しかし、Mac以外でも開発できるようになっておきたいというモチベーションがある。

  • 開発マシンのハードウェアの選択肢が広がる
  • Appleの動向に一喜一憂しなくても良くなる。精神的自由を得られる。
  • 多くの開発環境を体験することは自分自身の経験につながる

Windowsの基本的なセットアップ

インストールについては、特別なことは何もない。

今回は、Windows 10 Pro を選択した。これは、Hyper-V や リモートデスクトップサーバを使いたいため。

それから、 Caps Lock キーのアサインを変更。Macに近づけるために、Controlに変更した。

Linuxあるいはシェルについて考える

基本的に何をするにもCUIシェルを使いたい。

伝統的なWindowsでの開発フローでは、Explorerが中心になっていたように思う。何をするにもまずExplorerでフォルダを開いてファイルを選んでいた。あるいはIDEを使う場合はそうでもないけど。Windows開発では大部分がExplorerのお世話になる。

それをやめたいと考えた。CUIシェルを中心にしたい。

(そういえば、Explorerもいちおう GUIの”シェル”である。ファイラーとしての側面もあるが、シェルとしてのExplorerは、タスクバーやスタートメニュー、デスクトップなどのGUIも提供している。)

どのCUIをメインで使うのかは考えさせられる。Linuxと同じシェルだと嬉しいので、PowerShellは避けたい(Linux版のPowerShellも存在している)。WSLが一番良さそうに思えた。他にも、Windows上でBashを使うとか、仮想マシン上のLinuxをメインにするといった方法もある。

WSL こと Windows Subsystem for Linux は、Windowsが提供するLinuxカーネル互換の疑似カーネル(WSLサービス)の上でLinuxを走らせる。普通のLinuxには無い制限事項があることが気がかりではあるが、WSLをしばらく使い込んでみようと考えた。ディストリビューションはUbuntuにした。なるべく Windows はクリーンな状態に保ち、開発環境やツールは、なるべく WSL上で構築することを目指す。

また、CUIにアクセスするターミナルアプリとして何を使うのかも選択肢がある。CMD.EXEは避けたい。MacではiTermを使っていたので、似た操作感で、見た目が美しいと嬉しい。

今回は、ターミナルには Hyperを使ってみることにした。

https://hyper.is/

Hyperは、Electronベースのターミナルアプリ。Electronならではのデメリットは当然ある。Hyperは、ZEITが開発している。Nowなどのイカしたプロダクトを開発している会社だ。

Hyperの起動時にWSLに接続するようにした。

{
  shell: 'C:\\Windows\\System32\\wsl.exe'
}

エディタについて

vscode こと Visual Studio Codeを使う。vscodeでは、リモート機能が公式サポートされている。これを使えば、WSL環境でコーディングから実行・デバッグまで色々こなせて便利だ。公式ページのチュートリアル通りで導入できる。

https://code.visualstudio.com/docs/remote/wsl

vscodeのリモート機能では、WSL側に vscodeサーバを起動させて、Windows側で、vscodeのクライアントを動かすかたちになる。

WSLのコマンドシェルで code と打てば、vscode の GUIが立ち上がる。

サーバーとクライアントに分かれるが、使い勝手はほぼ変わらない。ターミナルも使える。Windows側で実行されるのはほんの表層だけだ。

vscodeのリモート機能は、なにもWSLだけでなく、SSH越しでも使うことができる。

こういったことが出来るのも、Electronらしさと言えるかもしれない。つまり、バックエンドプロセスと、フロントエンドプロセスが分かれていて、疎結合になっているからだ。こういった発想は何もElectronが発祥というわけではない。古くからあるLinuxのGUI環境である X Window System も、やはりサーバーとクライアントに分かれる形態になっている。

(ちなみに、似たようなプロジェクトで code-server というのもある。Electronなので、フロントエンド側は、ブラウザでも代用できるということになる。)

これでエディタも準備できた。しばらく使ってみる。