2012年9月3日月曜日

GoのIDE『GoClipse』を使う


こんにちは。scarvizです。

前々回でGo言語、前回でgo-uiの環境構築をしました。

前々回→http://kobegtug.blogspot.jp/2012/08/ubuntugo.html
前回→http://kobegtug.blogspot.jp/2012/08/qtgo.html

もう皆さん、意気揚々とGo言語で開発してると思うのですが、現代っ子な僕は、早くもテキストエディタでの開発に耐え切れなくなりました。
やっぱりIDEが欲しいですよね。

そこで、『GoClipse』というものを使ってみようと思います。
今回は『GoClipse』の環境構築を紹介します。

※開発に耐え切れなくなる以前に、GOPATHおかしくて開発自体ができなくなっていましたが・・・。
 ちなみに解決済みです。前回に修正入ってます。

※あと、前回Qt使えるようにしたので、QtCreatorを使わないの?って思った人もいるかもしれませんが、色々いじってみましたが、Go言語での開発ができなさそうだったので諦めました。
 もし「こうやったら出来るよ!」って知ってる人いたら教えてください!

※環境は前回、前々回と同じ、VMware PlayerのUbuntu12.04(x86)を使っています。
 なので、Go言語の環境構築が出来ている前提になります。


今回もGDG神戸のGo言語の先駆者であり、エバンジェリストのtitoi2さんのサイトを参考にしてます。
http://barsoom.seesaa.net/archives/20120706-1.html
ここではGAE/Goを扱ってますが、今回はGAE/Goについては触れていません。
もし興味がある方は、titoi2さんのサイトを参考にしてください。







■Eclipseを用意する
『GoClipse』はEclipseのGo言語開発用プラグインです。
なので、まずはEclipseをインストールしましょう。
既に入っている人は不要です。

EclipseはJavaアプリケーションなので、少なくともJRE(Java Runtime Environment)が必要です。
今回、「Eclipse IDE for Java EE Developers」をインストールしようと思うので、JDK(Java Development Kit)の方をインストールしています。


1.JDKをインストールする
今回は現在の最新バージョンの「Java SE 7u7」(Java7 update7)をインストールしようと思います。
既に入っている人は不要です。

①まずはJDKをダウンロードします。
オラクルのサイト(http://www.oracle.com/technetwork/java/javase/downloads/index.html)から、「Java SE 7u7」の「JDK」の項目のDownloadボタンを押下してください。
※バージョンはその都度読み替えてください。特に気にならなければ最新で問題ないと思います。
 バージョン気になる人でも、Java6 update31以降、またはJava7 update3以降にしてください。
 セキュリティの問題で、そのバージョン以降を強く推奨していたと思います。
 ちなみにJava7 update7、Java6 update35でセキュリティベースライン上がってるので、最新の方がオススメです。



「Java SE Development Kit 7u7」の「Accept License Agreement」を選択し、「Linux x86」の行の「jdk-7u7-linux-i586.tar.gz」を選択してください。



②JDKをインストールします。
下記コマンドを実行してください。
もし/usr/javaが存在するならば、mkdirコマンドは不要です。

 sudo mkdir /usr/java
 sudo tar -C /usr/java -xzf jdk-7u7-linux-i586.gz

※ファイル名は「.gz」となってますが、「.tar.gz」なので、このコマンドでOKです。gunzipコマンド使って解凍しても.tarファイルが出来るだけでした。

③パスを通します。profileを編集したいので、次のコマンドを実行してください。

 cd ~
 vi .profile

※既にホームにいる場合はcdコマンドは不要です。
※・・・viじゃなくてもいいんですよ?

④profileを編集します。以下を最下部に追記してください。

 export JAVA_HOME=/usr/java/jdk1.7.0_07
 export CLASSPATH=.:/usr/java

また、PATHに「/usr/java/jdk1.7.0_07/bin」を追加します。
前回で「export PATH=$PATH:/usr/local/go/bin:~/QtSDK/Desktop/Qt/4.8.1/gcc/bin」に
なっていると思いますが、その後に追記してください。
以下のようになります。

 export PATH=$PATH:/usr/local/go/bin:~/QtSDK/Desktop/Qt/4.8.1/gcc/bin:/usr/java/jdk1.7.0_07/bin

※PATHの続きに「:/usr/java/jdk1.7.0_07/bin」を追記しました。

⑤profileの変更を適用します。次のコマンドを実行してください。

 source .profile

⑥JDKにちゃんとパスが通ってるか確認します。下記コマンドを実行してください。

 java -version

「java version "1.7.0_07"」と表示されていればOKです。


2.Eclipseをインストールする
今回は「Eclipse Indigo (3.7)」をインストールしようと思います。
※現在の最新バージョンは「Eclipse Juno (4.2)」ですが、GoClipseのページ(https://code.google.com/p/goclipse/)には要件として「Eclipse 3.6, 3.7」と記述されているので、安定版として「Eclipse Indigo (3.7)」を使用しようと思います。
 試しに「Eclipse Juno (4.2)」でやってみると特に問題なく動作していました。手順もほぼ同じです。
 もし最新バージョンが良いという人は「Eclipse Juno (4.2)」を試してみても良いと思います。

①Eclipseをダウンロードします。
Eclipseのサイトの「Eclipse Indigo (3.7)」のダウンロードページ(http://www.eclipse.org/downloads/packages/release/indigo/sr2)を開きます。
今回は「Eclipse IDE for Java EE Developers」にしようと思うので、「Eclipse IDE for Java EE Developers」の「Linux 32-bit」を押下してください。



※「Eclipse Juno (4.2)」の場合は、Eclipseのサイトのダウンロードページ(http://www.eclipse.org/downloads/)を開き、「Eclipse Juno (4.2) Packages for 」と書かれたコンボボックスを「Linux」に変更します。
 今回は「Eclipse IDE for Java EE Developers」にしようと思うので、「Eclipse IDE for Java EE Developers」の「Linux 32 Bit」を押下してください。

次のページで下矢印マークを押下し、Eclipseをダウンロードします。



②Eclipseインストールします。下記コマンドを実行してください。

 sudo tar -C /usr/local -xzf eclipse-jee-indigo-SR2-linux-gtk.tar.gz

「/usr/local」の下に「eclipse」ディレクトリが出来ていると思います。

※「Eclipse Juno (4.2)」の場合は、下記コマンドを実行します。
 sudo tar -C /usr/local -xzf eclipse-jee-juno-linux-gtk.tar.gz

3.Eclipseを日本語化する
日本語化が不要な人は次に行ってください。
日本語化にはPleiadesを使用します。

①Pleiadesをダウンロードします。下記から安定版の「1.3.4」を押下してください。
http://mergedoc.sourceforge.jp/



※「Eclipse Juno (4.2)」の場合は、デッドロック問題があるようなので、最新版の「1.3.5」をダウンロードしてください。

②Pleiadesを解凍します。下記コマンドを実行してください。

 sudo unzip pleiades_1.3.4.zip -d /usr/local/eclipse

※今回「上書きしますか」って聞かれなかったんですが、もし聞かれたらすべて上書き(Aを入力するようになると思います)してください。
※「Eclipse Juno (4.2)」の場合は、下記コマンドを実行します。
 sudo unzip pleiades.zip -d /usr/local/eclipse

③eclipse.iniを編集します。下記コマンドを実行してください。

 sudo vi /usr/local/eclipse/eclipse.ini
※・・・いや、ホント、viじゃなくてもいいんですよ?

④最後に下記を追記して保存してください。

 -javaagent:/usr/local/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar

これで日本語化が出来ましたね。

4.ワークスペースの設定とEclipseの状態確認
Eclipseは日本語化されているものとして、説明していきます。
日本語化していない場合はそれぞれ読み替えてください。

①Eclipseを起動します。
「/usr/local/eclipse」以下にあるeclipseを起動してください。
※今後、Eclipseを起動する時に、もしJDK(JRE)のエラーが出てきた場合、このエントリの最下部の「補足」を参考にしてください。

②立ち上がると、ワークスペースの参照先を求められるので、特に気にしなければそのままOKボタンを押下してください。
ホームディレクトリに「workspace」ディレクトリが作成され、そこがワークスペースになります。

③念のため「インストール済みの JRE」を確認します。
メニューの「ウィンドウ」→「設定」を選択し、設定ダイアログを表示してください。
左のツリーから「Java」→「インストール済みの JRE」を選択します。
右側の「インストール済みの JRE」の一覧に「jdk1.7.0_07」があって、チェックが入っていればOKです。



④エディタに行番号を表示するように設定します。不要な人は読み飛ばしてください。
左のツリーから「一般」→「エディター」→「テキスト・エディター」を選択します。
右側の「行番号の表示」にチェックを入れて、OKボタンを押下してください。




これでEclipseの用意はできました。

■GoClipseをインストールする
EclipseにGoClipseをインストールします。

①メニューから「ヘルプ」→「新規ソフトウェアのインストール」を選択し、インストールダイアログを表示します。

②「作業対象」のテキストボックスに下記URLを入力し、Enterキーを押下します。
http://goclipse.googlecode.com/svn/trunk/goclipse-update-site/



中央の一覧に「GoClipse」と表示されたと思います。
「GoClipse」にチェックを入れ、次へボタンを押下します。

③インストールの詳細が表示されたと思います。そのまま次へボタンを押下します。
※現在のGoClipseのバージョンは「0.7.2」でした。



④ライセンス内容が表示されたと思います。
内容を良く読み、大丈夫なら「使用条件の条項に同意します」を選択し、完了ボタンを押下してください。
※当然、同意しないとGoClipseは使えません・・・。

⑤インストールが開始されます。
途中で「セキュリティー警告」が表示されますが、OKボタンを押して進めてください。



⑥インストールが完了すると、「ソフトウェア更新」が表示されます。
「今すぐ再起動」ボタンを押下して、Eclipseを再起動してください。



※「Eclipse Juno (4.2)」の場合は、「はい」ボタンを押下して再起動をします。

再起動時にはワークスペースをまた聞かれますが、先ほど設定したもので良かったら、気にせずOKボタンを押下してください。
これは毎回聞かれるので、毎回聞かれないようにするには、下にあるチェックボックスのチェックを入れてOKボタンを押してください。

⑦メニューの「ウィンドウ」→「設定」を選択し、設定ダイアログを表示してください。
左のツリーから「実行」を選択します。
右の「GOROOT path」にGOROOTで設定したパス「/usr/local/go」を入力してください。
「Go Tools」にはGOROOTを入力した後、フォーカスを移動させると自動的に補完されます。

※「GOPATH」には何も入れなくても大丈夫みたいです。
※パスは各自で設定したものに読み替えてください。




これでEclipseでGo言語開発が出来るようになりました。


■GoClipseを使ってみる
試しに、Goのプロジェクトを作成し、実行するところまでやってみましょう。

①プロジェクト・エクスプローラーで右クリックし、「新規」→「Go Project」を選択します。



②「Project name」にプロジェクト名を入力し、完了ボタンを押下します。
ここでは「sample」というプロジェクト名にしました。



③プロジェクト・エクスプローラーにsampleプロジェクトが出来ていると思います。
GOROOTとGOPATHでパスを通したものが下に表示されているのを確認してください。


④「src」フォルダを右クリックし、「新規」→「Go File」を選択します。



⑤「ソース・ファイル」にファイル名を入力します。
「ソース・ファイル・タイプ」は「Package Source File」を選択した状態で、完了ボタンを押下します。
ここではsample.goというファイル名にしました。



⑥さきほど設定したファイルが開かれていると思います。
mainパッケージのmain関数がGoのエントリーポイントになります。
なので、このファイルのmain関数が最初に呼ばれます。



⑦とりあえず、実行できる内容を記述しましょう。
「go-ui/examples」ディレクトリ内のminimal.goの中身をそのままコピペしてください。

⑧実行結果には、コンソールにgo-uiのバージョンが表示されるので、もしコンソールが出ていない場合は、メニューの「ウィンドウ」→「ビューの表示」→「コンソール」を選択して表示してください。


⑨緑の実行マークの右側にある▼をクリックし、「実行」→「Run Go Application」で実行してください。


もしこの時に、コンソールに「error while loading shared libraries: libqtdrv.so.1: cannot open shared object file」というエラーメッセージが出た場合、LD_LIBRARY_PATHにlibqtdrv.so.1のパスを通す必要があります。

下記コマンドでprofileを開きます。

 cd ~
 vi .profile
※viじゃなくても・・・。

最下部に下記を追記してください。GOPATHで設定したパスの「/src/github.com/visualfc/go-ui/lib」になります。

 export LD_LIBRARY_PATH=/home/(ユーザ名)/GoProj/src/github.com/visualfc/go-ui/lib

profileの変更を適用します。次のコマンドを実行してください。

 source .profile

Eclipseに反映できないかもしれないので、一度、Eclipseを再起動させたほうがいいかもしれません。
再起動させた後、作成したプロジェクトを選択状態にしておき、実行マークの▼→「実行」→「Run Go Application」で実行してください。

→(9/10 追記)
 ここではLD_LIBRARY_PATHを追記する対応を書いていますが、これでは満足ではなかったようです。
 Ubuntuを再起動して、Eclipseを立ち上げ、実行してみると、同様のエラーが再度出力されてしまいます。
 どうやら、Ubuntuが起動時にLD_LIBRARY_PATHを無効にしているそうです。
 理由はセキュリティのためだそうですが、さすがにこれは困ってしまうので、無効にしないように対策を入れる必要があります。
 まずは下記コマンドで「/etc/X11/Xsession.options」を開いてください。
  sudo vi /etc/X11/Xsession.options

開いたら、「use-ssh-agent」の部分を「no-use-ssh-agent」に書き換え保存して閉じてください。
 念のため、下記コマンドを実行してください。なお、profileを編集する箇所はありません。

  vi .profile
  source .profile

次に、Eclipseを立ち上げなおし、実行してエラーが出ないことを確認してください。
 一応、Ubuntuを再起動し、Eclipseで実行してもエラーが出なかったら大丈夫です。


⑩真っ白な画面と、コンソールにgo-uiのバージョンが表示されていると思います。




これでIDEを使ったGo開発が出来るようになりましたね!
ただ、何故かコード補完機能が効かないんですよね・・・。原因不明です。
「コード補完機能、効くようになったよ!」という方がいたら教えてください!


補足:
Eclipseを起動しようとした場合に以下のようなJDK(JRE)のエラーが出ることがあります。

A Java RUntime Environment (JE) or Java Development Kit(JDK)
must be available in order to run Eclipse. No Java virtual machine
was found after searching the following locations:
/usr/local/eclipse/jre/bin/java
java in your current PATH

この場合は、eclipse.iniに下記の記述を追加してください。追加箇所は「-vmargs」より前に追加してください。

-vm
/usr/java/jdk1.7.0_07/bin

追記後、保存し、Eclipseを起動するとエラーが発生しなくなっていると思います。

2 件のコメント:

  1. 「■GoClipseを使ってみる」の⑨で、LD_LIBRARY_PATHを追記する対応を書いていますが、これでは満足ではなかったようです。
    なので、対策を追記しました。

    返信削除
  2. コード補完機能は、gocodeをインストールしていないからではないでしょうか。
    https://code.google.com/p/goclipse/wiki/GocodeIntegration

    返信削除