Golang + embed + htmlでデスクトップアプリもどきを作る

20220607

Golang

t f B! P L
Golang embed html デスクトップアプリ

golangでデスクトップアプリ

golangで書いてみたいんだけどなにかないかなーと探してみたけど、
なんかパッとしたものがない、、、

でも、これでもういいんじゃない?って思うことがあったので書いておく。

package main

import (
	"embed"
	"html/template"
	"log"
	"net/http"
)

//go:embed static/*
var static embed.FS

type Info struct {
	Name string
	Info string
}

func main() {
	http.HandleFunc("/", InfoMe)
	log.Fatal(http.ListenAndServe(":8080", nil))
}

func InfoMe(w http.ResponseWriter, r *http.Request) {
	info := Info{"あいちゃんだよー", "競馬のAI予想してるよー"}
	tmpl, err := template.ParseFS(static, "static/public/index.html")
	if err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}

	if err := tmpl.Execute(w, info); err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
	}
}
<html>
	<head>
		<link  href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css"  rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
	</head>
	<body>
		<h1>{{ .Name }}</h1>
		<h3>{{ .Info }}</h3>
	</body>
</html>

go buildしたときにexeができる。
//go:embed static/*は、コメントだけどこれが重要。
これがあることによって、staticディレクトリ以下のファイルは、exeの中にいれてくれる。

なので、exeを起動して、localhost:8080にアクセスすると
画面が表示される。
exeだけ渡せばいいだけだし、いろいろ可能性を感じる

最後に

デスクトップアプリ?となるかもしれないけど、
ブラウザ使ってない人はいないと思うし、これでいいよね、、、?
いろいろ可能性があって、シンプルに面白そう。

このブログについて

技術的に悩んだこと、やってみたことを書き溜めています。自身の復習のため、また同じ悩みがある方は参考にできるような書き方にしていきます。 趣味の競馬AI開発と競馬AIでの予想も公開していきます。 金曜日に土曜日の中央競馬(JRA)全レース予想、土曜日に日曜日の中央競馬(JRA)全レース予想を公開する予定です。

Tags

Golang (1) JavaScript (9) python (2) 機械学習 (6) 競馬 (343) 副業 (2)

注目の投稿

2023/06/04(日) 競馬AI予想(東京競馬場)

このブログを検索

アーカイブ

投稿者情報

TANDE競馬のあいちゃんのアイコンです

はじめまして。あいちゃんです。雑魚エンジニアです。趣味で機械学習をやっています。日々の勉強としてアウトプットしていきます。

QooQ