[GitHubPages + Jekyll] 無料でWebページを作ってみた

はじめまして、koyo-miyamuraです。何気にQiita初投稿でドキドキしてます><

# 無料で手軽にサイト作りたい
就活などで自分のGitHubを公開する機会があったんですが、これってパブリックリポジトリしかアピールできないんですよね

なので「プライベートリポジトリの内容も公開したいな～」と感じ、ポートフォリオサイトを作ろうと思い立ちました

しかし学生なのであんまりお金使いたくない・・・1ページ程度のサイトのためにサーバー管理するのもなぁ・・・何かいい方法はないかなぁ

**ありました！** 

[GithubPages](https://pages.github.com/)というサービスを使えば、Gitのリポジトリ単位で自分のWebページを公開できるとのこと！(しかも無料！！)

# 作成手順
GitHubでリポジトリを作成し、リポジトリのSettingsをスクロールすると以下のような設定項目が
![image.png](https://qiita-image-store.s3.amazonaws.com/0/201242/9f707a7b-442e-05ed-5f2e-60666ccdd9fc.png)
Sourceはmasterでいいでしょう。テーマも後で変更可能なので適当に選んでみてください。

そうすると、`http://[アカウント名].github.io/[リポジトリ名]`に公開されます(ちょっとラグがあるので、少し待った方がいいです)

リポジトリに`index.md`を新規作成して、マークダウン記法で内容を色々変えてみるとサイトの内容も変わります
テーマはリポジトリ上の`_config.yml`を書き換えると変更できます

# 注意点
調べてみた範囲で、以下のような制約や注意点があるみたい

* プライベートリポジトリのページもWeb上に公開される(当たり前？)
* Jekyllを使う場合は、静的なページしか作れない

# もっといじりたい場合
これだけで簡単なサイトは作れるんですが、ローカル上で実行し確認してから公開したい・・・htmlもいじりたい・・・テーマのcss変更したい・・・ってなってくると思います（偏見w）

内部的には[Jekyll](https://jekyllrb-ja.github.io/)という静的サイトジェネレータを使用しているので、細かくいじりたい場合はJekyllを勉強しましょう
以下、自分がいじった項目を紹介します

## ローカル上で実行
中々情報が見つからず、エラーメッセージをGoogle先生で検索し、色んなページから情報をツギハギして実現しました><
記憶を頼りに書いていますが、もしかしたら足りないところあるかも

### Jekyllのインストール
[公式のインストール手順](http://jekyllrb-ja.github.io/docs/installation/)
JekyllはRubyベースで作られています
まず、自分の環境上にRubyを導入しましょう（ググったら色々出てくる）

私はいちいちVagrant立ち上げるのも面倒だなと思い、Win10のGit Bush上で作業したかったのでhttps://rubyinstaller.org/ からダウンロードして.exeを実行してインストールしました
ここらへんは

* [RubyInstaller2でRuby2.4 with Rails5の環境を作る～Nokogiriでエラー～](https://qiita.com/KTakata/items/1f30b8571764f7801708) 　前半部分
* [CentOSにrbenv, Rubyをインストールする](https://qiita.com/NaokiIshimura/items/ff04b6eaa40b33c4bea8)　後半部分

が参考になりました

Rubyを導入したら
`gem install jekyll bundler`
でjekyllをインストールしましょう

### ローカル上で実行するために
これで万事解決！・・・と思ったのが甘かった。エラー出まくって苦労したので、以下の自分が行った作業を書きます

作成したリポジトリをクローンし、_config.ymlに以下を記述します

``` YAML

theme: jekyll-theme-architect  # 自分が設定したいテーマ
encding: utf-8
plugins: 
  - jekyll-github-metadata
github : [metadata]
repository: アカウント名/リポジトリ名 # 自分のアカウントとリポジトリを書きましょう

```

次に`Gemfile`という名前で新規作成し以下のように記述します

``` bash
source 'https://rubygems.org'
gem "github-pages", group: :jekyll_plugins
gem 'jekyll-github-metadata'
```

これで
`bundle exec jekyll serve --watch`
を実行すると色々出てきますが
`Server address: http://127.0.0.1:4000`
の部分を見るとaddressが書いてあるのでアクセスしてみると、ページが表示されるはずです
(`bundle exec jekyll serve --watch`の実行などでエラーが出たらググりましょう・・・)

※ `--watch`オプションをつけることで、ディレクトリに変更があった場合に自動でbuildし直してくれるので便利です

ちなみに、生成される`_site`の中身が実際のWebページになります

## html, cssいじりたい
テーマが提供するhtmlやcssに従って、`_site`ディレクトリにページが生成されるわけですが、これを変更したい場合は下記のページが参考になります

* [Customizing CSS and HTML in your Jekyll theme](https://help.github.com/articles/customizing-css-and-html-in-your-jekyll-theme/)

上記のページ見れば書いてありますが、英語なので手順も書いておきます

### html
1. `_layouts`という名前でディレクトリを作成
2. 自分が使っているテーマのリポジトリ(例：[archrtect](https://github.com/pages-themes/architect/blob/master/_layouts/default.html) ) の`default.html`をコピー
3. 自分の`_layouts`の中に`dehault.html`を作る
4. コピーした内容をペーストする
5. このdefault.htmlに従ってページが生成されているので、ここを変更すればページも変わる

### css
` assets/css/style.scss`を作成し下記を記述

``` css 
---
---

@import "{{ site.theme }}";
``` 

`@import "{{ site.theme }}";`以下に自分があてたいスタイルをここに記述すればOK

ちなみに、テーマが今あてているcssは自分が使っているテーマのリポジトリ(例：[archrtect](https://github.com/pages-themes/architect) ) の`assets/css/`の中にあります

---

その他やりたいことあれば、ググってみたり下記参考サイトを参照してみてください！

# 作ってみた
ってなわけで手前味噌ながら私のポートフォリオサイトはこちら
https://koyo-miyamura.github.io/portfolio/

![image.png](https://qiita-image-store.s3.amazonaws.com/0/201242/13b28600-c6be-8dc7-8430-82dc9008481b.png)


# 参考にさせてもらいました (ありがとうございます！)
### GitHubPages
* [【GitHubPages】GitHub.ioで自己紹介ページを作りました](https://qiita.com/ryokosuge/items/f929821ba5ae9ba2c32b)
* [GitHubを使って3分でHPを公開する。](https://qiita.com/budougumi0617/items/221bb946d1c90d6769e9)
* [[GitHub] GitHub で Web サイトを無料で公開できるサービス「GitHub Pages」](http://d.hatena.ne.jp/nakamura001/20170202/1486041219)
* [公式ヘルプ(英語)](https://help.github.com/categories/customizing-github-pages/) ←Jekyllに関することも含めて、困ったらここ

### [Jekyll](https://jekyllrb-ja.github.io/)とその導入
* [RubyInstaller2でRuby2.4 with Rails5の環境を作る～Nokogiriでエラー～](https://qiita.com/KTakata/items/1f30b8571764f7801708)
* [CentOSにrbenv, Rubyをインストールする](https://qiita.com/NaokiIshimura/items/ff04b6eaa40b33c4bea8)
* [Jekyllの更新](http://chirimenmonster.github.io/2017/05/20/undate-jekyll.html) (インストールのエラーなどで参照)
* [Jekyll入門(ドットインストール)](https://dotinstall.com/lessons/basic_jekyll) ←Jekyllについて勉強したい場合はまずこちらから

# 2018/07/29 追記
昨年始めたQiitaも 110 Contribution 超えて、成長したな～と実感しています笑
昨年と比べると色々使えることが増えてきて、静的サイトをアップロードするだけなら他にもいい手段があることが分かりました。

* AWSのS3でホスティング
* GCPのCloud Storageでホスティング

色々触ってみた感じ、クレカ登録必要なのがやや面倒ですが、無料枠が3万円（年）あるし勝手に課金されないらしいので、GCPが最も手軽かな～と思います。
設定も超簡単だし。

# 2018/11/3 追記
コメントでも紹介された[Netlify](https://www.netlify.com/)使ってみましたが、githubなどでコード管理していれば速攻でデプロイできる＆管理がすごく簡単＆高速なのでオススメです。
環境変数も設定できる！（Github Pagesはできない）