Googleの「Go」を試してみた(その1)

昨日、Googleが新しいプログラム言語の「Go」を公開しました。
GoはC/C++をベースにしたプログラム言語です。
Goのサイトによると、「シンプル」「コンパイル速度が速い」「危険なポインタ演算がなくて安全」「オープンソース」などという点がセールスポイントにあがっています。

当方でも、Goを少し試してみました。
今日はインストールの方法を紹介します。

1.テスト環境

現状では、GoはLinuxかMacOS Xの環境で動作します。
当方では、Fedora 12β(Cコンパイラ等の開発系に必要なソフトもインストールした環境)の環境でテストしてみました。

2.ターミナルを起動

これ以後、ターミナルでコマンドを入力してインストールを行います。
ターミナルを起動し、suコマンドでrootにログインしておきます。

3.setuptoolsのインストール

まず、Pythonの「setuptools」というツールをインストールします。
Fedora 12βでは、以下のコマンドでインストールすることができました。

yum install python-setuptools
yum install python-setuptools-devel

4.hgのインストール

Goのソースコードをダウンロードするために、「Mercurial」というソースコード管理システムの「hg」というツールを使います。
Mercurialは以下のコマンドでインストールすることができます。

easy_install mercurial

5.環境変数の設定

Goをインストールする際には、以下の4つの環境変数を設定しておくことが必要です。

環境変数内容
GOROOTGoの一式を保存するディレクトリを指定します。
GOOSOSの名前を指定します。
Linuxなら「linux」、MacOS Xなら「darwin」を指定します。
GOARCHCPUの種類を指定します。
64ビットCPUなら「amd64」、32ビットCPUなら「386」を指定します。
GOBINGoのバイナリのインストール先をディレクトリを指定します。

当方では、以下のような環境を想定しました。

  • Go一式は/usr/local/goディレクトリに保存します。
  • Fedora(Linux)の64ビット版の環境を使います。
  • /usr/local/binディレクトリにGoをインストールします。

この環境を作るために、以下のように環境変数を設定しました。

export GOROOT=/usr/local/go
export GOOS=linux
export GOARCH=amd64
export GOBIN=/usr/local/bin

6.ソースコードのダウンロード

次に、以下のコマンドを入力して、Goのソースコードをダウンロードします。

hg clone -r release https://go.googlecode.com/hg/ $GOROOT

7.Goのコンパイルとインストール

Goの公式ページによると、以下のコマンドを入力すれば、Goのコンパイルとインストールを行えるはずです。

cd $GOROOT/src
./all.bash

ただ、こちらで試したところ、テストに引っかかってエラーになる箇所がありました。
そこで、テストを行わないでインストールするようにしました。

「cd $GOROOT/src」のコマンドでsrcディレクトリに移動した後、そのディレクトリにある「run.bash」というファイルを、エディタで開きます。
その中の25行目前後に、以下の部分があります。

    time make
    make install
    make test
) || exit $?

この中の「make test」の行を削除してからファイルを保存し、ターミナルで「./all.bash」のコマンドを入力して、コンパイルを行いました。
コンパイルには数分程度の時間がかかりました。

しばらくして、以下のように表示されれば、インストール完了です。

--- cd ../test
0 known bugs; 0 unexpected bugs

8.動作確認

エディタを使って、以下のソースコードを入力し、「hello.go」というファイル名で保存します。

package main

import "fmt"

func main() {
  fmt.Printf("Hello, world\n")
}

そして、以下の順にコマンドを入力します。

6g hello.go
6l -o hello hello.go
./hello

Goが正しくインストールできていれば、「Hello, world」と表示されます。