プログラミング言語といえば「Java」や「C言語」がよく知られていますが、現代ではさまざまなプログラミング言語が存在しています。そのため、これからプログラミングを学習しようと考えている人は、どの言語を習得するべきか非常に迷うのではないでしょうか。
今回は、近年多くの企業で採用されているGo言語の活用事例や、基本のキーワードを紹介します。
プログラミング言語「Go」とは
プログラミング言語においてまだまだ主流とはいえないGoですが、Googleが開発したことで話題にもなりました。まずは、Goの特徴についてみていきましょう。
Go言語とは
Goは、2009年にGoogle社によって開発された、オープンソースのプログラミング言語です。プログラミングをより容易にする目的で開発されたため、他の言語と比べて構文がシンプル、且つ軽量に動作する仕組みになっています。
開発当初はLinuxとMacにしか対応していませんでしたが、2013年にリリースしたバージョン1.0からはWindowsにも対応。その後もバージョンアップが繰り返され、現在ではAndroidやiOSを含む多くのOSで使用できるようになりました。
Go言語の特徴
Goの特徴としては、まず難易度が低いということがいえます。Goの構文はC言語やJavaと似ており、これらの言語を学習した人であれば比較的簡単に習得することができるでしょう。
またGoは、「モノ(オブジェクト)を組み立てるようなイメージでコンピュータを動作させる」というオブジェクト指向がなく、他の言語で多く見られる「クラス(抽象データの一つ)」という考え方をしません。その代わりに「構造体(struct)」や構造体とセットで使う関数の「メソッド」、さらにGo言語で定義されている「インターフェイス(interface)」という概念を持っています。
これによりクラスと似た動きができ、軽量な並列処理で複雑なシステムを構築したい場合などに最適です。
Go言語の活用事例
他のプログラミング言語とは少し違った特徴を持つGo言語ですが、これを使うことで一体どんなことができるのでしょうか。
Webサーバーの管理
Go言語は、軽量に動作するため高速処理を得意としており、主にWebサーバーの管理に利用されています。私たちの身近なサービスではGoogle社のYouTubeがGo言語で構築されていますが、近年ではGoogle社にとどまらず、数多くのサーバーサイドでGo言語が採用されています。
また、Go言語は複雑なプログラム構築にも向いているため、これまでPHPで書かれていたWebサービスについても、徐々にGo言語への移行が進められているのです。
コマンドライン(CLI)ツールの作成
コマンドラインというのは、コマンドという文字列を入力する列のことをいい、ここにコマンドを入力することで、マウスを使わずにキーボードから直接コンピュータへ命令が送れます。
Go言語は、このコマンドラインで動くアプリケーションの開発にも適しており、LinuxやMac、Windowsといったマルチプラットフォーム向けのツールを簡単に開発できるのです。
例えば、Pythonなどのスクリプト言語を使う場合は、まずはコンピュータに実行環境(インタプリタ)をインストールする必要がありますし、C言語系のコンパイル型言語の場合はライブラリ呼び出しなどに依存するため、非常に手間がかかります。
しかし、Go言語ではアプリケーションのデータが単体で動作する設計ですので、コマンドラインツールの作成が非常に簡単なのです。
スマートフォン向けアプリの開発
さらにGo言語では、iOSやAndroidといったスマートフォンアプリの開発も行えます。
これまでに行われたバージョンアップによって対応OSが徐々に増えていき、バージョン1.4でAndroidに、バージョン1.5でiOSに正式対応し、各プラットフォーム向けのアプリ開発が可能となりました。そのため、自分のスマートフォンで動作できるだけではなく、ストアでの審査・一般配信といったことが容易になるのです。
実際、GoogleのチームがGO言語で開発した「Ivy」はApp StoreとPlay Storeの両方で配信されており、GitHubでソースコードも公開しています。
また、現在はまだ実用できるレベルではないものの、デスクトップのアプリケーション開発にも大きな期待が込められていて、各所でさまざまな研究が行われています。
Go言語の初心者が知っておきたいキーワード
プログラミング言語にはさまざま用語が存在するものですが、ここではGo言語を学ぶうえで知っておくべきキーワードを紹介します。
Goルーチン
Go言語には「Goルーチン」という、並行処理が簡単に行える仕組みがあります。これはGo言語の中でも最も特徴的な機能で、Goランタイムで管理されているためOSのスレッドよりも軽量になっています。
プログラム内で意味や内容がまとまっている作業を繰り返し、リソースに問題がなければ数を気にせず並列実行ができるので、よりパフォーマンスを向上させることができます。そのため、ネットワークやデータベースといったアクセスに時間がかかるシーンで役立つ機能といえるでしょう。クロージャーや関数に「go」を付けるだけなので、実行も簡単です。
しかし、Goルーチンだけでは並行化の処理が終わる前にメイン処理が終わってしまいますので、そういった場合はメッセージのパッシングを行う「チャネル」という仕組みが必要になります。
Goコマンド
Goコマンドとは、package(パッケージ)のインストールやダウンロードが行えるGo言語上で使用するコマンドのことで、依存関係の調査が自動で行えるという特徴があります。
Goコマンドといってもさまざまな種類がありますので、代表的なコマンドを紹介しましょう。
【主なGoコマンドの種類】
◆go run
Binaryファイルを作成することなく、そのまま実行することができるコマンドです。
◆go build
主にソースコードのコンパイルに使用されるコマンドで、作業中でも関連パッケージを同時にコンパイルすることができます。
◆go fmt
自分が書いたコードを整形するためのコマンドで、標準スタイルに修正することができます。
◆go clean
関連するソースパッケージの中からコンパイラが生成したファイルを取り除く機能があります。
◆go test
go testを実行すると、テスト用の実行ファイルが生成されます。
◆go get
リモートコードパッケージを取得する際に利用するコマンドで、主に「BitBucket」「GitHub」「Google Code」「Launchpad」をサポートしています。
◆go install
このコマンドは「リザルトファイルの生成」と「コンパイル結果の移動」という2つの操作を行い、低いレイヤーの実行状況がいつでも確認できるようになります。
◆go tool
go toolはいくつかのコマンドに分けることができますが、代表的なものとして「fix」は新しいバージョンへの修復、「vet」はカレントディレクトリのコードが正しいかをチェックする際に使用します。
◆go generate
バージョン1.4になった際にデザインされたコマンドで、コンパイル前に特殊なコードを自動生成する際に使用されます。
Go言語は今後の可能性を秘めたプログラミング言語
誕生当時は対応OSが限られており、ほとんど存在が知られていなかったGo言語ですが、バージョンアップによって対応OSの幅が広がると同時に、その需要も大幅に上昇してきています。2018年現在については人気ランキングの上昇率が最も高い言語として注目されていますので、今後はJavaやC言語に並ぶ主要言語となるかもしれません。
PHPからGoへの移行が増えている点やスマホアプリの開発、さらにデスクトップのアプリ開発に向けた研究も進められていますから、Go言語はぜひとも習得しておきたい言語だといえるでしょう。