2019年、エンジニアが学びたいプログラミング言語ランキングでも上位にランクインしたGo言語。近年急成長したプログラミング言語のひとつであり、Googleが推している言語としても注目されています。
本記事では、Go言語の特徴や得意とする分野などについて、わかりやすく解説します。
目次
1.1.1 実行速度が速い
1.1.2 並列処理に強い
1.1.3 拡張性(スケーラビリティ)が高い
1.1.4 クロスプラットフォーム対応
1.1.5 消費リソースが少ない
1.1.6 シンプルな言語構造
1.1.7 誰が書いたコードでも読みやすい
2. 2019年 学びたいプログラミング言語、トップ3入り!
3.1 マイクロサービスの用途での採用
3.2 APIサーバー開発
3.3 Webアプリケーション
3.4 Paas
3.5 コンテナ
1. Go言語とは
Go(ゴー)言語は、「Go」や「golang」とも呼ばれています。
2009年にGoogleが開発したオープンソースの静的型付プログラミング言語であり、Google社内におけるソフトウェア開発の生産性や拡張性のために開発されました(参照記事:Go at Google)
Goの公式マスコットキャラクター「Gopher」くん ホリネズミがモチーフのようです。
1.1 Go言語の特徴
Go言語は、シンプルで信頼性があり、無駄のない有能なソフトウェア開発を簡単に実現できるように設計されています。
ゆえに、実用性があり、効率よく作業を行うことが可能なため、Go言語は「軽量・高速・シンプル」なプログラミング言語として広く知られています。
それではGo言語の主な特徴をみていきましょう。
1.1.1 実行速度が速い
Go言語は直接ネイティブコード(機械語)に変換することにより高速でコンパイルできます。
また、コードの種類が限定的であるため、内部処理も簡易化され、複数の処理を同時にこなせるような仕様になっていることからも、より軽量・高速での処理が実行可能です。
1.1.2 並列処理に強い
大量のデータ処理には並列処理が必要となりますが、Go言語は並列処理を得意としており、goroutineやチャネルなどの機能を使うことでCPUへの負荷などを気にせずに処理を進められます。
Go言語は、PHPが苦手とする並列処理やエラーチェックが得意なことなどから、PHPに代わる言語として使用されるケースも増えています。
1.1.3 拡張性(スケーラビリティ)が高い
Go言語は、小さな機能を必要に応じて複数組み合わせることで高い機能性を実現していくため、拡張性に富んでいます。
1.1.4 クロスプラットフォーム対応
Go言語は、"クロスコンパイル" という、"ソースコードを元に、開発しているOSとは異なる環境向けに実行可能なコードを生成すること" が可能であるため、OSやソフトウェアが異なるシステム上でも実行できます。
1.1.5 消費リソースが少ない
リソースのコストパフォーマンスが非常に良いと言われています。
例えば、Javaと同様に処理は高速ですが、同じ処理を実行しても使用するメモリはJavaの30分の1ですみます。
1.1.6 シンプルな言語構造
複雑な機能は削られており至ってシンプルな言語構造になっています。言語をシンプルにすることで、高速コンパイルの実現やミスの軽減に役立っています。
1.1.7 誰が書いたコードでも読みやすい
コーディング規約に沿って、ソースコードを自動的に整形してくれる go fmt があり、これを利用することで、ソースコードの見た目が整い非常に見やすくなります。また、書き方のルールが厳格なので、記述に迷うことなく決まった書き方で開発が進められます。
2. 2019年 学びたいプログラミング言語トップ3入り!
情報技術やプログラミング技術に関するエンジニアのためのナレッジコミュニティであるStackOverflowの調査によると、「2019年にエンジニアが学びたいプログラミング言語ランキング」において、Go言語は3位にランクインしています。
(参照元:Developer Survey Results 2019 "Most Loved, Dreaded, and Wanted")
Go言語は開発されてから約10年。近年Go関連のコミュニティなども増え、エンジニアからも注目の集まる言語として浮上してきています。
比較的新しい言語で、現在も発展中ではありますが、Go言語最大の特徴である「Simplicity(簡潔さ)」を貫き通しているため、特徴をどんどん追加するような複雑な進化を続けている訳ではありません。
Go言語は実は複雑であっても、常に簡潔に感じられるように、簡潔に使えるようにデザインされています。
そんなGo言語に対するエンジニアの関心度の高さについては下記も参照してみてください。
関連記事:【2019年版】エンジニアが学習すべきプログラミング言語ベスト3
次章では、Go言語の特徴を生かして、現在どんな分野で広く利用され重宝されているのか、またGo言語の実績についても解説していきます。
3. Go言語の強みが生かされている分野と実績
Go言語が得意とする分野やGo言語の実績について説明します。
3.1 マイクロサービスの用途での採用
マイクロサービスとは、複数の独立した小さいサービスをAPIを使って連携させて、ひとつのサービスを作る手法です。
小規模サービスを結合させることで、システムの複雑さから解放され、変化に強いシステムを作ることが可能になります。
マイクロサービスにおいて、Go言語のシンプルな言語仕様と拡張性の高さが生かせます。
【Go言語 実績例】
メルカリ
Freee
クックパッド
GCP(Google Cloud Platform)のGKE(Google Kubernetes Engine)を使ったマイクロサービス
3.2 APIサーバー開発
APIサーバーはリクエストに対して様々な目的に合わせた汎用性のあるデータを返すサーバーです。
Go言語の特徴である、バックエンドやインフラまわりでの強さ、効率よい開発を行い実行速度も速いという点を生かして、高速なAPIサーバー開発で多用されています。
【Go言語 実績例】
Gunosy
DeNA
3.3 Webアプリケーション
Webアプリケーション開発においては、Go言語の高速・軽量・並列処理に強い点などが生かされています。
AndroidやiPhoneなどモバイル向けパッケージ”Go mobile”を利用してモバイルアプリケーションなども簡単に作ることができます。
【Go言語 実績例】
Kyash(キャッシュレスのウォレットアプリ開発)
サイバーエージェント
エブリー(料理動画サービス)
3.4 Paas
Paas(パース)とは、”Platform as a Service”の略です。
サービスとしてのプラットフォームを意味し、インフラやOSなどのプラットフォームを提供するサービスです。
Go言語はGoogleが推薦している言語ということもあり、GCP(Google Cloud Platform)との相性が良く、GAE(Google App Engine)のPaasサービスに利用されています。
【Go言語 実績例】
GAE(Google App Engine)
Flynn(DockerのPaas環境を構築するツール)
3.5 コンテナ
コンテナ技術とは、”コンテナ型仮想化”と呼ばれる、稼働中のOS環境上に、他と隔離された新しいOS実行環境を用意し、個別に独立したサーバーとして使用するための技術です。
【Go言語 実績例】
Docker
Kubernetes
4. Go入門者必見!Go言語の学習方法
文法が理解しやすく機能がシンプルであるGo言語は、JavaやC++などと同じ静的型付言語ですが、それらの学習に比べると比較的学びやすいといわれています。
この章では、Go言語を初めて学ぶ人に向けた学習方法を解説します。
4.1 オンライン上のサイトで学ぶ!
Go言語をオンライン上で学べるサイトは複数ありますが、中には情報が古いものもあります。
開発が止まっているツールや新規追加されたコマンドや機能などもあるため、入門者にはその見分けをつけることは難しいため、なるべく最新バージョンに近い内容のもので学ぶようにすることをおすすめします。
◆ ドットインストール:3分動画で徹底解説!
(Go言語入門URL:
https://dotinstall.com/lessons/basic_golang)
ドットインストールは様々なプログラミング言語を動画レッスンで学べるプログラミング学習サイトです。
Go言語入門コースは全24レッスン。テーマごとに3分程度の動画によるレッスンを視聴できます。短めの動画レッスンなので飽きることなく学習を続けられ、苦手なテーマは繰り返し視聴して復習するとよいでしょう。
変数や定数などの基礎的な部分の説明からWebサーバーの作成に至る応用部分まで、幅広くGo言語について学べます。
料金:Go言語入門コース(24レッスン)の#1~5までは無料
以降は有料登録 (プレミアムサービス月額980円 ※2019/10/1以降は月額1080円)が必要です。
◆ A Tour of Go:Go言語基礎文法最速マスター!
(A Tour of Go:
https://go-tour-jp.appspot.com/welcome/1)
A Tour of Goでは、Go言語のチュートリアルをサイト上で実行しながら学べます。
上記の画像(A Tour of Go~基本(For))を見ると、画面左側で文法や使い方に関する説明があります。
そして画面右側でコードを実際に書いたりRunボタンで実行させながら結果を確認していくという流れで、入門者でもわかりやすくGo言語の文法をマスターしていくことができます。
また、各テーマごとに、Exercise(演習問題)が用意されており、学んだことを復習しながら理解度を試せる仕組みになっています。
4.2 Go関連書籍で学ぶ!
プログラミング言語を書籍で学ぶ際には、Go言語に限らず言えることですが、なるべく最新バージョンに対応しているもの、またはそれに近いものを選ぶようにしましょう。
新しい発行年月日のもの、発行年月が古いものは改訂版、もしくは出版社のWebサイトなどでアップデート情報が確認できるものがおすすめです。
JavaやPythonなどの他のプログラミング言語のものと比較すると、Go関連書籍はまだそこまで多く出版されていませんので選択肢も少なく選びやすいかもしれません。
著者:松尾 愛賀
出版社:翔泳社
出版日:2016年4月15日
価格:2,980円+税
ページ数:432ページ
最新バージョンGo1.6に対応。"基本構文からやさしく解説あり"とあるように、基本的な構文から特徴的な機能や各種パッケージについての詳しい解説があります。
コード例を挙げながら、C、Javaなどの他のプログラミング言語と比較しながらの説明が多くみられます。
これまでに何らかのプログラミング言語を経験した人が読むと、Go言語の特徴や文法などをより深く理解できるかもしれません。
逆に言えば、プログラミング言語を全くの未経験という人にとっては少しハードルの高い内容になっています。
【目次】
はじめに
Chapter 1:開発環境 ~ Windows・OS X・LinuxへのGoのインストール
Chapter 2:プログラムの構成と実行 ~ Goプログラムの書き方とビルド・実行・パッケージ作成
Chapter 3:言語の基本 ~変数・型・演算子・関数・定数・スコープ・制御構文・ゴルーチン
Chapter 4:参照型 ~スライス・マップ・チャネル
Chapter 5:構造体とインターフェース ~ポインタ・構造体・メソッド・タグ・インターフェース
Chapter 6:Goのツール ~さまざまなGoコマンド
Chapter 7:Goのパッケージ ~よく使われるパッケージとコーディング例
巻末付録:Go標準ライブラリオーバービュー
著者:松木雅幸,mattn,藤原俊一郎,中島大一,上田拓也,牧大輔,鈴木健太
出版社:技術評論社
出版日:2019年8月1日
価格:2,180円+税
ページ数:184ページ
2016年に刊行された「みんなのGo言語」の改訂版であり、最新バージョンGo1.6に対応しています。
Go言語経験者である7名により書き下ろされており、実践に役立つ内容が盛り込まれています。
Go言語の文法を体系的に学ぶという内容ではなく、開発時に使える便利なツールや外部ライブラリ、テストのやり方などについて詳しく説明がされています。
実際に開発を進める中で生じてくる様々な疑問をより早く解決してくれる方法やノウハウが豊富です。
一通りの基礎的な文法を学んだ上で本書を読み進めると、Go言語の特徴をより深く理解できるでしょう。
【目次】
第1章 Goによるチーム開発のはじめ方とコードを書く上での心得(松木雅幸)
第2章 マルチプラットフォームで動作する社内ツールのつくり方(mattn)
第3章 実用的なアプリケーションを作るために(藤原俊一郎)
第4章 コマンドラインツールを作る(中島大一/上田拓也)
第5章 The Dark Arts Of Reflection(牧 大輔)
第6章 Goのテストに関するツールセット(鈴木健太)
第7章 データベースの扱い方(mattn)
5. まとめ
Go言語は、近年人気が上がり学ぶ人も増え、Go言語案件の求人も増えています。
また、2018年にはGo言語チームとGoogleが、オープンソースの「Go Cloud」を発表しました。
Go Cloudは、クラウドの様々な機能を共通のAPIで利用できるようにし、Go言語のソースコードはそのままでクラウドアプリケーションの開発を容易にすることを目指しています。
このようにクラウドアプリケーションにおけるGo言語の可能性にも期待がかかっています。
Go言語は、現在はもちろん、今後も様々な分野での活用が期待されていること、そして、初学者にも学びやすいことからも、これから新たに習得していく価値のあるプログラミング言語だと言えるでしょう。