「Go言語を使うと何ができるんだろう」「Go言語を使った実際のサービスが知りたい」と感じていませんか。
最近注目が集まっているプログラミング言語のGo言語。しかし、具体的にどんなことができるのかわからないという方もいるでしょう。
そこで今回は、
• Go言語とは
• Go言語でできること
• Goエンジニアの求人動向・案件動向
という流れで、これからGo言語で開発したいエンジニアに役立つ情報をまとめて解説します。
Go言語のインストール方法やメリット・デメリットについても解説しているので、「すぐにGo言語の学習を始めたい」という方にもおすすめです。
1. Go言語とは
Go言語とは、2009年にGoogle社が開発したプログラミング言語です。
正式名称は「Go」ですが、英単語の「行く」と混同されるため、「Go言語」や「Golang(ゴーラング)」と呼ばれています。
Go言語の特徴は次の通りです。
• 記述がシンプル
• 処理速度が速い
• 安全性が高い
• 並列処理が得意
• 幅広いOSで動作可能
Go言語はC言語をモデルとしており、C言語並みの処理速度を受け継いでいながら、C言語にはないシンプルさを兼ね備えている点が魅力です。
1.1 Go言語でできることの例
Go言語でできることは幅広いですが、例として次の4つをご紹介します。
• Webサーバー構築
• アプリケーション開発
• CLI開発
• API開発
それぞれ詳しくご説明します。
1.1.1 Webサーバー構築
Go言語では、Net/httpパッケージを使用してWebサーバーを簡単に構築できます。
Net/httpパッケージとは、HTTP(WebブラウザとWebサーバーの間でデータをやりとりするための通信規則)を扱うパッケージで、HTTPクライアントとHTTPサーバーを実装するために必要な機能がまとまっているものです。
通常、ほかの言語でWebサーバーを構築する際には、Apatch(アパッチ)というWebサーバーソフトが必要です。しかしGo言語では、Apatchを使わずNet/httpパッケージを使用するだけで、Webサーバーを構築できます。
1.1.2 アプリケーション開発
Go言語は、スマートフォン向けネイティブアプリケーション開発もできます。
モバイル向けのアプリ制作ツールがまとめられた「Go mobile」や「Go Cloud」を活用すれば、コードの書き方を変えることなくスマートフォン用アプリケーション開発が可能です。
iOSとAndroidの両方に対応しており、開発環境を選ばない汎用性の高さが魅力といえます。
1.1.3 CLI開発
Go言語を使えば、CLI開発も可能です。
CLI(コマンドラインツールインターフェース)とは、キーボードによってコマンドを打ち込んで操作するツールのこと。CLIによってアプリケーション開発もできます。
Go言語はOSやバージョン、プラットフォームなどの環境を選ばず開発できるクロスコンパイル機能があり、アプリケーションを開発しやすいです。
CLIで動作するアプリケーション開発にも適しています。
1.1.4 API開発
Go言語では、API開発もできます。
APIとは、「Application Programing Interface(アプリケーションプログラミングインターフェイス)」の略称です。
APIを公開する(連携するための一部の情報を公開する)ことで、外部のソフトウェアから利用しやすくなるため、開発でよく使われます。
Go言語でのAPI開発では、次のようなメリットがあります。
• サーバー移設時に追加開発が不要なことが多い
• 並行処理のコーディングが容易にできる
• 開発者の変更時やメンテナンス時でも対応しやすい
1.2 Go言語とほかの言語の違いは?
Go言語の概要についてお伝えしましたが、ほかのプログラミング言語と比較してどのような違いがあるのでしょうか。
ここでは、「Ruby」「Java」と比較して詳しく解説します。
1.2.1 RubyとGo言語の違い
RubyとGo言語の違いは次の通りです。
• Rubyのほうが文字数が少なく記述がシンプル
• Go言語のほうが複雑な計算処理でのパフォーマンスが高い
Go言語とRuby on Rails(Rubyでよく使われるフレームワーク)の違いについては、のちほどご紹介する実際のサービス例でわかりやすく解説します。
1.2.2 JavaとGo言語の違い
JavaとGo言語の違いは次の通りです。
• Go言語はメモリ圧縮がなくFull GCではない
• Go言語は関数からローカル変数のポインタを返せる
• Go言語は関数を関数のなかに記述できる
• Go言語のほうがコードがコンパクト
• Go言語のほうがコンパイルが速い
Javaと比較して、Go言語のほうが記述が簡単なので学習しやすいです。
1.3 Go言語を実際に使っている企業・サービスの例
Go言語を実際に使っている企業・サービス例として、「Wantedly(ウォンテッドリー)」があります。Wantedlyは、仕事探しや情報収集に特化したビジネスSNSです。
Wantedlyは当初、Ruby on Railsのサーバーですべてのサービスを作っていました。しかし、「Wantedly Chat」、「Wantedly People」など比較的大きめのサービスをリリースする際に変更をおこない、マイクロサービスとして切り出すべきものにはGoを導入するようになったのです。
理由として、次のようなRailsとGoの違いがありました。
Go言語 | Ruby | |
---|---|---|
言語設計 | 静的型付け | 動的型付け |
実行効率 | 高い | 低い |
動作までのリードタイム | 長い | 短い |
動作までに保証できること | 多い | 少ない |
言語仕様 | 簡素 | 豊富 |
Goは静的型付け言語で記述がシンプルです。そのため、コードリーディングやマイクロサービスの変更など、多言語をメインとするプログラマーでも比較的容易に扱えることが利点でした。
さらに、静的型付け言語はGoogleシステムとの相性が良く、Googleが開発したソフトウェア「Protocl Buffers」でマイクロサービスとして適切なものを作りやすいこともありました。
2. Goエンジニアの平均年収と将来性
Goエンジニアの平均年収と将来性について解説します。
Go言語での開発をするエンジニアについて知ることで、今後のキャリアを考える参考になるはずです。
2.1 Goエンジニアの平均年収
プロエンジニアの掲載案件(※筆者調べ)によると、Goを扱うエンジニアの平均年収は960万円~1,200万円でした。月額単価としては80万円~100万円が多くなっています。
GoとTypeScriptの開発経験があるフルスタックエンジニアの場合、最高月額単価は150万円です。Goを扱うエンジニアは、TypeScriptなどほかのスキルや経験があると高年収を得られます。
なお、月額単価の最低値は50万円からで、GoとJavaScriptを使ったアプリケーション開発でした。
2.2 Goエンジニアの求人動向・案件動向
Goエンジニアの求人や案件は国内・世界において増加傾向にあります。
特に近年のIoT開発やビッグデータ解析分野では、Go言語のニーズは年々高まっている状況です。今後あらゆる業界でIoT開発やビッグデータ解析が広がるにつれて、Goの求人も増加するでしょう。
さらに、Go言語に類似する「C言語」「C++」「Python」などの開発言語、「Ruby」「PHP」「JavaScript(TypeScript)」「Perl」などのスクリプト言語も需要が見込まれています。
実際に、プロエンジニアの案件でも「Go/TypeScript」「Go/PHP/Python」のスキルを求められるものが見受けられます。
出典:【Go+TypeScript】フルスタックエンジニア★オンライン学習サービス開発|プロエンジニア
オンライン学習サービスを展開している企業で、新規開発を担当する業務です。月額単価は100万円~150万円となっています。
Go言語とセットでほかの言語を身につけることで、重宝される人材となるはずです。
2.3 Goエンジニアの将来性
Goエンジニアの将来性は高いといえます。
Go言語は技術としての安定性が高く、開発エンジニアの人口も多いです。Google社が開発したことから信頼性もあり、プログラミング言語としての人気が高まっています。
サーバー開発でGo言語を採用する企業は増加しており、今後もさらに需要は高まる見込みです。
また、Go言語の平行処理や処理の優秀さが近年のIT技術と親和性が高いことも、Goエンジニアの将来性の高さの理由となっています。
特にIoT開発やビッグデータ解析の分野が今後さらに伸びると同時に、Go言語の需要もさらに増加するでしょう。
さらに、5Gの普及により、処理速度の向上が求められる時代となることも影響してきそうです。サーバーの処理速度を速めるために、PHPで構築したWebサービスをPHPからGo言語にリプレイスする動きが強まっています。
3. Go言語の学習法
出典:The Go Programming Language
Go言語の学習法として、学習サイトの活用がおすすめです。
ここでは、Go言語の学習に適した学習サイトを5つまとめました。
※スマホからは横スクロールしてご覧下さい。
4. Go言語に関するよくある質問
Go言語に関するよくある質問についてご紹介します。
内容は次の3つです。
• Go言語のインストール方法は?
• Go言語のメリット・デメリットは?
• Go言語を学習すべき人とほかの言語の習得を優先すべき人は?
Go言語についての疑問を解消することで、理解をいっそう深めましょう。
あなたがGo言語を学習すべきかどうか判断するための参考にしてみてください。
4.1 Go言語のインストール方法は?
Go言語の初学者は、クラウド上でまずはGo言語を使ってみましょう。具体的には、Go言語をWebブラウザ上で実行できる「The Go Playground」がおすすめです。インストールが不要で、サイトにアクセスするだけですぐに使い始められます。最初にGo言語に触れるための環境として最適です。
「The Go Playground」にアクセスすると、次のような画面が表示されます。
画面が表示されたら、すぐにコードを書き始められます。さっそくGo言語でコーディングをしてみましょう。気軽なGo学習にもおすすめです。
[Run]ボタンをクリックすると、PlaygroundがGoogleサーバー上でコードをコンパイルして実行し、その結果を表示します。また、[Share]ボタンをクリックすると、コードのリンクを作成可能です。リンクを他人と共有したり、ブックマークして作業を保存したりできます。
実際にGo言語をインストールして使用したい場合は、Go言語の公式サイトからダウンロードしてください。
公式サイトにアクセスしたら、Windows・macOS・LinuxなどOS環境に適したインストーラーをダウンロードします。インストーラーは日本語なので、英語が苦手な方でもスムーズにダウンロードできるでしょう。
表示される指示に沿って手順を進めればインストールが完了します。
4.2 Go言語のメリット・デメリットは?
Go言語のメリットとデメリットについてまとめました。
メリット | ・処理が高速
・並行処理・並列処理に強みを持つ ・マイクロサービス構築に最適 |
---|---|
デメリット | ・Genericsがない
・継承をサポートしない |
Go言語のメリットとして、直接コンパイルできるため処理が高速でメモリ使用も抑えられる点があります。モノリシックなサービスのマイクロサービスへの移行に強みを持ちます。
一方で、記号で囲まれた特定の型をクラスやメソッドに対応づける機能「Generics(ジェネリクス)」がないことがデメリットとしてあります。さらにコードの再利用に役立つ「継承」もサポートされていません。
4.3 Go言語を学習すべき人とほかの言語の習得を優先すべき人は?
Go言語を学習すべき人とほかの言語の習得を優先すべき人について解説します。
「自分はGo言語を学習すべきだろうか」と悩んでいる方は、ぜひ参考にしてください。
4.3.1 Go言語の学習がおすすめの人
Go言語の学習は、RubyやPHPなど動的型付け言語の開発経験を1年程度積んだ人におすすめです。
理由として、次のことが挙げられます。
• 動的型付けの次は静的型付けに進むべき
• Go言語はマイクロサービス方式で開発をおこなうファーストチョイスの言語
プログラミング学習の初期では動的型付け言語で開発経験を積み、その後スキルアップのために静的型付け言語を学ぶことで効果的にキャリアを築けます。
また、Go言語はマイクロサービス方式での開発に適しており、最初に選ぶべき言語となっています。国内のWeb業界ではマイクロサービス方式の開発が増えていく見込みのため、習得しておくといいでしょう。
4.3.2 Go言語以外の学習を優先するのがおすすめの人
開発者としてのキャリアが始まったばかりで、プログラミングの実務経験がほとんどないという人は、RubyやPHPなど動的型付け言語がおすすめです。
動的型付け言語はプログラムの記述量が少なく、簡単にコードが記述できるという特徴があります。プログラミング初心者でも学びやすいです。
いきなり難易度が高いプログラミング言語を選ぶと、途中で挫折してしまうリスクがあります。
「プログラミング学習で最初の言語をどれにしようか迷っている」という方は、Go言語を学習するよりも、学習コストが低い動的型付け言語を選ぶといいでしょう。
5. まとめ
今回は、
• Go言語とは
• Go言語でできること
• Goエンジニアの求人動向・案件動向
という流れを通して、Go言語についてお伝えしました。
Go言語は、比較的新しいプログラミング言語でありながら、優れた性質により高い人気があります。
Go言語の求人や案件は増加傾向にあります。今後さらに需要が高まる言語といえるでしょう。
今回ご紹介した内容を参考に、Go言語でできることや特徴を理解して、今後のキャリアに活かしてくださいね。