Googleが開発したプログラミング言語として人気が高まっている「Go言語」は、年々その存在感を増しています。
paiza株式会社の調査(2023年)によれば、「転職における言語別の平均年収ランキング」でGo言語が1位を獲得しました。Go言語に関心を持つエンジニアの方も多いのではないでしょうか。
そこで本記事では、注目を集めるGo言語について紹介します。Go言語とは何か、特徴・用途・将来性・学習方法まで詳しく理解できます。
※記事内の情報は2024年3月執筆時の内容です。最新の情報は公式サイト等でご確認ください。
この記事もオススメ
この記事は現役エンジニアによって監修済みです。
この記事の目次
Go言語とは
出典元:The Go Programming Language
Go言語とは、Googleが開発したオープンソースプロジェクトのプログラミング言語です。本章ではGo言語のおもな概要について簡単に解説します。
- Googleが開発したプログラミング言語
- マスコット「Gopher」がかわいい
Googleが開発したプログラミング言語
Go言語は2009年にGoogleが開発したオープンソースプロジェクトのプログラミング言語です。
歴史は長くありませんが、規模の大きいプロジェクトに向いており、問題解決にフォーカスしたバランスの良いプログラミング言語として高い人気を誇っています。
「Go」だけではさまざまな意味や内容で捉えることができるため、「Golang」「Go言語」と呼ばれます。この記事では、Go言語と表記。
パソコンにGo言語をインストールしてすぐに使いたいという方は、下記のGo言語の公式Webサイトをご覧ください。
日本語のページは多少情報が古い可能性がありますが、Go言語について学ぶ上で役立ちます。
マスコット「Gopher」がかわいい
出典元:The Go Programming Language
Go言語のマスコット「Gopher」が、とてもかわいいという点もGoの魅力。Gopherは「ゴーファー」という読み方で、日本語ではホリネズミと呼びます。
プログラミングには直接関係ありませんが、マスコットがかわいければ使っている方も少なからず楽しい気持ちになるでしょう。
また、はじめてプログラミングを行うという方も、親しみやすさを感じるのではないでしょうか。
Go言語をコンパイルするときうれしいのは、中で小さいGopherくんがいっぱい働いてるイメージを持ってるから。エラーメッセージもかわいい。
— momo????????WWGTokyo (@mom0tomo) 2018年6月5日
Go言語は人気も年収も高い
Go言語は2018年度のプログラミング言語年収ランキング1位に選ばれており、冒頭で説明したように2023年の「転職における言語別の平均年収ランキング」でも1位でした。
ここからわかるように、Go言語は人気だけでなく年収も高いのです。
プログラミング言語年収ランキングで1位に
転職サービスを提供するビズリーチが2018年8月に公開した資料によると、Go言語は提示年収の中央値で1位でした。これはビズリーチが運営する求人検索エンジンのデータをもとに計算されており、年収中央値は600万円で最大提示年収は1,600万円。
そして、Go言語は世界的に人気が高いです。実際にStack overflowによる「Developer Survey Results 2018」では、Go言語は最も愛されたプログラミング言語の5位にランクインしました。
この記事もオススメ
Go言語のアメリカの年収水準について
indeedによると、アメリカのGo言語の開発者の職種ごとによる年収平均は最大で125,143ドルとあります。日本円に換算すると、約1,390万円です。これは、Go言語のプラットフォームエンジニアの平均年収です。すべてのGo言語の開発者を合わせた平均年収を計算すると、約103,780ドル。
日本の年収中央値である600万円と比較すると、大きな差があることがわかるでしょう。日本以上にアメリカでは、Go言語のエンジニアは求められているのです。
ただし、あくまでも年収中央値600万円は企業側が募集の際に提示している金額です。実際に契約する際には、この金額よりも高くなると考えられます。実際のGo言語のデベロッパーの平均年収は、600万円以上という認識で良いでしょう。
この記事もオススメ
Go言語の特徴について
シンプルで処理が高速であるといったGo言語の特徴について、以下で詳しく解説していきます。
- 高速なコンパイラ言語
- シンプルな記述ができるプログラミング言語
- 標準パッケージが充実している
高速なコンパイラ言語
Go言語は2009年に登場した比較的新しいオープンソースプロジェクトのコンパイラ言語。Java・C++が代表的なコンパイラ言語として知られています。 コンパイラ言語は、プログラムをコンピュータが理解可能な形式に変換して実行を行います。この処理をコンパイルと呼びます。
Go言語は記述したソースコードをコンパイルする際に、エラーがあればそこで検出可能。そのため、Go言語は初心者でもエラーに気づきやすく、重大なミスが発生しづらいです。また、コンパイルが高速で、実行速度も速いという特徴をGo言語は持っています。
この記事もオススメ
シンプルな記述ができるプログラミング言語
Go言語は、記述がとてもシンプルであることが特徴。そのため、プログラミング初心者でも比較的習得しやすいです。
Go言語は、他の言語が豊富な機能性を追求しているの対し、機能を削ることでスキルの低いエンジニアでも書きやすくなっています。プログラムを乱雑にしてしまうことが多い機能も排除。
ソースコード内で宣言されているにも関わらず、使われていない変数などが存在するとコンパイルができなくなります。プログラムから不要なコードを削除するのは、影響の予想が難しいというリスクが生じます。そのようなリスクをGo言語は事前に防げるように設計されているのです。
標準パッケージが充実している
Go言語は標準パッケージが充実しているため、サードパーティのライブラリに頼らずに開発が可能。また、エディタやツールを拡張できるプラグインも公開されています。
Go言語と他のプログラミング言語の違いとは
Go言語は他のプログラミング言語と比較するとどのように違うのでしょうか。Go言語の開発の背景や思想から、他の言語との違いについて解説していきます。
- シンプルでスケーラビリティが高い
- 実用的で生産性を高める現代的言語
- 動的言語との違いについて
シンプルでスケーラビリティが高い
Brad Fitzpatrick・Ken Thompson・Rob Pikeといった素晴らしいエンジニアによって開発されたGo言語。
Brad Fitzpatrickはmemcached・PubSubHubbub・OpenID、Ken ThompsonはC言語やUNIXの開発者として知られています。Rob Pikeは、Ken ThompsonとともUTF–8を開発し、プログラミング言語「Limbo」の作者でもあります。
Go言語は、作り上げたシステムと開発段階のどちらにおいてもスケーラビリティの高い言語となることをゴールとして定めています。
それを実現するため、他の言語と比較してGoはとても機能がシンプルです。繰り返し構文はfor文のみで、while文などはサポートされていません。記述の方法を最小限にすることで、開発者が多いプロジェクトにおける表現のばらつきを抑えています。
また、コンパイル前のプリプロセス処理が必要となる構文も利用できません。規模の大きいソースコードも高速で処理するため、その妨げになる構文はできるだけ取り込まない方針で設計されています。
実用的で生産性を高める現代的言語
Go言語は、Googleのように問題を抱えた環境であっても、効率よく生産的に作業が行えるように設計・開発されました。
The problems introduced by multicore processors, networked systems, massive computation clusters, and the web programming model were being worked around rather than addressed head-on. Moreover, the scale has changed: today’s server programs comprise tens of millions of lines of code, are worked on by hundreds or even thousands of programmers, and are updated literally every day.
引用元:Go at Google: Language Design in the Service of Software Engineering
このような開発の背景があるため、Go言語には不要になったメモリ領域を開放してくれるガベージコレクション(GC)や、並行処理を記述するためのGoroutineやchanneといった機能が備わっています。また、「依存性の管理」「ソフトウェアアーキテクチャの適応性」も考慮。
Go言語は統合開発環境(IDE)を提供するのではなく、シンプルな機能を必要に応じて組み合わせることで、高い機能性を実現します。そのため、Go言語ではgofmt・goimports・go vet・golint・godoc・gorename・guru・pprofといったさまざまなツールが存在するのです。
Go言語はシンプルで問題解決に適した言語にするという現代的な思想の元に、言語そのもだけでなくツールなどの周辺の環境までトータルで設計されています。
動的言語との違いについて
RubyやPythonといった動的言語のスキルがある方で、需要が高まっている静的言語であるGo言語を学ぼうと考えている方もいらっしゃるでしょう。
そのような場合に感じやすい違いとしては、「文字数が多くなる」「コンパイルする手間がある」などがあげられます。そのため、仕事でRuby・Pythonなどの動的言語を使っている場合には、Go言語は書きづらいと感じるかもしれません。
しかし、書き方が限定されているため、記述の表現に迷わずに開発が進められるというメリットもあります。また、Go言語は実行が高速で記述とプログラムの確認がすぐに行えるので、他の静的言語よりも動的言語に近い感覚で記述ができるので馴染みやすいのではないでしょうか。
シンプルで誰にでも使えるようなプログラミング言語を目指しているという思想を理解すれば、それぞれの良さを生かした活用ができるでしょう。
この記事もオススメ
Go言語でできること・作れるもの
ここではGo言語でできること・作れるものの代表例を紹介します。
- Webサーバー構築
- アプリケーション開発
- コマンドラインインターフェース(CLI)ツール作成
Webサーバー構築
net/httpパッケージを使用すれば、Webサーバーを簡単に構築できます。また、YouTubeなどのWebアプリケーションにもGo言語は使われています。
サービスだけでなく、それが動作するサーバーの構築がスムーズであるといった汎用性の高さもGo言語の魅力です。
アプリケーション開発
Go言語は、AndroidやiPhoneといったスマホで動作するネイティブアプリケーションの開発も可能。モバイル向けのアプリ制作に使うツールが集められたGo mobileを使えば、開発がとても快適に行なえます。
▶️Mobile · golang/go Wiki · GitHub
この記事もオススメ
コマンドラインインターフェース(CLI)ツール作成
キーボードによってコマンドを打ち込み操作を行うコマンドラインツールインターフェース(CLI)。このCLIによって動作するアプリ制作にもGo言語は向いています。
Go言語はマルチプラットフォームに対応したクロスコンパイルの機能があるので、アプリケーションの制作がとても行いやすいです。それぞれのプラットフォームによる互換性や依存関係を心配せずに、環境に適したツールの制作が簡単に行なえます。
Go言語を使うメリット・デメリット
さまざまな他のプログラミング言語とは異なるGo言語を使うメリットとデメリットについて、以下で詳しく見ていきましょう。
Go言語を使うメリット
Go言語を使うメリットは、「処理が高速なこと」「複雑なシステムの構築に最適なこと」「並行処理・並列処理が可能であること」の3つです。
処理が高速
Go言語を使うメリットとして、処理が高速であることがまずあげられます。コンパイルもスピーディーで、クロスコンパイルが可能。
コンピュータが理解できる言葉に直接コンパイルできるため、メモリの使用も抑えられます。
複雑なシステムの構築に最適
Go言語は多くの開発者が携わっても、表記が揺れにくいシンプルな設計。
安全性が高く、同期処理も簡単に行えるので複雑で規模の大きいシステムの構築に最適です。状況に応じて、同期処理と非同期処理を使い分けられる点も見逃せません。
また、オープンソースプロジェクトであるため、バグや脆弱性が見つかった場合にも柔軟に対応できるというメリットもあります。
並行処理・並列処理が可能
並行処理・並列処理が言語レベルで可能である点も大きなメリットです。
並行処理とはコンピューターのCPUで複数の処理を論理的に同時に行うことを指します。並列処理は、CPUで複数の処理を物理的に同時に実行。並列処理は、複数のCPUの処理能力を発揮する方法と言えるでしょう。
現代のコンピュータは複数のCPUを搭載した機器が多いです。その性能を生かすためには、ソフトウェア側にも並列処理の技術を取り入れる必要があります。Go言語を使用する場合には、goroutineやchannelが用意されていますのでソフトウェアへの実装もスムーズです。
Go言語を使うデメリット
一方でGo言語を使うことのデメリットは、「Genericsがないこと」「継承をサポートしないこと」「例外処理がないこと」の3つです。
Genericsがない
Go言語にはGenericsがないため、Javaのgeneric typeのような記述はできません。これにより、Go言語は安全性の高いメモリ管理やシンプルな構造を保っています。
Genericsは型を汎用化して使えます。しかし、適切な場所に書かれていなければ、ソースコードが乱雑になる危険性があります。そのような危険を避けるために、Go言語ではGenericsがあえて存在しないのです。
継承をサポートしない
コードの再利用や拡張性を高める上で役立つ「継承」も、Go言語ではサポートされていません。少ないコードでプログラムを構築できるというメリットはありますが、コードが複雑になれば継承によって読みづらくなるという場合もあるからです。
規模の大きいシステムの開発におけるコードの読みやすさや、メンテナンスの行いやすさが優先されています。
例外処理がない
RubyやJavaの例外処理と同様の機能は、Go言語にはありません。これもGo言語がシンプルであることを保つために削ぎ落とされた機能です。
その代わりにPanic・Recoverを使えば、エラーを処理する例外と近い機能が実装できます。
Go言語が今後も人気が高まっていく理由
出典元:The Go Programming Language
現在も高い人気を誇っているGo言語。Go言語は今後もさらに人気が高まっていくことが予想されます。その理由について以下で解説していきます。
- 大手企業が採用している
- Go言語を使ったサービスの需要が高い
- Go 2のドラフトデザインを発表
大手企業が採用している
開発したGoogleをはじめ、大手企業がサービス自体やその一部でGo言語を採用しています。
Google内において、Go言語が使われる機会は着実に増えています。現状では、YouTubeやGoogle ChromeやAndroidのダウンロードサーバーに利用。
「BBC Worldwide」「Canonical」「Heroku」「Nokia」「SoundCloud」といった海外のその他の企業でも使用されています。また、Dropboxは基礎部分をGo言語に置き換え、GitHubでソースコードを公開しています。
▶️GitHub – dropbox/godropbox: Common libraries for writing Go services/applications.
日本では、「はてな」「Gunosy」「メルカリ」といった大手企業がGo言語を導入しています。より詳しくどのような企業がGo言語を利用しているのか詳しく知りたい場合には、下記のWebページに一覧で記載されています。
▶️GoUsers · golang/go Wiki · GitHub
Go言語を使ったサービスの需要が高い
Go言語を使ったサービスの需要は世界的に高いです。代表的なサービスとして、Docker・Packer・Serfなどがあります。
特にDockerはコンテナ型の仮想環境を提供するプラットフォームとして人気が高く、クラウドからオンプレミスの環境まで幅広く利用されています。
▶️Docker – Build, Ship, and Run Any App, Anywhere
Go 2のドラフトデザインを発表
※2018年時点での情報です。
Go言語はメジャーアップデートバージョンとなるGo 2のドラフトデザインを発表しました。
ドラフトデザインについて確認すると、例外処理やGenericsがないといったデメリットとして捉えられている点についても改善するアプローチが行われていることがわかります。
Go 2はGoで構築したエコシステムを壊すことなく、互換性を維持してスムーズなリリースが行われる予定です。これにより、Go言語はさらに使いやすいプログラミング言語となるでしょう。
Go 2のドラフトデザインの詳細については、以下から詳しく確認できます。
???? We just announced an update for Go 2!
This includes preliminary draft designs for generics, error handling, and error values.
Read our blog and watch the video by @_rsc for more information. https://t.co/WB4EJuyGCR
— Go (@golang) 2018年8月28日
Go言語の基本とインストール
ここでは、Go言語の基本的な操作と開発環境の構築について紹介します。
- Web上で利用できるThe Go Playground
- インストール
- Go言語で「Hello World!」
Web上で利用できるThe Go Playground
Webブラウザ上でGo言語が実行できる「The Go Playground」がはじめての方にはおすすめ。インストールなどの手順を踏まなくても、すぐに使えます。まず、Go言語を試してみたいという方にぴったりと言えるでしょう。
▶️Go Playground – The Go Programming Language
インストール
Windows・macOS・LinuxといったOS向けにインストールする際には、下記のリンクからそれぞれのOSにあったインストーラーをダウンロードします。
Downloads – The Go Programming Language
インストーラーは日本語表記です。特に複雑な手順はありませんので、指示に従って内容を確認しながらインストールを行うと良いでしょう。
Go言語で「Hello World!」
インストールが完了したら、Go言語を使って「Hello World!」を行ってみましょう。まず、ターミナルを開きGo言語がインストールできたことを「which go」で確認します。
Go言語のインストールが確認できましたら、テキストエディタで下記のソースコードを入力して、「helloworld.go」というファイルで保存します。
package main
import (
“fmt”
)func main() {
fmt.Println(“Hello, World!”)
}
ターミナルでファイルを保存したディレクトリに「cd」で移動して実行します。
go run helloworld.go
ターミナル上で「Hello, World!」と表示されれば成功です。次に、単一で実行可能なファイルを出力しましょう。
go build helloworld.go
ファイルを開くと、同じように「Hello, World!」が表示されます。とてもシンプルなコードでGo言語は記述できることが実感できたのではないでしょうか。
Go言語の学習におすすめの無料Webサイト
Go言語の学習を行う際におすすめの無料で利用できるWebサイトをいくつか紹介します。
- はじめてのGo言語
- お気楽 Go言語プログラミング入門
- Go Webプログラミング
- A Tour of Go
- Progate
この記事もオススメ
はじめてのGo言語
出典元:はじめてのGo言語
※現在は閲覧不可
インストールから複雑なプログラムの構築まで学べる日本語のWebサイト。とてもわかりやすく見やすいWebサイトなので、はじめてGo言語を学ぶ方にぴったりです。
お気楽 Go言語プログラミング入門
出典元:お気楽 Go言語プログラミング入門
※現在は閲覧不可
Go言語の基礎から、電卓プログラムの開発まで学べます。こちらも日本語のWebサイトなので、学習が行いやすいです。
Go言語を使った練習問題やパズルがあり、ゲーム感覚で学習が進められるでしょう。
Go Webプログラミング
出典元:Go Web プログラミング
Go言語を使ったWebプログラミングについて、日本語で詳しく解説されているWebサイトです。
開発環境の構築をはじめ、Webプログラミングの実践的な内容が学習可能。学習できる内容がトピックごとにわかれており、とてもわかりやすい構成になっています。
A Tour of Go
出典元:A Tour of Go
A Tour of Goは、Go言語の基礎文法の学習に最適です。エディターが付属しているので、Go言語のインストールなしですぐに学習がはじめられます。
下記に記載しているのは、A Tour of Goの日本語版のWebサイトです。
Progate
出典元:Progate
Progateが提供しているGo言語の講座です。わかりやすいスライドによる解説とエディタによる手を動かした学習が可能。
Facebook・Twitter・Googleのアカウントと連携して、すぐに学習がはじめられます。
▶️Go | プログラミングの入門なら基礎から学べるProgate[プロゲート]
Go言語の学習におすすめの本
ここでは、Go言語の学習におすすめの本について紹介します。
- 基礎からわかる Go言語
- Goならわかるシステムプログラミング
- 初めてのGo言語 ―他言語プログラマーのためのイディオマティックGo実践ガイド
この記事もオススメ
基礎からわかる Go言語
Go言語の基礎から応用まで、網羅的にわかりやすく学習できる本です。C言語やJavaとどのように違うかについても解説されています。
これからGo言語の学習をはじめる方に最適な入門書と言えるでしょう。
Goならわかるシステムプログラミング
難易度が高い印象を受けるシステムプログラミング。しかし、シンプルな設計のGo言語が使われているので、とてもわかりやすく理解できます。
Go言語の基礎を学び、並列処理などを使ったより複雑なシステム構築について知りたい方におすすめの一冊です。
初めてのGo言語 ―他言語プログラマーのためのイディオマティックGo実践ガイド
Go言語の開発における思想をはじめ、基礎構文からしっかり理解できる初心者にぴったりの本です。Goコードの書き方はもちろん、実践的な内容も豊富に含まれた一冊。
シンプルでモダンな「Go言語」を使ってみよう
Googleの開発したシンプルでモダンなプログラミング言語であるGo言語について紹介しました。
記述が簡潔でわかりやすいため、初心者が学習するプログラミング言語に最適です。また、Dockerなどの需要の高いサービスの開発にも使われており、Go言語のエンジニアの年収も高いです。将来性の高い言語と言えるでしょう。
今後も、精力的なアップデートが続いていく人気言語というポジションが続いていくでしょう。この記事を読んで、Go言語に興味を持った方は学習をはじめてみてはいかがでしょうか。
はじめての転職、何から始めればいいか分からないなら
「そろそろ転職したいけれど、失敗はしたくない……」そんな方へ、テックキャンプでは読むだけでIT転職が有利になる限定資料を無料プレゼント中!
例えばこのような疑問はありませんか。
・未経験OKの求人へ応募するのは危ない?
・IT業界転職における“35歳限界説”は本当?
・手に職をつけて収入を安定させられる職種は?
資料では、転職でよくある疑問について丁寧に解説します。IT業界だけでなく、転職を考えている全ての方におすすめです。
「自分がIT業界に向いているかどうか」など、IT転職に興味がある方は無料カウンセリングにもお気軽にお申し込みください。