このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。

Archives Details

Go言語でAssetsもシングルバイナリ化に便利な packr パッケージ

go

2020.11.25

この記事は最終更新日から1年以上が経過しています。

どもです。

これまた、お久しぶりな。。

は、早いですね。

もう11月も終わりそうではないですか!?

振り返れば、最近はスプラトゥーンしかやってないな。。(反省)

そんなこんな今回はGoに関する記事をと。

思い返せば、Goの記事(Qiita)書いたのも4年前ですよ!本当に時の流れは早いな。。

Rubyの会社のフロントエンドエンジニアが、GolangでAPIサーバーを開発してみる。

久々に触ったら、「あれこれどうだっけ?」状態でした。w

なので、再度復習の日々。

と言う事で、Go言語はCLIを容易に作成出来ると言う事で、以前 node.jsで作成したCLIの一つの「APB CLI」をGo言語で作成しなおしました。

Go言語版APB CLI

そこで、「assetsファイル(htmlとかcssとか)をバイナリ(実行ファイル)に固めてシングルバイナリにしたいなぁ。。」

と思った際、以前だったらgo-bindataを使用するのが一般的だったみたいですが、メンテナンスもされなり別のパッケージが使われていると言う事なので、色々ある中で「gobuffalo/packr」を使用してみました。

packr

https://github.com/gobuffalo/packr

以下の様に、packr.NewBox() メソッドの引数にtemplatesのパスを指定しBoxを作成して、

box := packr.NewBox("./templates")

この様に、FindStringメソッドでString型(ファイル内容を文字列)でファイルを取得することが出来ます。

html, err := box.FindString("index.html")

こちらで、バイナリを取得する事が出来ます。

html, err := box.Find("index.html")

もちろん、HTMLのみならず、CSSファイルも可能です。

Findや、FindString以外にも、box.List()でファイル検索をイテレータで取得することも可能で、超便利でした。

for _, file := range box.List()

この様に、イテレータですべてのファイルを取得し、ファイル作成も簡単に行えます。

for _, file := range box.List() {
    s, err := box.Find(file)
    err = ioutil.WriteFile(file, s, 0644)
    if err != nil {
        log.Fatal(err)
    }
}

NewBoxで作成したassetsに関しては、

$ go build

した際に一緒にバイナリ(実行ファイル)に含まれる形となります。

そのほかも触っていこうと。

Comment

Related Article

Go言語でAssetsもシングルバイナリ化に便利な packr パッケージ

2020.11.25

CATEGORY LIST

LATEST NEWS

Rustでつくる ふっかつのじゅもん

Rust

2025.04.29

Tauri(Rust) × AI で作る GitGUIクライアントアプリ その5

Rust

2025.04.14

う、動くぞ! Mac mini Apple M4 Pro で PS3ソフトを遊ぶ。RPCS3 Mac版を起動

Game

2025.04.12

Tauri(Rust) × AI で作る GitGUIクライアントアプリ その4

Rust

2025.04.10

Tauri(Rust) × AI で作る GitGUIクライアントアプリ その3

Rust

2025.04.08

Tauri(Rust) × AI で作る GitGUIクライアントアプリ その2

Rust

2025.04.07

時代を先取りし過ぎた ニューラルネットワークが導入されたゲーム『がんばれ森川君2号』を令和に嗜んでみる。

Game

2025.04.06

Tauri(Rust) × AI で作る GitGUIクライアントアプリ その1

Rust

2025.04.05

keyring-rsで、Macのキーチェーンに登録する。

Rust

2025.04.04

RustとWebAssemblyによるゲーム開発 Webpack5対応

Rust

2025.03.27

Rustで創る MOS 6502 CPU その3 (Cursorと共に)

Rust

2025.02.24

あけましておめでとうございます(24日経過)

イベント

2025.01.24

RANKING

Follow

SPONSOR

現在、掲載募集中です。



Links

About Us

WEBデザイナーの、WEBデザイナーによる、WEBデザイナーの為のサイト。「みんなで書こう!」と仲間を募ってみたが、結局書くのは自分だけとなってしまいました。日々のメモを綴っていきます。

Entry Profile

Graphical FrontEnd Engineer
- Daisuke Takayama

MAD CITY 北九州市で生まれ育つ。20代はバンド活動に明け暮れ、ふと「webデザイナーになりたい。」と思い、デジタルハリウッド福岡校入学。卒業後、数々の賞を受賞、web業界をざわつかせる。
現在、主に、ゲーム制作中心に港区六本木界隈で活動中。

FOLLOW US