Table of Contents
このブログを立ち上げたときの作業を、主に備忘録としていくつかのエントリに分けて書く。 このエントリでは主にGitHub PagesとJekyllについて書く。
今の構成
このブログは、Hugoで作って、GitHub Pagesで公開している。
Hugoについては別のエントリで書くとして、GitHub Pagesは、GitHubが提供しているウェブページのホスティングサービスで、GitHubに特定の名前のリポジトリ、または任意のリポジトリに特定の名前のブランチを作ってウェブサイトのソースを置くと、公開してくれるというサービス。PaaSにあたるのかな。 GitHub Pagesのサイトに利用方法が載っている。
以下、このブログ立ち上げに向けてやった作業について書く。
GitHub Pages味見
GitHub Pagesを利用するには、GitHubユーザ名.github.io という名前のリポジトリを作るか、任意のリポジトリにgh-pagesという名前のブランチを作って、そこにサイトのソースを置けばいい。そのサイトには、前者の場合はhttp://GitHubユーザ名.github.io
で、後者の場合はhttp://GitHubユーザ名.github.io/リポジトリ名
でアクセスできる。
(2016/8/18追記: 今はgh-pagesブランチは不要。)
とりあえず前者をやってみる。
- kaitoy.github.ioという名前のリポジトリを作って、そのルートに「Hello World」とだけ書いたindex.htmlを置く。
- ブラウザで
http://kaitoy.github.io
にアクセスすると、「Hello World」と表示された。
これだけ。
GitHub PagesとJekyll
GitHub Pagesには、普通にHTML/CSS/Javascriptのソースを置いてもいいけど、Jekyllを利用することもできる。
Jekyllは、ブログ用の静的サイトジェネレータなるもので、Markdownで書いた記事を元にブログサイトのソースを生成するツール。GitHub Pages用のリポジトリにJekyllのソースをアップロードすると、Jekyllでビルドされ、その結果が公開される。
これはうれしい。 Jekyllのソースとビルド結果を別々に管理しなくてよくて楽だし、公開されるサイトが最新のソースに基づいていることが保証される。
結論から言うと、以下のような理由で結局Jekyllは使わなかったんだけど、Jekyllとの格闘の記録を残しておく。
- Windowsを正式サポートしていない。
- Rubyで書かれてるため、ビルドが遅い。ブログエントリが数百とかになると辛くなってくるらしい。
- Jekyllを使っても、かっこいいサイトを手軽に作ろうと思ったら、結局ビルド成果物もGitHubに上げないといけなくなる。
Jekyllセットアップ
GitHub PagesでJekyll使う場合は、GitHub Pagesと同じJekyll環境を手元に作ってプレビューできるようにしておくべきとのこと。なので、これに従って自分のPC (Windows 7) にJekyllをセットアップする。
Rubyインストール
JekyllはRubyで書かれてるので、まずはRubyをインストールする。 WindowsなのでRubyInstaller (ver. 2.2.2)をダウンロードしてインストール。 Bundler (RubyのパッケージであるGemの依存をアプリケーションごとに管理するツール) もあるといいらしいので、
gem install bundler
を実行してインストール。Jekyllインストール
さっき作ったリポジトリkaitoy.github.io(の手元のクローン)のルートに、Bundlerの定義ファイルをGemfileという名前で作り、以下の内容を書く。
source 'https://rubygems.org' gem 'github-pages'
依存するGemは jekyll じゃなくて github-pages。これはGitHub Pages環境のJekyllということだろう。
で、kaitoy.github.io のルートで
bundle install
を実行する。ここでエラー発生。 エラーメッセージによると、native gemをビルドするために DevKit なるものが要るとのこと。再びRubyInstallerのページに行ってDevKitをダウンロードして、wikiに従ってインストール。
再度
bundle install
したらJekyllのインストールに成功。- github-pages: ver. 35
- jekyll: ver. 2.4.0
これで、ちょくちょく
bundle update
を実行すれば、最新のGitHub Pages環境に追随できる。bundle exec jekyll serve
すると、カレントディレクトリのJekyllソースがビルドされ、Webサーバが起動し、http://localhost:4000
でそのビルド結果を見れるらしい。Jekyll味見
試しに、適当な場所で
jekyll new hoge
を実行し、新規サイトフォルダ hoge を作り、その中でjekyll build
してみる。以下のエラー。c:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/posix-spawn-0.3.11/lib/posix/spawn.rb:164: warning: cannot close fd before spawn 'which' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 [31m Liquid Exception: No such file or directory - python c:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/pygments.rb-0.6.1/lib/pygments/mentos.py in jekyll/_posts/2015-05-29-welcome-to-jekyll.markdown[0m done.
Jekyllのサイトを見直したらWindowsはサポートされていないとのこと。 けど、Windowsにセットアップする方法は検索したらたくさん出てきた。 Jekyllのサイトでも紹介されているRun Jekyll on Windowsというサイトの手順に従うとか、Portable Jekyllという、WindowsでJekyllを動かすためのツールを集めたものを使うとか。
後者は、Jekyllのインスタンスを含んでいて、将来にわたるJekyllのアップデートについていってくれるか怪しいので、前者を見てみる。
Run Jekyll on Windowsを試す
Run Jekyll on Windowsによると、Jekyllはデフォルトでsyntax highlighterの pygments.rbなるものに依存していて、pygments.rbをWindowsで使うには Python とそのモジュールである Pygments などをインストールする必要があるのこと。
とりあえずPythonをここからダウンロードしてインストール。バージョンは、3系はPygmentsがサポートしていないようなので2.7.10。 pip なるPythonパッケージ管理ツールが要るとRun Jekyll on Windowsに書いてあるが、2.7.10にはデフォルトで入っていた。
python -m pip install Pygments
を実行してPygmentsをインストール。これはどうもpygments.rbがラップしているものらしい。また、Jekyllにはauto-regenerationなる、ファイル変更を検知して自動ビルドする機能があって、Windowsでこれを使うには wdm というgemが必要らしい。 以下をGemfileに追加して、
bundle install
する。gem 'wdm', '~> 0.1.0' if Gem.win_platform?
したら以下のエラー。
c:\Ruby22-x64\lib\ruby\gems\2.2.0\gems\wdm-0.1.0\ext\wdm/rb_monitor.c:508: undefined reference to `rb_thread_blocking_region'
どうも、ここによると、エラーメッセージにある rb_thread_blocking_region というメソッドは、Ruby 2.0で非推奨になり2.2で消されたものらしい。
wdmはもう数年更新されておらず、修正の見込みはなさそう。(後日見たら開発再開されてて、この問題も修正されていた。)
Rubyをダウングレードするの面倒なので、試しにそのまま
jekyll serve
したら以下のメッセージが出たけど動いた。Please add the following to your Gemfile to avoid polling for changes: gem 'wdm', '>= 0.1.0' if Gem.win_platform? Auto-regeneration: enabled for 'c:/Users/Kaito/mirrored_data/pleiades/workspace/kaitoy.github.io/hoge'
auto-regenerationも動いている模様。実際ソースをいじったら自動で反映された。 よくわからないが、よしとする。
実は、以下のエラー(上でも出てたやつ)はまだ出ている。
c:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/posix-spawn-0.3.11/lib/posix/spawn.rb:164: warning: cannot close fd before spawn 'which' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
このwarningについてはRun Jekyll on Windowsには載っていないが、pygments.rbを0.5.0にダウングレードすればいいとの情報がこことかにある。
Jekyllとの決別
この辺りまでJekyllをセットアップした後、JekyllのWindowsとの相性の悪さに嫌気がさしつつ、Jekyllで簡単にかっこいいサイトを作るためのツールなどを調べているうちに、Jekyllを使うのをやめた。それについては別のエントリで書く。