コラム29.  :Go言語

Googleが開発した新しい言語

Googleは、かつては検索エンジンのみの会社でしたが、その後動画配信や自動車の自動運転など、様々な領域の技術にチャレンジしています。そんなチャレンジの一つとして、新しいプログラミング言語の開発があります。

「Go」言語は、Googleによって開発され、2009年に発表された全く新しい言語で、設計にロブ・パイク、ケン・トンプソンらが関わっています。新しいであるのにも関わらず、ここ数年で急速に普及し、有名なところではGunocyというニュースまとめサービスがGoで作られています。

このように、新しい言語がこういった商用サービスに用いられるようになるというのは、非常にまれなことです。こういったことから、Go言語がいかに強力な言語であるかがよくわかります。

Go言語で作られたサービス

GoはWebシステムのバックエンドやインフラ関連の領域で注目されており、さまざんなサービスがGo言語で作られています。そのほかに、仮想化のためのオープンソースソフトウェアであるDockerはGo言語で作られています。

さらに、アマゾンのクラウドサービスであるAWSのSDKもGoに対応しました。こういったことから、Go言語が様々な領域で大変な勢いで普及していることがよくわかります。

Go言語の特徴

Go言語の特徴は、シンプルな言語仕様であるため学習が比較的容易であるという点にあります。その上豊富な標準パッケージが同梱されているため、目的に応じて柔軟に、そして素早くプログラミングをすることが可能です。

その上、Windows,OS X,Linuxなどの環境に合わせた実行ファイルを生成するクロスコンパイルのしくみがあるため、たとえばWindows上でLinuxで動くプログラムを開発する、といったことも可能になるのです。

その上、コンパイル時にすべてのパッケージは静的にリンクされるため、実行ファイルは1つのバイナリファイルになるため、取り扱いが大変楽、というのもこの言語の大きな特徴です。

さらに、並列処理を行う機能も持ち合わせていることから、ミドルウェアの開発などにも適しているとされています。なお、go言語で「HelloWorld」を記述すると、以下のようになります。

Go言語のHelloWorld
package main

import "fmt"

func main() {
	fmt.Printf("Hello, World\n")
}

このソースコードを見ればわかる通り、Go言語のプログラムは、C/C++言語には全く似ていない、独自の文法を持った言語であることがわかります。

C/C++にとって代わることができる言語?

とはいえ、Go言語は、ある意味C言語に非常によく似た側面を持っています。

例えば、Go言語の特徴としてその処理速度の速さと、言語仕様の簡潔さがあります。例を挙げると繰り返し処理のためには、forループはあっても、whileループは存在しません。また、現在はやりのオブジェクト指向言語でもありません。Goにクラスの概念がなく、構造体を使って類似の概念を実現できることはできるだけです。

それでいて、C言語にはないガーベージコレクタがあったり、簡単にWebサーバを作ったりできたりと、現代的な言語の機能を備えています。

現在用いられているプログラミング言語は、Javaにしろ、C#にしろ、独自のフレームワークを必要とし、大変「重たい」言語ですが、Go言語はそれとは対照的で、軽くてサクサクと動くという特徴ももっています。

つまり、C/C++言語の長所である処理の早さと、逆に欠点である最新技術でへの対応をしているのが、Go言語のとくちょうなのです。

こういった特徴から、もしかしたらGo言語は、将来的にC/C++にとって代わる言語になるかもしれません。現在、OSのプログラミングや、コンパイラの作成などといった分野はまだまだC/C++言語の専売特許という感がありますが、もしかしたら、こういった領域もGo言語にとってかわられることがあるかもしれません。