こんにちは、株式会社Pentagon代表の山本です。
当社では「アプリを駆使した事業を立ち上げたい」方のために、アプリの設計・デザイン・開発までまるっとサポートしています。
※本記事にソースコードは含まれませんので、予めご了承ください🙏
今回のnoteを書いた経緯🙄
先日、テンプレートからファイルを生成するMustacheをDartで書きましたが、Mustacheではロジックを組み込めないため、複雑なテンプレートをつくることができませんでした。ロジックを組み込むために、他のテンプレートエンジンを検討する必要がありました。
また、Go言語の処理速度が速いということで、Go言語でのファイル生成を行うことになりました。
そこで「Go言語 x テンプレートエンジン」が調査対象となりました。
ファイル生成の流れ🚀
Step1:テンプレートファイルとYamlファイルを用意
Step2: Yamlファイルを読み込み構造体に変換
Step3:テンプレートファイルに構造体を流し込みファイルを生成
大きな流れとしては上記の通りです。
テンプレートパッケージ📦
Go言語には2つのテンプレートパッケージがあります。
- text/template Package
- html/template Package
これらを利用することでテンプレートからファイルの自動生成を行うことができます。
詳しい使い方は、公式ドキュメントをご覧ください。
https://golang.org/pkg/text/template/
こちらのサイトも日本語でわかりやすくまとめられているので参考になります。
https://maku77.github.io/hugo/go/template.html
Yamlを読み込み構造体に変換する🔄
Golangで地味にYamlの読み込みに苦戦しました。
interfaceという何でも代入できる型を使うとキャストするのが面倒。
とはいえ、yamlを書いてyaml毎に構造体を定義するのも面倒。と思い調べたところ、便利なツールがありました。
https://zhwt.github.io/yaml-to-go/
このサイトにYamlをコピペすれば自動的にGo言語の構造体を作成してくれます。