「え? これで終わり?」AIと4日間で作ったCMSを振り返る

AI体験談・その他
振り返っているイラスト
前回の記事では、AIとのコミュニケーションで壁にぶつかった話と、そこから生まれた「説明の順序ルール」、そしてMarkdownエディタと画像アップロード機能の実装について書きました。 管理画面としてはひと通りの機能が揃いましたが、まだ足りないものがひとつあります。 外部の人が記事を読める「公開ページ」です。今回はその実装と、全体の振り返りです。

「管理ツール」が「ブログ」になった日

最後の大きなステップは、公開ページの実装でした。

ここまで作ってきたのは、すべてログインしないと見られない管理画面です。
記事を書いて、編集して、画像を入れることはできるようになったけれど、それを外部の人が読めるURLはまだ存在していません。
ブログとして機能するには、誰でもアクセスできる公開ページが必要でした。

公開ページを作るにあたって、ひとつ判断がありました。
記事の本文はデータベースにMarkdownの形式で保存されています。
## 見出しや**太字**といった記号をそのまま画面に出すわけにはいかないので、MarkdownをHTMLに変換して表示するライブラリが必要です。
候補は2つあって、すでにプロジェクトに入っているエディタライブラリの一部を流用する方法と、表示専用の軽量ライブラリを新しく入れる方法。
Claudeに判断を任せたところ、公開ページは「読む専用」という役割が明確なので、表示専用のライブラリ(react-markdown)を選びました。

公開ページを作ったとき、最初に表示されたのはスタイルのないそっけない画面でした。
文字は表示されているけれど、Markdownの見出しがそのまま表示されていたり、余白もなくて読みにくい。そこからスタイリングを整えて、記事らしい見た目になったときは、「これはもうブログだ」と感じました。

スタイルが当たる前の画面
スタイルが当たった後の記事の画面

ダッシュボードにも変化がありました。公開済みの記事に「公開ページを見る」というリンクが表示されるようになったのです。
下書きの記事にはこのリンクが出ない。この区別が、CMSとして「公開・非公開を管理する」という機能がちゃんと動いている証拠でした。

「公開ページを見る」リンクが表示された後の画面

Claudeが「step-05が完成したということは、My Content Studioはもう管理ツールではなく公開ブログになった」と言っていました。
認証、CRUD、Markdownエディタ、画像アップロード、公開ページ。5つのステップを積み上げた結果が、ここに形になっています。

振り返り

開発期間は4日間、チャットのセッションは6回でした。

完成したあとの感覚は、意外なものでした。
達成感というより、「え? これで終わり?」という気持ちのほうが大きかったのです。
始める前は「CMSを自分で作る」と聞いて、途方もないことのように感じていました。
何を実装すればいいのか見当もつかなかった。でも実際に出来上がってみると、やったことは「ログインできるようにする」「記事を書けるようにする」「画像を入れられるようにする」「外から読めるようにする」の4つで、それぞれは思ったよりもシンプルでした。

もちろん、自分ひとりでは到底作れません。
コードはほぼClaudeに書いてもらっていて、自分がやったのは「何を作るか決める」「説明を聞いて理解する」「わからないところを聞く」「フィードバックする」ということです。
でも、その「フィードバックする」の部分が、思っていたよりずっと大事でした。

最初は完全に丸投げでした。
Claudeが提案してくれるものをそのまま受け入れて、言われた通りにコードを書いて、動けばOK。でも途中で、「何を聞いたらいいのかわからない」という壁にぶつかりました。
あのフラストレーションがなかったら、説明の順序ルールも生まれていなかったし、その後の開発がもっとストレスフルなものになっていたと思います。

これはAIとの開発に限った話ではないと思っています。
たとえば、新しい仕事に就いたとき、先輩に「わからないところがあったら聞いてね」と言われても、何がわからないのかがわからなくて聞けない、という経験は多くの人にあるはずです。
「わからない」と言えること、そしてどう説明してほしいかを具体的に伝えられることは、相手がAIでも人間でも同じように大事なことだと感じました。

My Content Studioは、今も動いています。
ただ、実際に日常のブログ管理に使うかというと、正直なところSanityのほうが圧倒的に高機能で、乗り換えるつもりはありません。
このアプリはあくまで「CMSの仕組みを理解するために作った」ものです。
それでも、作ったことで「Sanityが裏側で何をしているのか」の解像度がだいぶ上がりました。

次にやりたいことはいくつかあります。
カテゴリ機能はテーブルだけ作ってUIはまだないので、それを繋げること。検索やフィルター機能を入れて、記事が増えても探しやすくすること。見た目ももう少し整えたい。あとは、Insight Notesに認証機能を後から追加する、という課題も残っています。
最初から認証前提で作ったCMSもどきとは違う「後付け」の設計を経験してみたい、という気持ちがあります。

4日間で「見当もつかなかったもの」が形になった。それ自体はうれしいことです。
ただ、形になったからといって全部理解できたわけではないし、一人で同じものをもう一度作れるかと言われたら、無理です。
わかったことと、わからないままのことが、両方ある。その状態で次に進む、というのが、たぶんこういうことを続けていくうえでの普通のことなんだと思います。

感想やコメントをいただけるとうれしいです。