プラカンブログSTAFF BLOG

2017.03.27

「プログラミング言語 Goを使う」の巻

システムのまついです

Go言語はGoogleが開発したプログラミング言語です。
この言語はコンパイル型処理系を持つ開発言語であり並列処理が簡単に記述できる特徴があります。
システム開発経験のない方はイメージしにくいと思いますが、できるだけ簡単に説明をさせていただきます。

まずコンパイルですが、これはプログラムソースをコンピュータのCPUで直接実行される機械語(命令)に変換することです。
実装手順としてはコンパイラプログラムでプログラムソースをコンパイルして、その結果得られた実行形式のプログラムを実行する(あるいは配置)ことになります。
コンパイル型処理系の開発言語はおもにアプリケーション開発で使われるC++、C#、Java、そしてGoがあります。
一方、コンパイル型処理系とは別にインタプリタ型というのがあります。
このインタプリタ型はプログラムソースを1行ずつコンパイルして実行していくので処理は低速ですが実装手順は簡単になっています。
この処理系を持つ言語はWEB系アプリケーション開発で使われるJavaScriptやPHPがあります。

次に処理方法ですが、プログラムコード(機械語)を処理する方法には並列処理と逐次処理があり、下記の違いがあります。
・並列処理は同時に複数の処理を実行する
・逐次処理は1つずつ順番にひとつの処理を実行する
例として、順番に処理を行う逐次処理は3分と2分かかる2つの処理がある場合すべて完了するには合計5分かかります。
それに比べて並列処理は3分と2分の処理を並列で行いますので3分後にはすべて完了します。

さて、掲題のGo言語を試してみようと思ったきっかけは、PHPでWEB APIの開発をしているときに、このGo言語がWEB APIの開発に使われているという記事を読んだからです。
WEB APIとは、HTTPプロトコルを用いてネットワーク越しにあるサーバーの情報(機能)を得る(呼び出す)ためのプログラム(インターフェース)の事です。
例えば、JavaScriptにはデータベースへ直接アクセスする機能はありませんが、JavaScriptがデータベースにアクセス可能なインターフェース(プログラム)を呼び出すことでデータを得る事ができます。
下記URLは百人一首のデータを得るWEB APIで、ブラウザで直接叩いてみるとデータが表示されます。
HTTPプロトコル(http://)でget.phpというPHPプログラムを呼び出してJSONというフォーマットで結果を表示しています。
百人一首API
このWEB APIはだれでも、どこでもお手軽に利用できるしくみとなっています。

PHPを使ったWEB API開発は、実装する内容によってはレスポンス(応答速度)の遅さが問題になったりします。
アクセス負荷がレスポンスの悪いAPIに加わると、そのサーバーのすべてのWEBサービスが影響を受けてしまう事も考えられます。
レスポンスを早くすることですべてが解決するわけではありませんが、コンパイル言語を使ってどのくらい改善できるかをPHPとGoを使って検証してみました。

どちらも同じデータベースデータ(140件)を読み込んでそのままJSONで結果を返す、という処理にかかる時間を比べてみました。
検証の結果、総合的にGoの方が2倍ほど早く、インタプリタ言語とコンパイル言語の処理速度の違いが顕著にでた結果となりました。

PHPの場合
PHP1
Goの場合
go1

 

 

この記事は、MATUI が書きました。