Go言語をやってみる
ゴールデンウィーク特集としてGo言語を習得することにしました。
まず、環境の構築です。
https://qiita.com/spiegel-im-spiegel/items/dca0df389df1470bdbfa
このサイトがすべてですね。
特に困る点はありませんでした。
ものすごく簡単に実行ファイルまで作れてしまいました。
ファイルサイズは大きめですが、現代なら大丈夫でしょう。
まだ、ゴールデンウィークは始まったばかりなのに。
まあ、言語仕様的には扱いやすそうな感じはしますね。
少なくともPythonよりは馴染めそうです。
GUIを作ってみよう
とりあえず、GUIを付けないと使ってもらえないご時勢なので。
Go言語でGUIを作るときはWALKというものが鉄板のようです。
WindowsでGo言語でGUIするにはWALKがいいかもしれない
go get github.com/lxn/walk
で環境をインストールできます。
特に何も表示されずにコンソールに戻ってきたら成功です。
yumみたいに進捗を表示したりはしてくれません。
EXEファイルを作ってみよう
プログラムはできました、goのSDKが無い環境でも動くようにします。
とても簡単で、ソースのあるディレクトリに移動してから
go build
を実行するだけで、exeファイルが作成されます。
ダブルクリックすると動作、しませんね。
マニフェストファイルを作成する必要があります。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="SomeFunkyNameHere" type="win32"/> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/> </dependentAssembly> </dependency> </assembly>
マニフェストファイルの中身は、こんな感じです。
とりあえず、このままコピペして「hello.exe.manifest」というファイルを作ります。
exeファイルのファイル名の末尾に「.manifest」を付けると決まっています。
さあ、これで無事にexeファイルを動かすことができました。
マニフェストファイルを埋め込みたい
どう考えてもexeファイル単体で動いたほうが都合が良いです。
rsrcというものを使うことで、実現することができます。
Go言語 – WALKでGUI – 単独起動する実行ファイルの作成
go get github.com/akavel/rsrc
をするとソース一式がダウンロードできます。
ダウンロード先はGOPATHになります。
環境変数で指定していないときはホームディレクトリのgoフォルダです。
書いてある通りですが「rsrc」フォルダに移動してから
go build
すると、rsrc.exeを作ることができます。
作成したrsrc.exeは使いまわすことができます。
このrsrc.exeを使ってマニフェストとアイコンを埋め込む作業を行います。
rsrc.exeをパスが通ったところに保存しておきましょう。
自分が作成したプログラムのパスに移動してから
rsrc -manifest hello.exe.manifest -ico hello.ico -o hello.syso
を実行すると、hello.sysoというファイルが作成されます。
このファイルが存在する状態で
go build -ldflags="-H windowsgui"
をするとアイコンとマニフェストが付加されたexeファイルが作成されます。
まとめ
ここまでで、簡単なツールは作れそうな気がしてきましたね。