Jekyll on Windows

Windowsはまだ公式にサポートされたプラットフォームではありません。ですが、適切な調整を行ってJekyllを使用することができます。このページには、Windowsユーザーから掘り起こされた知識や教訓を集めています。

Jekyllのインストール

Rubyインストーラでインストール

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

RubyインストーラはRuby言語、実行環境、重要なドキュメンテーションなどを含むWindowsベースの自己完結型インストーラです。RubyInstaller-2.4以上のみをカバーしています。古いバージョンは手動でDevkitをインストールする必要があります。

  1. RubyInstaller DownloadsからRuby+Devkitバージョンをダウンロードして、インストールしてください。インストールはデフォルトのオプションを使用してください。
  2. インストールウィザードの最後の段階で、ridk installステップを実行してください。これはネイティブ環境でgemsをインストールするためです。詳しくはRubyInstaller Documentationを読んでください。
  3. PATH環境変数への変更を有効にするため、スタートメニューから新しいコマンドプロンプトを開きます。gem install jekyll bundlerでJekyllとBundlerをインストールします。
  4. Jekyllがインストールされたか、jekyll -vで確認します。

以上で、Jekyllを使用する準備ができました!

Windows 10でのBashによるインストール

Windows10の1607以降を使用している場合、Linux用のWindowsサブシステムでJekyllをインストールするオプションがあります。

注:Windows Subsystem for Linuxを有効にする必要があります。

まず、全てのパッケージとリポジトリを最新にします。新しいコマンドプロンプトを開き、以下の入力します。

bash

コマンドプロンプトインスタンスはBashインスタンスになります。今度はリポジトリリストとパッケージを更新しなければなりません

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

Rubyがインストールできます。それを行うために、Ruby for Ubuntuの最適化バージョンをホストする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 gemsをアップデートしましょう。

gem update

後はJekyllのインストールを残すのみです。

gem install jekyll bundler

注:ここではsudoを使いません。

次を実行して、Jekyllが正しくインストールされているかを確認します。

jekyll -v

以上です!

_postsフォルダを調べることで、時間管理がきちんとできているかを確認することができます。現在の日付けがファイル名のmarkdownファイルがあるはずです。

superuserでないアカウントの問題

`jekyll new`コマンドで"Your user account isn't allowed to install to the system RubyGems"のエラーが表示されたら、 トラブルシューティングの"SuperuserでなくJekyllを実行する"の項を見てください。

注: Bash on Ubuntu on Windowsは、まだ開発中です。実行で問題が発生するかもしれません。

エンコード

UTF-8を使用している場合、必ずBOMはつけないでください。Jekyllに非常に悪いことが起こります。これは、WindowsでJekyllを実行する場合に顕著です。

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

chcp 65001

タイムゾーンの管理

Windowsはゾーン情報データのネイティブソースを持っていないので、RubyインタプリタはIANAタイムゾーンを理解しないでしょう。ですので、TZ環境変数ではデフォルトのUTC/GMT 00:00を使用します。

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

Jekyllは現在、確立されたIANAタイムゾーンデータベースに基づいてタイムゾーンを内部で設定するために、Rubygemを使用しています。 Jekyll v3.4以降で作成された「新しい」ブログでは、デフォルトで以下のものがGemfileに追加されますが、既存のサイトではWindowsで開発できるようにGemfileを更新(およびインストール)する必要があります。

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
TZInfo 2.0 不適合

TZ情報ライブラリv2.0はタイムゾーンオフセットの計算方法に変更を加えました。サイトがWindows上でJekyll 3.xでビルドされている場合、このことは投稿の日時を不正確にするでしょう。

ですので、Gemfilegem 'tzinfo', '~> 1.2'をリストして、タイムゾーンライブラリをv1.2以上にロックすることをお勧めします。

自動再作成

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

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

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

RubyインストーラのバージョンのRuby+Devkitを使用しなければなりませんし、wdmgemのインストールを成功させるためにMSYS2ビルドツールのインストールが必要です。