雑に始めた Go での開発環境のメモ。

少し前からちょっとしたことをするときに Go を使い始めたので、その開発環境のメモ。

書くこと

  • エディター
  • ビルド
  • 公開
  • 公開しているコマンドたち
  • まとめ

エディター

だいたい Goland で書いています。
コード補完、クイックフィックス、リファクタリングなどの機能がとても優秀で、初学者でも詰まることなくコードを書けるので助かっています。

ビルドと公開

ビルド

Goland 上で Run するか シェルから go run / go build するのがほとんどです。
コード量やファイルも少ないので、今のところはこれで事足りています。

公開

いくつかコマンドを Github で公開しているのですが、Github の Release に登録するためのバイナリの作成やアップロードが面倒です。
そこで、コンパイルには gox を、Github にアップロードするために ghr を利用しています。
実際のところは、↓こんな感じに雑なシェルスクリプトを書いて、パッケージディレクトリで叩いています。

#!/bin/sh

CURRENT=`pwd`
PGNAME=`basename ${CURRENT}`
BUILD_DIR=build
PKG_DIR=${BUILD_DIR}/pkg
DIST_DIR=${BUILD_DIR}/dist

if [ -z "$1" ]; then
	echo 'compile.sh <tag>'
	exit 1
fi

TAG=$1
PACKAGE=.

if [ -d ${PKG_DIR} ]; then
	rm -r ${PKG_DIR}
fi
mkdir -p ${PKG_DIR}

gox \
    -os="darwin windows linux" \
    -arch="386 amd64" \
    -output "${PKG_DIR}/${PGNAME}_{{.OS}}_{{.Arch}}/{{.Dir}}" \
    $PACKAGE

if [ -d ${DIST_DIR} ]; then
	rm -r ${DIST_DIR}
fi
mkdir ${DIST_DIR}

pushd ${PKG_DIR} > /dev/null
for P in `ls | xargs basename`
do
	zip -r ${CURRENT}/${DIST_DIR}/$P.zip $P
done
popd > /dev/null

ghr ${TAG} ${DIST_DIR}

公開しているコマンドたち

日付時刻を簡単に計算 / フォーマット変換できる dt というコマンドと、西暦と和暦を相互変換する
wareki というコマンドを公開しています。

まとめ

こんな感じの開発環境でやっていますが、gore や ghq や peco などといったとても便利なツールがあるみたいなので、これからもどんどん変わりそうです。