
Go言語を学ぼうと思っています。
Googleが開発したプログラミング言語で、 比較的新しい部類に入ると聞きました。
具体的にはGo言語で何ができるのでしょうか。 あと、学習しやすいのかどうかも知りたいです。
今回はこのような疑問に答えていきます。
Go言語は2009年に開発された新しいプログラミング言語です。 処理の高速性やクラウドとの相性の良さから、 ここ数年で注目されるようになりました。 ですがGo言語の良さがまだあまり広がっていないようです。
そこでこの記事では、Go言語でできることや 特徴を入門者向けにまとめています。
Go言語とは

Go言語は2009年に米Google社が開発した
コンパイル型のプログラミング言語です。
「Go」、「Go言語」、「Golang」といろいろ呼び方があり、
ここでは「Go言語」と呼びます。
10年ほどの歴史ですが、
プログラミング言語としては新しい部類に入り、
ここ数年で急速に人気が高まっています。
シンプルでわかりやすい構文が特徴で、 初心者でも習得しやすいプログラミング言語です。 コードを記述する上での制約が多くあり、 コンパイル時に厳密にエラーチェックが行われます。 その分エラーが起こりにくく、安定した品質のソフトウェアができるため、 複数人数が関わる大きなプロジェクト用の開発にも向いています。
Go言語でできること
できること①:Webサービス・Webアプリケーション

Webサービス・Webアプリケーションの分野では、
主にRuby、PHP、
Javaといったプログラミング言語が使われています。
しかし最近ではWebアプリの開発にGo言語を採用する企業が増えています。
Go言語の高速な処理スピード、並行処理、シンプルな言語仕様、
複数開発に向いている等の特徴が評価され、
アメリカだけでなく日本の企業でもGo言語の評価が高まっています。
多くの人が見ているYoutubeもGo言語を使って開発。 他にはブログサービスのはてな、フリマアプリのメルカリ、 ストレージサービスのDropbox、ニュースアプリのグノシー などでもサービスの一部で使用されています。
できること②:Webサーバー

Go言語はWebアプリケーションだけでなく、
Webサーバーの構築もできます。
net/httpという標準パッケージを使うことで、
簡単にWebサーバーが構築可能です。
Webサービスだけなく、Webサービスが動くWebサーバーまでも
構築できる汎用性の高さもGo言語の魅力と言えます。
オンラインゲームなどでサーバーが必要となる場面で サーバーが簡単に構築できるGo言語は便利です。 そして高速処理、並列処理に強いので、 これからGo言語を採用する会社が増えるのは容易に想像できます。
できること③:モバイルアプリケーション

スマホのアプリケーション開発用言語と言えば、
iOSならSwift、AndroidならJavaかKotlinが有名ですが、
Go言語でも開発できます。
「Go Mobile」というパッケージを使うことで、
iPhone、Android用のネイティブアプリケーションを
作ることが可能です。
サンプルとして
Go言語の開発チーム作った電卓アプリ
「Ivy big number calculator」
が公開されています。
名前の通り大きな桁数でも計算できる電卓アプリで、
ソースも公開されてるので興味のある方は参考にしてみて下さい。
できること④:コマンドラインアプリケーション

コマンドラインアプリケーションとは、
コマンドラインインターフェイス(CLI)で動作するアプリです。
コマンドラインインターフェイス(CLI)とは、
キーボードによってコマンドを打ち込む画面です。
いわゆる「黒い画面」のことで、
キャラクターユーザーインターフェイス(CUI)と同じ意味です。
Go言語はコマンドラインアプリケーションの作成にも向いています。 というのも、PythonやRubyなどのスクリプト言語で作成したアプリケーションの場合、 自分のマシン上にプログラムの実行環境(インタープリタ) を用意する必要があります。 その場合、それぞれのマシン上に用意した実行環境の違いによって、 互換性や依存関係の問題が起きる場合があります。
しかしGo言語の場合は、アプリケーションの実行ファイル(バイナリ) だけで動くため、実行環境を用意する必要がありません。 Go言語が持つクロスコンパイル機能によって、それぞれのマシン環境に適した 実行ファイルを作成してくれます。 これにより互換性や依存関係の問題が発生することなく使用できます。
コマンドラインアプリケーションの例として 「Hugo」 という「静的サイトジェネレーター」があります。 Rubyなどの他のプログラミング言語で作った 「静的サイトジェネレーター」と比較して、 超高速でサイト作成ができるため人気のあるツールです。
できること⑤:PaaS環境でのGo言語を使った開発
現在、PaaS(Platform as a Service)環境においてGo言語が活躍しています。
PaaS(パース)とは直訳すればサービスとしてのプラットフォームです。 少し言い換えると、インターネットを介してプラットフォームを提供する サービスです。 プラットフォームとはハードウェアからOS、ミドルウェアまで整っている サーバー環境のことを言います。
有名な3つのPaaSは次の通りで、 いずれのPaaSもGo言語での開発ができます。
- Googleの「Google App Engine」
- Amazonの「Amazon Web Services(AWS)」
- Microsoftの「Microsoft Azure」
今は自前でサーバーを購入するよりも、 PaaSを利用してサービスを構築する企業が増えています。 PaaS環境でのGo言語を利用した案件も増えることが予想されます。
Go言語の特徴
シンプルでわかりやすい記述
Go言語は記述方法がシンプルで、 コードを見ても分かりやすいようになっています。 そのため、プログラミング初心者でもマスターしやすいプログラミング言語です。
通常なら機能を増やす方向へと進みがちですが、
Go言語は機能を削ることを意識しています。
例えば「繰り返し処理」を行う場合、
通常はfor文とwhile文があります。
ですがGo言語はfor文しかありません。
while文を削ることで、コードに統一性を持たせようとしています。
コードに統一性があれば、 複数人数で開発を行う 大規模プロジェクトでも採用しやすいプログラミング言語になります。 このようなスケーラビリティも意識している言語です。
コンパイルと実行速度が高速

Go言語はコンパイル言語ですから、 その処理速度は速いのはもちろんですが、 コンパイル自体も速いのが特徴です。
処理スピードはC言語やC#、Rustといった
高速言語とそれほど変わりなく、
PythonやJavaScriptなどのインタプリタ言語よりは圧倒的に速いと言えます。
(参考記事: 「Rust」言語はCよりも遅いのか、研究者がベンチマーク結果を解説)
さらにクロスコンパイルが可能なのも大きな特徴です。
クロスコンパイルとは、
開発しいているマシン環境とは異なる環境(OS)でも動作する
実行ファイル(バイナリ)を作成することです。
例えば、Windowsで開発・コンパイルした時に、MacやLinux用の
実行ファイル(バイナリ)も生成できます。
初心者におすすめできる
Go言語は2009年に開発された比較的新しいプログラミング言語ですが、 ここ数年で注目度が高まっています。
企業でも、サイバーエージェント、メルカリ、Dropbox、ドワンゴなど
多くの企業がシステムの一部で採用し始めています。
Googleが開発しているプログラミング言語ですから、
今後大きく飛躍する可能性があります。
さらに、プログラミング言語別収入ランキングでは Go言語が第一位になっています。 エンジニアの需要はあるけど、 使いこなせる人材が少ないので高収入が期待できます。
初心者にも理解しやすい言語仕様となっていますから、 これからプログラミングを始める初心者の方にも おすすめできるプログラミング言語です。