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ファイルが作成されます。

まとめ

ここまでで、簡単なツールは作れそうな気がしてきましたね。

システム開発

Posted by @erestage