支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


はじめに

皆さんもご存知のように、プログラミング言語には主にクライアントサイドで動作する「フロントエンド言語」や、サーバーサイドで動作する「バックエンド言語」などが存在します。
バックエンド言語で有名なものはJava、PHP、Python、Rubyなどですが、これらには様々な特徴、利点、欠点があり、どういう基準で言語を選択すればよいか悩んでいる方も多いのではないでしょうか。
本日は2009年と比較的新しく登場したバックエンド言語である「Go」について紹介します。

Go(Golang)とは?

Goは、2009年にGoogleが開発したプログラミング言語です。
「JavaやC++のような静的型付け機能」を備え、「C++のように高速」で、「PythonやRubyのように柔軟」で「言語の習得が容易」になるように開発されました。
ちなみに、検索で「Go」と検索してもプログラミングとは関係のない余計なものも多く含まれるので、「Go+(プログラミング関係の単語)」で検索するか「Golang」と検索しましょう。

特徴

1・高速

Goはコンパイラ言語であり、実行前にプログラムをコンパイルしてから実行します。そのため、適切な形に解釈しながら実行するインタプリンタ型の言語よりもプログラムは高速に実行できます。

2・静的型付け

Goは静的型付けの機能を備えています。変数の型を事前に厳密に定義することによって、プログラムの意図しない挙動を防ぐことが可能になります。この機能は大規模なプロジェクトになるほどその恩恵を受けることができます。

3・平行処理に優れている

Goには標準で「goroutine」というライブラリが備わっており、このライブラリを使用することで、複数のタスクを同時に行うことが可能になります。
また、「channel」という機能もあり、この機能はチャンネルチャンネル同士で値を受け渡すことが可能になります。
channelを使用することで、同時に行うことが不可能なタスクも値を渡すことによって行うことが可能になる等、非常に便利な機能です。

4・シンプルな言語設計

Goは他の言語が持つ機能などを削除し、必要最低限の機能を残しておくことによりシンプルな言語設計となっています。
具体的な例を挙げると、一般的に繰り返し系の構文と言えば「for」「while」「while/do」などがありますが、Goは繰り返し系の構文は「for」文しかありません。
また、「if」のような条件分岐の構文もJavaやJavascriptは「? ~~ : ~~」のような三項演算子が使用できますが、Goは三項演算子がありません。
また、Goはオブジェクト指向言語には一般的に採用されているクラスの「継承」や、Javaなどで一般的に採用されている「例外処理」が存在しません。
継承や例外処理は便利な反面、大規模なプロジェクトになるとコードが複雑化してコードが追いづらくなる等の欠点があります。また、開発者によっては効果的な使い方ができず、冗長なコードになってしまうことも考えられます。
特定の処理をしたい時に構文の種類が多くあると、開発者によって処理の記述方法が違ったりして混乱の元になります。Goは必要最低限の機能や構文だけを残すことで、表現のばらつきを防ぐとともにコンパイルの高速化にも繋がります。

メリット

高速なアプリケーションを構築できる

上記に述べたようにGoは高速化が図られており、サーバーサイドの言語にGoを選択して開発をすると非常に高速なアプリケーションが構築でき、ユーザーエクスペリエンスの向上に繋がります。

比較的習得が容易

GoogleがGoを開発した経緯としては、高速な言語を開発したいという思いもありましたが、Google社内の「大学を卒業して間もないエンジニア」が習得しやすい言語を目指して開発したというのもあります。
そのため機能のシンプルさはもちろん、構文なども覚えやすく、習得は比較的容易と言えます。

マイクロサービスの構築に最適

現在流行しているアプリケーションの設計方法に「マイクロサービス」というものがあります。
マイクロサービスとは、大規模なアプリケーションを機能ごとに細かく分割し、それぞれ独自にデプロイさせる設計、開発手法です。これにより

  • ・それぞれの機能ごとに異なる言語で開発も可能
  • ・機能ごとに同時に開発が可能
  • ・不具合に強い
  • ・メンテナンスが容易
など、様々な利点があります。

このようなマイクロサービスを開発するためには、プログラミング言語の特性としては「余分な機能がない」言語が適しています。
そのため、Goのような余分な機能を排除したシンプルな言語が最も適していると言えます。

デメリット

今までの言語とは異なる言語仕様が多い

Goは上記にも述べたように継承、例外処理が存在しない、繰り返し構文も最低限のものを実装している等、無駄を省き極力シンプルな言語になるように設計されています。
それにより従来の言語には当たり前に存在していた概念が存在しない、または記述方法が大きく異なることがしばしばあります。従来のJavaのようなオブジェクト指向言語を学んでいた方は少々面食らうこともあるかもしれません。

まとめ

  • ・Go(Golang)はGoogleが開発したプログラミング言語である
  • ・余分な構文などを極力省くことで、シンプルかつ高速な言語仕様を実現している
  • ・最近流行している設計手法「マイクロサービス」に最適な言語である

最近のプログラミング言語は便利な仕様、構文が多く搭載されているため、万人に使いやすくなっている反面、スマートではないという欠点もあります。
もっと実行速度を速くしたい、もっとシンプルな言語を使いたいといった方は是非Goを使用してみてはいかかでしょうか。