HUGOとは一体何か?
HUGOは、静的なhtmlを生成する事ができる静的ページジェネレータです。HUGOの場合、ローカル環境ではHUGOの動的機能を使って動的にサイトを開発し、成果物の出力時に動的要素を全て静的要素(html,css,js,img等)として出力します。 生成された成果物にはサーバサイドの処理を含まないため、サイトの表示速度は高速になり、サーバサイドの処理が無い分セキュリティリスクが減ります。
ちなみに今見ているこのサイトはHUGOで作っています。テンプレートはフルスクラッチで記述しています。
初心者にも使える?
もしhtmlやjavascriptを書いた事が無い、コマンドラインでコマンドを実行した経験が無い、という状態であれば、HUGOは非常に敷居が高いものになると思います。静的ページジェネレータは最低限初歩的なプログラムが理解できている中級者向けであると私は考えています。単純に記事を書く事だけに集中したい方は、レンタルブログがいいかと思います。
何故高速なのか
高速な理由はサーバサイドの処理が無いからです。WordPressやPHPといったフレームワーク等を使ったサーバサイドが存在するサイトでは、サーバ側でデータベースへの参照や、フレームワークの処理、ビジネスロジック等、htmlを表示する前に行う処理が沢山あり、そのサーバサイドの処理が遅い事に起因して、画面の表示が遅くなる事があります。一方HUGO等の静的ページジェネレータは「完全に静的なhtml」であるため、そのサーバサイドに当たる処理がありません。そのおかげで非常に高速なレスポンスが変えるため、画面表示も高速になります。
何故セキュリティリスクが減るか
サーバサイドの処理が有る場合、データベースやライブラリ等、存在するだけでセキュリティリスクが発生するものがあります。サーバサイドが無ければそもそもそのリスクが発生しません。また、htmlでは仕様的にできる事が非常に限られてくるため、被害を受けにくくなっています。
レンタルブログとの違い
- レンタルブログは記事を書く際は基本的に管理画面経由で記事を書きます。一方HUGOは自分のローカル環境でMarkdownで記事を書き、アップロードします。
- レンタルブログにはhtmlに制限があり、自分で触れない部分が多々有ります。一方HUGOには制限はありません。
- レンタルブログには広告が表示されてしまう場合が多いですが、HUGOの場合は自分の広告だけを埋め込む事ができます。
- レンタルブログの場合はURLの問題で引っ越しは大変難しいですが、HUGOの場合はGithubPagesからS3への引っ越し等は簡単です。
HUGOが向いているサイト形態
ブログ形態が最も向いています。ブログ形態であれば、ページネーションやタグなどで完全に動的に作成する事ができます。このサイトのようにブログでない形態でも問題ありませんが、リンクを動的に作れないので、あまり向いているとはいえません。
HUGOのメリット
- 高速。
- セキュリティリスクを減らせる。
- Markdown形式で記事が書ける。
- ローカルで最終的な画面表示や挙動を確認できる。
- HUGOは標準で高機能なのでplugin等を使う機会が少ない。
- 引っ越しが楽。単にファイルをアップロードするだけなので、S3からDropbox等に移行する事も容易です。
HUGOのデメリット
当然デメリットもあります。
- 学習コストが発生する。(公式は英語のみ)
- 動的にtitleタグやdescriptionを組み立てる事が苦手。
- 動的処理は基本的にjavascriptを起点に行う。
- 決まり事を覚えていないと嵌まる部分があったりする。
- 記事中のtarget=”_blank”等の細かい制御が苦手。
- 記事にcssを細かく設定するのが苦手。
Markdownの弱点をそのまま引き継いでいます。
golangを知らなくてもHUGOで記事書ける?
自分でテンプレートを編集したりしなければ、golangの出番はありません。単純にMarkdownで記事を書くだけです。テンプレートを編集したりフルスクラッチしたい場合は、golangというかGo Templatesの知識が必要になりますが、基本的に公式サイトのリファレンスに詳細が記述されているので、英語さえ読めれば何とかなります。