UbuntuとVSCode Remote DevelopmentでGo言語の仮想開発環境を構築した(他言語対応可)
Go言語の仮想開発環境の構築
僕は2012年の貧弱なmac環境にも優しいツールVSCodeで言語学習を色々やっていたが、 Go言語での開発環境がよくわからなくなったので、今回意を決して仮想化環境で 簡単に開発環境が構築できるようにした!!今回VScodeの設定部分はしつこくキャプチャして説明している。多分大丈夫!!ボブマーリもそう言ってた。
目的
ローカル環境に影響を与えず仮想開発環境を簡単に作ったり消したりしたい。
概要
VScodeの拡張機能Remote Developmentを使えば、ローカルのVScodeからコンテナ化された仮想環境へ簡単に接続できる。
方法
macbookを母体にしてparallelsという仮想化アプリに、Ubuntuをインストールしている。VM VirtualBoxにUbuntuインストールしても同様に実行できると思う。ここら辺は昔からよくあるやつなのでサクッと構築。ただもしUbuntu使ったことなくて、インストールするんだったら日本語Remixのisoイメージがおすすめです。日本語キーボード設定なんかのストレスがないので良いですよ。僕はこれでやってます。
今回の仮想環境構築はUbuntuだけどmacでもあんまり変わらないと思う。parallelsはいいツールなので機会があればいつか紹介したい。やる事は簡単!UbuntuにVScodeとその拡張機能Remote DevelopmentそしてDockerをインストールしてVScodeでコンテナを構築する。
OS
Ubuntu18.04.1
構築手順
1.コンテナ化の為のDockerをUbuntuにインストール
Dockerの公式にUbuntuへのインストールが書いてあるのでこれを参考にした。
https://docs.docker.com/engine/install/ubuntu/
このDockerインストールは公式を元に、自分の実行したコマンド書いていますが、詳細情報も含め公式のホームページを見ながらやった方が良いかもです。。
推奨されているのでここではリポジトリを利用してDockerをインストールしました。
1-1.リポジトリの設定。
HTTPS経由でリポジトリからapt出来るように必要なパッケージをインストール。
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
1-2.Docke公式GPGキーを追加。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
1-3.フィンガープリントの確認。
フィンガープリントの末尾8桁「0EBFCD88」を含むキーが存在することを確認。
$ sudo apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
1-4.x86_64/amd64チップセットcpu用の安定したリポジトリを設定。
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
1-5.Docker Engineのインストール
$sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
1-6.Docker Engineのインストール確認。
成功していたらエラーなくコマンドが実行されます。
このコマンドはデフォルトでDockerにインストールされているものを実行するのでこのコマンドを打てば良い。
$ sudo docker run hello-world
1-7.Dockerをシステム起動時に起動するように設定。
$ sudo systemctl enable docker
1-8.Dockerグループにユーザーを追加。
Dockerデーモンは基本root権限で実行されるので一般ユーザーはsudoをつけて利用するみたいだけど、ユーザーをdockerグループに所属させるとsodoなしでも実行できると書いてあったので実行。ドキュメントにはdockerグループ作成って書いてあったけど最初から存在していたので、そのままdockerグループに追加した。
$ sudo usermod -aG docker $USER
1-9.ログインし直してテストコマンドを実行。
実行しているOSの環境が仮想環境の場合はログインのし直しではなくOS再起動が必要。Linux/Unixの場合はログインし直さなくても下記コマンドにて即時反映可能。
$ newgrp docker
sudoなしでエラーが出なければ問題なし。
$ docker run hello-world
これでDockerの設定は終了です。公式ドキュメントにLinux構成に関する詳細書いてあります。
2.GolangをUbuntuにインストール
下記手順に従いUbuntuにGoをインストールして下さい。
3.VScodeをUbuntuにインストール
https://azure.microsoft.com/ja-jp/products/visual-studio-code/
対象のOSを選択し、ダウンロード。
そのまま何も考えずにインストール。
4.インストールしたVScodeに拡張機能をインストール
4-1.VScode日本語化
VScodeを開き左下の拡張機能のボタンを押し、検索画面にjapaneseと打てばJapanese Language Packが出てくるので、インストールボタンを押しインストール。画像はインストール後なのでアンインストールボタンに変わってしまっている。
4-2.Remote Development
同様Remote Developmentも検索しインストールする。これも画像はインストール後なのでボタンはアンインストールになっている。関連した拡張機能もインストールしてくれるので従おう。優しさ。
4-3.Docker
同様Dockerも検索しインストールする。これも画像はインストール後なのでボタンはアンインストールになっている。
5.Remote Developmentを使ったコンテナ構築
まずは適当な所にフォルダを作成する。
僕はデスクトップに作った。
※開発言語の設定やプログラムの内容によっては、途中必要プログラムのインストールや再起動の指示が出て来るので、インストールや再起動のボタンを押して下さい。
5−1.フォルダーを開くで作成したフォルダを選択し、左下の緑色のところをクリック。
5-2.検索画面の「Remote-Containers:Add Develop 〜」を選択。
5-3.次の検索画面になるので「s」を入力し、「show All Definitions...」を選択。
5-4.全ての項目から選択が出来るようになるので「Go」を入力し選択。
Go以外の言語もここで選択すれば言語のインストールされたコンテナが作成できます。
5-5.なんか色々ファイルが出てくるけど右下の「Reopen in Container 」を選択ししばし待つ。初回はimegeのビルドがあるから少し長い。ちなみに他の環境からこの環境に戻るときもフォルダを開くをすると自動で「Reopen in Container 」が出てくるので選択するとこの環境が開ける。フォルダ毎に環境を作成していると考えるとわかりやすいのかな。
5-6.無事goを実行できた!!containerでインストールされたgoのバージョンは1.14.1。goファイルはこのフォルダ直下に作って実行できた。Ubuntuで作成したフォルダはコンテナの/workspace配下にマウントされている。ちなみに4-4で選んだ言語をgo以外のものにすると他の言語も簡単に環境が作れます。python3を試したけど簡単にできました。※実行時に必要ファイルがあればインストールのポップアップが出るかもです。
あとがき
dockerがずっと使いたくて機会がなかったので今回使えてよかった。なかなか手間取った。。 今回ローカルの仮想環境上に立てたけどリモートサーバに構築し接続するのもやってみたいですね。
5/25懺悔
当初UbuntuOSの環境構築の際にGolangはインストールしていなかったのです。最初は普通に使えていましたが、使っていたら下記エラーが出てしまいました。使えるけど気になって調べるとUbuntu側にもGolangのインストールをすると解消しました。取り急ぎgolangインストールの旨を構築手順に追加しました。