> Source: https://www.ymotongpoo.com/works/goblog-ja/go1/


# Go 1リリース

[Go version 1 is released](https://go.dev/blog/go1) by Andrew Gerrand

<div class="image">
  <img src="./gophermega.jpg" alt="">
</div>

今日、Goプログラミング言語の開発における大きな節目を迎えました。信頼できる製品やプロジェクト、
出版物を作るための安定した基盤となる言語とコアライブラリ群を定めた、Go version 1、
略してGo 1を発表します。

Go 1は、サポートされたバイナリ配布物として入手できる初めてのGoのリリースです。
Linux、FreeBSD、Mac OS X向けに、そして光栄なことにWindows向けにも配布されています。

Go 1を作る原動力となったのは、ユーザーにとっての安定性です。Go 1でプログラムを書く人は、
そのプログラムが何年にもわたる時間の中で、多くの環境において変更なしにコンパイルされ、
実行され続けることを確信できます。同様に、Go 1について本を書く著者は、
自分の書いたサンプルコードや解説が、今日はもちろん将来にわたって読者の役に立つと確信できます。

前方互換性は安定性の一部です。Go 1でコンパイルできるコードは、私たちがGo 1.1やGo 1.2
といったアップデートやバグ修正をリリースしていく間も、いくつかの例外を除いて、
そのバージョンが使われ続ける限りコンパイルされ、実行され続けるはずです。
[Go 1互換性ドキュメント](/doc/go1compat.html)には、この互換性のガイドラインがより詳しく説明されています。

Go 1は今日使われているGoそのものの姿を表したものであり、大規模な再設計ではありません。
計画にあたっては、問題点や矛盾を整理し、移植性を高めることに焦点を当てました。
Goにはこれまで、設計してプロトタイプまで作ったものの、後方互換性がないという理由でリリースして
こなかった変更がたくさんありました。Go 1はこうした変更を取り込んでおり、言語とライブラリに
大きな改善をもたらす一方で、古いプログラムに対しては互換性が失われる場合もあります。
幸い、[go fix](/cmd/go/#Run_go_tool_fix_on_packages)ツールを使えば、プログラムをGo 1の
標準に合わせるために必要な作業の多くを自動化できます。

Go 1では言語にも変更が加えられました。たとえば[Unicode文字](/doc/go1.html#rune)や
[エラー](/doc/go1.html#errors)のための新しい型が導入されています。標準ライブラリにも変更が加わり、
新しい[timeパッケージ](/doc/go1.html#time)や[strconvパッケージ](/doc/go1.html#strconv)内の名前変更などが
その例です。また、パッケージの階層も関連する項目をまとめるように再編成されました。たとえば[rpcパッケージ](/pkg/net/rpc/)
のようなネットワーク関連の機能はnetのサブディレクトリに移動しています。変更点の全リストは
[Go 1リリースノート](/doc/go1.html)にまとめられています。このドキュメントは、以前のバージョンの
Goからコードを移行するプログラマにとって欠かせない参考資料です。

さらに、新しい[goコマンド](/doc/go1.html#cmd_go)を中心にGoのツール群を再構築しました。
goコマンドはGoコードの取得、ビルド、インストール、保守を行うプログラムです。goコマンドは
Goのプログラムソースそのものからビルド手順を導き出すため、Goコードを書くのにMakefileが不要になります。
もうビルドスクリプトを書く必要はありません。

最後に、Go 1のリリースに伴って、[Google App Engine SDK](https://developers.google.com/appengine/docs/go)
の新しいリリースも行われます。App Engineのライブラリにも同様の改訂と安定化のプロセスが
適用されており、開発者がApp Engine向けに何年も動き続けるプログラムを構築するための基盤を提供しています。

Go 1は、Goのコアチームとオープンソースコミュニティの多くの貢献者による大きな取り組みの成果です。
これを実現する助けとなってくれたすべての人に感謝します。

Goプログラマになるには、今が最高のタイミングです。始めるために必要なものはすべて
[golang.org](/)にあります。

By Andrew Gerrand

