Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Lubuntu13.10にGo1.2をインストールしてgo-gtkでHello World!

$
0
0

ふとした気の迷いでLubuntuをVirtualboxにぶち込んでしまったので、折角だからgo-gtkでもやってみることにした。
WindowsとLinuxじゃGtk+の開発環境揃えるのにかかる時間も、安定性も全然違うからね。

(にしても無駄に勢いのあるタイトルだな‥‥)

1. Go1.2のインストール

aptにある奴をそのまま入れるとGo1.1がインストールされてちょっと残念なので、gvmを使うことにした。

moovweb/gvm · GitHub

日本でgvmって言うと(国際的にだろうけど)、Groovyのバージョン管理に使う奴のことを大抵指すんだけど、この場合のgvmというのはGo Version Managerの方のgvm。
ややこしいどころかコマンドも同じだし、インストール先もどっちも~/.gvmだから、同時に入れたら間違いなくコンフリクトすると思う。(というかコンフリクトした)
これはあれかな、時代はChefってことかな。開発環境の管理にバージョンマネージャーを使う時代は終わったってことかな。

ここでは、もしGroovyを使いたくなったら、そのときはまた新しくVirtualBoxにLinuxなりFreeBSDなりをぶち込むことにして、Go言語の方のgvmをインストールすることにします。
(何て適当な‥‥)

# curlのインストール$ sudo apt-get install curl
# gvmのインストール$ bash < <(curl -s https://raw.github.com/moovweb/gvm/master/binscripts/gvm-installer)# Go言語のビルドに必要なものをインストール$ sudo apt-get install git mercurial make binutils bison build-essential
# go1.2のインストール(結構時間かかる)$ gvm install go1.2
$ gvm list

gvm gos (installed)=> go1.2

# go1.2をデフォルトに設定$ gvm use go1.2 --default
# 動作確認$ go version
go version go1.2 linux/amd64

scriptとかで記録を取ったわけではないので自信がありませんが、確かこんな感じだったと思います。

2. Vimの設定

次にVimの設定をします。
どう考えてもGo言語のインストールに必須事項じゃありませんがボクにとっては死活問題なのです。

なにはともあれVimをインストールします。

# vim-noxはif_luaが有効≒neocomplete.vimが動く←とても大事$ sudo apt-get install vim-nox

そして、neobundle.vimを導入して、lightline.vimとneocomplete.vimをインストールするために、

$ mkdir -p ~/.vim/bundle
$ git clone https://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim

としてから、~/.vimrcを書きます。
(ところでvim-nox、-clipboardになってるのですがこれは‥‥)

~/.vimrc
"NeoBundleの読み込みif has('vim_starting')setnocompatiblesetruntimepath+=~/.vim/bundle/neobundle.vim/endifcall neobundle#rc(expand('~/.vim/bundle'))filetype plugin indent onsyntaxon"Neobundle manage Neobundle
NeoBundleFetch 'Shougo/neobundle.vim'"My Bundles here:"lightline.vimsetlaststatus=2
NeoBundle 'itchyny/lightline.vim'letg:lightline = {
  \ 'colorscheme': 'wombat',
  \ }

"neocomplete.vim
NeoBundle 'Shougo/neocomplete.vim'"use neocomplete.letg:neocomplete#enable_at_startup =1" Use smartcase.letg:neocomplete#enable_smart_case =1

NeoBundleCheck

neocomplete.vimの設定がかなり適当ですがかと言って気合入れすぎると何の記事か分からなくなるのでこれくらいにしておきます。

次に、Go言語関連のプラグインを入れます。
今回はBlackrush/vim-gocode · GitHubを入れることにします。

まず、コマンドラインから、

$ go get github.com/nsf/gocode

として、~/.vimrcに、

~/.vimrc
setrtp+=$GOROOT/misc/vim"vim-gocode
NeoBundle 'Blackrush/vim-gocode', {"autoload": {"filetypes": ['go']}}
auto BufWritePre *.go Fmt

と追記します。場所は空気読んでください。
これでGo言語がシンタックスハイライトされたり、保存時に有無を言わさずgo fmtされたり、関数名が補完されたりします。

3. go-gtkのインストール

何だかVimで行を稼ぎ過ぎたような気がしなくもないです。
まあよい、mattn/go-gtk · GitHubのインストールだ。

これは結構簡単で、

$ sudo apt-get install libgtk2.0-dev
$ go get github.com/mattn/go-gtk/gtk

でいけるはずです。go getの方はちょっと時間がかかったような気がします。

4. go-gtkでHello World!

こういうコードをコピペなり写経なりします。

hello-gtk.go
packagemainimport("github.com/mattn/go-gtk/gtk""os")funcmain(){gtk.Init(&os.Args)window:=gtk.NewWindow(gtk.WINDOW_TOPLEVEL)window.SetTitle("Hello World!")window.Connect("destroy",gtk.MainQuit)button:=gtk.NewButtonWithLabel("Click Here")button.Clicked(func(){msgDlg:=gtk.NewMessageDialog(button.GetTopLevelAsWindow(),gtk.DIALOG_MODAL,gtk.MESSAGE_INFO,gtk.BUTTONS_OK,"こんにちは世界")msgDlg.Response(func(){msgDlg.Destroy()})msgDlg.Run()})window.Add(button)window.SetSizeRequest(600,600)window.ShowAll()gtk.Main()}

で、実行します。
go-gtkはgo runから実行できるみたいです。(WindowsでWALKだとできないんですよね)

$ go run hello-gtk.go

一応スクショでも。

2014-03-13-181057_602x630_scrot.png

まあとても地味です。

終わりに

何だか趣旨の良く分からない記事ですが参考になったというなら幸いです。

go-gtkはLinuxでGo言語でGUIする、という非常に限られた状況であればかなりいいんじゃないかと思います。そんなときが来るのかは知りませんが。

んー。Go言語でGUIといったらこれ、みたいなのが出てくるといいなー。
(GUIライブラリは一長一短だから、JavaのSwingみたいなレベルでサポートしないと厳しいだろうけど‥‥)

あとVimはやっぱりいいです。neocomplete.vimもlightline.vimもカッコいいです。い、いや、そこのemacs使いさん、突然包丁なんて取り出してどうしたんですか!?
ボ、ボクskkも好きだから。
「だったら尚更emacs使え」? そ、そんなこと言われても‥‥。今更エディターを変えるなんて‥‥。
あ、ちょ、やめ‥‥うわぁあああああああ!


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>