VagrantでGo環境を作った手順
Goを勉強しようと環境を準備しようと思いました。
自Macにそのままインストールしても良かったのですが、そういえばVagrant触っていなかったので、Vagrantを使った環境にGoをインストールしてみました。
その手順メモになります。
やること
- 仮想環境にGoをインストールする
- VSCodeでリモート接続してGoを動かせるようにする
環境
Vagrant環境準備
前メモってた手順でほぼOKでした。ただ、Vagrantをバージョンアップしたことによって、プラグインのvagrant-vbguest
もアップデートする必要があることに気付かず、ちょっとハマりました。
(元記事に追記した)
最終的なVagrantfileは以下のようになりました。
Vagrant.configure("2") do |config| config.vm.box = "centos/7" config.vm.hostname = "golang" config.vm.synced_folder "/Users/hoge/Vagrant/go", "/home/vagrant/go",create: true, owner: "vagrant", group: "vagrant", mout_options: ['dmode=777','fmode=777'] config.vm.network "forwarded_port", guest: 80, host: 9090 config.vm.network "private_network", ip: "192.168.33.10" end
Goインストール
yum
でインストールをしてみますが、そんなのリポジトリにないよというエラーが。
[vagrant@golang ~]$ sudo yum install golang Failed to set locale, defaulting to C Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp No package golang available. Error: Nothing to do
ftp.riken.jp
にはGoのPackageが存在しないようで、epel-release
リポジトリには含まれているようなのでyum install epel-release
します。
Goが含まれているかを確認します。
[vagrant@golang ~]$ yum info golang Loaded plugins: fastestmirror Determining fastest mirrors epel/x86_64/metalink | 5.3 kB 00:00 * base: ftp.riken.jp * epel: nrt.edge.kernel.org * extras: ftp.riken.jp * updates: ftp.riken.jp epel | 4.7 kB 00:00 (1/3): epel/x86_64/group_gz | 95 kB 00:00 (2/3): epel/x86_64/updateinfo | 1.0 MB 00:00 (3/3): epel/x86_64/primary_db | 6.9 MB 00:03 Available Packages Name : golang Arch : x86_64 Version : 1.13.14 Release : 1.el7 Size : 3.2 M Repo : epel/x86_64 Summary : The Go Programming Language URL : http://golang.org/ License : BSD and Public Domain Description : The Go Programming Language.
GoのPackageが含まれていることが確認できました。しかしバージョンが1.13.14
。この時の最新バージョンは1.15.1
でしたので、最新版を入れることにします。
Go公式からダウンロードします。
[vagrant@golang ~]$ wget https://golang.org/dl/go1.15.1.linux-amd64.tar.gz -bash: wget: command not found
・・・wgetをyum install wget
してやり直し、改めてGoをインストールします。
[vagrant@golang ~]$ wget https://golang.org/dl/go1.15.1.linux-amd64.tar.gz [vagrant@golang ~]$ sudo tar -C /usr/local -xzf go1.15.1.linux-amd64.tar.gz [vagrant@golang ~]$ ls /usr/local bin etc games go include lib lib64 libexec sbin share src
Goのためのクラスパスを通します。
(.bash_profile) .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs GOROOT=/usr/local/go GOPATH=$HOME/go PATH=$PATH:$HOME/.local/bin:$HOME/bin:$GOROOT/bin:$GOPATH/bin export=GOROOT export=GOPATH export PATH
通ったかの確認をします。
[vagrant@golang ~]$ go version go version go1.15.1 linux/amd64
ツールをインストールしてみる
gore
というgolangのREPLをインストールしてみます。
[vagrant@golang ~]$ go get github.com/motemen/gore/cmd/gore go: missing Git command. See https://golang.org/s/gogetcmd package github.com/motemen/gore/cmd/gore: exec: "git": executable file not found in $PATH
・・・git
をインストールします。
yumリポジトリにあるgit
のバージョンが1.8.3
とかで古すぎです。
iushttps://repo.ius.io/ius-release-el7.rpm'をインストールして、このリポジトリから
git`をインストールしました。
[vagrant@golang ~]$ sudo yum install git224 --enablerepo=ius
改めて、gore
をインストールします。
[vagrant@golang ~]$ go get github.com/motemen/gore/cmd/gore [vagrant@golang ~]$ ls $GOPATH/bin gore [vagrant@golang ~]$ gore --autoimport gore version 0.5.0 :help for help gore> fmt.Println("Hello World") Hello World 12 nil
gore
がインストールされました。
VSCodeでVagrant環境に接続してGoを実行する
以下のサイトを参考にしています。これでsshの設定含めて大丈夫かと思います。
その他、Goに必要なVSCodeの拡張機能を追加していきます。
Go | Rech Go language support for Visula Studio Code
をインストールすれば、他に必要なツールは適宜教えてくれるのでインストールしていきます。
これで、ローカルのVSCodeからVagrantで動いている仮想環境にアクセスしてGoを書いて実行できました。
おわり
Goのお作法的なところは何も知らないので、今後写経して覚えていきます。 環境作りで手間取ることが多いので、次はDockerで環境を作ってみようと思います。
参考
「いちばんやさしいGit&GitHubの教本」を読んだ。
これまで仕事ではSVNを使っていました。Gitは個人で何か書く時に使ってたくらいで体系的には知らなかったです。
今後、仕事ではGit、GitHubを使うことが増えそうなのでちゃんと勉強しようと思って、「いちばんやさしいGit&GitHubの教本」を読んで勉強しました。
Chapter 1
バージョン管理の話から、Gitのリポジトリにコミットするまでの「場所」の説明まで丁寧にされてありました。これまでは雰囲気でgit add
、git commit
していたので理解できました。
Chapter 2
ここはスルーしましたが、インストールの方法からGitコマンドだけではなく一般的なコマンドの説明もしてくれるので初学者でも入りやすいかと思いました。
CUIベースなのが敷居の高さを感じてしまう可能性はありますが、GUIの場合だと環境やバージョンによって差異が大きく出るケースもあるのでこれでいいのかなーと思いました。
Chapter 3〜7
実際に手を動かしてみようのコーナーです。
章の初めに、その章でやることのサマリーを説明してから詳細の手順に入るので、
今何をやっているのかが追いやすいと思いました。
Gitでのローカルリポジトリの扱い方からGitHubへのPush、Pull Requestなどの標準的な使い方、コンフリクトの説明まで一通りしてくれています。
個人的には詰まることもなく理解しながら手を動かせました。
Chapter 8
付録的な章ですかね。
感想
他のGit本は読んだことがないので比較はできませんが、個人的にはわかりやすく良い本だと思いました。タイトル通り「やさしく」「挫折しにくい」今日本だと思います。これでGit&GitHub完全に理解しました。
これまでの振り返り
2020年7月に前職を退職して、8月から新しい職場で働き始めました。 前職では2008年4月に入社してから12年4ヶ月お世話になりました。 これまでの振り返り(思い出日記)を書き残しておこうと思います。
2008年4月入社〜研修期間(Java/JSP/HTML)
2008年4月入社して4月、5月はビジネスマナー研修をちょっとと、そのあとはJavaの研修を行い「Sun Certified Programmer for the Java 2 Platform 1.4」を取得するまでが研修期間でした。
ただ、本来は資格取得の勉強だけに専念できたはずが、配属先がちょうどトラブっていた関係でよくわからないままドキュメントを書いていたのはいい思い出です。
今ではそんなことはさせないようになっているので、職場改善されたなと感じますw
2008年6月〜初めてのプロジェクト(Java/Struts/JavaScript/SQL/忍耐/体力の限界)
工業大学出身でしたがプログラミングガッツリ系ではなく、数学よりのことをやっていたためまともに開発をやるのは研修を除けば初めてでした。
基幹システムの開発で、コーディング工程から参画しましたがすでに遅れが出ていたようでいきなり修羅場チックでしたw
新人なので簡単な画面からやらせてもらって、できることが増えていくのは楽しかったです。あとはユーザー業務をシステムで実現することの楽しさもこの時に実感しました。
ピーク時は2日に1回帰宅するような感じであったり、「あれ?最後に休んだのいつだっけ?・・・先月か。」みたいな経験もできたので、これ以降怖いものはあまりなくなりました。役員会議室のテーブルの上はオレのベッド。
結果として実装機能数は多くやらせてもらえたので、なんとか作ることはできるレベルにはなったと思います。
2009年4月〜保守開発(Java/Struts/JavaScript/SQL/忍耐/本番障害耐性)
無事に・・・でもなかったんですがリリースされて2年目の私とパートナーの方1名の2名だけ残って保守開発(本番障害対応)を行っていました。
元請けのSIerが客先で調整し、調整結果を実装〜テスト、リリース作業を請負ってました。10月には社内体制はボッチになってSIerとの調整も含めてやることになりましたが、これも早い段階で経験できてよかったです。
翌年にはSIer側の体制も縮小され、私も客先常駐になりってお客さんから直接要件を聞く打ち合わせに出たり、何かしら説明したりする機会が増えました。おかげで、システムを使って業務をしている人から直接フィードバックを受けるようになり、より楽しく仕事ができるようになったと思います。
今の奥さんともそこで出会えたのでよかったよかった。
2011年4月〜他課へ移動。新しいプロジェクトへ。(Java)
「他の奴と組ませてみよう」という社内の意向で別の課へ移動し新しい案件に行くことになりました。3ヶ月は全く別部署のお手伝いを行い、7月から本格的に新しい案件に参画しました。フェーズとしては要件定義〜詳細設計を年内にやる感じだったかと。
この年はほとんどコードは書いていない気がします。既存システムを調べて何をどうするかをお客さんと資料作って説明して、ドキュメント作ってみたいな1年でした。当初から参画していたというのもあり、開発リーダーみたいな感じでやらせてもいました。
バッチ処理があったのでそれをJavaで実装したんですが、「オレオレフレームワーク」作って実装していました。作りを見ると「あーすればよかった」みたいな思いも湧いてくるんですが、今も元気に障害もなく稼働しているので良しとしましょう。
↑は開発担当者としての話ですが、全体取りまとめという立場は初めてだったので多少苦戦していた記憶があります。.NETのクライアント機能開発が苦戦していてそのフォローであったり、品質がイマイチだった時に対応説明をしたりなんだり。これまで作ったことのない資料をいっぱい作りました。
2013年10月〜お任せされる期(Java/VB.NET/PHP/その他色々)
2013年にリリースされ、またも保守開発要員として残ることになりました。2名体制での再スタート。こっからあの手この手で体制拡大・担当システム拡大を行い売上を上げる楽しさに目覚めました。
仕事内容は変わらずコードも書いていましたが、お客さんとの折衝、マネジメント、お客さんとの単価交渉、売込みみたいな営業活動、を行っていました。
色々多くを勉強もさせてもらいましたが、新しく経験できることもなくなったので、そろそろ別の案件に移動しようと考え始めたのが2017年頃でしょうか。
2020年1月〜転職活動期
転職自体は2018年から考えていましたが、引継ぎ体制の目処が立ったのがこの頃です。かと言って、手当たり次第に受けまくるみたいなこともなく、とりあえず情報を集めて受ける会社を絞っていた感じです。
ちなみに転職理由はこれ以上出世したら開発に携わることもなくなりただの営業職になってしまうのが嫌だったからです。もう少し開発に携わりたい思いが強いのです。(数年後はどうなっているかは分かりませんが。)
そんな折、現職の採用担当からメッセージをもらい、募集内容は高レベル過ぎたのですが業界的に興味があったので話を聞かせてもらい、選考に進み今に至るという感じです。(超簡単説明)
今後
自分の知らない知識を身に付けれる(業界的にも技術的にも)ので非常に楽しみです。開発には携わりますがコードを書く機会はなさそうですが、社内的には色々勉強会なども行っているようなので参加していきたいと思います。
近年、Javaで仕事をする機会はほぼなかったのですが、今後もなさそうですw