2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

スクリプト言語の比較しながらGoのお勉強 〜 環境構築編(MacOS)

Posted at

ごあいさつ

はじめまして。@kuroseetsと申します。
2000年からフリーランスで仕事を始め開発12年、インフラ8年経験してきたオッサンです。
皆さんはどのプログラミング言語、スクリプト言語が好きですか?または仕事などで何をよく使っていますか?
開発をされている方だとJavaが多いのかな?またはC#?Ruby?PHP?
事務系でスクリプトを組む方などはVBScriptなども現役ですよね。
私は現在インフラ運用構築側にいますので、私を含めて周辺でよく使われているのが、Python, Ruby, Perl, Bash辺りが多く、最近ではさらにGolangが増えてきている印象です。(あくまで個人的主観で、ですよ
それぞれ好みはあるとは思いますが、環境や現場による制約で使えるもの使えないものがありまして、私もその都度現場でキャッチアップしてスキルを身に付けてきました。
現在ではInfrastructure as Codeと謳われるだけあって、構成管理の設定ファイル以外でも手を動かすことも増えてきたと身を以て感じています。
今回個人的にGolangを勉強しようと思っているのですが、折角なので勉強ついでに有名なスクリプト言語を比較してみようかなと思います。
対象はGolangの他、Python, Ruby, Perl, Bash(インフラ運用4強スクリプト!)を予定しています。


環境構築

使うからには最新版を使いたい!
ということで常に最新版をインストールしやすく、また管理しやすくするためにバージョン管理ツール越しにインタプリタをインストールすることにしました。

anyenvのインストール

@rinpa さんの https://qiita.com/rinpa/items/81766cd6a7b23dea9f3c を参考にしてインストールしました。
各スクリプト言語を使用するのにenv系コマンドは非常に便利なのですが、個別にインストールすると面倒です。
が、anyenvで一元管理できたら非常に便利ですね。

# anyenvインストール
brew install anyenv

# anyenvが実行できるか確認
anyenv --version

# 初期ディレクトリがないので初期化して作成
anyenv install --init

# インストールできるenv系コマンドの確認
anyenv install -l

# 各envをインストール
anyenv install goenv
anyenv install pyenv
anyenv install rbenv
anyenv install plenv

# 環境変数の設定
echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

golang

golangの最新版のインストールはgoenvに従って粛々と進めていきます。

# インストール可能なgoのバージョンを確認
goenv install -l

# 最新版をインストール(執筆時は1.13.6)
goenv install 1.13.6

# インストールしたバージョンを指定
goenv global 1.13.6

# 指定したバージョンが実行できているか確認
go --version

python

pythonも同様に最新版をインストールします。

# インストール可能なpythonのバージョンを確認
pyenv install -l

# 最新版をインストール(執筆時は3.8.1)
pyenv install 3.8.1

# インストールした最新版バージョンを指定
pyenv global 3.8.1

# 指定したバージョンが実行できているか確認
python --version

ruby

rubyも同じ手順です。

# インストール可能なrubyのバージョンを確認
rbenv install -l

# 最新版をインストール(執筆時は2.7.0)
rbenv install 2.7.0

# インストールした最新版バージョンを指定
rbenv global 2.7.0

# 指定したバージョンが実行できているか確認
ruby --version

perl

そしてperlも。

# インストール可能なrubyのバージョンを確認
plenv install -l

# stableの最新版をインストール(執筆時は5.30.1)
plenv install 5.30.1

# インストールした最新版バージョンを指定
plenv global 5.30.1

# 指定したバージョンが実行できているか確認
perl --version

bash

anyenvにはbashのバージョンを管理するツールがありませんので、下記のツールを利用させて頂きました。
https://i-beam.org/2015/12/25/211817/

サイトを参考にインストールしてみましたがエラーが出ました

git clone https://github.com/ueokande/bashvm ~/.bashvm
echo 'source $HOME/.bashvm/bin/bashvm-init' >> ~/.bashrc
source ~/.bashrc

  readlink: illegal option -- f
  usage: readlink [-n] [file ...]

BSD系のMacはreadlink-fオプションがないみたいですね
こちらを参考にreadlink -fするコマンドを作成
https://stackoverflow.com/questions/1055671/how-can-i-get-the-behavior-of-gnus-readlink-f-on-a-mac

cat << 'EOF' > /usr/local/bin/readlinkf
#!/bin/sh

TARGET_FILE=$1

cd `dirname $TARGET_FILE`
TARGET_FILE=`basename $TARGET_FILE`

# Iterate down a (possible) chain of symlinks
while [ -L "$TARGET_FILE" ]
do
    TARGET_FILE=`readlink $TARGET_FILE`
    cd `dirname $TARGET_FILE`
    TARGET_FILE=`basename $TARGET_FILE`
done

# Compute the canonicalized name by finding the physical path 
# for the directory we're in and appending the target file.
PHYS_DIR=`pwd -P`
RESULT=$PHYS_DIR/$TARGET_FILE
echo $RESULT
EOF
chmod 755 /usr/local/bin/readlinkf

readlink -fしているところをこのコマンドに置き換えます

--- bashvm-init.bak	2020-01-18 07:08:43.000000000 +0900
+++ bashvm-init	2020-01-18 07:09:30.000000000 +0900
@@ -124,7 +124,7 @@
 export -f bashvm
 
 export BASHVM_HOME=${BASHVM_HOME:-$HOME/.bashvm}
-PATH="$(readlink -f $(dirname $BASH_SOURCE)):$PATH"
+PATH="$(readlinkf $(dirname $BASH_SOURCE)):$PATH"
 
 test -f $BASHVM_HOME/config && source $BASHVM_HOME/config
 export bashvm_default_version=${bashvm_default_version:-system}

改めてsource ~/.bashrcを実行すると成功しました
ではbashの最新版をインストールします

# 執筆次の最新は5.0
bashvm install 5.0

# インストールした最新版バージョンを指定
bashvm use 5.0

# 指定したバージョンが実行できているか確認
bash --version

以上で構築作業は完了です。
次回から各言語を比較しながらプログラミングしていきます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?