Webアプリにも手を出してみた(※)けど、Deployが面倒で萎えた。
※ この辺の本が良かった。
JXA
そんな感じでQiitaを眺めてたら、GoでOSXのアプリを書く #golang - Qiita というのを見つけた。
要はJavaScript for Automationを使うという話。
これを参考に、WebViewだけのCocoaアプリを起動して、そこからlocalhostで立ち上げたGoのWebアプリを開けばいいんじゃないか?
https://github.com/lonnc/golang-nw が使えそうだったけど、あえて自分で作る。
JXA(という略称が正式かは知らないが)だとWebViewのHTMLがレンダリングされないという情報があったが、試してみたら動いた。JSで画面を書き換えられたりするとチラついたりもするけど、そんなインタラクティブなの作る予定はないのでよしとする。
やってみる
$GOPATH/src/github.com/tnantoka/webwindow/webwindow.go
を作るgo get github.com/tnantoka/webwindow
する$GOPATH/src/github.com/tnantoka/cwww/main.go
作る(webwindowをimport
)cd $GOPATH/src/github.com/tnantoka/cwww; go run main.go
する
後はいじれば勝手に更新もしてくれた。
そんな感じでできたのがこちら。
https://github.com/tnantoka/cwww
パッケージを作ってみたかったのでWebView部分は別レポに分けた。
https://github.com/tnantoka/webwindow
調べたこと
templateの結果を文字列で得る
http://otiai10.hatenablog.com/entry/2014/10/15/135709
var buf bytes.Buffer
t.Execute(&buf, config)
fmt.Println(buf.String())
templateの継承
https://github.com/golang-samples/template/tree/master/extends
これでいける。
bindata使うとfilesできなくなるので、parseで1つ1つ処理していった。
exit status 1でこける
// command := "osascript -l JavaScript " + f.Name()
// 2015/05/28 23:07:15 fork/exec osascript -l JavaScript /var/folders/wh/9ztn2bvs27j6x4wcds8kxkxr0000gn/T/win.js222293868: no such file or directory
// exit status 1
http://stackoverflow.com/questions/24095661/os-exec-sudo-command-in-go
sh -c
でやれば行けた。
凡ミス
templfileのfはwriterなので読めないよ、改めて開かないと。
output, err := ioutil.ReadFile(f.Name())
if err != nil {
log.Fatal(err)
}
fmt.Println(string(output))
TODO
- アイコン変えたい
- アプリ名変えたい
- osascriptやめたい
- document
- もっとテスト書く
- APITokenを暗号化
わりと今回はGo書いた感あった。