Raspbian Jessie Lite の インストール

Raspberry Pi に 公式の OS である Raspbian の 最小構成 Lite を インストールしたいと思います.
NOOBS(New Out Of the Box Software) という OS の インストーラーが用意されており、これを使うことで簡単に Raspberry Pi へ OS を インストールすることができますが、ディスク容量を圧迫する、USB の キーボード と マウス が 必須であることから、OS イメージ を 直接 SD カードへ書き込む方法を取ることにします.

作業環境

  • Windows 7
  • Raspbian Jessie Lite

SD カード の 準備

2017.03.07 追記
ラズパイ の OS イメージを焼くときは Etcher が 便利 & UI カッコいい の 記事を追加しました. こちらの手順の方が簡単なので、よろしければ こちらも ご参照ください.

使用する Raspberry Pi の モデル に 合わせた SD カード を 用意します.
今回 は Raspberry Pi Zero を 使いますので、microSD カード と PC で 使うための SD Adapter を 用意しました.

続いて、SD カード を フォーマットします.
OS の ツールではうまくいかないケースがあるので、SD カード フォーマッター を ダウンロードして使いました.
ダウンロードは、こちらから → https://www.sdcard.org/jp/downloads

SD カード フォーマッター を 起動し、[オプション設定] を クリックします.

論理サイズ調整 を [ON] に 設定し、[OK] を クリックします.
通常は OFF で 問題ないとのことですが、OS 付属のツールでフォーマットしたりすると論理サイズが異なったりと問題が出るケースがあるらしいです. その場合は ON に することで解決できるとのことですが、後でトラブルがあった際に問題の切り分けをするのもめんどくさいので ON に しました.
論理サイズ調整については、SD カード フォーマッター の マニュアルの記載Raspberry Pi フォーラム の ポスト などに情報があります.

元のウィンドウに戻るので、[Drive] と [Volume Label] が 正しいかを確認し、フォーマットを実行してよければ [フォーマット] を クリックします.
クイックフォーマットと、フォーマット中に関する注意事項のダイアログが表示されます. 内容を確認し問題なければ、それぞれ [OK] を クリックして作業を進めます.

フォーマットが終わったらダイアログが出るので、SD カード を 取り出し、[OK] を クリックし、また元のウィンドウ の SD カード フォーマッター も [終了] を クリックして閉じます.

OS イメージ の 書き込み

Raspbian の サイト https://www.raspberrypi.org/downloads/raspbian から Raspbian Jessie Lite を ダウンロードします.
ここでは、[C:\Develop\images] に ダウンロードしたものとします.

ダウンロードしたファイルが正しいかハッシュ値を確認します.
Windows PowerShell 4.0 以降は、Get-FileHash が あるので、それを使います.
Raspbian の ウェブサイトに記載されているハッシュ値と同じなので正しくダウンロードできたようです.

1
2
3
4
5
c:\> powershell Get-FileHash -Algorithm SHA1 "C:\Develop\images\2016-09-23-raspbian-jessie-lite.images"

Algorithm Hash
--------- ----
SHA1 3A34E7B05E1E6E9042294B29065144748625BEA8

続いて、OS イメージ を SD カード に 書き込みます.
今回は 公式ドキュメント で あげられていた [Win32 Disk Imager] を 使います.
ダウンロードは、こちらから → https://sourceforge.net/projects/win32diskimager/

Image File に ダウンロードして ZIP を 解凍した images ファイルを指定し、[Write] を クリックします.
ここでは、[C:\Develop\images] に 解凍したものとします.

SD カード と ドライブを確認し、問題なければ [Yes] を クリックします.

書き込みが完了したら、Complete の ダイアログが出るので、[OK] を クリックし、元のウィンドウ の Win32 Disk Imager から [Exit] を クリックして閉じます.

SSH 有効化 の ファイル作成 (2017.03.07 追記)

本ポストを書いていた 2016.11.19 現在 2016-11-25-raspbian-jessie-lite.zip の OS イメージ を 使用していましたが、次のリリース 2016-11-25-raspbian-jessie-lite.zip からは SSH が デフォルトで無効になりました. そのため 2017年3月 現在、以下の手順も必要となり追記します.

ブート・パーティション に “ssh” というファイルを作成します.
Windows からは、エクスプローラー で SD カード の ドライブを開いて、”ssh” というファイルを作成します.

作るファイルのもとは何でもよく拡張子を削除して作るだけになります. 今回はビットマップ イメージを選び、最初から入力されていた 新しいビットマップ イメージ.bmp を 消して ssh としました. “拡張子を変更すると、ファイルが使えなくなる可能性があります。” と 警告表示されますが、今回は特に問題ないので [はい] を クリックして進めます.

“ssh” というファイルが置かれました. これで完了、後は起動するだけです.

このあたりについては 最近インストールした Raspbian Jessie Lite で SSH 接続できない? の ポストも、もしよろしければご覧ください.

SD カード 作成時 に Wi-Fi 設定をしておく (2017.03.07 追記)

Raspberry Pi 3 や Raspberry Pi Zero W の OS イメージ を Raspbian で 作る際に、あらかじめ wpa_supplicant.conf を 作っておくことで、初回起動時から Wi-Fi へ 接続しておくことができます.

詳しくは、こちら ラズパイ の OS イメージを焼くときは Etcher が 便利 & UI カッコいい を ご参照ください.

Raspbian Jessie Lite 起動!

OS を 書き込んだ SD カード を Raspberry Pi へ セットし、電源を接続して起動します.
HDMI を ディスプレイ や テレビ に 接続することで、起動画面を確認することができます.
各種デーモンが [OK] で 起動していき、最後に [raspberrypi login: ] が 表示されたら起動成功です.


Raspberry Pi 3

ラズパイを始めるには 全部入りの Raspberry Pi 3 が 手ごろではないでしょうか. Raspberry Pi Zero - ラズベリー・パイ ゼロRaspberry Pi Zero W - ラズベリー・パイ ゼロ W は 国内では入手しずらいため値上がりしてしてますし、GPIO ピン も 自分で付ける必要があったりと色々と手がかかります. その分楽しいというのもありますが.
届くまで時間がかかってもよい場合は こちら Raspberry Pi Zero の 購入 で 記事にしました Pimoroni さん から購入する手もあります.

Raspberry Pi 3 の 電源

Raspberry Pi 3 は 5V/3A の 電源が必要になります. スマホの充電アダプタでは出力が足りない場合もあるので確認が必要です.

マイクロ SD カード

ラズパイ の OS や ストレージに必要です. 16GB あれば十分だと思いますが、用途次第なので お好みのサイズで用意します.


つきにラズパイを起動することができました!!
まだ初期設定などをしていく必要がありますが、まずは立ち上がったことに感動です. 引き続き設定していって、いろいろと楽しみたいところです.

Raspberry Pi Zero の 購入

The Raspberry Pi Foundation より、”The $5 computer” と、謳われる $5 で 買えるミニマムな Zero が 登場したとのことで、さっそく試してみたいと思い、Amazon.co.jp で 探してみたところ なんと 4,000円近い金額からとなっています…(2016年11月現在)
何とか妥当な金額で買えないかを探してみます.


公式の販売店を確認する

どのサイトも1人1つまでの制限があるようで、まとめ買いができません. 少し前までは品薄で手に入らなかったようなので、これでもだいぶ改善されたのでしょう. とはいえ、普通に $5 の ふれこみ通りで買うことができそうです.

販売店 価格  備考
Pimoroni £4.00  1人1つの制限あり、日本への送料 £5.50~.
The Pi Hut £4.00  1人1つの制限あり、日本への輸出できず.
Adafruit $5.00  1人1つの制限あり、日本への送料 $30~.
CanaKit $5.00  1人1つの制限あり、日本への送料 $16.95~
Micro Center ?  買い方が分からず…

いざ購入!

さっそく £4 の Pimoroni にて購入してみます.

Pimoroni の Raspberry Pi Zero の ページ https://shop.pimoroni.com/products/raspberry-pi-zero へ アクセスします.
“Max 1 Pi Zero Per Customer!” と あるように、1人1つしか購入できません. この画面上では何個でもカートに追加できますが、チェックアウト時にエラーになります. ちなみに1回に1個ずつであれば何回でも買えます. 送料が毎回かかってしまいますが…
在庫切れの場合は [In stock] の 部分が [Out of stock] となり購入できませんが、クリック後にメールアドレスを入力することで入荷時に通知がもらえます.

購入するセットを選び [Add to basket] を クリックします.
Raspberry Pi Zero は ミニ HDMI のため変換ケーブルをセットで買ったり、ケースとのセットや、電源、ブレッドボードなどの各種セットを選ぶことができます. 今回 は [Pi Zero only] を 選びました.

その後、右上 の [Checkout] を クリックします.

カート画面に進み、購入内容が正しいかを確認し、ページ右下 の [Checkout now] を クリックします.

ここで、関連製品のお勧めを紹介されます. ケース単体で追加するなどがある場合は、ここでも追加できます.
追加等が終わったら画面を下の方までスクロールし、[Take me the checkout!] を クリックします. ボタンんがグレーで一瞬、押せない or 違うボタン に 思えますが、普通にクリックできます.
※ £4 の Camera Cable は カメラっぽい画像がありますが、ケーブルなので注意が必要です. カメラ本体 は £27.50 で こちら → Raspberry Pi Camera v2.1 with mount

支払方法の選択 と 送付先の入力画面 に 進みます.
今回は PayPal を 使うので、[PayPal] を クリックします.
PayPal は 持っていると海外での買い物用などに便利なことが多いので、この際作っておくのも手です. ここで PayPal か Amazon を 選択しないで進んだ場合は最後に支払情報を選択します. クレジットカード(VISA, Master, Maestro)、Bitcoin が 選べます.
※ Amazon は EU の サイトにつながり、日本 の Amazon.co.jp の アカウントでは使用できませんでした.

PayPal の 認証画面へリダイレクトされるので、メールアドレス と パスワードを入力しログインします.

支払方法の確認画面が表示されます.
£4 が £3.33 に なっているのは、日本への輸出には 付加価値税(VAT) が かからないため、その分値引きされているからです.
内容を確認し、[同意して続行] を クリックします. ここで続行しても支払は確定しません. PayPal を 使うということの確認になります.
※ 配送先の住所はサンプル用に東京駅を借りてます.

Pimoroni の 支払確認画面に戻ります.
PayPal から渡された情報が入力されますが、念のため半角のアルファベットのローマ字住所に直した方が良いでしょう. 画像は東京駅から借りた情報をサンプルにしています. また [Company] と [Apt, suite, etc.] 以外はすべて必須入力です.
入力後 [Continue to payment method] を クリックします.

配送方法の選択画面が表示されます.
通常の郵便なら [International Standard] を 選択します. 今回はこちらを選びました.
[Royal Mail Tracked & Signed] は 輸送状況を確認できます.
[UPS Sever] は 1日、さすが早いですね!
選択したら [Continue to payment method] を クリックします. 支払方法をあらかじめ選択している場合は、ここで完了となります.

注文の確定画面が表示され、送付先情報で入力したメールアドレスにメールが届きます. これで無事に注文が完了し、後は届くのを待つのみです.
Google Maps で 届け先が表示されるなど、ちょっと洒落てますね.
※ サンプル用で某駅を指してます.

到着♪

International Standard で 注文すると、5~7日で届きます. 以下のようなパッケージで届きました.
今回 は 7日フルでかかりました. しかも、その後に追加注文したものが5日で同時に到着…
パッケージ右側のモザイク部分が住所ですがシールが貼ってあるのは、うっかり日本語で住所入力したら、日本語が出力できなかったのか、Japan と 番地の数値だけが元の台紙に印刷されており、上からシールで日本語の住所が貼られていました. 日本語でも届きましたが、ちゃんと半角のアルファベットのローマ字で住所を入力したほうがよいですね.

外装の中はこんな感じのグレーの透明な袋に入っています.


Raspberry Pi 3

ラズパイを始めるには 全部入りの Raspberry Pi 3 が 手ごろではないでしょうか. Raspberry Pi Zero - ラズベリー・パイ ゼロRaspberry Pi Zero W - ラズベリー・パイ ゼロ W は 国内では入手しずらいため値上がりしてしてますし、GPIO ピン も 自分で付ける必要があったりと色々と手がかかります. その分楽しいというのもありますが.
届くまで時間がかかってもよい場合は この記事にしました Pimoroni さん から購入する手もあります.

Raspberry Pi 3 の 電源

Raspberry Pi 3 は 5V/3A の 電源が必要になります. スマホの充電アダプタでは出力が足りない場合もあるので確認が必要です.

マイクロ SD カード

ラズパイ の OS や ストレージに必要です. 16GB あれば十分だと思いますが、用途次第なので お好みのサイズで用意します.


英語のサイトで、海外からの輸入となるので少しドキドキしますが、特に難しいことはなく簡単に購入することができました.

Raspberry Pi Zero に 限らず、ケースも安く買えますし、HAT/pHAT などの Raspberry Pi の 上につける拡張ボード的なものも手に入ります. よほど急ぎでない限り Pimoroni で 買おうかなと思います.

microSD カード や SD Adapter と 並べてみると、よりはっきりしますが Raspberry Pi Zero は 小さいですね. これから色々なもの作りにチャレンジしてみたいと思います.

ところで、Hexo って 何て読むんだろ?

ブログ環境の構築で Hexo を 使ってきましたが、いよいよ「ところで、Hexo って 何て読むんだろ?」という疑問が止まらなくなってきました. また公式サイトなどを見ても読み方は言及されていないように思われます. (どっかに書いてあって気づいてないだけ?)

とりあえず 辞書系で “hexo” を 調べる

オンラインで使える英語辞書、英英辞書などを調べてみました. そもそも英単語して hexo が ないため、前方一致で別単語として出てきました. 英英辞典では入力ミスとして別単語の一覧が出ることに…
とはいえ、検索結果から見ると「ヘキソ」になるみたい.

  • 英辞郎 on the WEB
    以下のように何のことかよくわからない品物が沢山出ましたが、基本的に「ヘキソ-」で 始まるものばかりでした. 唯一 “ヘキサン酸” が 例外でした.

    • hexone 《化学》ヘキソン
    • hexoprenaline 《薬学》ヘキソプレナリン
    • hexoic acid ヘキサン酸
  • goo辞書 英和和英
    こちらも英辞郎同様でしたが、”hexo- [連結詞] hexa-の異形” が 入ってました. “hexa-“ ですと “ヘキサ (Hexa). ギリシャ語で、「6」。 – Wikipedia“ ですね.

    • hexo- [連結詞] hexa-の異形.

ネット で Hexo を 使っている人の声

やはり皆さん何て読むんだろうという 疑問 が 多く、「これだ!」と 明言されている方はいらっしゃらないように感じました. いくつか記事を引用させていただきます.

Hexo の 導入記事を公開されている 株式会社 LIG さん の 記事.

ところで、HEXOの読み方は…何て読むんでしょうね。へくそ?
所要時間3分!? Github PagesとHEXOで爆速ブログ構築してみよう! | 株式会社LIG

WordPress から Hexo (& 他ツールの調査) 記事を書かれている Uragami さん の 記事.
“名前って大事だよね” まさに、その通りです! 読めない、カッコ悪いでは他の人に紹介もいたしかねる…

まず、その「名前」。正確な発音わかりませんが、”へくそ”って・・・・
最後までGravにするかHexoにするか悩みましたが、その悩みの原因はこの名前です。
機能的問題あるわけじゃないけど、、、名前って大事だよね。
WordpressからHexoに乗り換えました - URAGAMI

YOMIKATA - ちょっと読み方決めようぜ さん
こちら、面白いサービスですね. 日本人的な読み方を ゆるく決めてしまうコンセプトが楽しい. Hexo は 投票数が少ないですが 一応「ヘキソ」ですね.

ヘキソ 6pt 67%
ヘクソ 2pt 22%
エグゾ 1pt 11%
hexo の読み方|YOMIKATA

最後に、Google 先生 は?

ニューラルネットワークの力を手に入れた Google 翻訳 では どうなるか. 教えて Google 先生!

せんせぃ… orz


スパッと決まらなかった感がありますが、私は「ヘキソ」で 行きます. もぅ頭の中は「ヘクソ」に固定化されつつありますが「へっクソ」「へっクソ」「クソ」と、リフレインするのはつらいので、がんばろう…

Hexo の フィード と サイトマップ を 設定

Hexo の トップ画面の右上にはフィードのアイコンとリングが配置されています. インストール直後では、機能しておらずクリックすると ステータスコード “404 Not Found” で “Cannot GET /atom.xml” の 文字列が画面に表示されてしまいます.

カッコ悪いのでフィードが出力されるようにし、合わせてサイトマップも出せるようにしたいと思います.

作業環境

  • Windows 7
  • Hexo 3.2

フィードの出力

Hexo の Plugin リスト から フィード関連 の Plugin を 探すと オフィシャル の hexo-generator-feed が あります. こちらを設定します.

Hexo の ソースがあるフォルダで npm install hexo-generator-feed --save を実行します. (下記例の [username] は 自分の GitHub ユーザ名)
また、実行前にアップデートも行っておくとよいでしょう.

1
2
3
4
5
C:\Develop\repos\[username].github.io> npm update
C:\Develop\repos\[username].github.io> npm install hexo-generator-feed --save
`-- hexo-generator-feed@1.2.0
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

続いて HEXO の 設定ファイルである _config.yml に フィード出力の設定を追加します.
Atom と RSS2 の どちらかが出力できるようで、今回は Atom を 選択しました. また出力数は limit で 設定できます.

1
2
3
4
5
## hexo-generator-feed (https://github.com/hexojs/hexo-generator-feed)
feed:
type: atom
path: atom.xml
limit: 20

設定後 hexo generate すると、無事にフィードが生成されていることが確認できます. 確認できたらデプロイします.

サイトマップの出力

同じく Hexo の Plugin リスト から サイトマップ関連 の Plugin を 探すと オフィシャル の hexo-generator-sitemap が あります. もうひとつ hexo-generator-seo-friendly-sitemap が ありますが、とりあえずオフィシャルのものを設定します.
機会があったら違いなどを調べたいですが、まずは今の環境構築を優先で.

こちらもフィードと同様に Hexo の ソースがあるフォルダで npm install hexo-generator-sitemap --save を実行します.

1
2
3
4
5
C:\Develop\repos\[username].github.io> npm update
C:\Develop\repos\[username].github.io> npm install hexo-generator-sitemap --save
`-- hexo-generator-sitemap@1.1.2
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

_config.yml に サイトマップ出力の設定を追加します.

1
2
3
## hexo-generator-sitemap (https://github.com/hexojs/hexo-generator-sitemap)
sitemap:
path: sitemap.xml

設定後 hexo generate すると、無事にフィードが生成されていることが確認できます. 確認できたらデプロイします.


オフィシャル で Plugin が 用意されており、また Node.js の npm で 簡単に導入することができました.
hexo-generator-feed で PubSubHubbub による通知もできるようなので、こっちも設定しておきたいでが「それはまた、別の話」にて.
Hexo で PubSubHubbub 通知をする の 記事を追加しました. (2017年1月6日追記)

Hexo の 新規投稿テンプレート を カスタマイズ

Hexo で 新しい投稿を作成する際のテンプレートをカスタマイズして記事を書きやすくしたいと思います.

作業環境

  • Windows 7
  • Hexo 3.2

テンプレート の 配置場所

テンプレートは /scaffolds フォルダ に 配置されています. デフォルトで3つファイルが用意されています.

  • draft.md : hexo new draft "記事タイトル" で 作成した場合に使われる、ドラフト投稿用のテンプレート
  • page.md : hexo new page "ページ・タイトル" で 作成した場合に使われる、固定ページ用のテンプレート
  • post.md : hexo new "記事タイトル" で 作成した場合に使われる、投稿用のテンプレート

ちゃんとドラフト機能を使っている場合は、draft.md を カスタマイズして使いますが、post.md とは date: の 行が有るか無いかの違いだけになります.

post.md の 初期状態は以下にです.

1
2
3
4
5
---
title: {{ title }}
date: {{ date }}
tags:
---

テンプレート の カスタマイズ

今回は投稿用のテンプレートをカスタマイズするので draft.md を 修正します.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
---
title: {{ title }}
date: {{ date }}
categories:
tags:
-
---

![](/assets/ "")

序文

**作業環境**
- Windows 7


## 章タイトル
コンテンツ


- - - -
まとめ

カテゴリを追加しました. カテゴリの階層は深くしたくないので行内に収めるようにし、タグは1つの場合でも複数指定する書き方で統一するようにしました.

またトップ画像を常に配置するつもりなので、![](/assets/ "") を 先頭においています.

ほとんど技術系の記事が占めると思われますので作業環境を明記するようにします.

後は章のタイトルとコンテンツの繰り返しになるので、アウトラインとして1つだけ入れておき、まとめ が 入るようにしました.

ファイル上部の --- に 囲まれている部分は Front-matter と よばれるもので、詳細 は こちらのドキュメント Front-matter | Hexo に なります.


あまり使わないかもしれませんが、date: の 行の違いなので、draft.md も 合わせて修正しました.

アウトラインを決めておくだけでも、だいぶ書きやすくなりますし自然と書き方もそろい記事に集中できるようになりそう.

Hexo と GitHub Pages で ブログ環境の構築

調べものメモや環境構築の記録などを残しておく場所がほしいと考えて調べていたところ、GitHub Pages と Hexo の 組み合わせ が よさそうなので、早速調べつつ記録を残してみたいと思います.

作業環境

  • Windows 7
  • Node.js 6.9.1 LTS
  • Git 2.11.0
  • Hexo 3.2

GitHub Pages とは?

GitHub に、独自のウェブサイトをホスティングするための公式の機能です.

ソースコード管理 の Git ホスティング で 有名な GitHub で、静的なウェブサイトもホスティングできる機能があり、それが GitHub Pages です. 公式ページ に “Websites for you and your projects.” と あるように、GitHub の アカウント、組織、プロジェクト(=リポジトリ) のためのウェブサイトを簡単に持つことができるようになります.

GitHub リポジトリ で 直接管理することができるため、ウェブサイトのバージョン管理を行うこともできますし、Issues や Projects も 使えるので 記事作成 の ToDo 管理 や チームでのウェブサイト管理も行えます. もちろん Pull Request も 使えます. 一方で GitHub Pages は、静的なウェブサイトのホスティングの機能であるため、データベースを使ったり、動的な機能を盛り込むことができません.

今回は調査メモや環境構築の記録なので動的な機能を持たせることは想定しないので、GitHub Pages を 使ってみたいと思います.

GitHub Pages での ウェブサイト公開方法

大きく 2つのタイプでウェブサイトを公開できます.

  1. https:// name.github.io 形式 の ユーザ ウェブサイト・組織(Organization)ウェブサイト
  2. https:// name.github.io/repository 形式 の プロジェクト ウェブサイト

今回は個人ウェブサイトになるためユーザ ウェブサイトを選択しました.
GitHub に [username].github.io の ネーミング・ルールでリポジトリを作成します.
※ username 部分は、自分 の GitHub アカウント名

Hexo とは?

Hexo は Markdown などで書いた記事から、ブログを生成する 静的 ウェブサイト ジェネレータ です. (公式ページ では “A fast, simple & powerful blog framework” と フレームワーク謳っているけど、ジェネレータの方がなんとなくしっくりする)

類似のツールとしては Jekyll や Octopress、Pelican などがあります. GitHub Pages では、Jekyll が 公式ツールとなっています.
いろいろな 静的 ウェブサイト ジェネレータ が ある中で、以下のサイトを参考にさせて頂き Hexo に することにしました. たくさんあるツールを確認し、まとめてくださってて助かりました. 感謝感謝です.

Hexo の インストール

Hexo は Node.js と Git が 必要です. それぞれ以下からダウンロードしてインストールします.

Node.js は 開発用途ではないので LTS(Long Term Support) である v6.9.1 LTS を 入れました.

Git は インストール後にユーザ設定を行います. user.emailuser.name は、それぞれ GitHub に 登録している メールアドレス、ユーザ名 で 良いかと思います.

1
2
c:\> git config --global user.email "you@example.com"
c:\> git config --global user.name "Your Name"

Node.js と Git が 入ったら、コマンド プロンプト から Hexo の モジュールをインストールします.

1
2
3
4
c:\> npm install hexo-cli -g
...(省略)
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\hexo-cli\node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

Hexo で ウェブサイト の ソース生成

Hexo の モジュールがインストールできたら、ウェブサイトのソースを生成します.
今回はソースの場所を C:\Develop\repos とします. また、以降の [username] は 自分の GitHub ユーザ名 に 置き換えてください.

1
2
3
4
5
6
c:\> cd C:\Develop\repos
C:\Develop\repos> hexo init [username].github.io
...(省略)
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
INFO Start blogging with Hexo!

続いて、ウェブサイトのソースに Hexo と Git の デプロイモジュールを追加します.

1
2
3
4
5
6
C:\Develop\repos> cd [username].github.io
C:\Develop\repos\[username].github.io> npm install
C:\Develop\repos\[username].github.io> npm install hexo-deployer-git --save
`-- hexo-deployer-git@0.2.0
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules\chokidar\node_modules\fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.0.15: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})

Hexo に 最小限 の 初期設定

Hexo の 初期設定を行います. Hexo は _config.yml で 設定をします.
テキストエディタなどで C:\Develop\repos\[username].github.io\_config.yml を 開きます. 日本語の入力を行う場合は UTF-8 で 保存する必要があります.
以下に主な設定ヶ所を抜粋します.

1
2
3
4
5
6
7
8
9
10
11
12
13
title: [ブログのタイトル]
subtitle: [ブログのサブタイトル、もし必要あれば]
description: [ブログの説明、もし必要あれば]
author: [著者名]
language: en
timezone: Asia/Tokyo

url: https://[username].github.io

deploy:
type: git
repo: git@github.com:[username]/[username].github.io.git
branch: master

language は 日本語に対応しているテーマを使う場合は ja に しますが、デフォルトテーマは対応していないようなので en に しました.

デフォルトのテーマから利用しない他言語を削除

language: en に しているのですが、たまに異なる言語でブログが生成されるケースがあるので、利用しない他言語を削除します. 特に問題がない場合は削除する必要はありませんが、hexo generate した結果を確認しないでデプロイしたら、ブログ右のタグやカテゴリーが知らない言語になっていたことがあったので、念のため削除することにしました.
/<ブログ・ソース・ルート>/themes/landscape/languages/default.yml を 残して、他の言語のファイルを削除します.

ウェブサイト の 生成 と GitHub Pages へ デプロイ

設定を行ったら、ウェブサイトの生成を行います.
通常は hexo generate だけでよいようですが、記事の削除などを行った場合は hexo clean を しないと消えてくれないことがあるので、ウェブサイト生成をする場合は hexo cleanhexo generate を セットで行うようにしています.

1
2
3
4
5
6
7
8
C:\Develop\repos\[username].github.io> hexo clean
INFO Deleted database.

C:\Develop\repos\[username].github.io> hexo generate
INFO Start processing
INFO Files loaded in 535 ms
...(省略)
INFO 28 files generated in 2.36 s

ウェブサイト生成できたら GitHub へ デプロイします.

1
2
3
4
5
6
7
C:\Develop\repos\[username].github.io> hexo deploy
INFO Deploying: git
INFO Clearing .deploy_git folder...
INFO Copying files from public folder...
...(省略)
* [new branch] HEAD -> master
INFO Deploy done: git

デプロイ完了後、https://[username].github.io で アクセスするとデフォルトの Hello World 記事が見れます.

ウェブサイト の ソース を GitHub で 管理

ここまで作ったウェブサイトのソースを GitHub で 管理できるようにします. 今回は source ブランチで管理することにします.

以下の手順で、ウェブサイトのソースがあるフォルダに Git の リポジトリを作成し、ウェブサイトのある master とは関連の無い source の ブランチを作成してコミット&プッシュします.

1
2
3
4
5
6
7
8
9
C:\Develop\repos\[username].github.io> git init
C:\Develop\repos\[username].github.io> git remote add origin git@github.com:[username]/[username].github.io.git

C:\Develop\repos\[username].github.io> git checkout --orphan source

C:\Develop\repos\[username].github.io> git add .
C:\Develop\repos\[username].github.io> git commit -am "Initial commit for Hexo source files"

C:\Develop\repos\[username].github.io> git push origin source


以上で Hexo と GitHub Pages で ブログ環境が構築できました. 以降は source ブランチで記事のソースを管理し、投稿タイミングで hexo cleanhexo generate -dmaster ブランチ = ウェブサイト を 更新していきます.

基本的に source ブランチしか使わないため GitHub の [Settings] - [Branches] から source ブランチをデフォルトにしておくと便利かもしれません.

手軽に記事のソース管理ができそうなので使っていくのが楽しみ.