GatsbyJSでブログを作成する方法
概要
GatsbyJSというReactとGraphQLを利用したWebサイト構築ツールでこのブログを作成しました。
構成として以下が必要になります
- GatsbyJS(ReactとGraphQLを利用したOSSのブログフレームワーク)
- Netlify(デプロイ環境、一定アクセス数まで0円)
- GitHub
- Google Domain(カスタムドメインを購入)
1. GatsbyJSを立ち上げる
GatsbyJSのチュートリアルを軽く読む
チュートリアルを軽く読みましょう。
GatsbyJSのREADMEも少し見ておくとよいかもしれません。
GatsbyJSのスターターキットを利用する
Startersから、好きなテンプレートを選びましょう。
今回はgatsby-starter-hero-blogを選びました。
READEMEに書いてあるとおりにローカルでdevelopモードで動作確認を行う
READMEに書いてあるとおり、以下のようにコマンドを打つと、
http://localhost:8000 で動くことを確認できます。
$ npm install -g gatsby-cli
$ gatsby new my-blazing-fast-site
$ cd my-blazing-fast-site/
$ gatsby develop
2. Netlifyにデプロイする
デプロイ手順は簡単です。
1. ローカルのターミナルで gatsby build
コマンドでビルドします。
私のスターターキットではブログ内検索の外部サービスであるalgoliaが動かないと、External servicesというエラーになるため、algoliaをストップする必要がありました。(あとで復旧させました)
2. これをコミットして、GitHubにpushします。
3. 最後に、Netlifyにデプロイします。
アカウントの連携を行い、その流れでデプロイ対象のリポジトリを選択するだけでした。
3. カスタムドメインを設定する
ドメインの取得
まず、Google Domain で購入します。
値段は¥1400+税程度でした。
お名前.comと違って画面が見やすく、自分の欲しいドメインを入れると、取得可能な複数のドメイン名をリストしてくれるので選びやすかったです。
ドメインの設定
次に、Netlifyの設定画面にあるDomain Setting>Domain managementに進み、取得したドメイン名を入力します。
Googleで買ってから数分以内でしたが、購入したドメイン確認が取れて無事に設定することができました。
DNS設定
最後に、DNSの設定を行い、ドメイン名がこのサイトのIPアドレスを向くように設定します。
まず、Name Serversの項目を探します。
このサイトであれば、このURLでたどり着けます。
https://app.netlify.com/teams/n350071/dns/n350071.com#nameservers
そこに書いてある以下のような文字列を確認します。
dns1.p06.nsone.net
dns2.p06.nsone.net
dns3.p06.nsone.net
dns4.p06.nsone.net
これを、Google Domainのxxxxに指定すれば、設定は終わりです。
4. SSL化する
Netlifyの先程のドメイン設定のページの最下部に行くと、SSLの設定項目があります。
指示に従うとできるようになっています。
私はドメインを変えたばかりでしたので、1時間ほどSSL化できませんでした。
(できないときは、しばらく待ってみるとよさそうです。)
5. 機能カスタマイズ
ここから先は、私のスターターキットでの設定になります。
外部サービスの設定(External services)
Googleanalyticsid
これは「Tracking ID」のことで、Google Analyticsの利用登録後に確認できます。
algolia
algoliaにアクセスして指示に従うとできます。
.env
に設定するキーが多いですが特に迷わずにできました。
Markdown
Syntax Hilightについては最初から実装済みでした。
ただし、直後にrubyとかmd, shellなどと書かないとハイライトがうまく効きません。
また、こんな風にタイトルをつけるには、gatsby-remark-prismjs-titleを参考にしてください。
hello!
記事の自動生成
記事の書き方自体はこちらで確認できます。
ただし、毎回これを1から作るのは大変なので、 npm run new-post -- title
で作成できるようにしました。
詳細は🔨こちら(作成中)に書きました。
その他
-
Home画面
- タイトルは
src/components/Hero/Hero.js
を変更 - 背景画像
src/images/png/hero-background.png
を変更
- タイトルは
-
記事全体
content/parts/author.md
の修正content/parts/footnote.md
の修正- その他
content/meta/config.js
の修正 -
siteImage: “preview.jpg”
<meta property="og:image" content={image} />
で使われて、記事がシェアされたときの画像になるので、しっかり変えておきましょう。
-
About, Privacy Policy, Terms and Conditions
- pages以下は消していって大丈夫ですが、唯一success以下を消すとbuildできませでした。(ハマった)
-
pages以下は、このヘッダを消さないようにしましょう。
-
--- title: Success ---
-
- Contactは消しました。
-
favicon
src/images/app-icons/
以下のpng画像を取り替えて、次のスクリプトを実行します。sh scripts/generate-app-icons.sh
-
CSS調整
src/components/Header/Header.js
にベタ書きされているので、必要に応じて修正します。
お疲れさまでした。設定としては以上です。
その他
フリーの画像素材としてUnsplashを使っています。
特にこだわりがないので、他に良いところがあれば教えてもらえると嬉しいです。