Go/環境構築
環境構築編集
Goのプログラミングを学ぶには、なんらかのコンパイル・実行環境が必要です。
オンラインコンパイル実行環境編集
Goのコンパイルと実行をウェブブラウザからオンラインで行えるサイトがあります。
- go.dev/play/ — 公式のオンラインコンパイル実行環境です。ネットワークサービスは禁止され、時計はいつも同じ時刻を返し、乱数も同じ系列を返します。このため実行結果は基本的に同じになります。
- gotipplay.golang.org — リリース前の開発版のオンラインコンパイル実行環境です。
- paiza.io — 多くのプログラミング言語のオンラインコンパイル実行環境です。
オンラインコンパイル実行環境を使えば、Goのコンパイル環境を構築しにくいスマートフォン・タブレット・ChromebookなどからもGoのプログラミングを学ぶことができます。
- 例 ← クリックまたはタップしてみてください。
package main import "fmt" func main() { fmt.Println("Hello, World") }
Windowsの場合編集
Goの公式サイトのダウンロードページからMSIインストーラーをダウンロードし、起動するとインストールを開始できます。
Goは言語仕様で、「ソースコードは UTF-8 でエンコードされた Unicode テキスト」(Source code is Unicode text encoded in UTF-8.)と決められています[1]。 このため Microsoftコードページ932 に構成設定されている日本語Windowsの環境ではエンコーディングの違いによるトラブルに見舞われるケースがある点に注意が必要です。
FreeBSDの場合編集
FreeBSD Ports/Packages Collection の、ports/lang/go
にあるので、
% sudo make -C /usr/ports/lang/go all install clean
でビルドしインストールできます。 また
% sudo pkg install go118-1.18.4_1
でビルド済みパッケージをインストールできますが、Goのバージョンアップやportsのパッチレベルの更新で go118-1.18.4_1
の部分は変わるので、
% pkg search '^go[1-9]' go117-1.17.12 Go programming language go118-1.18.4_1 Go programming language
の様に、最初に最新のパッケージ名を確認してください。
GNU/Linuxの場合編集
GNU/Linuxではディストリビューションによってパッケージマネジャーとリポジトリーの構成によりコマンドは違いますが、ディストリビューションの配布しているGoをそのままインストールできます。
ディストリビューションごとにパッケージマネジャーの仕様や操作方法が異なるので、パッケージマネージャーの検索機能で go- あるいは golang- をキーワードに検索してパッケージの名前を調べてインストールしましょう。
また、これはGoのパッケージに限りませんが、パッケージマネジャーを操作してパッケージアーカイブが更新されていないか定期的に確認し、脆弱性の修正などが施される前のパッケージを使い続けないよう注意しましょう。
ディストリビューションによっては、それでもバージョンが古いこともあるので、最新版が必要な場合は公式ウェブサイトのダウンロードページからバイナリーオプションの配布物をダウンロードするか、ソースコードを入手して、環境に合わせてビルドとインストールを行うと良いでしょう(Goは、セルフホスティング[2]なので、最初にバイナリーを入手してブートストラップするか、クロスコンパイルでターゲットでセルフコンパイル出来る状態を作る方法があります)。
動作確認編集
インストール作業が完了したらバージョンの確認を行いましょう。
- コマンド
go version
でバージョンを確認できます。
- Windowsでの表示結果の例
- (Windows PowerShell)
PS C:\Users\myname> go version go version go1.18.4 windows/amd64
- FreeBSDでの表示結果の例
% go version go version go1.18.4 freebsd/amd64
- GNU/Linuxのあるディストリビューションでの表示結果の例
$ go version go version go1.14.3 linux/amd64
- Android で開発バージョンをセルフビルドした例
$ go version go version devel go1.20-29b9a32 Tue Aug 2 18:52:33 2022 +0000 android/arm64
Go言語の特徴編集
- 動的ではなく静的
- どのような型が使われているかをコンピュータに推測させるのではなく、使用する型を定義する必要があります。
- インタプリタ型ではなくコンパイル型
- プログラムが実行される前にコンパイルされ、最初から直接機械語に変換されるのです。これは、コードを実行するための余分なステップがないため、いくつかの効率化につながる可能性があります。しかし、コードを動的に変更することができないということになります。
- 厳密なシーケンシャルではなくコンカレント
- Goでは、より簡単に同時処理を書いたり考えたりすることができます。これにより、ウェブやサーバーの開発などでよく見られる問題を、よりシンプルな設計で構築することができます。つまり、より複雑なタスクを、互いに通信することで調整される小さなタスクに分割するのです。さらに、この設計の利点は、これらの小さなタスクを並行して実行することができることです。
- メモリーセーフ
- Goがメモリの使用を処理して、境界を越えてプログラムがクラッシュするのを防ぐことを意味します。
- ガベージコレクション
- 使われなくなったメモリデータを再利用するために解放し、まだ使われているデータをより効率的に保存できることを意味しています。
脚註編集
- ^ “Source code representation ¶”. The Go Programming Language Specification. The Go website. (Jul 26, 2021) .
- ^ Goコンパイラーを始めとする、Goの言語処理系と支援環境は、Go自身で書かれています。