2016/02/15

Recent entries from same category

  1. Zenn で Twitter bot 作成入門を書いた。
  2. プログラマーのための新しい情報共有コミュニティ Zenn で本を書いてみた。
  3. Windows ユーザは cmd.exe で生きるべき 2020年版
  4. Let's Encrypt を簡単操作できる CLI、Lego が MyDNS に対応した。
  5. golang でメモ専用コマンド「memo」作った。


先日、GitHub Pages が Jekyll 3.0 になりました。

GitHub Pages now faster and simpler with Jekyll 3.0 · GitHub

GitHub Pages is now running the latest major version of Jekyll, Jekyll 3.0 , and with it, many of th...

https://github.com/blog/2100-github-pages-now-faster-and-simpler-with-jekyll-3-0

速くなったという事でとても喜ばしいのですが、良い事はそれだけではなかった。GitHub Pages を使ってのブログ作成方法については、これまでこのブログでも幾つか紹介して来ました。

Big Sky :: Jekyllで始める簡単ブログ

GithubのユーザページでJekyllが使われる様になりました。 GitHub Pages Upgraded to Jekyll 0.5.0 - GitHub I just released Jek...

http://mattn.kaoriya.net/software/lang/ruby/20090409185248.htm
Big Sky :: githubとjekyllとoctopressで作る簡単でモダンなブログ

以前、「jekyllで始める簡単ブログ」という記事を書いたのですが Big Sky :: Jekyllで始める簡単ブログ GithubのユーザページでJekyllが使われる様になりました。 GitHu...

http://mattn.kaoriya.net/software/lang/ruby/20111017205717.htm

でも作った後でコードハイライトを導入したりフィードを吐いたりしようと思うと若干手間でしたし、最初は綺麗だったフォルダ構成もだんだんとグチャグチャとして来ていました。でも Jekyll 3.0 になった事でその殆どが解決してしまいました。以前は jekyll-bootstrap を使って https://mattn.github.io を作っていましたが、これを期に全部消し去って一から作り直しました。大変かなーと思ったけど、何も大変な事が無かった。

以下、その手順をご紹介します。既にリポジトリがある方は適当に読み飛ばして下さい。

リポジトリを作る

まず GitHub でリポジトリを作ります。名称は

create repository
USERNAME.github.io

という名前で作ります。ちなみに昔は

USERNAME.github.com

だった為、リポジトリ名も com で作ったよという方が多いと思いますが、Settings のページで名前を変えても動作する事を確認しました。

rename repository

Jekyll でサイトを生成する

ruby をインストールしたあと

$ gem install jekyll

とすれば2016年2月現時点ではバージョン3が入ります。でも「Jekyll のサイトを準備する為だけに ruby を入れて、Jekyll を入れるってちょっと面倒!Golang 使わせろよ!」って人は Jedie を使うといいです。

Big Sky :: Golang で Jekyll のクローン作った。

普段 vim-jp や色んな所で jekyll を使っているのだけど、どうも遅くて困っていました。 Windows だと ruby 本体の起動も重いのに、たかだか数十ページの生成に十数秒、PCの負荷が...

http://mattn.kaoriya.net/software/lang/go/20131128182642.htm

Jedie は Jekyll と互換性がある為、Jedie を使って生成したサイトはそのまま GitHub Pages に push する事が出来ます。

※ここ重要です。

サイトの生成方法は

$ jedie new /path/to/root

の様に実行して下さい。あとは

$ git add .
$ git commit -a
$ git remote add origin git@github.com:USERNAME/USERNAME.github.io.git
$ git push origin master

USERNAME 部分はご自分のアカウントで差し替えて下さい。

とすれば簡単なサイトが出来上がります。僕もデフォルトのサイトから若干デザインに手をいれて以下のサイトを作りました。

Screw It!

jekyll-bootstrap を使ってたのだけど新規投稿が反映されない問題があったので、一旦全部消して作り直した。使ったのはお手製の jekyll clone、jedie1 jedie new ....

https://mattn.github.io/

なお、ちまちまと Jekyll を使ってマニュアル通り設定したいよ!という方は以下を参照下さい。

Using Jekyll with Pages - User Documentation

Bundler - Bundler is a package manager that makes versioning Ruby software like Jekyll a lot easier ...

https://help.github.com/articles/using-jekyll-with-pages/

Jekyll の拡張を有効にする

Jekyll 3.0 になった一番の良さはこれだと思っています。

Using Jekyll Plugins with GitHub Pages - User Documentation

GitHub Pages currently supports several Jekyll plugins: Jemoji - provides support for emoji within J...

https://help.github.com/articles/using-jekyll-plugins-with-github-pages/

_config.yml に以下の様に追加します。

gems:
    jemoji
    jekyll-mentions
    jekyll-redirect-from
    jekyll-sitemap
    jekyll-feed

Jemoji

拡張子が md (markdown) の場合、GitHub 上で使える絵文字が使える様になります。例えば :+1: であれば :+1: という画像に置き換わります。以下はその例

Jedieでサイトを作り直した。 - Screw It!

Screw It! Jedieでサイトを作り直した。 jekyll-bootstrap を使ってたのだけど新規投稿が反映されない問題があったので、一旦全部消して作り直した。 使ったのはお手製の jek...

http://mattn.github.io/2016/02/14/site-with-jedie.html

jekyll-mentions

記事内で @mattn という表記を使うと、GitHub アカウントへのリンクが作られます。上記の記事内で @mattn がリンクになっているのを確認下さい。

jekyll-redirect-from

GitHub Pages は markdown で書くのですが、デフォルトではファイル名がタイトルになります。もちろん以下の様に書くことでタイトルは置き換えられるのですが

---
layout: post
title:  Jedieでサイトを作り直した。
---
jekyll-bootstrap を使ってたのだけど新規投稿が反映されない問題があったので、一旦全部消して作り直した。

使ったのはお手製の jekyll clone、[jedie](https://github.com/mattn/jedie)

```shell
$ jedie new .
$ vim _posts/2016-02-15-rebuild-site-with-jedie.md
$ git add .
$ git commit -a
$ git push origin master
```

jedie 便利。 :+1:

@mattn ++

ファイル名の先頭に付く日付を変えてしまったり、ファイル名そのものを変えてしまうと URL が変わってしまいます。この拡張を有効にしておくと、そういった場合でも古い URL から新しい URL の自動転送が有効になります。

jekyll-sitemap

この拡張を導入すると、それだけでサイトマップが自動生成されます。

jekyll-feed

これも以前は無かった機能です。以前は RSS フィードを吐き出すのに以下の様なファイルを自前で作る必要がありましたが

---
layout: nil
---
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>{{ site.title | xml_escape }}</title>
    <link>{{ site.baseurl | xml_escape }}</link>
    <atom:link rel="self" type="application/rss+xml" href="{{ page.url | xml_escape}}" />
    <pubDate>{{ site.time | date: "%a, %d %b %Y %H:%M:%S +0900" }}</pubDate>
    <lastBuildDate>{{ site.time | date: "%a, %d %b %Y %H:%M:%S +0900" }}</lastBuildDate>
    {% for post in site.posts %}
    <item>
      <title>{{ post.title | xml_escape }}</title>
      <link>{{ post.url | xml_escape }}</link>
      <guid isPermaLink="false">tag:mattn,{{ post.date | date: "%Y/%m/%d" }}:{{ post.url | xml_escape }},rev:1</guid>
      <pubDate>{{ post.date | date: "%a, %d %b %Y %H:%M:%S +0900" }}</pubDate>
      <author>mattn.jp@gmail.com (mattn)</author>
      <description>{{ post.content | xml_escape }}</description>
    </item>
    {% endfor %}
  </channel> 
</rss>

この拡張を入れるだけでフィードが自動生成されます。何それすげー便利じゃん。

あとはレイアウトファイルの head 部分を以下の様に書くだけで link タグが生成されます。

<head>
  <meta charset="UTF-8">
  <title>{{ site.title }}</title>
  {% feed_meta %}
</head>

Jekyll 3.0 でコードハイライトがデフォルトになった

以前はコードをハイライトさせる為には Google Code Prettify を使うハックが必要でした。しかし Jekyll 3.0 では rouge という highlighter がデフォルトになった為、ユーザは css ファイルだけ用意すれば良くなりました。以下は僕が使っているハイライト用の css です。

.highlight { 
  background-color#efefef;
  padding7px 7px 7px 10px;
  border1px solid #ddd;
  -moz-box-shadow3px 3px rgba(0,0,0,0.1);
  -webkit-box-shadow3px 3px rgba(0,0,0,0.1);
  box-shadow3px 3px rgba(0,0,0,0.1);
  margin20px 0 20px 0;
  overflowhidden;
}
 
code {
  font-family:'Bitstream Vera Sans Mono','Courier', monospace;
}
 
.highlight .c { color#586E75 } /* Comment */
.highlight .err { color#93A1A1 } /* Error */
.highlight .g { color#93A1A1 } /* Generic */
.highlight .k { color#859900 } /* Keyword */
.highlight .l { color#93A1A1 } /* Literal */
.highlight .n { color#93A1A1 } /* Name */
.highlight .o { color#859900 } /* Operator */
.highlight .x { color#CB4B16 } /* Other */
.highlight .p { color#93A1A1 } /* Punctuation */
.highlight .cm { color#586E75 } /* Comment.Multiline */
.highlight .cp { color#859900 } /* Comment.Preproc */
.highlight .c1 { color#586E75 } /* Comment.Single */
.highlight .cs { color#859900 } /* Comment.Special */
.highlight .gd { color#2AA198 } /* Generic.Deleted */
.highlight .ge { color#93A1A1font-styleitalic } /* Generic.Emph */
.highlight .gr { color#DC322F } /* Generic.Error */
.highlight .gh { color#CB4B16 } /* Generic.Heading */
.highlight .gi { color#859900 } /* Generic.Inserted */
.highlight .go { color#93A1A1 } /* Generic.Output */
.highlight .gp { color#93A1A1 } /* Generic.Prompt */
.highlight .gs { color#93A1A1font-weightbold } /* Generic.Strong */
.highlight .gu { color#CB4B16 } /* Generic.Subheading */
.highlight .gt { color#93A1A1 } /* Generic.Traceback */
.highlight .kc { color#CB4B16 } /* Keyword.Constant */
.highlight .kd { color#268BD2 } /* Keyword.Declaration */
.highlight .kn { color#859900 } /* Keyword.Namespace */
.highlight .kp { color#859900 } /* Keyword.Pseudo */
.highlight .kr { color#268BD2 } /* Keyword.Reserved */
.highlight .kt { color#DC322F } /* Keyword.Type */
.highlight .ld { color#93A1A1 } /* Literal.Date */
.highlight .m { color#2AA198 } /* Literal.Number */
.highlight .s { color#2AA198 } /* Literal.String */
.highlight .na { color#93A1A1 } /* Name.Attribute */
.highlight .nb { color#B58900 } /* Name.Builtin */
.highlight .nc { color#268BD2 } /* Name.Class */
.highlight .no { color#CB4B16 } /* Name.Constant */
.highlight .nd { color#268BD2 } /* Name.Decorator */
.highlight .ni { color#CB4B16 } /* Name.Entity */
.highlight .ne { color#CB4B16 } /* Name.Exception */
.highlight .nf { color#268BD2 } /* Name.Function */
.highlight .nl { color#93A1A1 } /* Name.Label */
.highlight .nn { color#93A1A1 } /* Name.Namespace */
.highlight .nx { color#555 } /* Name.Other */
.highlight .py { color#93A1A1 } /* Name.Property */
.highlight .nt { color#268BD2 } /* Name.Tag */
.highlight .nv { color#268BD2 } /* Name.Variable */
.highlight .ow { color#859900 } /* Operator.Word */
.highlight .w { color#93A1A1 } /* Text.Whitespace */
.highlight .mf { color#2AA198 } /* Literal.Number.Float */
.highlight .mh { color#2AA198 } /* Literal.Number.Hex */
.highlight .mi { color#2AA198 } /* Literal.Number.Integer */
.highlight .mo { color#2AA198 } /* Literal.Number.Oct */
.highlight .sb { color#586E75 } /* Literal.String.Backtick */
.highlight .sc { color#2AA198 } /* Literal.String.Char */
.highlight .sd { color#93A1A1 } /* Literal.String.Doc */
.highlight .s2 { color#2AA198 } /* Literal.String.Double */
.highlight .se { color#CB4B16 } /* Literal.String.Escape */
.highlight .sh { color#93A1A1 } /* Literal.String.Heredoc */
.highlight .si { color#2AA198 } /* Literal.String.Interpol */
.highlight .sx { color#2AA198 } /* Literal.String.Other */
.highlight .sr { color#DC322F } /* Literal.String.Regex */
.highlight .s1 { color#2AA198 } /* Literal.String.Single */
.highlight .ss { color#2AA198 } /* Literal.String.Symbol */
.highlight .bp { color#268BD2 } /* Name.Builtin.Pseudo */
.highlight .vc { color#268BD2 } /* Name.Variable.Class */
.highlight .vg { color#268BD2 } /* Name.Variable.Global */
.highlight .vi { color#268BD2 } /* Name.Variable.Instance */
.highlight .il { color#2AA198 } /* Literal.Number.Integer.Long */

見た目はこんな感じになります。

以前はハックを行う為にいろいろなファイルを assets に入れていましたが、Jekyll 3.0 対応を行った後はめちゃくちゃシンプルになってとても見通しが良くなりました。

GitHub - mattn/mattn.github.io: mattn.github.io

You signed in with another tab or window. Reload to refresh your session. You signed out in another ...

https://github.com/mattn/mattn.github.io

皆さんもぜひ、Jekyll 3.0 対応を行ってみてはどうでしょうか。

Posted at by | Edit