Go言語(Golang)とは?特徴とメリット・デメリットを解説
Go言語はシンプル&拡張性の高いプログラミング言語
Go言語はシンプルで、拡張性の高いプログラミング言語です。2020年2月現在ではバージョン1.13がリリースされており、1.Xの間は後方互換が保証されています。
Go言語はそもそもGoogleが自社の大規模な開発において、従来の言語で生じた課題を克服するために考案されたプログラミング言語です。
そのため、Go言語は下記の設計思想から作られています。
- 多人数での開発を高速に行う
- マルチコア、クラウド時代に対応している
- 軽量プログラミング言語のいいところは盛り込む
Go言語の特徴も、上記の設計思想に準じたものとなります。
- 高速で動作
- 高い拡張性
- 信頼性が高い
高速で動作
Go言語の強みは動作の速さにあります。Go言語はコンパイル言語といわれる言語で、PythonやRubyなどの1行ずつ処理をするスクリプト言語と比べて、バイナリファイルを生成する分高速となります。またCやC++など他のコンパイル言語と比べても高速です。
さらに並行処理に言語レベルで対応しているためマルチコアを活用しやすく、処理の高速化に貢献しています。
高い拡張性
後発のプログラミング言語ということもあり、Go言語には高い拡張性があります。Go言語は開発マシンのOSとは違うOSのバイナリも生成可能なクロスコンパイルです。また、ビルドするとどこでも実行可能なシングルバイナリとなるため、実行環境を必要としません。さらにGo言語はAmazonのAWSやIBMのCloud Functionsなどの他のクラウド上でも、同一のコードで動作するよう設計されています。このようにGo言語は環境周りのことをあまり考えずに開発に集中できるので、開発速度が上がる特性があるのです。
信頼性が高い
Go言語は以下の3つの特徴により、高い信頼性を有しています。
- ビルドが厳し目
- 自動フォーマット機能
- ポインタを実装しない
Go言語では曖昧な記述はコンパイル時に弾かれます。コンパイルが厳し目なので、問題が大きくなる前に個人のビルド段階でエラーを発見できるのです。
また秀逸な自動フォーマット機能も特徴です。Go toolのひとつであるGo fmtが公式提供されていることもあり、全GoユーザーがGo fmtを使用しています。Go fmtはユーザーによる個人差を吸収する仕様(インデントの付け方やスペースの入れ方など)なので、コードスタイルを決めることなく、誰が書いても同じ形式になります。そのためコードレビューを本質的な部分に充てられるため、コーディングの精度が上がります。
さらにポインタをあえて排しているため、セキュアを保ちやすいのも魅力です。
Go言語にできること、できないこと
上記の特徴を踏まえ、Go言語の得意分野、不得意分野を解説していきます。
Go言語はWeb分野での使用が多い
Go言語はWebの分野でよく使用されています。すべてがGo言語で作られているWebサービスもあれば、マイクロサービスと呼ばれる一部分をGo言語で作って他の言語で作成したメインの部分にAPIで連携させる、という使われ方も最近では増えてきています。またシンプル・高速という特徴を生かしてAPIサーバーにも選ばれています。
その特性から、Go言語が使われているWebサービスには、著名なものがいくつも挙げられます。
- メルカリ
- CookPad
- Freee
また、GoogleMap、YouTubeなどのGoogleの各種サービスもGo言語が使われています。スタートアップなどの前衛的な環境で活躍したいのであれば、Go言語は習得を目指すべきプログラム言語の候補になるでしょう。
Go言語は組み込み用途には設計されていない
一方、Goは大規模な開発向けに作られたこともあり、組み込み用途には設計されていません。最新のスマホのような高性能端末であれば問題はありません(Goでのスマホアプリも存在します)が、リソースが限られているIoT端末にとって、Go言語は向いているとは言えません。
Go言語のメリット・デメリット>
続いて、Go言語を学習するメリットとデメリットを紹介します。
Go言語のメリット:学習コストが低い(経験者には)
Go言語を学習するメリットは学習コストが低いことです。学習コストが低いにもかかわらず求人数が増えている、平均年収も高い(後述)ということで、Go言語は習得の費用対効果が高い言語と言えるでしょう。
ただ注意点としてまったくのプログラミング未経験者には、Go言語は向きません。フロントで「見えやすい」特徴のあるPythonやRubyなどのプログラミング言語と比較して、Go言語はマイクロサービスやサーバーサイドなど「見えづらい」領域で利用される傾向があります。
言語としては簡単でも活用領域の難易度が高く、結果として挫折する可能性があるので、プログラミング初心者はまずPythonやRuby、PHPなどで開発の流れをひと通り理解したうえでGo言語の習得を目指すのがおすすめです。
Go言語のデメリット:あえて削った機能が多い
プログラミング経験者がGo言語を習得する際も、あえて削られた機能の多さからつまずいてしまうことがあります。
- 継承
- Generics
- 例外処理
- ポインタ
- While文
これら、他の言語で使えたものが使えないというケースがあるのです。
一方、複数あった表記方法を統一して曖昧性をなくす目的であったり、セキュアを保つためであったりなど、機能を削ることで得られるメリットもあります。少しずつ慣れていきましょう。
Go言語の市場での需要【年収高め】
Go言語の市場での需要は、端的に「高収入」「求人数増加傾向」という特徴があります。
Go言語の求人数
Go言語の求人数は少なめながらも、確実に増加傾向にあります。2018年度の「レバテックキャリア」の正社員向け新規求人データでは、Pythonの影に隠れて目立ってこそいませんが増加傾向で、GitHubユーザーによるプログラミング言語のランキングにおいてもトップの増加傾向を示しています。
(出典:benfrederickson.com)
今後習得しておいて間違いのない言語と言えるでしょう。
Go言語の平均年収
Go言語の平均年収は高い傾向にあります。
(出典:ビズリーチ)
冒頭でも紹介したとおり、ビズリーチの「求人検索エンジン『スタンバイ』プログラミング言語別年収ランキング2018」においてGo言語は1位を獲得しました。また、転職・求人情報サイトIndeedにて、「2020年2月現在の求人数(正社員)と推定年収600万円以上の割合」をまとめてみました。
(参考:Indeed)
ランキングの指針が違うので単純比較はできませんが、Go言語プログラマーの年収は比較的高い水準にあるといえるでしょう。
Go言語をオンライン学習サービスでチュートリアル代わりに【プログラミング経験者向け】
(出典:Progate)
Go言語をオンライン学習サービスで学習する方法について紹介します。オンライン学習サービスは初心者向けと考えられがちですが、Go言語に限ってはむしろプログラミング経験者向けです。オンライン学習サービスで既知のプログラミング言語との違いを理解したうえで、実践の中で逐一不明点を調べる方向で学習を進めていきましょう。
おすすめのオンライン学習サービスはWebアプリ上でコーディングが可能なProgate、動画で気軽に学習したいという方にはドットインストールがおすすめです。
Go言語をプログラミングスクールで学習【プログラミング初心者向け】
(出典:G’s ACADEMY)
「プログラミング未経験だけど、スクールでGo言語を習得したい」というのはかなり難しいのが現状です。
方法があるとすれば「Pythonなど他の言語を習得した上でGo言語を学びたい」という前提で侍エンジニア塾に相談するか、G’s ACADEMYのフルタイム総合コースを卒業したうえで受講できる講座「G’s PREMIERE」にてGo言語を学ぶ方法です。
いずれの場合も「Go言語だけを習得したい」というのは難しいかもしれません。
Go言語のインストールは公式からダウンロードもしくはパッケージ管理ソフトで
Go言語のインストールは
- 公式からダウンロード
- パッケージ管理ソフト
の二通りがあります。
すでにパッケージ管理ソフトが入っている場合はパッケージ管理ソフトで、入っていない場合は公式からダウンロードするのがよいでしょう。
公式からダウンロード
Go言語を公式サイトからインストール方法について、今回はWindows10を例に解説します。なお、MacやLinuxでも手順はほぼ同様です。
まずは公式サイトのダウンロードページにアクセスしてMicrosoft Windowsのリンクをクリック、ダウンロードします。
ダウンロードが完了したらファイルをクリックして流れに沿ってインストールすれば完了です。
インストールできたかどうかは、”go version”を入力することで確認可能です。
パッケージ管理ソフト
Go言語をパッケージ管理ソフトでインストールする方法について解説します。ここではChocolateyがインストールされているものとします。
まずは管理者としてコマンドプロンプトを開いて、Chocolateyを更新しましょう。 ”choco upgrade chocolatey”
その後 ”choco install golang” というコマンドを入力して完了です。
インストールできたかどうかは、前述の手順と同様に ”go version” を入力することで確認可能です。
まとめ
Go言語は習得により高水準の年収が期待できる、習得におすすめのプログラム言語です。一方、まっさらなプログラミング初心者には敷居が高い側面もあります。まずはPythonやPHPなどでプログラミングを理解したうえで、Go言語の習得を目指しましょう。