@@ -10,50 +10,75 @@ tags:
1010 - GitHubPages
1111 - Obsidian
1212draft : " false"
13+ images :
14+ - ../../assets/Pasted%20image%2020250824202207.png
1315---
1416## はじめに
15- ObsidianのVault内ドキュメントの一部を[ Hugo] ( https://gohugo.io/ ) という静的サイトジェネレータを用いてGitHub Pagesで公開してみました。
17+ 今回はGit管理しているObsidianのVault内ドキュメントの一部を[ Hugo] ( https://gohugo.io/ ) というSSG(静的サイトジェネレータ)を用いて[ GitHub Pages] ( https://docs.github.com/ja/pages/quickstart ) へ無料で自動公開する仕組みを構築してみました🎵
18+ ![ ] ( ../../assets/Pasted%20image%2020250824202207.png )
1619
17- ## 使用するもの
18- - MacBook Air M3
19- - VS Code ... Hugo環境デバッグ
20- - Obsidian ... ドキュメントの更新
21- - [ Homebrew] ( https://brew.sh/ja/ ) ... パッケージマネージャ(Hugoインストール用)
22- - Git ... ファイルバージョン管理(` brew install git ` でインストール可能)
23- - GitHubアカウント ... GitHubのサービスをフル活用するので必要
24- - (任意)Gitクライアント ... GitHub Desktop、VS Codeの拡張機能、SourceTree等使いやすいもの
20+ ## 対象読者
21+ - Obsidian等でマークダウン記事をGitHubで管理している人向け
22+ - ブログとして公開したい記事がある人向け
23+ - 無料で公開したい人向け
24+ - 書いた記事を自動で公開できるようにしたい人向け
25+ - macOSユーザ向け
26+ 他OSとの違いはHugoのインストール方法程度ですので、他OSユーザーも参考になるかと思います。
2527
26- ## ObsidianのVault構成と命題
27- ObsidianのVaultはGitHubのプライベートリポジトリで現在管理しています。私の場合、技術系ドキュメントと日記をひとつのVaultで管理しているので、技術系ドキュメントのみを公開する方法を模索していました 。
28+ ## 対応動機
29+ ObsidianのVault(記事を管理しているディレクトリ)はGitHubのPrivateリポジトリで管理しています。以下のディレクトリ構造のように、便宜上技術系ドキュメントと日記をひとつのVaultで管理しているので、技術系ドキュメント(docs/public)のみを公開する方法を模索していました 。
2830``` text
2931├── .git/ # git
3032├── .obsidian/ # Obsidianの設定
3133├── diary/ # 日記
32- ├── docs/ # 技術系のドキュメント
34+ ├── docs/ # 技術系ドキュメント
3335│ └public # 成果物
3436│ └draft # 下書き
3537├── assets/ # 画像や資料アセット(docs用)
3638├── LICENSE # リポジトリのライセンスファイル
3739└── README.md # リポジトリのREADMEファイル
3840```
41+ ちなみにObsidianの「ファイルとリンク」の設定は以下のとおりです。ウィキリンクなどObsidian固有の機能はオフにし、画像や資料ファイルは全て` assets ` フォルダへ集約しています。
42+
43+ | 設定項目 | 設定値 |
44+ | --------------- | -------------- |
45+ | 新規作成するリンクの形式 | ` ファイルに対する相対パス ` |
46+ | ` [[ウィキリンク]] ` を使用 | ` OFF ` |
47+ | 新規添付ファイルの作成場所 | ` 以下で指定されたフォルダ ` |
48+ | 添付ファイルフォルダのパス | ` assets ` |
49+ SSGにHugoを選んだ理由は好みのテーマがあったからです。GitHub Pagesが公式でサポートしているJekyllを使用した方が公開手順は減ります。
50+
51+ なお、GitHub PagesにはPrivateリポジトリの対象ディレクトリのみを公開する機能もありますが、Privateリポジリを公開する場合は有料プランに加入していないと利用できなかったため、断念しました🥲
3952
40- ちなみにObsidianの添付ファイルのパスに関する設定は以下のとおりとしています。
41- ![ ] ( ../../assets/Pasted%20image%2020250824201710.png )
4253
4354## 今回の方針
4455Vault内の「docs/public」や「assets」フォルダの内容だけを公開するために、以下の手順を実施します。以降登場するリポジトリ名やブランチ名は任意です。
45- 1 . Publicリポジトリ` shindys-note ` を作成する
46- └ Hugo環境をデフォルトブランチに構築する
47- 2 . GitHub Pages公開用ブランチ` gh-pages ` を構築する
48- 3 . Vault内対象フォルダの内容を` master ` へ同期する
49- 4 . ` gh-pages ` ブランチをGitHub Pagesで公開する
56+ ``` mermaid
57+ flowchart LR
58+ A[Publicリポジトリ shindys-note の作成] --> B[Hugo環境をデフォルトブランチに構築]
59+ B --> C[GitHub Pages公開環境を gh-pages ブランチに構築]
60+ C --> D[Vault内の対象フォルダを master へ同期]
61+ D --> E[gh-pages ブランチを GitHub Pages へ公開]
5062
51- ## 1. Publicリポジトリ` shindys-note ` を作成する
63+ ```
64+ ## 使用するもの
65+ - MacBook Air M3
66+ - VS Code ... Hugo設定変更&デバッグ用途
67+ - Obsidian ... ドキュメントの更新
68+ - [ Homebrew] ( https://brew.sh/ja/ ) ... パッケージマネージャ(Hugoインストール用)
69+ - Git ... ファイルバージョン管理(` brew install git ` でインストール可能)
70+ - GitHubアカウント ... GitHubのサービスをフル活用するので必要
71+ - (任意)Gitクライアント ... GitHub Desktop、VS Codeの拡張機能、SourceTree等使いやすいもの
72+
73+ ## 1. Publicリポジトリ` shindys-note ` の作成
5274### Hugoインストール
5375[ macOS] ( https://gohugo.io/installation/macos/ )
5476``` bash
5577brew install hugo
5678```
79+ - Windowsユーザーは[ こちら] ( https://gohugo.io/installation/windows/ )
80+ - Linuxユーザーは[ こちら] ( https://gohugo.io/installation/linux/ )
81+
5782### Hugo siteの作成 & 空ディレクトリ内に.gitkeepを作成
5883任意のディレクトリに移動してから以下コマンドを実行してください。
5984``` bash
@@ -99,7 +124,7 @@ node_modules/
99124```
100125
101126### サイトの基本情報やテーマ変更やローカルでのテスト方法
102- GitHubへpushする前に自分の好きなテーマで記事がちゃんと表示されるかテストしましょう 。
127+ GitHubへpushする前に、自分の好きなテーマで記事が正しく表示されるかテストしましょう 。
103128
104129#### 基本情報(URLや言語、タイトル等)
105130hugo.toml内で設定できます。
@@ -121,12 +146,12 @@ git submodule add https://github.com/theNewDynamic/gohugo-theme-ananke.git theme
121146echo ' theme = "ananke"' >> hugo.toml
122147```
123148
124- ` shindys-note ` を再度クローンしたときに、submoduleが配置されていない場合はリポジトリ内で以下のコマンドを実行してください 。
149+ ` shindys-note ` を再度クローンしたときに、サブモジュールが配置されていない場合はリポジトリ内で以下のコマンドを実行してください 。
125150``` bash
126151git submodule update --init --recursive
127152```
128153
129- またsubmoduleを解除 (テーマをアンインストール)する場合は以下のコマンドを実行後、変更をコミットしてください。(hugo.tomlのthemeも削除してください 。)
154+ またサブモジュールを解除 (テーマをアンインストール)する場合は以下のコマンドを実行後、変更をコミットしてください。(hugo.tomlのテーマ設定も削除してください 。)
130155``` bash
131156git submodule deinit -f themes/ananke
132157git rm -f themes/ananke
@@ -145,7 +170,7 @@ hugo server -D
145170- 保存するたびに自動でリロードしてくれます。
146171
147172
148- 好みのテーマで作成した記事が表示されたら確認は終わりです 。今回は細かなレイアウトの修正は割愛します。
173+ 好みのテーマで作成した記事が表示されたら確認は完了です 。今回は細かなレイアウトの修正は割愛します。
149174
150175![ ] ( ../../assets/Pasted%20image%2020250821215604.png )
151176
@@ -173,8 +198,8 @@ GitHubのリモートリポジトリの作成方法は多種多様なので、
173198└── README.md
174199```
175200
176- ## 2. GitHub Pages公開環境を` gh-pages ` ブランチに構築する
177- ここでは、GitHub Actionsを使用して` shindys-note ` のデフォルトブランチに更新があった際に、自動でHugoによるビルドを行い成果物をgh-pagesへ反映する仕組みを構築します 。手順としては以下の内容を記述した` .github/workflows/deploy.yml ` を` shindys-note ` のデフォルトブランチで作成し、pushするだけです。コメント部分に注意して適宜修正してください。
201+ ## 2. GitHub Pages公開環境を` gh-pages ` ブランチに構築
202+ ここでは、GitHub Actionsを使用して` shindys-note ` のデフォルトブランチに更新があった際に、自動でHugoによるビルドを行い、成果物を ` gh-pages ` ブランチへ反映する仕組みを構築します 。手順としては以下の内容を記述した` .github/workflows/deploy.yml ` を` shindys-note ` のデフォルトブランチで作成し、pushするだけです。コメント部分に注意して適宜修正してください。
178203``` yml
179204name : Deploy Hugo site to GitHub Pages
180205
@@ -213,10 +238,10 @@ jobs:
213238GitHubリポジトリのActionsタブを見ると成否が伺えます。
214239
215240
216- ここまでで、 ` shindys-note`の環境は整いました。あとはObsidianのVault内の更新があれば`shindys-note`へ同期を行う仕組みを構築すれば 、GitHub Pagesへの公開設定を実施して完了です 。
241+ ここまでで` shindys-note`の環境は整いました。あとはObsidianのVault内の更新があれば`shindys-note`へ同期を行う仕組みを構築し 、GitHub Pagesへの公開設定を実施すれば完了です 。
217242
218- # # 3. Vault内対象フォルダの内容を `master`へ同期する
219- プライベートリポジトリで管理しているObsidianのVaultの技術系ドキュメント関連ファイルに変更があった場合に、Vault内対象フォルダの 「docs/public」や 「assets」の内容を`shindys-note`の`master`ブランチの「content」や「assets」へ同期(置換)する仕組みを構築します。
243+ # # 3. Vault内の対象フォルダを `master`へ同期
244+ Privateリポジトリで管理しているObsidianのVaultの技術系ドキュメント関連ファイルに変更があった場合に、Vault内の対象フォルダ 「docs/public」および 「assets」の内容を`shindys-note`の`master`ブランチの「content」や「assets」へ同期(置換)する仕組みを構築します。
220245
221246# ## 3.1 Personal Access Token (PAT)の作成
222247リポジトリ間の操作になりますので、以下の手順でリポジトリ操作権限を持ったPATを作成します。
@@ -272,7 +297,7 @@ jobs:
272297 git push origin master # Vaultのメインブランチに合わせる
273298` ` `
274299
275- # # 4. `gh-pages`ブランチをGitHub Pagesで公開する
300+ # # 4. `gh-pages`ブランチを GitHub Pages へ公開
276301最後に構築した公開用環境をGitHub Pagesに公開する設定を行います。
2773021. GitHubリポジトリのSettingsタブのPagesを選択
278303
@@ -284,10 +309,10 @@ jobs:
284309
285310
286311# # おまけ(2025年8月24日追記)
287- 最近は[PaperMod](https://github.com/adityatelange/hugo-PaperMod)というテーマを使っています。見た目はシンプルでスタイリッシュなのが特徴的なテーマです。ざっとみた感じHugoのテーマの中で1番人気ありそうでした 👌
312+ 最近は[PaperMod](https://github.com/adityatelange/hugo-PaperMod)というテーマを使っています。見た目はシンプルでスタイリッシュなのが特徴的なテーマです。ざっと見たところ、Hugoのテーマの中で最も人気があるようでした 👌
288313
289314
290- 基本設定は設定ファイル(`hugo.toml`等)で完結して、割と簡単に使えるので私もおすすめします 🥰
315+ 基本設定は設定ファイル(`hugo.toml`など)で完結し、比較的簡単に利用できるため、私もおすすめします 🥰
291316私の設定は以下で公開中です。
292317[shindys-note/hugo.toml at master · shindy-dev/shindys-note](https://github.com/shindy-dev/shindys-note/blob/master/hugo.toml)
293318
@@ -297,7 +322,7 @@ jobs:
297322 [params.analytics.google]
298323 SiteVerificationTag = "$GOOGLE_ANALYTICS_ID"
299324` ` `
300- 私の場合はIDを公開したくなかったので以下のように変数っぽく定義して、GitHub Actionsで 、GitHub Pagesにデプロイする際にSecretsに登録した値で置換するようにしています 。`sed`コマンドが置換制御です 。
325+ 私の場合はIDを公開したくなかったので、以下のように変数として定義し 、GitHub ActionsでGitHub Pagesにデプロイする際、Secretsに登録した値で置換するようにしています 。`sed`コマンドが置換処理を制御しています 。
301326` ` ` yml
302327 - name: Build Hugo site
303328 run: |
0 commit comments