このブログについて、2年間考えていました。

「欲しい」と言うのは実は正確ではなく、むしろ執念に近い。最初はフロントエンドやバックエンド、組み込みコードさえ書けなかった頃に芽生えた。まだ電子工作をしていて、たまたま@ushioのBilibili動画とサイトを見つけ、面白そうだと思って自分もやってみたくなった。その後、半年ほどかけてゼロからC言語と少しのJS/CSSを書けるようになり、Hexetで静的ブログを作ってGitHub Pagesにデプロイした。これで自分だけの小さな世界ができた。

Hexo:高速でシンプル、かつパワフルなブログフレームワーク。 , hexo.io, opens in new tab
これは Hexo プロジェクトのホームページのスクリーンショットで、暗いテーマのサイトです。六角形の「H」ロゴと、Docs、API、News、Plugins、Themes、About のトップナビがあります。ヒーローエリアの見出しは「A fast, simple & powerful blog framework」で、その下に端末風のインストールコマンド `npm install hexo-cli -g` が表示され、左右には GitHub のスター 41k、フォーク 5k、月間ダウンロード数 212k、X の @hexojs のフォロワー数を示すバッジがあります。その下にはリリースタイムラインがあり、バージョン 8.1.0(2025-10-26)、8.0.0(2025-09-16)、7.3.0(2024-07-02)、7.2.0(2024-04-17)がリストされています。ページは「Blazing Fast」や「Markdown Support」などの機能セクションへと移行し始めます。この画像は、公式サイトに表示されている Hexo の現在のリリースサイクルとコミュニティの採用指標を示す証拠です。
Hexo:高速でシンプルかつ強力なブログフレームワーク。 , hexo.io, opens in new tab
これは Hexo プロジェクトのホームページのスクリーンショットで、暗いテーマのサイトです。六角形の「H」ロゴと、Docs、API、News、Plugins、Themes、About のトップナビがあります。ヒーローエリアの見出しは「A fast, simple & powerful blog framework」で、その下に端末風のインストールコマンド `npm install hexo-cli -g` が表示され、左右には GitHub のスター 41k、フォーク 5k、月間ダウンロード数 212k、X の @hexojs のフォロワー数を示すバッジがあります。その下にはリリースタイムラインがあり、バージョン 8.1.0(2025-10-26)、8.0.0(2025-09-16)、7.3.0(2024-07-02)、7.2.0(2024-04-17)がリストされています。ページは「Blazing Fast」や「Markdown Support」などの機能セクションへと移行し始めます。この画像は、公式サイトに表示されている Hexo の現在のリリースサイクルとコミュニティの採用指標を示す証拠です。

再后来,看到了 @Innei 的小站,设计很精致、功能也很全,当时的我看了一眼我就想要,甚至还赞助支持了,虽然后面没用上但是这钱也花的不怨 因为我摸到了 React 源码,就和我最初看到 C 一样,不过就是代码嘛,有什么大不了的,总有一天我要自己写一个。

ushio , sakura-ushio.icu, opens in new tab
個人ブログのホームページのスクリーンショットには、アニメ風のアバターと名前「小汐」、リンク「主页」、そして「所有文章/友链/关于我」のナビゲーションとGitHubをはじめとするソーシャルアイコンが表示されたサイドバーが、ピン留めされた投稿のフィードの横に配置されている。最上位の投稿は2023-01-29付けでタグ「置顶」(ピン留め)されており、タイトルは「PD-METER-R4」、メモは「正在开发,相较于R3优化布局,更换主控,增加少量新功能」(開発中で、R3に比べレイアウトを最適化し、主制御装置を交換し、少数の新機能を追加)となっている。緑色のPCB「USBC-R4 SAKURA」の部品面と、布製バックドロップ上の裏面の裸状態を示す2枚の写真が添えられている。その下には、2023-02-14付けのタイトル「WORX-BAT-Charger」の2番目の投稿が始まっているが、フレームの下部で切れている。この画像は、USB-C PD(Power Delivery)測定装置の反復的な改良を記録した、進行中のハードウェアプロジェクトの証拠となっている。

その後、@Innei の小さなサイトを見つけました。デザインはとても精巧で、機能も充実しています。その瞬間、ひと目見ただけで欲しくなり、実際にスポンサーとして支援しました。後に使うことはなかったものの、支払ったお金を後悔はしていません。React のソースコードに触れたことで、最初に C を見たときと同じ感覚になりました。コードはコードですから、大したことではありません。いつか自分で書く日が来ると信じています。

静かな森

それは2024年でした、そして24、25、26年が現在まで

それ以来、止まらなくなった。

制御不能

最初は、@colmugx の Hexo テーマ Nlvi にライト/ダーク切り替えを追加したかっただけです。Dark Reader の JavaScript を適当に貼り付けましたが、見た目が悪く、満足できませんでした。その後 CSS @media を学び、次に JS SPA の切り替え、TailwindCSS の .dark クラス、さらに SSR の next-theme、最後に Cookie と Head Sync Inline スクリプトを手作業で組み合わせて FOUC のちらつきを解消しました。結局、4、5通りの案を試しました。

🎨 Hexo 用のシンプルなテーマ。 , github.com, opens in new tab
これはブログテーマを宣伝するスクリーンショットモックアップで、左側にサンゴ色の下線が付いた「Nlvi」ワードマークロゴが表示され、Hexo 静的サイトジェネレータで構築されたサイトの2つの重なり合うブラウザウィンドウプレビューが添えられています。両方のプレビューペインでは、2013‑12‑27の日付で「Elements」というタイトルのデモ投稿が同じく表示され、プレースホルダーの Lorem Ipsum テキストと、見出し1から6までサイズが徐々に小さくなるタイポグラフィサンプル、リンク装飾付きの段落、太字・斜体・下線、ブロッククオート、そして「Table Header 1」「Table Header 2」「Table Header 3」と「Division」行を持つ3列テーブルが続きます。上部ナビゲーションバーには「ARTICLE, ARCHIVES, TAGS, ABOUT」と検索アイコンが並び、これは Hexi テーマ内で HTML 要素がどのようにレンダリングされるかを示すスタイルガイドまたはテーマデモページであることを示しています。

しかし、これは氷山の一角に過ぎません。React を見た後、石器時代の Hexo と Vanilla JS から Next.js 13 Page Router まで一直線に進み、そこから Vue に手を伸ばし、SPA ルーティングを研究し、index.html のフォールバックを理解し、無数のプロジェクトを新規作成しました。サーバーを購入し、Docker、Nginx、NAS をいじり、1Panel が見苦しいと感じて Canopy パネルを手書きし、NAS のストレージアレイを調査して RFS を書きました。SSL の設定では国内環境に悩まされ、acme.sh が手に負えなくなったため、Rust でリバースプロキシ(Vane & Lazyacme)を書きました。元々は一晩で三時間書いた800行ほどのゴミコードでしたが、友人に誘われて四か月かけて HTTP/3、Zero‑Copy、Layer モデル、Flow エンジンをすべて詰め込みました。その後、Seam という全スタックフレームワークもありますが、これもまた厄介なものです。続きはまた今度。

過度エンジニアリング

そして AI 時代がやって来て、不安は倍増した。

最も皮肉なことは、これらのことはブログを始めた後に、記録しながら実行すべきだったということです。しかし、ブログは何度も放棄され、アイデアはどんどん増えていくのに、記録できる場所がありませんでした。一方では自分の内面が非難しています;Vane を完成させると約束したのにできず、止めました。もう一方では、遠ざかるにつれて無力感が増すのを感じます。やりたいことは常に覚えているのに、実現できません。よく考えると、かなり長い間、何かを書き下ろすために座っていなかったことに気づきます。今振り返ると、すべては同じもの――過剰なエンジニアリングに指し示しています。

その時、実際には自分が逸れているとは全く思っていなかった。Vane?とにかく、ブログは将来デプロイしなければならないので、リバースプロキシは必須だろう。Seam?結局フルスタックを書かなければならない時が来るので、理想とするフレームワークを先に整えておこう。すべてのステップには理由があり、すべてが「後で使える」ことになる。でも問題は、「後で」は決して来ないということだ。なぜなら、私は一度も実際に始めていないから…

失敗

ブログを書くこと自体はリバースプロキシも自作フレームワークも必要ありませんでした。当時の私はそれらを前提条件とみなし、永遠にブロックされる合理的な理由として挙げていましたが、実際にはそうではありませんでした。実際の唯一の前提条件はただ一つです:座って最初の記事を書き上げることです。

実はブログは手をつけていないわけではなく、むしろ3回やっています。

Vercel , vercel.com, opens in new tab
これはNext.jsのホームページのスクリーンショットで、暗いテーマに三角形のロゴがあり、上部ナビゲーションにはShowcase、Docs、Blog、Templates、Enterpriseが並び、検索バーとDeploy、Learnボタンがあります。ヒーローセクションには「The React Framework for the Web」と表示され、その下にNext.jsが世界最大手の企業のいくつかによって、Reactコンポーネントを使用して高品質なウェブアプリケーションを構築するために利用されていることを説明するサブテキストがあります。その下に「Get Started」と「Learn Next.js」の2つのボタンがあり、ターミナル風のコマンドライン「npx create-next-app@latest」が表示され、サイトがフレームワークの公式マーケティングおよびオンボーディング用ランディングページであることが示されています。

最初はまだ Next.js 13 Page Router の頃でした。その頃は SPA が何かほとんど分からず、SSR、SSG、ISR といった概念も全く理解できていませんでしたが、他の人が SSR が良いと言うので私も使ってみたくなりました。書き進めていくうちに、これらのアーキテクチャがどんな問題を解決しようとしているのか全く理解できていないことに気づき、続けることができなくなりました。その後、Vue 2 の純粋な SPA に切り替えましたが、なぜ Vue を選んだかと言うと、正直に言うと名前がかっこよくて、新しかったので試してみたからです。長くは続きませんでした。三度目は React に戻り、シンプルな JSX から始め、TypeScript を学び、TSX も使えるようになり、CJS と ESM の違いを理解し、リアクティブプログラミングに恋をし、Lucide、Framer Motion、Radix UI など、今や手放せないライブラリを使い始めました――今回ようやく形が見えてきた感覚です。しかし結局失敗しました。根本的に私はただ模倣していただけで、他人が使うものをそのまま取り入れ、見た目はそれっぽくても、なぜそうするのか全く理解していなかったからです。さらに AI の幻覚に加えて、多くのものを MVP として動かすことはできましたが、スケールアップするとすべてが落とし穴だらけでした。

Remix , remix.run, opens in new tab
Remixフレームワークのウェブサイトのスクリーンショットで、左上にRemixロゴ、右上に「Blog」「Jam」「Store」「V2 Docs」へのナビゲーションバーがあります。中央の見出しは「Remix 3は現在積極的に開発中です」と書かれ、サブタイトルは「Web API上に構築された新しいフルスタックフレームワーク」です。その下には、黒い布で覆われた車形のオブジェのイラストがあり、布がフードにかかる部分からRemixの矢印ロゴと虹色の斜め帯が覗いています。シートに覆われた車のイメージは製品の発表やティーザーを連想させ、Remix 3がまだ開発中の次期リリースであることを示しています。

後にReact(Remix)Router LoaderやNext.js 15 App Router、RSCも学びましたが、その頃は日常がとても忙しく、コードを書く時間がほとんどなく、4回目の失敗する機会すらありませんでした。今振り返ると、私のサイトはNext.js 13からNext.js 15へと移行し、移行が終わったばかりでまだ公開していないうちに、Next.js 16 beta‑1が出てしまいました。

手放す

「想开了」と言うのは実際には正確ではなく、私が疲れているからだ。

ターミナルまたはアプリウィンドウのスクリーンショットで、ダークテーマのデータテーブルが表示されており、タイトルは「...roject」で切り詰められたパスになっています。2026-03-03 から 2026-03-13 までの日付行で日別モデル使用量が一覧化され、使用されたモデル(haiku-4-5、opus-4-6、sonnet-4-6 の組み合わせ)を示す列、数十億規模に達する複数の数値使用列、そして 1 日あたり約 $97.92 から $1,765.56 の範囲のドルコスト列があります。最も高いコストとトークン数は 2026-03-09 に現れ(最大列で 32.7 億超、$1,765.56)、2026-03-12 は $97.92 に急落しており、部分的または異常な日の可能性を示唆しています。これは AI API の使用量と請求を追跡する証拠であり、ソフトウェアプロジェクトのコスト監視ダッシュボードからのものと思われます。

AI時代のリズムは速すぎる。モデルは次々にイテレーションされ、新技術が次々と出てくる。止まってしまうと追い抜かれるようで、ますます不安になる。最も狂っていたときは、一日に16個の小さなコードを書き、Tokenは一日で約1.9千米ドルを燃やすことができ((大体2月頃だと考えられる))、人はほぼ疲れ果てていた。しかし、すべてを止めさせたのは何かの悟りではなく、単なる疲労だった。ますます速くなるペースの中で、最後の一本の藁が落ち、逆に解放感を得て、心が開き、諦めた;こうして、結局はかなり良いことだ。

私は手放し始めた。かつて執着していたものを手放し、ほどほどに止めることを学び、明日のことは明日やる。Vane がまだ終わっていない?まずは放っておく。Seam はまだ遠い?後でやる。ブログは完璧でなくても?まずは公開する。完全に Vibe Coding を始め、問題がなければ放置し、問題があれば後で対処する。

不思議なことに、手放した後でも品質は低下しなかった。これはおそらく、以前の「古法」プログラミングの日々が無駄ではなかったからだと思う。GPT‑2 の時代からすでに AI を使い始めていたが、その頃はまだ一行一行を書き、すべての概念を理解しようとしていた。その経験が基盤となり、後の Vibe Coding と呼ぶよりむしろ Context Coding と呼んだ方が適切で、必要な判断力は依然として残っており、手放したからといって低レベルのミスや事故が起きたわけではない。

これまでのすべての苦労が、今、手放すための資本を与えてくれた。

原点

最終的なソリューションはむしろとてもシンプルです:All in Cloudflare。R2 オブジェクトストレージ、D1 Edge データベース、KV をキャッシュに使用し、Worker が SSR を実行、すべてサーバーレスで、サーバーはありません。

Cloudflare Worker , workers.cloudflare.com, opens in new tab
これは、温かみのあるオレンジのグラデーション背景に微細なドットテクスチャが施されたマーケティングウェブサイトのヒーローセクションのスクリーンショットです。上部にナビゲーションバーがあり、Products、Solutions、Resources、Pricing のリンクと、右側に Login と Start building ボタンが配置されています。見出しは「インターネットの20%を支えることで得たすべての知見 — デフォルトであなたに」となり、続くサブテキストで会社は Cloudflare と示され、「コンピュート、AI 推論、ストレージを備えた AI Cloud」として、インフラを管理するのではなくアプリケーションを提供できることが説明されています。さらに、下部中央にもう一つの「Start building」呼びかけボタンが配置されています。

この答えは皮肉ですか? とても皮肉です。なぜなら、この「シンプル」な終点に到達する前に、一周回って遠回りをしたからです。かつて自前で構築しようと計画したので、サーバーの管理や Docker のいじり、コンテナの管理が必要になり、そこで管理パネルとして Canopy を、証明書管理のために Lazycert を、リバースプロキシとして Vane を、リソース監視のフックとして Twig を書きました。一揃いのプロジェクトは、結局ジャンクサーバーを世話するためだけのものでした。

ストレージも同様です。オブジェクトストレージが高いのが嫌で、自分のサーバーのハードディスクを使いたくなり、RFSというVFSを書きました。単一ファイルの原子的な重複排除と統合のためのもので、80〜90年代のレジストリ概念さえ復活させ、最終的にFUSEでマウントしました。その結果、あまり良くないホイールを作るのにさらに時間を費やし、サーバーは一年間ほぼ稼働せず、完全に赤字のビジネスになってしまいました。

Vercel , vercel.com, opens in new tab
黒い背景の Vercel マーケティングホームページのスクリーンショットで、上部ナビゲーションバーには「Products」「Resources」「Solutions」「Enterprise」「Pricing」と表示され、三角形の Vercel ロゴの横に「Ask AI」「Log In」「Sign Up」ボタンがあります。その下には大きな見出し「Build and deploy on the AI Cloud」があり、サブテキストとして「Vercel provides the developer tools and cloud infrastructure to build, scale, and secure a faster, more personalized web」が続き、ラベルが「Start Deploying」と「Get a Demo」の2つのボタンがあります。下半分は、光る多面体の三角プリズムがワイヤーフレームメッシュで描かれ、青・緑・オレンジ・赤の光がグリッド背景に放射し、Vercel ロゴのスタイライズされた 3D 再構築がヒーローアートとして使用されています。

結局、いろいろ回りくねって最終的に Serverless に戻ってきました。Vercel のコンセプトは良いですが、Next.js は好きではありません。さらに、Vercel の「魔法」が多すぎて、Edge で実行するために事前にコンパイルするミドルウェア設計は結局分断され、いくつかの CVE さえ発生しました。すべてをオリジンにまとめた方が良いでしょう。一方、Cloudflare Workers は非常に優れており、10 MB 未満の成果物を WASM にコンパイルして Edge 上で実際のビジネスロジックを実行できるという別の極端なアプローチを実現しています。これこそが私が望むものです。費用以外に欠点はほとんどありませんが、時間を節約すればそれはすなわちお金になるので、実質的な欠点とは言えません。

少ないほど多い

この言葉は何度も聞いたことがありますが、実際に意味を理解するのに二年かかりました。

エンジニアリングの本質は「Make it function, make it correct, then make it exceptional.」ということです。やっと正しい軌道に乗り、functional にしました。今のブログは質素ですか? 質素です。不完全ですか? 確かに不完全です。でも、何もないよりはマシです。もしリリースすらできずに「もしかしたら必要かもしれない」ものを作り続け、見えない完璧を追い求めていたら、最終的に何も提示できません。これは妥協ではなく、エンジニアリング上の取捨です。とにかく、私は納得しました。だから、もう細部にこだわらず、外に出ました。スマホのアルバムにはしばらくアウトドアの写真がなく、路肩をさっと撮ったら――ずいぶん長い間外出してませんでした。

屋外で撮影された写真で、通りや歩道に沿って植えられた小葉の低く密集した生垣を見下ろす構図です。左下から右上へ対角線状に走る花崗岩の縁石があり、左下隅には舗装された道路が見えます。生垣は暗い木質の枝に対して淡い緑の新芽が鮮やかに出ており、上端付近に樹幹の根元が見え、植木の向こう側にはマルチングされたか裸の茶色い土が広がっています。明るい直射日光が葉や縁石に鋭い影を落としており、撮影は正午前後であることがうかがえます。

振り返って、以前通った遠回りを後悔しますか?後悔しません。自分で試さなければ、一生理解できないこともあります。さらに、AI 時代において、昔私が歩んだ道をたどろうとしても、ほとんど機会がなくなっています。多くのワークフローがすでに変わってしまいました。また、このプロジェクトは Taki で、100% AI コーディングですが、長期的にメンテナンスできないというわけでもなく、人味がないというわけでもありません。実際、AI があるかないかは重要ではなく、むしろ私が好きなのはコードを書くことそのものではなく、何かを作り上げることです…