ごあいさつ
はじめまして。@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
以上で構築作業は完了です。
次回から各言語を比較しながらプログラミングしていきます。