Post

新規投稿はこうですか?

はじめに

この記事は投稿練習です。 検索でよく上位にヒットするどこかのサイトの真似をするなら、タイトルは「【Jekyll】Jekyll-Composeを使って楽に記事作成しよう!」とかになるんだと思いますが、練習中なのでそんなことは部屋の隅に置いています。

操作方法はおろかブログの書き方さえよくわかっていない状態で書かれていますので、もしかしたら謎なことをしているかもしれません。では本題へ。

新規投稿がめんどくさい

このブログを作るためにはJekyllというツールを使ってみました。私はRubyが大好きです。

当たり前なのかもしれませんが、少なくともJekyllを使う場合はどうやら各投稿の先頭に記事の情報をべちゃっと書かないといけないようです。 情報を書くときのフォーマットはほぼほぼ決まっているみたいですが、打たなきゃならない字数が案外多くて執筆のときに気がそれちゃいそうです。例えばこの記事ではこんなことを書いています。

1
2
3
4
5
6
7
---
layout: post
title: 新規投稿はこうですか?
date: 2024-09-15 19:36 +0900
categories: [ブログ, 練習]
tags: [Jekyll, Jekyll-Compose]
---

前回のHello worldはこうです。

1
2
3
4
5
6
7
---
title: Hello World
description: The first post
date: 2024-09-15 19:21:00 +0900
categories: [ブログ, 練習]
tags: [hello world]
---

長いなあ。

まあ、これを毎回書くとはいってもベースはコピペすればよさそうなのでそんな手間でもないだろうと、思ってはいたのですが。

特にdateがめんどくさい

書いてみて、1つ心配なことがあったのです。この中にあるdateにご注目ください。

1
date: 2024-09-15 19:21:00 +0900

日付はともかく、時刻があります。それも秒まであります。 これを手打ちすると不正確な時刻になるはずです。私が今が何月何日、何時何分何秒なのか確認するためには、確実に数秒以上かかります。タイピングも遅い部類なので、打ってる間に秒が変わります。いつの秒にしとけばいいのぉぉ~!!??

ざっくりでいいだろと言われればそれまでですが、私はどうもこういうどうでもいいことが気になってしまうタイプみたいなのです。

Jekyll-Compose

私はそもそもこちらのGetting Startedを読みながらセットアップしてみたんですけども、このあたりのことに関しては同サイトのWriting a New Postに素敵な情報がございました。

If you want to save time of creating files, please consider using the plugin Jekyll-Compose to accomplish this.

日本語にするなら、「ファイル作成のとき時短したければ、Jekyll-Composeというプラグインを使ってみてください」みたいなことでしょうか。

Jekyll-Compose。あらそれ何ですの。

インストール

物は試しだ、ということで載っていたリンクを踏みまして、READMEを見ながらまねっこインストール。インストール方法は、Installationの中ですね。

Installation Add this line to your application’s Gemfile:

gem 'jekyll-compose', group: [:jekyll_plugins]

とのことですので、このブログ本体を構成する最上位のフォルダからGemfileという名前のファイルを見つけてきてテキストエディタで開きます。ちなみに私はEmacsを使っています。

Gemfileに追記

Gemfileを興味本位でちょろっと読んでみますと、# frozen_string_literal: truedo-endなど、なにやらRubyチックな文字列が並んでいます。Gemっていうくらいなんでそういうものなんですかね。 名前忘れましたが、もしかしてPythonのpipのこういうやつだとPythonチックな構文なのですかね。そういえばどこかに持っていた気がします。でも忘れてしまいました。でもNode.jsのpackage.jsonはJSONですし、くっついてる言語に似た構文を採用するものなのかもしれませんね。私はそういうの好きですよ。

それはさておき、インストールです。

gem 'jekyll-compose', group: [:jekyll_plugins]

私はこれを、とりあえずGemfileの末尾に書き足して保存しました。

その次に、もうひと手間いるようです。

インストールコマンドを叩く

And then execute:

1
$ bundle

とのことなので、手元のTerminalにそのままbundleと打ち込みEnterしました。

1
2
3
4
5
6
7
8
9
10
.../Documents/blog$ bundle
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Fetching jekyll-compose 0.12.0
Installing jekyll-compose 0.12.0
Bundle complete! 6 Gemfile dependencies, 61 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
1 installed gem you directly depend on is looking for funding.
  Run `bundle fund` for details
$

入ったっぽいです。では早速使ってみましょう。でもどうやって??助けてREADME.md

Jekyll-Composeで投稿してみたい

…使い方は、Usageの章ですね。いろいろ書いてありますが…記事の投稿をするには_postsというディレクトリの下にファイルを作るので、きっとpostと書いてあるやつでしょう。そう思ったので、一番最初に「post」に言及しているこちら。

Create your new post using:

1
$ bundle exec jekyll post "My New Post"

これの真似をし、

1
$ bundle exec jekyll post "新規投稿はこうですか?"

このように打ちました。特に書くことも決めていなかったので、記事タイトルは思っていることそのままです。新規投稿はこうですか?

1
2
3
4
.../Documents/blog$ bundle exec jekyll post "新規投稿はこうですか?"
Configuration file: /path/to/Documents/blog/_config.yml
New post created at _posts/2024-09-15-新規投稿はこうですか.md
$

New post created at _posts/2024-09-15-新規投稿はこうですか.md」。へえ、「?」は取られちゃうんですね。全角文字だからでしょうか、と一瞬思いましたが「新規投稿はこうですか」が生き残ってるので違いますね。記号が消えるのでしょうか。

結局新規投稿はこうなんですか?

それで、憶測でこんなコマンドを打ちましたが、果たして新規投稿はこうなのでしょうか。
さっきHello worldを書いたばかりだったのでEmacsで_posts/配下のHello worldを開いてありましたから、このまま_postsに上がります。Emacsってフォルダの中が見れるんです。ファイルとフォルダを行ったり来たりして、親フォルダ子フォルダへの移動も自由自在。エクスプローラにもなるんですよ。

話をそらしてすみません。_postsに行ってファイル一覧の更新をかけます。

1
2
3
4
  ...(略)
  -rw-rw-rw-  1 user user  444 09-15 19:32 2024-09-15-Hello-World.md
  -rw-rw-rw-  1 user user   91 09-15 19:36 2024-09-15-新規投稿はこうですか.md
  ...(略)

ありました。ありましたよ。2024-09-15-新規投稿はこうですか.mdが。hello worldの隣にあるのですから、これで間違いなさそうですね。 中を確認しますと。あら素敵。

最初のごちゃごちゃができてる

1
2
3
4
5
---
layout: post
title: 新規投稿はこうですか?
date: 2024-09-15 19:36 +0900
---

思ったよりシンプルですが、先頭の色々を書いてくれています。悩みの種だった日時がばっちり!…と、思ったら、秒が載っていませんね。それでもいいのか?

最初のごちゃごちゃのdate部分に秒を載せる

でもありがたいことに、Usageに載っている説明はこれだけではありません。

Create your new post using:

1
2
3
    $ bundle exec jekyll post "My New Post"
    # or specify a custom format for the date attribute in the yaml front matter
    $ bundle exec jekyll post "My New Post" --timestamp-format "%Y-%m-%d %H:%M:%S %z"

2つ目のbundle exec jekyll post "My New Post" --timestamp-format "%Y-%m-%d %H:%M:%S %z"はオプションがtimestampとか言ってますしきっとそういうことですよね。真似して打ちます。

1
2
3
.../Documents/blog$ bundle exec jekyll post "時刻フォーマット指定はこうですか?"  --timestamp-format "%Y-%m-%d %H:%M:%S %z"
Configuration file: /path/to/Documents/blog/_config.yml
New post created at _posts/2024-09-16-時刻フォーマット指定はこうですか.md

そうですか。では作ってもらった_posts/2024-09-16-時刻フォーマット指定はこうですか.mdを開きます。

1
2
3
4
5
---
layout: post
title: 時刻フォーマット指定はこうですか?
date: '2024-09-16 07:54:07 +0900'
---

おお、dateが秒まで書かれているではありませんか。

でも正直、postを作るたびに--timestamp-format "%Y-%m-%d %H:%M:%S %z"なんて長いものを打つの大変じゃないですか?

もしかして: Time#strftime

このdateの書式、どうも見覚えがあるのですが、これRubyのTime#strftimeの書式でないです? この推測が正しければ、%Y-%m-%d%Fに、%H:%M:%S%Tにできるのでちょっと楽です。 つまり私の仮説が合っていればこう打てます。

1
.../Documents/blog$ bundle exec jekyll post "記事タイトル" --timestamp-format "%F %T %z"

できるのかな?

真実はやればわかる。実験。

1
2
3
.../Documents/blog$ bundle exec jekyll post "時刻フォーマット指定はstrftimeですか?"  --timestamp-format "%F %T %z"
Configuration file: /path/to/Documents/blog/_config.yml
New post created at _posts/2024-09-16-時刻フォーマット指定はstrftimeですか.md

ファイルを開く。

1
2
3
4
5
---
layout: post
title: 時刻フォーマット指定はstrftimeですか?
date: '2024-09-16 08:07:10 +0900'
---

わお、的中。こっちのほうが楽ですね。

下書きを作る/投稿を下書きにする/下書きを投稿にする機能

draftって何

Usageを見ていくとたくさん見かけるのですが、draftってなんでしょう? 「draft」と調べたらその訳は「下書き」なんだそう。「Jekyll drafts」で検索したところ、なるほどこれは、下書き機能のようです。Jekyllで下書き記事管理というタイトルの記事がヒットしました。この方はdraft機能を、記事を非公開にするために使っているみたいです。なるほど、下書きは公開されないから、非公開枠としての使い道もあるのですね。

draftしてみる

とりあえず打ってみます。

1
2
3
$ bundle exec jekyll draft "want-to-customize-this-theme"
Configuration file: /path/to/Documents/blog/_config.yml
New draft created at _drafts/want-to-customize-this-theme.md

ふむ。下書きは_drafts配下に作られるのですね。want-to-customize-this-theme はまた別で書いていこうと思います。

公開記事をdraftにする

draft記事を公開にしたり、公開済みの記事をdraftに移すこともできるようです。試しにpostで作ったこのファイルをdraftに押し込んでみます。

すでに_posts内にあるファイルはunpublishで戻せるそう。

1
2
3
$ bundle exec jekyll unpublish _posts/2024-09-15-新規投稿はこうですか.md
Configuration file: /path/to/Documents/blog/_config.yml
Post _posts/2024-09-15-新規投稿はこうですか.md was moved to _drafts/新規投稿はこうですか.md

_postsから_draftsに移動されました。 日付情報も消えています。が、本文は残っています。すごい。

draftの記事を公開にする

もう一度このファイルを公開にします。下書きを公開記事にするのはpublishだそうです。

1
2
3
$ bundle exec jekyll publish _drafts/新規投稿はこうですか.md  --timestamp-format "%F %T %z"
Configuration file: /path/to/Documents/blog/_config.yml
Draft _drafts/新規投稿はこうですか.md was moved to _posts/2024-09-16-新規投稿はこうですか.md

時刻指定は必要なようですが、なるほどこれは面白い。 他にもいっぱいコマンドがあるみたいなので、ちょっとずつ探検したいです。

おやすみなさい。

This post is licensed under CC BY 4.0 by the author.

© singurilla. Some rights reserved.

Using the Chirpy theme for Jekyll.