Go(ゴー)。Googleが提供するオープンソースのコンパイル型プログラミング言語です。シンプルな言語仕様、強い型強制、並行処理、クロスコンパイルなどの特徴があります。

オープンソースの言語/Goとは

Go(ゴー)。Googleが提供するオープンソースのコンパイル型プログラミング言語です。シンプルな言語仕様、強い型強制、並行処理、クロスコンパイルなどの特徴があります。

基本情報

概要

Go(ゴー)とは、Googleが提供するオープンソースのコンパイル型プログラミング言語です。シンプルな言語仕様、強い型強制、並行処理、クロスコンパイルなどの特徴があります。

基本説明

「Go」は、C/C++などが使用されるシステムプログラミングの領域で、より効率良くプログラムを書くことを目的として作られました。

大規模システムの巨大コードを多人数の開発者によって開発/メンテナンスするような場面でも、高い品質を保つための工夫が随所に施されています。

Linux、Mac、Windows、Android、Google App Engineで動作できます。

ポイント

・オープンソース
・シンプルな言語仕様
・行末のセミコロン不要
・学習が比較的容易
・強い静的型付け言語
・メモリ管理はガベージコレクションに一任
・安全性が高い
・品質の高いコードを維持できる
・オブジェクト指向プログラミング(構造体、メソッド、インターフェース機能)
・コンパイルが高速(巨大なコードでも高速)
・クロスコンパイル機能
・実行環境への依存が非常に少ない
・並行処理サポートが充実(goroutine/channel)
・スレッド間通信機能(チャンネル)
・実行速度は高速
・メモリ使用量が少ない
・豊富な標準パッケージが同梱
・パッケージ管理システムがビルトイン
・外部ライブラリが使いやすい
・大規模開発に適している
・ミドルウェアの開発などにも適している
・コンテナとの相性が良い
・運用がしやすい

経緯

Goは、2009年、Googleにより発表されました。

C言語開発者「Ken Thompson」、UTF-8開発者「Rob Pike」、memcached開発者「Brad Fitzpatrick」などの名だたるエンジニアによって開発されています。

Goは「プログラミングは楽しくあるべき」という考えから生まれた言語です。

TOPに戻る

主な特徴

シンプル性

Goは、他の多くの言語が持つような機能の多くを削り、意図的に言語仕様をシンプル/コンパクトにしています。

構文(最小限にブラッシュアップ)

Goの繰り返し構文には、while文やdo/while文などはなく、for文のみです。ifの波括弧は省略不可、三項演算子もありません。このような制限により、開発者による表現のばらつきを抑えることができます。

構文(危険の回避)

メモリリークしやすい「ポインタ演算」、意図せぬエラー原因「暗黙の型変換」などは排除されています。宣言されたものの使用されていない変数、インポートされたものの使われていないパッケージなどがコードに存在すると、コンパイルエラーとなります。

このような厳しいチェックをかけ、不要なコードを排除させることにより、高品質を維持しやすくしています。

構文(例外の排除)

Goでは、関数が多値を返せることを利用し、関数内で発生した異常を戻り値として呼び出し側に返すスタイルを採用しています。try-catch方式がない代わりに、「panic」と「recover」を用いた例外処理機能が用意されています。

標準規約

Goでは、標準規約が定められています。

たとえば、コーディング規約としては、「インデントはタブ文字(半角スペースタブは禁止)」「半角スペースを入れるべき箇所/入れるべきではない箇所」など、細かく定められています。しかし、開発者は、この規約を覚える必要はありません。SDKのコード整形ツール(go fmtコマンド)を使用すれば、自動的に、コーディング規約に合うようにコード整形してくれます。

その他にも、パッケージ作成方法、テストファイル配置場所/記述方法など、かなり細かいところまで規定されています。プロジェクト単位での規約設定がほぼ不要となります。

クロスコンパイルサポート

Goは、クロスコンパイルをサポートしています。たとえば、Linux上で、Windows向け/MacOS向けの実行ファイルを生成できます。プログラムの配布などが楽に行えます。

また、「それぞれの環境ごとにランタイムをインストールする必要がない」という大きなメリットになっています。

環境に依存しない

Goは、環境にほとんど依存せず動作できます。他の言語に比べて、環境を整えるプロビジョニング作業の手間が激減します。

並行処理サポート

Goでは、軽量スレッド「ゴルーチン」で処理を並行に実行できます。「ゴルーチン」間は、「チャネル」機能でデータをやりとりできます。

開発環境が充実

開発支援用のさまざまなパッケージ/ツールが最初から用意されています。各エディタ/ツール用プラグインなども容易されています。

標準パッケージが充実

標準パッケージが充実しているため、外部パッケージ依存率を低くできます。

TOPに戻る

同様製品(概要情報)

同様な機能を提供する製品として、次のようなものがあります。

オープンソース製品:「Python」など。

TOPに戻る

導入事例

DevOpsでの採用、ミドルウェア開発、コマンドラインツールなどにも採用されています。

「Docker」はGoで実装されています。

「Dropbox」は、2014年7月、Go言語を採用しました。国内でも、サイバーエージェント、LINE、カヤック、はてな、メルカリ、Gunosyなどが、サービス開発の一部にGo言語を採用していることを明らかにしています。

TOPに戻る

ライセンス情報

Goのライセンスは、「BSDライセンス」です。このライセンスに従うことを条件として、ソースコードの改変と公開が許可されています。

TOPに戻る

ダウンロード

ダウンロードページ

TOPに戻る

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

Go最新TOPICS

【OSS】Google、プログラミング言語「Go 1.9」公開---型エイリアスのサポート追加、「math/bits」パッケージを導入、同一パッケージ内の関数の並行コンパイル(2017年08月30日 11:03)

GoogleのGo言語開発チームは、8月24日、 プログラミング言語「Go 1.9」を公開した。 【Goとは】 オープンソースのコンパイル型プログラミング言語 https://www.ossnews.jp/oss_info/Go 【ポイント】 ・型エイリアスのサポート追加 ・「math/bits」パッケージを導入---符号なし整数向けにビット計数や関数のマニピュレーション ...

Go最新CLOSEUPコラム

  • オープソース書籍(サイド)
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter