技術戦略部より、tipsやノウハウなど技術的な話題を発信いたします。(1)golang開発の松尾です。社内で利用しているとかそういう実績はひとつも無いんですが色々と思うところあってGoの紹介記事を書いてみます。何らかのプログラミング言語をすでに業務などで使用していてパラダイムの違う別の言語を学びたいというような方の一助となれば幸いです。GoについてGoはGoogleを中心として開発されているオープンソースのプログラミング言語です。発表された当時は「Cっぽい文法が何だかフワフワしていて気持ち悪い」という程度の感想しか持たずチラチラ見る程度の距離感で眺めていたのですが時間が経つにつれ「こういうプログラミング言語のパラダイムって今後のために超重要じゃね?」とあっさり宗旨変えして調べはじめた経緯があります。VMベースで動作するElixirなどの存在を知り、C++やJavaのように長年使われてきた実績のあるシステム言語ではカバーできない/しずらい領域が広がり始めているのかなあという空気感を感じたというのが大きな理由となっています。Goが将来においてメインストリームとなり得ると確信しているわけでは無いのですが、言語環境のエコシステム、並列処理、厳密な型システムといった最近の潮流を取り入れつつ、かつ言語環境が安定しているというポイントからGoを学ぶには良いタイミングなのではないかと思っています。Goについての日本語の解説も増えてきているという印象もあるので、この記事では「細かいことは抜きにして具体的にプログラミングを書いてみる」ことができるようポイントを絞って書いてみることにします。そのため言語の細かい部分の解説については割愛します。GoのメリットGoを使用するメリットにはどのようなことが考えられるでしょうか?わたしは下記の3点が特にお気に入りです。コンパイルして実行可能ファイルを作ることができる。OSなどの環境への依存性が少なくポータビリティに優れる。軽量な非同期処理のサポートが言語に組み込まれている。X、FreeBSD、Windowsです。13.10(64bit)です。Linux全般では大した違いは無いと思います。XであればパッケージがWindowsであればMSIインストーラーが提供されているため導入における問題は少ないでしょう。Goのバージョンは現在の最新バージョンである1.2.1を選択しています。/usr/local/go特にGo本体をどうこうする意図は無いため素直に/usr/local/go1.2.1へインストールしています。/usr/local/goへシンボリックリンクを張って環境変数PATHには/usr/local/go/binを追加します。linux/amd64goコマンドによってバージョン情報が正しく表示されれば成功です。初期のgoではGOROOTという環境変数が必要でした。JavaでいうところのJAVA_HOMEのような役割を果たします。上記ではLinux向けのバイナリパッケージを利用しており、GOROOTは標準で/usr/local/goを指します。GOROOT/usr/local/go上記のようにインストールした場所とgoの設定に相違が無い場合は特にGOROOTを指定する必要はありません。goの複数バージョンを切り替えて使うような特殊な場面では有効に機能します。GOPATHという環境変数も必要です。goの外部ライブラリの格納場所を表しています。これは個人的なものなので特にどこに配置しても良いのですが、わたしは$HOME/goを指定しています。GOPATH=$HOME/gogogoで書かれたプログラムの実行、ビルド、テスト実行、外部パッケージ取得など様々な機能を内包したコマンドです。packagesgitのようにサブコマンドがいくつか定義されています。それぞれのサブコマンドのヘルプを確認するには下記のようにhelpを利用します。Worldプログラムを書いてみましょう。