Goコマンドの種類(と概要)を知る
「知る」と大きくでましたが、言い直すとgo --help
or go help
の結果を訳しただけ・・・です。
> go version go version go1.19.3 windows/amd64
> go help Go is a tool for managing Go source code. Usage: go <command> [arguments] The commands are: bug start a bug report build compile packages and dependencies clean remove object files and cached files doc show documentation for package or symbol env print Go environment information fix update packages to use new APIs fmt gofmt (reformat) package sources generate generate Go files by processing source get add dependencies to current module and install them install compile and install packages and dependencies list list packages or modules mod module maintenance work workspace maintenance run compile and run Go program test test packages tool run specified go tool version print Go version vet report likely mistakes in packages Use "go help <command>" for more information about a command. Additional help topics: buildconstraint build constraints buildmode build modes c calling between Go and C cache build and test caching environment environment variables filetype file types go.mod the go.mod file gopath GOPATH environment variable gopath-get legacy GOPATH go get goproxy module proxy protocol importpath import path syntax modules modules, module versions, and more module-get module-aware go get module-auth module authentication using go.sum packages package lists and patterns private configuration for downloading non-public code testflag testing flags testfunc testing functions vcs controlling version control with GOVCS Use "go help <topic>" for more information about that topic.
使い方
go <command> [arguments]
goと書いたあとにコマンドを指定し、さらに必要な引数がある場合は追加する、といった感じのようですね。
Commands
コマンド名 | 概要 |
---|---|
bug | バグ報告を開始する |
build | パッケージや依存関係にあるソースコードをコンパイルする(実行ファイルを作成する) |
clean | オブジェクトやキャッシュのファイルを削除する |
doc | パッケージやシンボルのドキュメントを表示する |
env | Goの環境情報を出力する |
fix | 新しいAPIを使うようにパッケージを更新する |
fmt | ソースコードをフォーマットする(gofmt) |
generate | ソースを生成する |
get | go.modに依存関係を追記し、インストールする |
install | パッケージと依存関係にあるソースコードをコンパイルし、インストールする |
list | パッケージやモジュールをリスト出力する |
mod | go.modファイルのメンテナンス |
work | go.workファイルのメンテナンス |
run | ビルドし、Goプログラムを実行する |
test | パッケージのテストコードを実行する |
tool | 設定されたGoツールの実行 |
version | Goのバージョン表示 |
vet | ソースコード内で間違えてそうなところを検出する |
中でも特にgenerate
、mod
、work
、tool
、vet
あたりは、訳したところでよくわかりませんでした。
しかしコマンドの種類を把握し、それぞれざっくり検索結果を読みながら仕入れられました。
topicsは、コマンドそのものとは違うもののヘルプとして提供されている情報郡といったところでしょうか。
> go help go.mod A module version is defined by a tree of source files, with a go.mod file in its root. When the go command is run, it looks in the current directory and then successive parent directories to find the go.mod marking the root of the main (current) module. The go.mod file format is described in detail at https://golang.org/ref/mod#go-mod-file. To create a new go.mod file, use 'go mod init'. For details see 'go help mod init' or https://golang.org/ref/mod#go-mod-init. To add missing module requirements or remove unneeded requirements, use 'go mod tidy'. For details, see 'go help mod tidy' or https://golang.org/ref/mod#go-mod-tidy. To add, upgrade, downgrade, or remove a specific module requirement, use 'go get'. For details, see 'go help module-get' or https://golang.org/ref/mod#go-get. To make other changes or to parse go.mod as JSON for use by other tools, use 'go mod edit'. See 'go help mod edit' or https://golang.org/ref/mod#go-mod-edit.
なるほど、go.modとはそのプログラムで使われているモジュールの設定ファイルらしいです。
このような感じで、それぞれ書いてありますが
go help <command>
go help <topic>
とすることで詳細情報を手に入れられるようです。
VSCodeでGolangをデバッグ実行するときのlaunch.jsonとキーボードショートカットキー
考えて、書いて、実行して、確認(修正)して、また考えて・・・がプログラミングの基本サイクルだとします。
気合いれてEnter
キーをタァーーン!とする実行方法もわるくありません、個人的には好きです。ただ可能であれば大技は最後にとっておきたいものです。
つまり通常の基本サイクルにおいては「書いて、実行して」はセットで扱いたいです。
そのために下記を紹介。
Goプログラム用のlaunch.json
ひとまずこれで動きました!という記録。
launch.json
{ // IntelliSense を使用して利用可能な属性を学べます。 // 既存の属性の説明をホバーして表示します。 // 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "Launch Program", "type": "go", "request": "launch", "mode": "debug", "program": "${workspaceRoot}", } ] }
必須項目と任意項目があるようです、typeとprogramのみでも動きました。特にprogramは環境事情にあわせて幾通りも書き方が生まれてくると思いますが、ここではいったんプログラムファイルが置いてあるフォルダ直下で実行する場合、ということになるんだと思います。
詳しくは公式情報を。 code.visualstudio.com
キーボードショートカット
デバッグ実行は、標準では下記のように定義されているそうです。英語だらけでよくわかりませんがどうにかこうにか雰囲気は。 code.visualstudio.com
先日読むだけ読んだ「A Tour of Go」に習って、Shift + Enter
を実行ショートカットキーとすることにしました。
keybindings.json
{ "key": "shift+enter", "command": "workbench.action.debug.start", "when": "debuggersAvailable && debugState == 'inactive'" }, { "key": "shift+enter", "command": "workbench.action.debug.continue", "when": "debugState == 'stopped'" }, { "key": "shift+alt+enter", "command": "workbench.action.debug.stop", "when": "inDebugMode && !focusedSessionIsAttach" },
これでF5
キーまで指を伸ばさなくても、両手の小指をちょいと広げてShift + Enter
するだけで手軽にデバッグ実行ができます。きっとストレスフリー!
今からプログラミング言語を学習するなら...Goです!
Go言語です!
ちょうど少し前に、Go言語プログラミング環境をセットアップの記事を書いたところでした。まさにオンタイム。
以下は、個人的な意見になりますがご容赦ください。
そもそもなんでやろうと思ったか
アウトドア派と言えるほどでもなく、かといってTVで野球がっつりでもなく、はたまたYouTubeやTikTokに没頭するほどでもなく、のような時間の消耗を続けてきました。 せめて週末に没頭できそうなものはないだろうかと探していたところ、そういえば昔々少しだけプログラミングかじってたな、と思い出したのがきっかけです。
本格的なプログラマーだったわけではありません。 期間も短く理解が浅かったことも手伝って、今ではその内容はほぼ覚えていません。残っているのは、PCはそれなりに使えることと、当時の名残りもあって今でもキーバインドがEmacsライクに慣れているというくらいです。ものはつくれません。
プログラミングを学ぶと何か良いことがあるか
世間では、プログラミングが小学生?くらいの教育カリキュラムに組み込まれたり、オンラインスクールがものすごい数になっていたりと「プログラミングができる、もしくは理解がある」「論理的思考はたしなみ」といった流れは以前よりは確実にあると思いますので、これに応えるという意味でプログラミングを学ぶのは良いことかもしれません。
あるいは、同業転職で年収をあげたい、異業種転職で一発かましたい、という場合、それら相場事情に合ったプログラミング言語を習得してチャレンジしやすくなるのであれば、やはりこれも良いことです。
いっぽうで、私の場合はといいますと、
ソフトウェアはそれ自体が物理的な形で残るわけではありませんが、ソフトウェアのためのプログラミングは確かにモノづくりです。 モノづくりを趣味にできるのは自分にとっては良いことだなと感じています。うまくいけば仕事や生活に多少活かすこともできるかもしれませんし。
なぜGo言語を選んだか
実はたいした理由はありません。 Google検索をするとおすすめ記事がヒットします。そこから名前の響きや雰囲気で適当に絞り込み、そのあとに個別についてもう少し確認する、という流れをとりました。
この3つが候補でした。あくまでも自分比ですが、名前の響きがかっこいいものを選んでいます。
そしてここから実際にそれぞれの詳細を調べたわけですが、言語仕様や用途など高度な内容は私にはまったくわかりませんので、受けた印象をまとめます。
Golang(Go言語)
- 覚えるべき基礎文法は少なめ
- 比較的新しい、という意味で積み上げによる複雑さがそんなでもなさそう
Python
- 研究分野で便利に使われている
- AI(機械学習・深層学習)領域でよく使われている
Rust
- いちばん響きがかっこいい
- けど斜め読みしても本当にまったくわからん
こんな感じでした。 最終的には「学ぶための難易度を可能な限りは抑えたい、最初だし」という趣旨でGo言語になりました。Pythonは過去の歴史がそれなりにあるようでしたので避けました。Rustはもう、まったくもってもう、わかりませんでした!
名前の雰囲気と学ぶのが大変じゃなさそうなやつ、というガチプログラマーさんに怒られそうな選び方をしていますが、学習を続けることの優先度をあげてるのでこうなりました。
というわけで、一緒にGo言語やりましょう!
Go言語でプログラミングする準備
プログラミングなんてもう10年?近く前に、多少HTMLやスクリプトをいじっていたことがある、くらいで正直それらの記憶も曖昧なレベルです。
ですが、長いこと趣味も見つかることなく特技も追求することなく時間が過ぎていくのもなんだかなぁとやっとこの歳で思い始め、なにかしようと思いたち、検索してなんとなく目についたGo言語(Golang)をはじめてみることにしました。
なぜGo言語なのか
前述のとおり、検索してなんとなく、が直近のきっかけなのです。ただそもそもプログラミング言語って世の中に無数にありますよね。
おすすめ10選、ランキングTOP5、といった具合にたくさん比較サイトがありましたので、どうしたものかと迷いました。ちなみに対抗馬として強かったのはPythonとRustです。これもなんとなく。
結果的に覚えるまでの大変さを優先軸にしようと自分の中で位置づけ、最後はGo言語が勝ち残りました。それすらも雰囲気で決めるしかありませんでした。他の言語についても斜め読みしたところ、Rustは難解過ぎて断然無理な気配が漂っていたのは覚えています。Pythonはもしかしたら将来仲良くなれるかもしれません。ただし、すべては取らぬ狸の皮算用です。
紆余曲折ありながらも、Go言語に決まりましたので早速環境づくりです。
Windows 11 Home
特にひねりもなく、普通にWindowsのパソコンです。
プログラミングをするには、macがいいとか、Linuxがいいとか、いろいろなお話がありますが違いを感じるのはデキるレベルになってからだろうと思い、気にせずWindowsのまま進めます。この先でなにか困ったらそのときに考えましょう。
今回、プログラミングはじめるぞ、と思ってWindowsそのものにやったことと言えば、Windows Updateくらいです。
Go言語(golang)
今回の主役です。プログラム言語です。
プログラミングを学ぶには、そのプログラム言語のソフトウェア開発キット(SDK)、つまり開発に必要な道具一式ですね、これをインストールしなければいけません。
上記ダウンロードページからWindows用の.msiファイルをダウンロードし、インストールします。 インストール過程は、多くのサイトで取り上げられていると思いますし、ここでは省略します(かくいう私も参考にしながらインストールしました)。
無事にインストールが完了すると、GOPATHという環境変数がWindowsに追加されていますので、ここで再起動しておいてもよいかもしれません。
ちゃんとインストールされたのかどうかはコマンドプロンプトから確認できます。
> go version go version go1.19.3 windows/amd64
Visual Stuido Code
エディタです。つまりプログラムを書くことに特化してゴージャスになったメモ帳。
私がかじっていた時代はこのVisual Studio Codeというエディタは存在していなかった気がするのですが、調べるとこのエディタ、無料なのに大変な高機能で使いやすく世間的にもシェアを獲得しているようです。開発元はMicrosoftとのこと。
これもWindows用の.exeファイルをダウンロードし、インストールです。やはり過程は省略します。
Visual Studio Code、略記で"VSCode"などと書かれたりもするそうですが、特徴のひとつに用途に合わせた拡張機能をユーザーが自由に追加したり削除したりできる、という点が挙げられます。
無料なのに・・・すごい時代ですね。ありがたく使わせていただくことにします。
今回、私の用途は「Go言語を使って開発できるような環境」ですので、
が取り込めればよさそう、ということで下記をとりあえず細かいこと考えずにいれるだけ入れました。多くのおすすめ記事でおすすめされるがまま、どんどん入れました。用途や効能の詳細はほぼわかりませんがそれは追々確認していけばいいかなと。
共通もの
marketplace.visualstudio.com marketplace.visualstudio.com marketplace.visualstudio.com marketplace.visualstudio.com marketplace.visualstudio.com marketplace.visualstudio.com marketplace.visualstudio.com
Go言語特化もの
marketplace.visualstudio.com marketplace.visualstudio.com
Goプログラムの動作確認
実は開発環境の最低限セットアップはこれで完了です。
予感していたよりもだいぶあっさり味でした。調べによると、そりゃもうもっと小難しい感じの開発環境もあるようです。今は不要ですね。動けばいいの精神でいきます。
ではその最低限が終わったはず、ということで動作確認です。hello.goとしてプログラムファイルを用意し、下記のようなサンプルを書き保存します。
package main import "fmt" func main() { fmt.Println("どうでしょう!") }
コマンドプロンプトで保存したファイルの場所で、書きを実行すると
> go run .\hello.go
どうでしょう!
ここまでの内容はとても巷に溢れてそうな、そして諸先輩方の文章より大変簡素になりましたが、自分用ということで良しとさせてください。いずれにしてもこれで動作確認はできました。これからGo言語プログラミング学習が続いたらいいな、と思います。