この記事はSmartDrive Advent Calendar 2017の8日目の記事です。
バックエンドのエンジニアをしております @astronoka です。
golang を使った時系列データの解析について書こうとおもったのですが、まとまらず。。
自分の昔書いた記事の焼き直しでお茶を濁そうとおもいます。。
弊社ではgolangで書かれたプログラムのビルドはdockerコンテナを使っております。
そして、クロスコンパイルした成果物のバイナリ1個を、aplineのコンテナに放り込んで動かすというよく見かけるやつです。
開発中もコンテナの中で reflex をつかうことで
エディタさえあればなんとかなる状態ではあります。
でも
delve
とか使いたいですよね、、 GoLand
とか使いたいですよね、、
やはり、macにgolangをインストールすることになります。
そこで自分は下記のようなツールを作って環境を管理しています。
名前は Plan 9
にかぶれて、エド・ウッドの映画 から取ったのと
GoLang ENvironment manager
をかけています。
使い方は下記の通り
install
$ git clone https://github.com/astronoka/glen.git ~/.glen
# PATHが通っているところにおく
$ ln -s ~/.glen/glen.sh ~/bin/glen
$ glen version
0.2.0
usage
$ glen help
Usage: glen <cmd>
Commands:
version Print glen version
help Output help text
install <version> Install the version passed (ex: go1.5.3)
uninstall <version> Delete the install for <version>
use <version> Activate specified <version>
list List installed versions
tags List available versions (tags)
env list List environments
env create <envname> <version> Create environment
env delete <envname> Delete environment
env use <envname> Activate environment
vendor init <version> Initialize current directory as workspace
vendor use Activate current directory as workspace
tools Install develop tools (goimports,gorename...)
例
# 使えるバージョン(タグ)を確認
# リポジトリをクローンするのでちょっと時間がかかります。
$ glen tags
...
go1.8rc3
go1.9
go1.9.1
go1.9.2
go1.9beta1
go1.9beta2
go1.9rc1
go1.9rc2
# 適当なバージョンをインストールする
$ glen install go1.9.2
######################################################################## 100.0%
installed from binary
successfully installed: go1.9.2
# インストールされたのを確認
$ glen list
go1.9.2
# GOPATHを通す (あたらしくシェルを立ち上げています)
$ glen use go1.9.2
# .glenの下に配置されています
(glen:go1.9.2) $ echo $GOPATH
/Users/astronoka/.glen/installed/go1.9.2/glen
# exit で抜けると、当然ながら$GOPATHはなくなります
(glen:go1.9.2) $ exit
$
# 続いて環境を用意してみます
# 環境一覧
$ glen env list
# 導入済みのversionで環境を用意します
$ glen env create foo go1.9.2
# foo ができる
$ glen env list
foo
# 環境を有効化する
$ glen env use foo
# goのバイナリパスはこの辺
(foo:go1.9.2) $ type go
go is /Users/astronoka/.glen/installed/go1.9.2/bin/go
# $GOPATH は .glen の下に配置されます。
(foo:go1.9.2) $ echo $GOPATH
/Users/astronoka/.glen/env/foo
# vendor サブコマンドは、作ってみたものの使いみちがなかったので使い方は省略します。
これで好きなだけ沢山のバージョンを入れて、好きなだけ環境を作って開発ができますやったね!
しかしこうも思うのです。
そんなに複数のversionが入り乱れた状態を保守するのは嫌だと。
完
環境情報
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.11.6
BuildVersion: 15G1217
(うわっ…私のMacOS Version低すぎ…?)