Go言語とは、Googleが開発しているプログラミング言語です。日本でも、注目度が高まっています。その一方で、扱えるエンジニア数が絶対的に不足しているプログラミング言語としても知られています。
なお、Go言語(Golang)は俗称で、言語としての正式名称は単なる「Go」です。しかし、今回はプログラミング言語であることを意識してもらうために、敢えてGo言語と表記することにします。
さて、話が戻して、まずはプログラミング言語としてのGo言語の特徴についてご紹介いたしましょう。
Go言語の特徴として押さえておきたいのは、次の三つです。
①マルチパラダイムの次世代汎用言語
②Googleのサービスと親和性が高い
③YouTubeやDockerなど大規模・複雑なWebサービス、プロダクト開発で採用されてきた
一つ目の“マルチパラダイムの次世代汎用言語”についてですが、Go言語はマルチパラダイムプログラミング言語(※)であり、様々な実装に耐えられるようになっています。
※パラダイムとは「プログラムの動作方針」くらいに思ってください。有名なパラダイムとしては「オブジェクト指向プログラミング」や「関数型プログラミング」、「手続き型プログラミング」などがあります。
Go言語の汎用性はパラダイムだけでなく、環境についても言え、Googleが作ったOSであるandroidはもちろん、Windows、Linux、Mac、更にはiOSと、昨今の主要OSすべてで動作します。
実際、「Ivy big number calculator」というGoogleの開発チームがGo言語で作成したCUI(キャラクターユーザーインターフェース)計算機アプリが、android向けのPlayストアだけでなく、iOS機器向けのApp Storeにも公開されています。
二つ目の“Googleのサービスと親和性が高い”は当たり前と言えば、当たり前ですが、Go言語はGoogleが開発、提供しているサービスのほとんどで利用可能です。
特に注目されているのは、Googleがオープンソースで公開している機械学習ライブラリのTensorFlow(テンサーフロー)と、Googleが提供するクラウドサービスであるGoogle Cloud Platform(GCP)の二つです。
機械学習、つまりはAI開発、そしてクラウドと、なにかと注目度が高い領域でGo言語を利用できるというのは、今後のGo言語の展開を考える上でも、重要なポイントかと思います。
ちなみに、Googleの提供しているサービスでGo言語が使えないものとしては、Google App Maker(G Suiteプラットフォーム)が挙げられます。Google App MakerとはGoogle Apps(Googleカレンダーや、Gmailなど)にユーザーが独自で拡張機能を開発することができる便利なサービスです。
残念ながら、Google App Makerでは、実質専用プログラミング言語であるGoogle Apps Script(GAS)を使って開発することになります。
そして、最後の“YouTubeやDockerなど大規模・複雑なWebサービス、プロダクト開発に採用されてきた”ですが、Googleが運営する動画投稿サービスであるYouTubeのサーバーサイドや、仮想化技術の一つであるコンテナのデファクトスタンダードといえるDockerはGo言語で開発されています。
実はGo言語のプログラミング仕様として、“処理も構文もシンプルで効率的”、“並行処理で効率よくタスクを処理していく”、“プログラミング言語自身でセキュアなメモリ管理を行い、開発者が意識せずとも、効率よくリソース管理ができる”という三つの重要方針があります。
この三つの方針は、明らかに「大規模・複雑なWebサービス、プロダクトを、より効率的に実現させる」という目標から生まれたものです。そして、実際に「大規模・複雑なWebサービス、プロダクトを、より効率的に実現させられるプログラミング言語」として、採用されることが多いのです。
次に、Go言語の現状を見ていきましょう。
今回は、求人市場の実態を知る参考値として、求人検索エンジン「スタンバイ」(株式会社ビズリーチ)に掲載された求人情報を分析した、【求人検索エンジン「スタンバイ」調べ】を利用させていただきたいと思います。
求人検索エンジン「スタンバイ」プログラミング言語別年収ランキング2018
(提示年収の中央値ベスト10)
順位 | 言語 |
年収中央値 (万円) |
最大提示年収 (万円) |
求人数 (件) |
1 | Go | 600 | 1,600 | 2,202 |
2 | Scala | 600 | 1,300 | 1,489 |
3 | Python | 575.1 | 1,499 | 9,344 |
4 | Kotlin | 575 | 1,200 | 961 |
5 | TypeScript | 575 | 1,200 | 667 |
6 | R | 574.8 | 1,000 | 220 |
7 | Ruby | 550 | 1,200 | 11,676 |
8 | Swift | 550 | 1,200 | 3,353 |
9 | Perl | 525 | 1,200 | 4,509 |
10 | C | 525 | 1,000 | 9,347 |
年収中央値(つまりは期待平均年収)はScalaと同率一位、最大年収は二番手のPythonと100万円近い差をつけて堂々の一位です。労働市場で圧倒的な地位を占めるプログラミング言語だということがよくわかるかと思います。
理由としては、二つ挙げられます。
一つは冒頭にも書きましたが、注目度が上がって事で企業側のニーズも高まっていますが、エンジニア数がまったく足りていません。需要と供給のバランスが崩れている状態のため、期待平均年収が高い傾向にあります。
ちなみに、どれくらいニーズが急拡大しているかというと、前回の2017年度版ランキング作成時は、「求人数が100件以下のため、その他の言語の一つ」として扱われていたので、1年で22倍も求人数が増えたということになります。
二つ目の理由は、Go言語は、大規模・複雑なWebサービス、プロダクトの開発が得意と紹介しましたが、「大規模・複雑なWebサービス、プロダクトとは、付加価値が高く、高単価が見込める開発案件」とも言えます。
つまり、高単価案件が揃っているのに、応募者も少ないため、さらに高い報酬金額を提示するクライアントが多い、という訳です。
Go言語の将来性、今後の展開ですが、先ほどご紹介した求人数の増加からもお分かりの通り、今現在、まさに飛ぶ鳥を落とす勢いで成長しています。
“Googleとのサービスの親和性が高く”、“大規模・複雑なWebサービス、プロダクト開発で多くの実績を持っており”、“サーバーサイド言語として、確かな地位を築きつつある”ため、非常に将来性のあるプログラミング言語であるのは間違いありません。
ただし、JavaやPythonなどの言語も引き続き人気があります。また、さらには上で紹介した求人情報集計で第二位に入ったScalaのようなJVM(Java仮想マシン)言語も存在感を高めているのは、Go言語の将来性という意味では、少しネガティブな要素かもしれません。
おそらく、Web業界では発展性や効率性からGo言語が好まれる一方で、過去のシステムを保守・拡張することが多いSIer業界では、これまで開発してきたJavaと共存できるJVM言語の方が好意的に受け止められると思われます。
もっとも、得意・不得意があり、「ある分野ではよく使われるが、他の分野ではまったく使われない」というのは、どのプログラミング言語でも起こることなので、あまり気にしなくても良いでしょう。
年収については、エンジニア数が増えたことで需要と供給のバランスが補正され、期待平均年収も下がる可能性はあります。しかし、Go言語のエンジニアの増加(供給)に対して、企業側のニーズの拡大(需要)が上回る状況が今後も続くと推測されるため、当面は、現在の水準を維持するものと思われます。
何度もお伝えしたことですが、IT業界の巨人Googleが開発し、大規模・複雑なWebサービス、プロダクト開発で多くの実績を持っているのがGo言語です。ベテランエンジニアの中にはGo言語のシンプルさを嫌う人が多いのも事実ですが、着実に利用シーンが拡大しています。
日本でもWeb系IT企業を中心に採用が増えており、十分、将来性が期待できるプログラミング言語です。
まだまだ日本語の書籍やインターネット情報が少なく、独力でGo言語を学ぶのはやや難しいかもしれません。しかし、すでにWeb系で活躍している方、今後Web系で活躍したい方には、ぜひ習得を目指していただきたいプログラミング言語です。