Go言語入門
Go言語とは、2009年頃にGoogle社によって開発されたプログラミング言語を指します。また、Go言語の設計はロブ・パイク氏とケン・トンプソン氏の2人によって行われました。シンプルな文法や仕様と動作スピードが早いことが特徴です。ここではGo言語入門ということで、概要や作れるもの、将来性について詳しく紹介します。
Go言語とは
Go言語とは、Google社によって開発されたプログラミング言語のことです。Go言語は、Webアプリ開発やサーバー構築などにも用いられています。動画配信サービス「YouTube」、フリマアプリ「メルカリ」、グルメサイト「ぐるなび」などの有名なサービスに、Go言語が採用されています。
Go言語で作れるもの
Go言語を使用すれば、Webアプリやスマホアプリ、コマンドラインインターフェース(CLI)を作成することができます。コマンドラインインターフェースとは、コンピュータやソフトウェアが利用者にデータを提示する方法の類型の1つで、全てのやり取りを文字によって行う方式のことです。Google社のイメージからWeb系の開発を思い浮かべる方も多いかもしれませんが、ドローンの制御技術の開発を行うこともできます。
Go言語の将来性
独立行政法人情報処理推進機構(IPA)のサイトの情報によると、2018年時点の国内ソフトウェア開発で使用されているプログラミング言語の累積件数のデータには、Go言語は含まれていません。そのため比較的認知度が低いプログラミング言語と言えるでしょう。しかし、Go言語の需要は今後増加していくと推測されています。 ( 参考:https://www.ipa.go.jp/files/000085879.pdf )
HackerRank社が毎年実施している「Developer Skills Report」に基づくと、エンジニアが勉強したいプログラム言語では、Go言語が2018から2020年までで1位を獲得しています。 ( 参考:https://research.hackerrank.com/developer-skills/2019 )
また、Go言語はクラウド技術・コンテナ技術・マイクロサービスなどの最先端IT技術と親和性が高いのが特徴です。今後は、Go言語を使いこなせるエンジニアの市場価値は高まることが予測されます。最先端技術の開発に強みがあるPythonなどと同様に、Go言語の将来性は高いと言えるでしょう。
Go言語の特徴
Go言語は比較的最近開発され、将来性があるプログラミング言語であることは理解できたでしょうか。ここでは、Go言語の特徴について詳しく紹介します。
シンプルな文法と仕様
Go言語はソースコードを記述しやすく、冗長表現は不要です。しかしデータ型の変換など曖昧な記述ができないのが注意点として挙げられます。Go言語はシンプルな文法と仕様を重視しているプログラミング言語であるため、機能を増やして言語を拡張するということはありません。そのため、JavaやJavaScriptなどの比較的複雑なプログラミング言語に触れた経験がある方であれば、Go言語のシンプルさに驚きを覚えるかもしれません。
並行プログラミング
Go言語の最も有名な特徴とも言えるのが並行プログラミングです。Goルーチンとも呼ばれるものによって、並行プログラミングを簡単に行うことができます。関数を呼び出す前に「go」というキーワード記述すれば、新しいGoルーチンを作成でき、そこで処理が実施されます。
並行プログラミングでは、Goルーチン間におけるデータのやり取りが難しいです。しかしGo言語であれば、チャネルというデータ形式によって、安全にデータをやり取りを行うことができます。
豊富な標準ライブラリと周辺ツール
Go言語では、豊富な標準ライブラリと周辺ツールが用意されているのが特徴です。標準ライブラリのみで、HTTPサーバーを構築できたり、JSON・XML・CSVなどの形式を扱ったりすることができます。
周辺ツールの例を挙げると、「gofmt」というコードフォーマッターが標準で用意されており、コードの書式が一意に定められるため、プロジェクトごとに細かいコーディング規約を設ける必要はありません。他にもビルドを行うコマンドやコードチェッカーなど様々な周辺ツールがあります。
シングルバイナリ・クロスコンパイル
Go言語の特徴として、シングルバイナリとクロスコンパイルが挙げられます。Go言語では、ソースコードをコンパイルするとシングルバイナリとなります。そのため生成されたバイナリのみであれば、実行環境で処理系などを準備しなくても実行することが可能です。また、クロスコンパイルもできます。例えばmacOSを使用して、WindowsやLinux向けのバイナリをクロスコンパイルするには、下記のように「GOOS」と「GOARCH」の環境変数を設定する必要があります。なお「go build」は、Go言語のソースコードをコンパイルするためのコマンドです。
$ GOOS=windows GOARCH=386 go build ※Windows向けにコンパイル
$ GOOS=linux GOARCH=amd64 go build ※Linux(64ビット)向けにコンパイル
Go言語の文法基礎
ここではGo言語入門として、文法の基礎について詳しく紹介します。
コメントの記述方法
Go言語では、単一行をコメントアウトしたい場合には
「//」
を使用し、複数行をコメントアウトしたい場合には
「/`*`」「`*`/」
を使用します。コメントはコンパイルの際に無視されるため、プログラムの実行に対して影響を与えることはありません。ここからは具体例を見ていきましょう。
1.単一行をコメントするための記述方法
// 単一行がコメントアウトされます。
_
2.複数行をコメントするための記述方法
/`*` 複数行が
コメントアウト
されます `*`/
_
行末のセミコロン
Go言語では一般的に、行末にセミコロン「;」を記述しますが、多くの場合に省略することが可能です。セミコロンを記述すれば、複数文を1行に記述するという特徴があります。以下で具体例をご紹介します。
// セミコロンを使用しない場合 number = 100 string = XYZ
// セミコロンを使用する場合 number = 100; string = XYZ;
データの型
Go言語にはクラスという概念はなく、データ型の概念があります。例えば数値型は「int」、文字型は「string」、真偽値は「bool」で定義することが可能です。他のデータ型へ変換することをGo言語では「変換」と呼ばれ、型のチェックは厳しいため、 明示的に変換を使用しなければ、整数同士の型だとしても、代入や比較ができない可能性が高いです。
変数
基本的な変数の宣言方法は「var 変数の名称 型 = 初期値」です。しかし初期値により型名が明らかな場合には、データ型を省略して記述することができます。また、「:=」を使用すれば「var」を省略することも可能です。そして定数を宣言したい場合には「const」を使用します。
// 基本的な変数を宣言する場合 var i int = 100
// 初期値によりデータ型を省略して変数を宣言する場合 var i = 100
// 「var」を省略したい場合 i := 123
// 定数を宣言する場合 const c = 123
Go言語のおすすめの勉強方法
ここでは、Go言語のおすすめの勉強方法について詳しく紹介します。
本やチュートリアルサイトで独学する
Go言語を勉強するための入門書としておすすめの本は、飛松清氏と奥谷謙一氏が著者である「Go言語入門」です。この本を読めば、GO言語の基礎を網羅的に理解することができるでしょう。 ( 参考:http://www.ric.co.jp/book/contents/book_1041.html )
またチュートリアルサイト「ドットインストール」「Progate」などで、Go言語を学習するのもおすすめです。チュートリアルサイトはプログラミングスクールと比較すると費用が安く、手を動かしながら学習できるため、知識やスキルが定着しやすいという特徴があります。しかし独学が苦手な方は、プログラミングスクールの受講を検討してみましょう。
Go言語をインストールして使用してみる
Go言語を学習するには、一般的にGo言語の開発環境を整備しなければなりません。Go言語をインストールするには、オフィシャルサイトからOSごとに用意されたファイルをダウンロードする必要があります。 ( 参考:https://golang.org/dl/ )
その後Go言語をインストールしたら、「Visual Studio Code」「ATOM」などの統合開発環境(IDE)を用意すれば、開発環境の構築は完了します。開発環境を構築してから勉強すれば、実務に役立つスキルを身に付けることができるでしょう。
Go言語はシンプルな仕様で将来性が高いプログラミング言語
これまでに、Go言語の概要・特徴・将来性・基本的な文法・おすすめの勉強方法などについて解説しました。Go言語とは、Google社によって開発されたプログラミング言語であり、シンプルな文法や動作スピードが早いこと、並行プログラミングなどが特徴です。
Go言語では行末のセミコロンが不要など、簡易的にソースコードを記述することができます。Go言語を勉強するにあたって、独学で勉強する場合、本やチュートリアルサイトを活用するのがおすすめです。また開発環境の構築から始めると、より実務に役立つスキルを身に付けることができるでしょう。
Go言語は現在ではまだまだ認知度が低いプログラミング言語ですが、最先端IT技術との親和性もあるため、将来性が高いと言えます。
マイナビエージェントに無料登録して
転職サポートを受ける
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから