😇

[懺悔・反省] Zennの公開日時をミスってやらかした話

2024/12/09に公開

はじめに

Zenn と GitHub を連携して記事を管理していますが、公開日時の設定ミスで盛大にやらかしました 💦
気づけば多方面に迷惑をかける事態に…。反省を込めて、この失敗の全貌と解決方法を綴ります。

大前提

Zenn と GitHub の連携

Zenn では、GitHub リポジトリ上の Markdown ファイルを管理し、記事として公開できます。
例えば今回の記事だと以下のように設定しています。(publication_name は省略)

zenn-publication-date-mistake.md
---
title: "Zennの公開日時をミスってやらかした話" #ここにブログのタイトルを記載
emoji: "😇" #記事に絵文字を付けられる。任意でOK
type: "idea" # tech: 技術記事 / idea: アイデア
topics: ["zenn", "zenncli"] #記事につけるタグ。任意でOK
published: false #公開非公開の設定。
published_at: 2024-12-09 07:00 #公開日時の設定。
---

現状の GitHub と Zenn の連携では、組織のリポジトリでマージされた変更を GitHub Actions を使って個人リポジトリにコピーしています。詳しい仕組みは以下の記事に記載されています。
https://zenn.dev/sdb_blog/articles/001-build_review_and_publish_system_for_tech_blog

URL はファイル名に依存

Zenn の記事 URL はファイル名(slug)に基づいて生成されます。たとえば、example.md なら URL は https://zenn.dev/ユーザー名/articles/example となります。
https://zenn.dev/zenn/articles/what-is-slug

今回紹介するミス

以下の記事を作成する際、2024/12/5 に公開しようとしていましたが、誤って 2023 年に設定してしまいました。
https://zenn.dev/sdb_blog/articles/laravel-formrequest-unique-constraint

Qiita の Advent Calendar にも参加していたため、そちらの修正も必要でした。
https://qiita.com/advent-calendar/2024/sdb_blog
https://qiita.com/advent-calendar/2024/laravel

先に解決策を知りたい方向け

公開日時ミスを解消するために行った主な対策

この後綴る体験談の成功例だけをまとめたものです。

  1. 記事を作り直し、新しい URL(ファイル名)で公開
    「いいね」は消えてしまいますが、新しい記事に差し替えました。

    • 元記事: formrequest-unique-constraint-laravel.md
    • 新記事: laravel-formrequest-unique-constraint.md
  2. 古い記事を Zenn の管理画面から直接削除
    GitHub 上でファイルを削除するだけでは記事が消えなかったため、Zenn の「記事の管理」画面から不要な記事を手動で削除しました。

  3. Qiita Advent Calendar のリンク修正
    参加しているAdvent Calendarにおいて、新しい記事の URL に差し替えました。

やってみたこと

〜失敗談〜

0. 異変に気づく

最初に異変を感じたのは、予約投稿したつもりの記事に「いいね」がついたことでした。予約投稿中の記事は通常「いいね」を押せないため、設定ミスを疑い確認したところ、公開日時が誤っていることに気づきました。
公開日時ミスに気づいた瞬間
公開日時ミスに気づいた瞬間

1. 公開日時を変更してみた(失敗)

以下のように、published_at を未来の日付に修正し、Pull Request を作成しました。(2024/12/2 の出来事)

formrequest-unique-constraint-laravel.md
---
title: "FormRequestでのユニーク制約に潜む落とし穴!Laravelで学ぶ責務分離を考慮したDBアクセス"
emoji: "😅"
type: "tech"
topics: ["laravel", "設計", "architecture", "オニオンアーキテクチャ", "validation"]
published: true
- published_at: 2023-12-05 07:00
+ published_at: 2024-12-05 07:00
---

修正後、記事は非公開状態になり、2024/12/5 に予約投稿できたため、「これで問題解決!」と思い込んでいました。
しかしこれが諸悪の根源でした。👿
一度公開された記事の公開日時は、後から修正しても初回公開日時のままとなるので、後から修正しても意味がないのです。

2. 公開日当日の異変

公開日当日、Zenn の記事リストを確認すると、記事の順番がおかしいことに気づきました。
順番が崩れた原因は、初回公開日時がそのまま使われていたためです。

順番がおかしい
公開順番がおかしい

公開順番がおかしいと以下のような問題が発生してしまいます。

  • 読者の目に触れる機会損失
    • 当日の記事をチェックしている読者が多いと考えられるため、読者の目に触れる機会を失うことは重大な機会損失につながります。
  • Advent Calendar の閲覧データが正確に取得できない
    • Advent Calendar 中の全メンバーの記事の閲覧数を集計する際、この記事だけ2023 年 12 月 5 日〜」を期間に含めないとデータが表示されないという問題が発生します。これにより、正確な分析や評価が困難になります。
  • Zenn のリスト表示で抜けがあると誤解される可能性
    • Zenn 上で Advent Calendar の記事を初日から順に辿る際、組織のリスト表示の順番が崩れることで、読者に「この記事の日だけ抜けているのでは?」という印象を与える可能性があります。
  • 技術スタックのバージョンが古いと思われる
    • 公開日が古いと、読者が「この技術記事は最新ではない」と誤解し、読むのを避けてしまう可能性があります。特に、技術ブログでは情報の新鮮さが信頼性に直結します。

〜成功例〜

流石に公開順番がおかしいのはよろしくないので、すでに「いいね」をしてもらった方々には申し訳ないですが、新しく記事を作り直すことにしました。
記事を作り直すと今までもらった「いいね」はリセットされてしまいます😭

3. URL(ファイル名)を変更

公開順を正すため、URL(ファイル名)を変更することで記事を新しく作り直しました。
既に「いいね」をいただいていた方々には申し訳なかったのですが、やむを得ない対応でした。

  • 元記事のファイル名: formrequest-unique-constraint-laravel.md
  • 新記事のファイル名: laravel-formrequest-unique-constraint.md

これにより、新しい記事として公開され、正しい公開日時で順番が整いました。

4. 古い記事が消えない

ファイル名変更すれば古いformrequest-unique-constraint-laravel.mdの方の記事は消えると思っていましたが、GitHub からの操作だけではできなかったようです。
結果、古い記事と新しい記事が重複して存在する状態になってしまいました。

古い記事が消えておらず重複している
古い記事が消えておらず重複している

原因

GitHub Actions でのコマンド操作で Zenn に反映できるのか調べてみたところ、Zenn の仕様により、GitHub 上でファイルを削除したり URL を変更したりしても Zenn 上の記事は削除されませんzenn-cli-guideに以下のように記載されています。

削除は Zenn ダッシュボードから行います。安全のため、articles ディレクトリから Markdown ファイルを削除しても zenn.dev 上では削除はされません。

https://github.com/zenn-dev/zenn-docs/blob/main/articles/zenn-cli-guide.md#記事の削除

5. 古い記事を Zenn から直接削除

図のように Zenn の「記事の管理」から古い記事を直接削除しました。
(すでに消してしまった後にこの記事を書いているので、重複している様子は写真に収め忘れました 🙇‍♂️)
古い記事を削除
古い記事を直接削除

6. Qiita Advent Calendar の調整

Qiita の方では Zenn で公開されている URL を貼り付けているだけだったので、新たに作成した記事の URL に差し替えることで対応しました。
Laravel とインターン先の両方で参加していたため、2 つとも変更することを忘れないようにしました。

  • 変更前
    https://zenn.dev/sdb_blog/articles/formrequest-unique-constraint-laravel
  • 変更後
    https://zenn.dev/sdb_blog/articles/laravel-formrequest-unique-constraint

Qiita Advent Calendar 修正
Qiita Advent Calendar 修正

最後に

自分の不注意でやらかしてしまい、大変ご迷惑をおかけしました…。
多方面に迷惑をかけてしまい頭が地面から離れないです 💦

最後までレビューや相談にのってくださった社員さん、古い記事の方に「いいね」をくれた方々、X で記事をシェアしてくれていた方には、本当に申し訳なく思っています。🙇‍♂️

この経験を教訓に、今後はもっと注意を払っていきたいです(CI でチェックできれば…?)。

この記事が、同じようなミスを防ぎたい方々のお役に立てば幸いです!

ソーシャルデータバンク テックブログ

Discussion