海外で働きたい人募集!ver.2 / LIGセブ島支社
海外で働きたい人募集!ver.2 / LIGセブ島支社
2016.11.11
#5
Go Golang!

【はじめてのGo言語】Go言語について詳しく知ろう〜Go言語で何ができるの?〜

Kaz

こんにちは、バックエンドエンジニアのKazです。

前回までの記事では、PHPとGo言語の比較にはじまり、PHPでサービスを開発していた会社がGo言語に乗り換えるにあたって突き当たった障壁、そしていかにしてそれらを乗り越えたかを紹介してきました。

>> PHPとGoって何が違うの?LIGが自社サービス開発にGo言語を採用したお話
>> PHPからGoへ乗り換えるリスクとは?LIGが自社サービス開発にGo言語を採用したお話
>> 【GO言語のパッケージ管理:決定版】「Glide」を使ってみよう
>> 「言語を移行するためのAPI」LIGが自社サービス開発にGo言語を採用したお話

次からは一歩踏み込んで、実際にGo言語を使って初めてのアプリケーションを開発するまでの流れをご紹介いたします。

この記事ではその走りとして、Go言語とは一体何なのか、何ができるのかについて、改めて紹介していきます。

Go言語で何ができるの?

ここまでに何度もGo言語Go言語と言ってきましたが、Go言語とは一体何で、これを使って何ができるのでしょうか?

まず、Go言語がどのようなものであるかは第一回の記事「PHPとGoって何が違うの?LIGが自社サービス開発にGo言語を採用したお話」をご覧ください。PHPとの比較をベースに、Go言語の数々の特徴をご紹介しています。

Webサーバー

server-side-app

これがおそらくGo言語がもっとも使われている領域です。その速さなどさまざまな特徴を活かした、Webサーバー・アプリケーションとして数多くの採用例があります。

Go言語は元々Googleが発表した言語という背景から、傘下のYouTubeをはじめとしてGoogleのさまざまなサービスのバックエンドアプリケーション開発に採用されています。Go言語はGoogleにとどまらず、数多くの有名なWebサービスでサーバーサイドアプリケーションの一部(または全部)で採用されるという事例が増えてきました。

この記事シリーズを通してお伝えしているように、PHPで書かれたWebサービスについて、徐々にGo言語へと移行していっています。

コマンドライン・ツール

command-line-app

Go言語はコマンドライン(CLI)で動作するアプリケーションの開発にも向いています。

Linuxはもちろん、MacやWindowsを対象にしたマルチプラットフォーム向けのアプリケーション作成(クロスコンパイル)が非常に簡単で、互換性や依存関係などを気にすることなく、あらゆる環境向けのツールを容易に開発することができるようになっています。

たとえばPythonなどのスクリプト言語では、各マシンに実行環境(インタプリタ)をインストールしなければなりません。C系などのコンパイル型言語は実行環境が不要な反面、その多くでライブラリ呼び出しなどの依存関係に大きく悩まされることがあります。

Go言語はコンパイル型言語におけるこの「依存関係」という悩みが非常に少なくなるよう、アプリケーションバイナリ単体だけで完全に動作するように設計されているため、コマンドラインアプリケーションの配布が非常に簡単になっています。

もちろんコンパイル型言語ならではの性能も兼ね備えているため、高速・高負荷な計算を必要とするアプリケーションの開発にも向いています。

モバイルアプリケーション

mobile-app

驚くことにGo言語はiOSやAndroid向けのネイティブアプリケーション開発も行えます。

Go 1.4でAndroidに、Go 1.5でiOSに正式対応しそれぞれのプラットフォーム向けにアプリケーションをネイティブビルドできるようになりました。Go言語だけで両プラットフォーム向けのアプリケーションを開発でき、出来上がったアプリケーションは実機での動作はもちろん、ストアでの審査通過・公開も行うことができます。

実例として、GoogleのGo Teamが作った100% Go言語製のアプリ「Ivy」がApp StoreおよびPlay Storeで、ソースコードがGitHubでそれぞれ公開されています。

将来的にはデスクトップ・アプリケーションも

desktop-app

また現段階ではまだ実用レベルには達していないものの、Go言語にはデスクトップ(GUI)アプリケーションを作れる可能性も秘められています。

Go言語によるGUI開発は試行錯誤が繰り返されてきたものの、かつて開発が進んでいた「GXUI」というプロジェクトが頓挫してしまうなど土台完成にはほど遠く、現状でGo言語でのGUI開発は現実的ではありません。ただし、現在も各所でさまざまなアプローチが研究されているため、将来的にはGo言語がデスクトップ・アプリケーション開発の選択肢のひとつとなる日も来るかもしれせん。

次回は

さて、Go言語の可能性を紹介したところで、次回は実際にGo言語を使ってのアプリケーション開発方法をご紹介していきます。乞うご期待!

* License: Icons made by Madebyoliver, Pixel Buddha, Pixel perfect and Roundicons from www.flaticon.com is licensed by CC BY 3.0

Go言語に関する記事