Windows での Jekyll

Windows は公式にサポートされているプラットフォームではありませんが、適切な調整を行うことで Jekyll を実行できます。

Ruby と Jekyll のインストール

RubyInstaller を使用したインストール

Ruby と Jekyll をインストールする最も簡単な方法は、Windows 用の RubyInstaller を使用することです。

RubyInstaller は、Ruby 言語、実行環境、重要なドキュメントなどを含む、自己完結型の Windows ベースのインストーラーです。

ここでは、RubyInstaller-2.4 以降のみを扱います。古いバージョンは、Devkit を手動でインストールする必要があります。

  1. RubyInstaller のダウンロード から **Ruby+Devkit** バージョンをダウンロードしてインストールします。インストールにはデフォルトのオプションを使用してください。
  2. インストールウィザードの最後の段階で、ridk install ステップを実行します。これは、ネイティブ拡張機能を持つ gem をインストールするために必要です。これに関する追加情報は、RubyInstaller のドキュメント にあります。オプションから MSYS2 and MINGW development tool chain を選択してください。
  3. スタートメニューから新しいコマンドプロンプトウィンドウを開き、PATH 環境変数の変更を有効にします。gem install jekyll bundler を使用して Jekyll と Bundler をインストールします。
  4. Jekyll が正しくインストールされているかどうかを確認します: jekyll -v

Jekyll が正しくインストールされていない場合、エラーが表示されることがあります。システムを再起動し、もう一度 jekyll -v を実行してください。エラーが解決しない場合は、RubyInstaller の issue を開いてください。

これで、Jekyll を使用できるようになりました!

Windows 10 の Bash を使用したインストール

Windows 10 バージョン 1607 以降を使用している場合、Jekyll を実行する別のオプションは、Windows Subsystem for Linux を インストールすることです。

Windows Subsystem for Linux が有効になっている必要があります。

すべてのパッケージとリポジトリが最新の状態であることを確認します。新しいコマンドプロンプトまたは PowerShell ウィンドウを開き、bash と入力します。

ターミナルは Bash インスタンスになっているはずです。次に、リポジトリリストとパッケージを更新します。

sudo apt-get update -y && sudo apt-get upgrade -y

次に、Ruby をインストールします。そのためには、Ubuntu 用に最適化された Ruby のバージョンをホストしている BrightBox のリポジトリを使用しましょう。

sudo apt-add-repository ppa:brightbox/ruby-ng
sudo apt-get update
sudo apt-get install ruby2.5 ruby2.5-dev build-essential dh-autoreconf

次に、Ruby gem を更新します

gem update

Jekyll をインストールします

gem install jekyll bundler

ここでは sudo は不要です.

Jekyll のバージョンを確認します

jekyll -v

これで完了です! Jekyll の使用を開始できます。

_posts フォルダを調べて、時間管理が正常に機能していることを確認できます。ファイル名に現在の日付が付いたマークダウンファイルが表示されます。

非スーパーユーザーアカウントの問題

`jekyll new` コマンドで "Your user account isn't allowed to install to the system RubyGems" というエラーが表示された場合は、トラブルシューティング の「非スーパーユーザーとして Jekyll を実行する」手順を参照してください。

Bash on Ubuntu on Windows はまだ開発中のため、問題が発生する可能性があります。

エンコーディング

UTF-8 エンコーディングを使用する場合、ファイルが BOM を表す文字で始まる場合、Jekyll は壊れます。そのため、ファイルの先頭にこのバイトシーケンスが表示された場合は削除してください。

さらに、サイトの生成プロセス中に Liquid Exception: Incompatible character encoding エラーが発生する場合は、コンソールウィンドウのコードページを UTF-8 に変更する必要がある場合があります。以下を実行してください

chcp 65001

タイムゾーンの管理

Windows には zoneinfo データのネイティブソースがないため、Ruby インタプリタは IANA タイムゾーンを理解しません。それらを使用すると、TZ 環境変数がデフォルトで UTC/GMT 00:00 になります。

Windows ユーザーは、タイムゾーンを定義する POSIX 形式を使用してキーを設定することで、ブログのタイムゾーンを定義することもできますが、変更される DST ルールに合わせてクロックを変更する場合、ユーザーフレンドリーではありませんでした。

Jekyll は rubygem を使用して、確立された IANA タイムゾーンデータベース に基づいてタイムゾーンを内部的に設定するようになりました。

Jekyll v3.4 以降で作成された「新しい」ブログでは、デフォルトで Gemfile に以下が追加されますが、既存のサイトは Windows での開発を有効にするために Gemfile (およびインストールされた gem) を更新する必要があります

# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
platforms :mingw, :x64_mingw, :mswin, :jruby do
  gem "tzinfo", ">= 1", "< 3"
  gem "tzinfo-data"
end

自動再生成

Jekyll は、ビルドまたはサーブ中に --watch スイッチが指定された場合、変更を監視するために listen gem を使用します。listen は UNIX システムの組み込みサポートを備えていますが、Windows との互換性のために追加の gem が必要な場合があります。

Windows でのみ自動再生成に問題がある場合は、サイトの Gemfile に以下を追加してください

gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform?

wdm gem を正常にインストールするには、Ruby+Devkit バージョンの RubyInstaller を使用し、MSYS2 ビルドツールをインストールする必要があります。