Go言語の導入事例が分かる記事
・インフラにも開発組織にも通じるGunosyの「スケールするアーキテクチャー」とは
・メルカリ、タップルが「コロナ禍の技術的チャレンジ」をプレゼン!大規模なシステム移行とスピーディーな機能改修の裏側を明かす
・「先輩、同期とのレベル差に愕然」プログラミング経験ゼロ・文系出身エンジニアの私がコンプレックスを克服できた理由
エンジニアにとって新しい知識の習得は必要不可欠です。せっかく勉強をするなら、将来性の高い言語を学びたいものですよね。
そこで今回は、日本でも注目度が高まりつつあるGo言語(golang)について徹底解説。「名前は知っているけどどんな言語?」「何ができるの?」など、疑問をクリアにしていきましょう。これから新しいプログラミング言語を学びたいと思っている人は要チェックです。
Go言語(golang)は、Googleによって開発されたオープンソースのプログラミング言語です。公式サイトで「Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.(Goはシンプルで信頼性が高く、効率的なソフトウエアを簡単に構築できるオープンソースのプログラミング言語です)」と紹介されているとおり、簡単な記述でコーディングできるのがGo言語の特徴です。
Go言語は比較的新しいプログラミング言語でありながら、世界的な動画配信サービスであるYouTubeのサーバー構築や有名Webアプリの開発などにも使用されており、人気の高い言語として世界中で愛されています。
Go言語が開発された2009年(リリースは2012年)当時、コンピューターの処理速度の向上やマルチコアコンピューターの登場といった技術の進歩にともない、「コードの複雑化」「生産効率の低下」が問題視されていました。そこで、より「簡単」で「効率的」に開発することを目的として作られたのがGo言語です。
Go言語の開発にはC言語を設計した世界的なエンジニアであるケン・トンプソンやUNIXの開発者として知られるロブ・パイクなどが関わっており、C言語と同様の「処理の速さ」とC言語にはない「シンプルさ」が特徴です。
しかしGo言語が開発された当初は、「既存の言語で十分」「将来性が不透明」などといった理由からあまり普及が進みませんでした。その後Go言語はバージョンアップを繰り返し、Androidアプリの開発にGo言語が使えるようになったのを皮切りに、またたく間に有名IT企業で導入されるようになりました。
日本ではあまりメジャーではないと思われがちなGo言語ですが、2020年に米・HackerRank社が発表した「エンジニアが学びたいプログラミング言語ランキング」では1位を獲得。また、2020年に発表されたPYPLのデータではGo言語の検索頻度が急上昇しており、多くのエンジニアから注目されていることが分かります。
後ほど詳しく説明しますが、Go言語は「導入しやすい言語」という特徴があります。日本でも既にメルカリやピクシブ、Gunosy、クックパッド、ぐるなびなどの有名企業がGo言語の導入を進めており、今後さらに需要が高まっていくことが予想されています。
前述したとおり、Go言語は「コードをシンプルにし、生産性を上げること」を目的として開発されました。そのため、例えば繰り返し処理を行う命令文はfor文のみだったり、変数宣言において型を省略することができたりと、Go言語ならではの特徴がたくさんあります。
またGo言語はコードに統一感があるため可読性が高いのが魅力ですが、一方で他の言語に比べて機能が最小限だというデメリットもあります。例えば、JavaやScala、C#などの言語には備わっている例外処理やPythonやC++にはできる継承がGo言語にはできません。
一方で、Go言語はJavaやC言語と構文が似ているため、これらの言語を既に習得している人はGo言語をスピーディーに習得することができるという特徴もあります。
最も簡単にGo言語をインストールする方法は、公式サイトからのダウンロードです。Go言語はLinux、Mac、WindowsのOSで利用可能なので公式サイトのダウンロードページから自分が使用しているOSに合ったファイルをダウンロードしてください。ダウンロードしたファイルを開くと表示されるダイアログに従いインストールが終わったら、正しくインストールされたかを確認しましょう。
正しくインストールできたかを確認するには、コマンドプロンプトを起動し、「go version」と入力・実行してください。ダウンロードしたファイル名が表示されれば正しくインストールされています。
世界最大級の動画共有プラットフォームであるYouTubeや日本でもメジャーなSNSツールであるLINEなど有名企業に導入され、日本でも徐々に人気が高まっているGo言語。さまざまな場面で導入が進むGo言語は「汎用的なプログラミング言語」の代表格とされています。それではGo言語ができることを具体的にチェックしていきましょう。
・Googleサービスとの親和性が高い
・Linux、Mac、Windowsなど多くのOSに対応
・大規模で高負荷なサービスの実装も得意
以上の理由から、Go言語はWebサーバー・Webサービスの構築に向いており、特にWebメディアやショッピングサイトなど、自社でプラットフォームを持っている企業で多く導入されています。またGo言語は比較的新しい言語ということもあり、新しい技術の導入が盛んなインターネット・Web業界で取り入れられることが多い言語です。
Go言語はエラーの検出性が高いため改修がしやすく、スマートフォン向けのアプリ開発にも向いている言語です。「Go mobile」「Go Cloud」などのツールやWAF(Web Application Framework)を使えば、Web・アプリ用とコードを書き換える必要がなく、手軽にスマートフォンアプリの開発ができます。Androidはもちろん、iOSにも対応しているのも人気の理由です。
Go言語にはロボティクス・IoTフレームワーク「Gobot」が公開されており、ドローンのような高度な組み込み開発にも利用可能です。またGobotにはネットワーク上のデバイスや複数のデバイス間で相互通信できる機能があるため、外出先から遠隔操作したり、センサーが感知した情報を他デバイスに伝えたりするIoT開発にも使用しやすいという特徴があります。
CLI(Command Line Interface)とは、インターフェースの一つで、コンピューター・ソフトウエアとのやり取りを文字だけでおこなう方式のことを指します。Go言語はクロスコンパイル機能があるため、OSやプラットフォームなどによる制約がないことからCLIで動作するアプリケーション開発にも向いているといわれています。
API(Application Programing Interface)とは、ソフトウエアの機能や情報を外部と共有できるインターフェースのことを指します。Go言語は「環境に依存しない」「速度が速い」「コードがシンプル」といった理由から、さまざまなAPIサーバー開発で利用されています。
Go言語の導入事例が分かる記事
・インフラにも開発組織にも通じるGunosyの「スケールするアーキテクチャー」とは
・メルカリ、タップルが「コロナ禍の技術的チャレンジ」をプレゼン!大規模なシステム移行とスピーディーな機能改修の裏側を明かす
・「先輩、同期とのレベル差に愕然」プログラミング経験ゼロ・文系出身エンジニアの私がコンプレックスを克服できた理由
Go言語は、それまでの言語と比較すると「生産効率の良さ」や「コードのシンプルさ」が強みとされています。一方で、コードのシンプルさを追求するがゆえに生まれたデメリットもあります。Go言語の具体的なメリット・デメリットを一つずつ見ていきましょう。
これまでも何度か述べているとおり、Go言語はコードがシンプルで文法が分かりやすいため、初心者でも理解しやすいのが特徴です。記述のルールが厳密に決まっているのも初心者にはうれしいポイントですね。また、Go言語は構文が似ているJavaやC言語を習得している人にもなじみやすい言語でもあります。
Go言語は直接機械語に変換できるため、他言語に比べてコンパイルが速いのも魅力の一つです。ちなみに、同じコンパイラ言語であるJavaなどは一度中間言語を経て機械語に変換する二段階方式ですので、Go言語の速度がいかに速いかが分かりますね。
Go言語はコードがシンプルなので、複数のエンジニアが開発にかかわっても記述の仕方がぶれにくく、ミスが起きにくい仕様となっています。またGo言語にはエラーが発生しやすい「ポインタ演算」の機能がそもそも備わっていないため、メモリの安全性が高いのもメリットの一つ。Go言語は他の言語に比べて機能が少ない分、扱いやすく安全性が高いという特徴があります。
Go言語には並列処理や並行処理が備わっているため、CPUを効率的に使って処理速度を高めたり、大量のデータをCPUに負担をかけることなく処理したりできます。そのため主にWebサービス開発の現場では、並行処理が苦手なPHPに代わり、Go言語が活躍することが増えてきているようです。
システム開発を行う時に、汎用的に使うプログラムをまとめたものをライブラリといいます。Go言語にはライブラリが豊富に用意されており、開発効率の向上やコードのシンプル化に役立っているのです。
新しい言語すべてにいえるデメリットではありますが、Go言語のデメリットは情報量が少ないことです。他の古い言語と比べると国内での導入例や書籍・ネットの情報も少ないため、これから勉強をしたい人にとっては大きなマイナスポイントといえるでしょう。
Go言語がコードをシンプルにするために切り捨てた機能の一つがGenericsです。Go言語はメモリを安全に管理するために、あらかじめメモリの値の型を宣言しなければならないため、Genericsは使用できません。ちなみに、「Go言語にもGenericsを導入すべき」という議論は以前からあり、今後導入される動きもあるようです。
JavaやC++などのオブジェクト指向の言語には「継承」という機能がありますが、Go言語は継承はできません。そもそも、Go言語はオブジェクト指向的に使用されますが、実はGoogleによって「Go言語はオブジェクト言語である」と明言されているわけではありません。そのため、オブジェクト指向の考え方でGo言語でプログラミングをしようとすると戸惑うことが多いのです。
Go言語は、設計の段階で想定されていない問題を「例外」として処理する設定ができません。この理由は、Go言語がコードのシンプルさを重視しているからです。技術者の中には「そもそも例外は基本的に書かないことが理想」としている人も一定数いるため、Go言語に例外処理がないことをデメリットと感じていない人も多いかもしれませんね。
Go言語はコードのシンプルさなどの理由から、初心者でも理解しやすい言語ですが、いざGo言語を勉強しようとしても教材や情報が少ないため、「どう勉強すればいいか分からない」という人が多いかもしれません。Go言語を学習する際におすすめの方法ついて詳しく説明しますので、ぜひ参考にしてみてください。
独学でGo言語を学ぶなら、書籍で学ぶのが一般的です。当たり前ですが、書籍を選ぶ時は学びたい内容に合った書籍を選びましょう。特に初心者は薄めの本を選び、Go言語についてざっくりと理解するところから始めるのがおすすめです。またGo言語は現在も頻繁にバージョンアップしています。書籍によってはGo言語のバージョンアップに合わせて、版数を重ねていることもありますので、中古などの古い書籍ではなく最新の書籍を購入して勉強しましょう。
初心者がGo言語を独学で学ぶなら、公式サイトのチュートリアルを使う方法もあります。チュートリアルは、Go言語について体系的に学べるプログラムになっており、無料で使用できるので「まずはGo言語に触れてみたい」という人や「独学でGo言語を学びたいけど、なるべくお金をかけたくない」という人におすすめです。日本語訳されたページも公開されていますよ。
数は少ないものの、Go言語を学ぶにはスクールに通う方法もあります。スクールであれば、分からないことを講師に質問しながら学べるため、IT未経験の人や「1人ではなかなか勉強が続かない」という人におすすめです。書籍で学ぶ場合と比較すると、スクールなら常に最新の情報が学べるという利点もありますよ。
先述したとおり、Go言語には「コードがシンプル」「速度が速い」「大規模・高負荷なシステム構築も得意」などのメリットから、さまざまな企業で導入が進んでいます。一方で、まだ日本ではメジャーではない点や、JavaやPHPなどと比較すると求人数の少なさも目立ちます。今回はそもそもGoエンジニアに需要はあるのか、Goエンジニアの年収や未経験からチャレンジできるのか……などあらゆる角度から解説します。
結論からいうと、現時点でのGoエンジニアの需要はとても高く、将来性も期待できます。その理由は大きく二つあります。一つ目はGo言語を使った開発はエラーが発生しにくいから。これまで何度も述べているとおり、Go言語はコードがシンプルなので複数のエンジニアが開発にかかわってもミスが発生しにくいという特徴があります。つまり、Go言語は小規模な開発はもちろん大規模な開発にも対応できるという点から、さまざまな企業がGo言語の導入を検討しているのです。
Goエンジニアの需要や将来性が高い二つ目の理由は、Go言語はマルチプラットフォームに対応しており、あらゆる開発が得意だから。特にWebサーバーやWebサービス、アプリケーション開発の現場では既にGo言語の導入が進められています。
実際に、Goエンジニアの求人数の推移を見てみると、2020年12月には1245件だったのが2021年6月には2043件に増加。半年で1.6倍になっており、右肩上がりのグラフからも分かるように今後さらに増加していくことが見込まれています。
2018年に求人検索エンジン『スタンバイ』が発表したデータによると、Goエンジニアの年収中央値は600万円、最大1600万円となっており、年収ランキングでは他言語をおさえて1位を獲得しています。最大年収が2位のPythonと比較すると約100万円の差があることからも、Goエンジニアの年収が高いことが分かりますね。
Goエンジニアの年収が高い理由は、高いニーズに対してエンジニア数が少ないからです。これからGoエンジニアを目指したい人や、高年収を目指したい人には大きなチャンスといえますね。
Go言語は初心者におすすめの言語です。その理由は、コードがシンプルかつルールが厳密に決められているため、初心者にも理解しやすいからです。一方で、Go言語にはコンパイルの面倒くささや情報の少なさといったデメリットもあります。そのため「気軽にプログラミングに触れてみたい」「簡単にプログラミング言語を習得したい」という人よりも、今後「需要の高まる分野の技術を身につけたい」という人に向いている言語といえるでしょう。
Goエンジニアの求人の中でも、特に求人数が増えているのがWebサービスのサーバーサイドエンジニアです。Goエンジニアの経験がなくても採用の可能性があるため、まずはサーバーサイドエンジニアとして実務経験を積むのがおすすめです。
世界最大のIT企業であるGoogleが開発し、注目度・将来性ともにかなり高いGo言語。世界はもちろん、日本でもあらゆる分野で導入が始まっており、プログラミング初心者が勉強を始めるなら今がチャンスです。エンジニアとしてのキャリアをさらに高めたい人は、ぜひ習得を目指してみてはいかがでしょうか?
文/赤池沙希
NEW!
NEW!
NEW!
タグ