GitHub Pagesで、Markdownのメモをブログのように公開する

## はじめに
Markdownでドキュメントを書いている方は多いかと思います。
私もちょっとした勉強メモをMarkdown形式で記載して、後で見返す用にGitHubにアップだけしていました。
個人的には、Qiitaに書いてしまった方が後から見返しやすいのですが、流石に大多数の方に意味のない情報のため、仕方なくGitHubにアップしていましたが、UIがあまり好きではないのでアクセス頻度が下がっていました。
かといって、htmlで見栄えをよくした勉強メモは流石に本末転倒だなあと思っていたときに、たまたまGitHub上はmdファイルしかないのにGitHubPagesで公開されているものは拡張子がhtmlというサイトに出会い、これは真似したいと思い方法を調べました。

基礎知識がなさすぎて遠回りしましたが、環境構築不要で、GitHub Pagesの機能で実現可能ということがわかりましたので記事にしました。

## 実際の成果物
先に関連リンクを置いておきます。
GitHub：https://github.com/c3drive/study
GitHub Pages：https://c3drive.github.io/study

## GitHub Pages
GitHubの静的サイトホスティングサービスです。
設定をすると、`https://{ユーザ名}.github.io/{リポジトリ名}/`の形式でアクセスができます。（独自ドメインの設定も可能）

以前、ポートフォリオサイトをGitHub Pagesで公開したことがあります。

https://qiita.com/c3drive/items/6c1e5dd281dfd106d5c6

これは、Vueを使って作成したhtmlファイルを公開しています。

しかし、GitHub Pagesは、htmlだけでなく、mdファイルをPushするだけで(GitHub Pagesが勝手にhtml変換してくれて）htmlとして公開することができます。

## Jekyll(ジキル)について
RubyGemsで配布されているRuby製のツールで、マークアップ言語で書かれたテキストから静的サイトの生成を行うための静的サイトジェネレーターです。
Jekyllは、ローカル環境にRubyとJekyll環境を構築し、Jekyllコマンドでビルドすることでmdからhtmlファイルを生成することができます。

GitHub Pagesはこのmd→htmlを内部で行ってくれているようです。

GitHub Pagesでホスティングする場合、**自身の環境にRuby+Jekyll環境を構築する必要はありません。**

なお、Jekyll以外の静的サイトジェネレーターはGitHub Actionsに設定することで同じようなことが可能です。
> カスタム ビルド プロセスまたは Jekyll 以外の静的サイト ジェネレーターを使用する場合は、GitHub Actions を作成して、サイトをビルドして公開することができます。 

[GitHub Pages/GitHub Pages について](https://docs.github.com/ja/pages/getting-started-with-github-pages/about-github-pages#static-site-generators)より

## 百聞は一見に如かず
mdファイルはGitHub上で、以下のように見えます。十分です。必要な情報が適度に整形されて可読性も高いです。
![スクリーンショット 2022-09-26 19.23.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/8686324d-be6f-c562-037c-1f7a45c902ae.png)
ただ必要ではない情報（たとえばGitHubのCode、Issuesといったタブはドキュメントの内容を見たいだけの人には不要な情報）が見えてしまうのが気になります。
この辺りがGitHub Pagesでmdを公開することの意味になるかと思います。
GitHub Pagesを使いhtml化された静的サイトは以下のようになります。
![スクリーンショット 2022-09-26 20.28.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/5e94a51b-31db-3022-a640-4591c1467bff.png)


GitHub上には、htmlファイルは存在しません。
![スクリーンショット 2022-09-26 20.29.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/33329a57-fe74-e66c-cfca-91e3ab888b1a.png)

もちろん公開する意味のないmdを公開する必要はありませんが、
ちょっとしたメモだが後で見返したい、ドキュメントをmdで書いている、といったケースでは使ってもよい場合があるのではないでしょうか。

## 使い方
1. リモートリポジトリをGitHub上で作成します。
1. 任意のmdファイルを設置します。README.mdがある場合、それでもOKです。（ここでは「/Ruby/STUDYNOTE.md」というファイルにします）
1. 作成したリポジトリの[Settings]-[Pages]から、BranchをNoneからmasterに変更し、「SAVE」を押下します。
![スクリーンショット 2022-09-26 18.55.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/537e1d0b-fc86-3a80-62fa-ec928d744817.png)
1. 少し待つと以下の表示が出るのでアクセスします。![スクリーンショット 2022-09-26 19.16.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/3582e2db-91d8-bd23-824c-b96cd65a3850.png)
1. README.mdの内容が表示されています。（厳密には、README.mdから生成されたindex.html）
![スクリーンショット 2022-09-26 19.18.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/4862f194-4f7b-5978-d8e3-e7f86221b106.png)
1. 作成したmdファイルにアクセスする際は、拡張子を.htmlにしてアクセスします。![スクリーンショット 2022-09-26 19.20.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/9303ec46-6b6b-4d9c-8b52-7033d7819184.png)
元ファイルも存在しますが、ブラウザなのでマークダウンは解釈されていません。（文字化けは別の問題です…）![スクリーンショット 2022-09-26 19.22.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/e2b57a29-a29e-cf6c-c6fb-ee7774f7a2d2.png)
参考にGitHub上でそのままmdを見たときの見栄えを再掲します。
![スクリーンショット 2022-09-26 19.23.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/8686324d-be6f-c562-037c-1f7a45c902ae.png)
見栄えは大差ないですが、GitHub Pagesでのhtmlだとリポジトリのリンクがタイトルのように表示されているくらいでしょうか。
ここでは見栄えより、GitHubのUIからでドキュメントを参照するのではなく、ブラウザから参照したいドキュメントにアクセスしているというユーザ体験が得られることが重要かなと思います。

注意点は、privateに設定していたリポジトリもGitHubPagesの設定をした段階でpublicに変更される点です。

## デザインテーマを適用する
html化するだけだとあまり変化がありませんが、1行だけ記載のあるファイルを1つ追加するだけでデザインが適用できますので、やっていきます。

1. _config.ymlファイルを追加します。
![スクリーンショット 2022-09-26 19.42.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/e7c5303e-22c3-3771-0788-fece5aa03e2a.png)
1. 以下の内容を1行記載します。
```yaml:_config.yml
theme: jekyll-theme-slate
```
`jekyll-theme-slate`はテーマ名です。
[GitHub Pagesにサポートされているテーマ](https://pages.github.com/themes/)の、_congid.ymlに記載されたテーマと同じものを記載します。
![スクリーンショット 2022-09-26 20.14.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/16c1e32b-a237-6634-5bd0-4f883859d71e.png)
サポートされていないテーマも`remote_theme: THEME-NAME`の形式で記載することで利用可能です。
jekyllの知識や環境がある方は独自のデザインを作り込み必要なファイルを設置すればリッチになるかと思いますが、今回の目的から外れますので触れません。
3. 少し待ってアクセスするとテーマが適用されているのを確認できれば成功です。
![スクリーンショット 2022-09-26 20.33.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/e2e52626-ecb0-c442-0218-f1bc65450b9a.png)

「Vire on GitHun」を押下すると元のGitHubへ遷移します。

## うまく動かない場合
Actionsタブで変換処理が動いているので、赤くなっている場合、ログを確認してエラーを解消してください。
![スクリーンショット 2022-09-26 20.15.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/380300/fdffaba5-335b-3b7a-4d8c-525512460c5d.png)

## おわりに
GitHub、とても便利ですが、まだまだ知らないことがたくさんあります。
ここまで読んでいただきありがとうございました。