Scala 環境をVisual Studio Codeで構築してみる...とりあえず、SSH接続まで

f:id:ts0818:20190904195305p:plain

Scala を、Visual Studio Code で動かしたいんじゃ~、あ、どうもボクです。

ちまたでは、VSCode とか略称で呼ばれたりしてるそうですが、Wikipedia 先輩によりますと、

Visual Studio Codeソースコードエディタである。マイクロソフトにより開発され、WindowsLinuxmacOS上で動作するデバッグGitクライアントの統合、シンタックスハイライトインテリセンススニペットリファクタリングなどの機能を持つ。カスタマイズもでき、利用者はエディタのテーマキーボードショートカット等を変更できる。

Visual Studio Code - Wikipedia

MicroSoft 製のソースコードエディター であると。

Visual Studio CodeElectronフレームワークを使用しており、Node.jsを使ったBlinkで描画されるデスクトップアプリケーションである。なお、Electronを使用したテキストエディタとしてAtomが有名であるが、そこからの派生ではなく、Visual Studio Online のエディタ(コードネーム "Monaco")が基になっている

Visual Studio Code - Wikipedia

⇧ Electron って言われてもね。

Electronは、GitHubが開発したオープンソースソフトウェアフレームワークである。

ChromiumNode.jsを使っており、HTMLCSSJavaScriptのようなWeb技術で、macOSWindowsLinuxに対応したデスクトップアプリケーションをつくることができる。

Electron (ソフトウェア) - Wikipedia

GitHubが開発元らしい。

また、Visual Studioとは名称に共通点があり、使われている技術にも共有されている部分があるものの、直接的な派生関係は無い

Visual Studio Code - Wikipedia

統合開発環境Visual Studio とは、違うよと。

Visual Studio CodevscodeGitHub上のリポジトリ名)は完全に同一のものと思われがちだ。しかし、Visual Studio Codeオープンソースvscodeを元に作成されたものでありライセンスを含め違ったものである

Visual Studio Code - Wikipedia

⇧ ちまたで呼ばれてる略称であるVSCodeと、GitHubリポジトリ名であるvscodeって...紛らわしいんだけど~。

 

そして、MicroSoftさん、

www.itmedia.co.jp

 米Microsoftは8月28日(現地時間)、独自ファイルシステムexFAT」をLinuxカーネルでも利用できるよう公式にサポートしたと発表した。

Microsoft、Linuxカーネルで公式に「exFAT」サポート - ITmedia NEWS

Linux との相性悪い説を払拭できるのか~。Windows 環境でのLinux環境が難しいんであって、Linux環境でのWindows環境は意外に障壁が少ないのかな?

 

そんなこんなで、今回は、Visual Studio Codeで、Scala環境を作っていこうということで、レッツトライ~。 

 

Visual Studio Code をインストールしていること

まずは、PCにVisual Studio Codeをインストールしている必要があると。

qiita.com

qiita.com

⇧  インストールされてない方は、上記サイト様を参考にインストールしていただくということで。

 

では、インストールが済んだという体で、Visual Studio Code を起動で。バージョンを確認したいので、「ヘルプ」>「バージョン情報」で。

f:id:ts0818:20190904202309p:plain

バージョンは、1.37.1 ということが分かりました。

f:id:ts0818:20190904202433p:plain

バージョンは、1.35.1 以上が必要なので、旧い場合は更新で。Visual Studio Code を起動すると、アップデートするかどうかのウィンドウっぽいのが右下に表示されるので更新しても問題なければ更新しちゃいましょう。

 

拡張機能の追加

Visual Studio Code は、拡張機能をインストール ことで、エディターができることを増やしていくことができるようです。

今回は、リモート接続できるようにする拡張機能をインストールで。

それでは、f:id:ts0818:20190904203013p:plain のアイコンをクリックで。検索欄に、「Remote Develop」と入力。

f:id:ts0818:20190904202947p:plain

「Remote Development」っていう拡張機能をインストールで。説明にあるように、

  • Remote - SSH
  • Remote - Containers
  • Remote - WSL

の3つの拡張機能のセットが、「Remote Development」っていう拡張機能ということらしい。 

f:id:ts0818:20190904203331p:plain

拡張機能のインストールが完了すると、左下に、f:id:ts0818:20190904203703p:plain のアイコンが表示されます。後ほどクリックしていきます。

f:id:ts0818:20190904203616p:plain

この拡張機能を使うと、

1. SSH 接続の場合

f:id:ts0818:20190904210032p:plain

2. コンテナに直で接続の場合

f:id:ts0818:20190904205721p:plain

3.  Windows Subsystem for Linux (WSL) で接続の場合

f:id:ts0818:20190904210149p:plain

⇧  みたいなことができるらしい。

ただし、「2. コンテナに直で接続の場合」については、

System requirements

Local:

Developing inside a Container using Visual Studio Code Remote Development

⇧  上記を満たすPCでないと対応していません。つまり、Windows 10 Home では利用できないということになります。 

まぁ、なんで、今回は、「1. SSH 接続の場合」 を使っていこうかと。

ただし、「1. SSH 接続の場合」についても、

System requirements

Local: See minimum requirements for VS Code. A supported OpenSSH compatible SSH client must also be installed.

Remote SSH Host: A running SSH server on:

  • Full support: x86_64 Debian 8+, Ubuntu 16.04+, CentOS / RHEL 7+.

  • Experimental support: ARMv7l (or ARMv8 in 32-bit mode) Raspbian Stretch/9+ (32-bit).

Other glibc based Linux distributions for x86_64 and ARMv7l should work if they have the needed prerequisites. See the Remote Development with Linux article for information prerequisites and tips for getting community supported distributions up and running.

While ARMv7l support is available in VS Code Insiders, some extensions installed on these devices may not work due to the use of x86 native code in the extension.

Developing inside a Container using Visual Studio Code Remote Development

⇧ OpenSSH が必要らしい。

Installation

To get started, you need to:

  1. Install an OpenSSH compatible SSH client if one is not already present.

  2. Install Visual Studio Code or Visual Studio Code Insiders.

  3. Install the Remote Development extension pack.

  4. [Optional] If you are on macOS or Linux and need to enter a token or password when connecting to your host, you can enable ControlMaster in your SSH config to prevent you from having to enter it multiple times.

Developing inside a Container using Visual Studio Code Remote Development

⇧  上記の1. ~ 3. は必須のようです。Windows 意外の場合は、4. も必要のようです。

 

Visual Studio Code からSSH接続

とりあえず、OpenSSH については、

qiita.com

⇧  上記サイト様によりますと、Windows 10 を使っている場合で、2018年4月以降のアップデートを行っている場合は、SSHクライアントについては、インストール済となるようです。

f:id:ts0818:20190904221810p:plain

⇧ バージョンが表示されれば、インストール済ということらしい。

そんでは、サーバ側は?

Docker ToolBoxで作成した仮想マシンには、SSHがインストールされているはずです。なぜならば、docker-machine sshSSH接続ができるので。

ということで、仮想マシンを起動しておきます。

f:id:ts0818:20190904222017p:plain

f:id:ts0818:20190904222126p:plain

f:id:ts0818:20190904222205p:plain

一応、仮想マシンIPアドレスを確認。

f:id:ts0818:20190904222501p:plain

そしたらば、Visual Studio Code の、f:id:ts0818:20190904203703p:plain のアイコンをクリックで。

「Remote-SSH: Coonect to Host...」を選択。

f:id:ts0818:20190904222706p:plain

「Select configured SSH host or enter user@host」ってなってたんで、「docker@[仮想マシンIPアドレス]」で接続できると思っていたけど、できない...。

ちなみに、

qiita.com

Docker for Windows や Docker for Mac であればこのままリモートコンテナにローカルのファイルをバインド出来るのですが、 Windows 10 Home さんではそれがかないません。

vscode で Win 10 Home -> VirtualBox Ubuntu Container にリモートアクセスする! - Qiita

⇧ やっぱり、というか、Windows 10 Home の縛りが大きいですね、どうりで、ハマることが多いわけだわ...。

っていうか、VSCode拡張機能で、Docker も入れる必要あるんじゃない?これ。誰も言及しないから分からんけど、とりあえず入れてみた。

f:id:ts0818:20190907172203p:plain

変わらず(涙)

f:id:ts0818:20190907174156p:plain

ポート指定しても駄目(涙)

f:id:ts0818:20190907174748p:plain

Docker ToolBox のssh だと接続できる。

f:id:ts0818:20190907174843p:plain

通常のssh だと接続できなくなっとる...これが原因か。

f:id:ts0818:20190907175227j:plain

どうやら、

www.uramiraikan.net

SSHで接続するときにホストキーを再生成していたり、同じIPアドレスやホスト名だけど違うサーバに接続したり、再インストール後に接続したり、とにかくそういったときに表示されるメッセージです。

SSHでホストキーが変わった後の接続 | Works | URAMIRAIKAN

 

qiita.com

どうやら、以前のSSH接続時の認証キーが残っていることが原因のようです。

SSH接続時にエラー - Qiita

 

qiita.com

どうやらSSHのホストキーが変わることが原因らしい.

RaspberrypiでSSHができなくて試したこと - Qiita

⇧  上記サイト様によりますと、参照する認証キーが異なってしまっているらしい。
で、

f:id:ts0818:20190907181849p:plain

ファイルの中身を見てみたんだけど、

f:id:ts0818:20190907181807j:plain

そも、「192.168.99.100」の秘密鍵の記載が無いというね...

 

stackoverflow.com

⇧  とりあえず、試してみる。

ssh-keygen -R [ホスト名、または、ホストのIPアドレス]  

f:id:ts0818:20190907184258j:plain

f:id:ts0818:20190907184715p:plain

なんか、いけました~。
Visual Studio Code拡張機能「Remote - SSH」からは~、

f:id:ts0818:20190907174156p:plain

変わらんやんけ~!

「Remote - SSH: Open Configuration File...」で。

f:id:ts0818:20190907200923p:plain

なんか、「.ssh/config」ファイルに設定しておくと、

qiita.com

ssh接続の際のオプションとか省略できるらしい。

.ssh/config ファイルを選択。今回はユーザー名のディレクトリの直下のファイル。

f:id:ts0818:20190907202325p:plain

GitHubへの接続情報しか記載されてないので、

f:id:ts0818:20190907202709p:plain

追記します。
SSH接続に必要な情報などは、 

devilbox.readthedocs.io

⇧  上記サイト様で確認で。

f:id:ts0818:20190907224443p:plain

「Settings specify a custom configuration file」で、

f:id:ts0818:20190907224649p:plain

「.ssh/config」までのパスを指定。

f:id:ts0818:20190907224822p:plain

で、接続してみるも、

f:id:ts0818:20190907225005p:plain

まったく、変わらん...Visual Studio Code のバグ?

f:id:ts0818:20190907225036p:plain

なんか、パスの指定が、Windowsのパス指定で良くなった?みたい。

なので、正しくは、

f:id:ts0818:20190907230407p:plain

f:id:ts0818:20190907230442p:plain

ってな感じで、SSH接続を試みると、
ファイヤーウォールが出てきたらば、「アクセスを許可する(A)」で。

f:id:ts0818:20190907230201p:plain

リモート側のVisual Studio Codeに接続されました~。つまり、仮想マシンのゲストOSにログインできたかと~。

f:id:ts0818:20190907230234p:plain

「ファイル(F)」>「フォルダーを開く...」で。

f:id:ts0818:20190907230640p:plain

こちらは、パスの区切りが、「/」になります。

f:id:ts0818:20190907231208p:plain

f:id:ts0818:20190907231126p:plain

ゲストOS側のファイルにアクセスできていますね。

 

というわけで、とりあえず、仮想マシンのゲストOSにSSH接続まで何とかできました。次回は、Scala環境を何とかして構築していきたいかな...

今回は、久々に泥沼にハマってしまった...疲れた。

今回はこのへんで。