LoginSignup
4609
4388

More than 1 year has passed since last update.

Goの初心者が見ると幸せになれる場所 #golang

Last updated at Posted at 2013-05-11

公式サイト

A Tour of Go

Web上で実行しながら学ぶことができる公式のチュートリアルです。

チュートリアル

公式のチュートリアルです。初学者向けからジェネリクスのチュートリアルなども用意されています。
A Tour of Goが終わった後に取り組むと良いでしょう。

Go Wiki

Go Code Review Commentsなどが掲載されているGitHub上のWikiです。

パッケージドキュメント

標準パッケージやサードパーティ製のパッケージのドキュメントが見れるサイトです。検索もできます。

入門

プログラミング言語Go完全入門

筆者が作っている巨大なGoの入門資料です。なぜGoが作られたのか、から最新のジェネリクスの情報、静的解析まで扱っています。

Gopher道場

Goを体系的に学べる場です。10時間くらいある動画教材(自習室から入手可)もあります。

Go の最初の手順

Microsoftが公開している以下の内容が掲載された入門資料です。

  • Go の使用を開始する
  • Go でのパッケージ、変数、関数の使用方法を理解する
  • Go で制御フローを使用する
  • Go のデータ型、構造体、配列、スライス、マップを使用する
  • Go でのエラー処理とログ記録を実装する
  • Go でメソッドとインターフェイスを使用する
  • Go でプログラムを作成してテストする

Goとは?特徴や仕事に使うことを目指すための勉強法などを解説

これからGoを始める方向けの記事です。

これからはじめるGo - tenntenn Conference 2022(資料 / 動画

Goをこれから始めるための動画資料です。

よいコードを書くために

Go Proverbs

Rob Pike氏のGoの格言をまとめたサイトです。

Go Code Review Comments日本語訳)

Goの良いコードが書かれたページです。

コミュニティ

Slack-Gophers

Slackのコミュニティです。#japan#tokyoには日本語話者がいるので、日本語で質問しやすい。この他にも分野や地域ごとにチャンネルがあります。

書籍

Books for Gophers - Go Conference 2022 Spring

書籍の情報をまとめたものです。

エディタ/IDE

普段使ってるエディタやIDEのGoプラグインを使うと良いでしょう。特にない場合はVisual Studio Codeをオススメします。

Visual Studio Code

Goの公式でプラグインが用意されています。インストールも簡単で.goファイルを開くとプラグインのインストールが促されます。

よくある質問

〇〇が無いのはなぜ?などの疑問を持った場合は、公式のFAQを参考にすると良いでしょう。

〇〇envは必要か?

Goでは○○envが不要になった理由(バージョンアップを怠ると損する理由)を読んでください。現在のGoのバージョン(Go1.18)では端的に言うとほとんどの場合不要です。

Goは、ツールチェイン(コンパイルなど)を公式サイトからダウンロードし、お好きなエディタ(オススメはVisual Studio Code)を用意するだけで始められます。Gitも必要になることもありますが、他は必要になった時点でインストールすれば十分です。

環境変数の設定

不要です。GOPATHやGOROOTに言及している記事は基本的に古いことが多いです。無くなった訳ではありませんが、ほとんど設定することはなくなりました。

環境変数の意味を理解せずに設定するのはどちらにせよ危ないので、ほとんどありませんが、必要になったときに設定しましょう。

Goを始める際におまじない的に設定するものはありません。

プロジェクトの作り方

最初にgo mod initコマンドを実行しましょう。Goはモジュールという単位でプロジェクトを管理します。

以下のように、モジュールパスを指定してコマンドを実行します。$はターミナルのプロンプトを表しているので入力は不要です。

$ go mod init github.com/tenntenn/mymodule

github.com/tenntenn/mymoduleの部分がモジュールパスです。サンプルコードや殴り書きのコード以外はGitHubなどのリポジトリのパスにしておきましょう。

go mod initコマンドを実行したら、go.modファイルができます。モジュールの情報や依存するモジュールのバージョンなどが記載されます。

あとはコードを書いてgo buildコマンドまたはgo runコマンドでコンパイルして実行しましょう。

標準パッケージ以外を使ってる場合は、ソースコードにimport宣言を書き、go mod tidyコマンドを実行すると、go.modファイルに依存関係が追加されます。

標準パッケージ以外を使っている場合、go.sumファイルが作成されます。これはチェクサムの情報が記録されたものです。go.modファイルや他のソースコードと共にコミットしておきましょう。

ディレクトリ構成

Standard Go Project Layoutを参照している記事を多く見かけますが、これは標準ではありません。Goチームのメンバーから指摘も入っています。

学習中はパッケージ(ディレクトリ)はディレクトリ1つのシンプルな構成で始めると良いと思います。コマンドラインツールであれば、次のような構成をよく見かけます。

.
├── go.mod
├── internal
│   └── a.go
└── main.go

ライブラリとしての機能がメインの場合は以下のような構成にするのも見かけます。cmdディレクトリ以下にツール名をつけたディレクトリを置き、その中にmain.goを置きます。

.
├── a.go
├── cmd
│   └── mytool
│       └── main.go
└── go.mod

APIサーバやWebアプリケーションの場合はもう少し複雑な構成になると思います。それなりの規模で公開されているものであれば、pkg.go.devソースコードも参考になります。

作るものや開発チームが変われば適切なディレクトリ構成も変わります。適切なディレクトリ構成もプロダクトのフェーズによって変わる場合もあるでしょう。チームや企業内で模索するものであり、言語で標準が決まっているものではないのかなと考えています。

とはいえ、パッケージ構成を考える際のポイントとしては、パッケージの利用者の立場になって考えることです。「Goに入ってはGoに従え」にあるように、命名は与えられたコンテキスト(文脈)の中で分かりやすいものにすると良いとされています。パッケージ構成はこのコンテキストを作ることになるため、パッケージ名が長くなり、コンテキストがうまく組み立てられていない場合はパッケージ構成が良くないといえるでしょう。

4609
4388
20

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
4609
4388