※個人の考えを整理するための独白スタイルの文章のため、常体(だ・である調/敬語混じり)で書かれている点をご了承ください。
1.
こんな状況になってしまったのは、正直YouTubeのせい度が大きい(?)。
遅まきながら個人開発者として何かやってみようと資料を探していると、とてつもない量の情報が溢れ出てくる。
問題は、情報の量は溢れているのに、実質的な質は散々な場合が多いということだ。
2.
ごく基本的な内容なら情報が多くても問題ないのだが、少し専門的だったり特殊な状況になると、「なんでこれが検索に引っかかって、自分は今Webでこれを見ているんだ?」と理解に苦しむほど全く無用な情報に遭遇したり、タイトルには欲しい情報が含まれているのに本文は単に文法を合わせただけの意味のない文字の羅列であるケースがかなりある。
これがYouTube動画だと、本当に腹が立つ。
3.
そんな中、たまに砂漠でオアシスに出会うように宝物のような情報をくれたのは、ほぼすべて開発者のブログ記事だった。
本当に嬉しかったし、ありがたかった。
そして、成人ADHDを疑うほどの私の集中力は、「あ、自分も開発者ブログを一つ立ち上げて誰かの役に立ち、コーヒー代くらい稼ぎたいな(?)」という決断を下すことになる。
4.
そうして既存のブログプラットフォームを再検討してみたが、どれも自分にとっては致命的な問題点が一つずつあった。
まず、デプロイや維持に費用が発生するものはすべて除外した。
まあコーヒー代くらい稼げれば嬉しいが、実際にそれが可能なレベルにするには本気で頑張らなければならないことを知っているし、自分は自分をよく知っている。
私はそんなに頑張れない。
だからこそ、最初から「設置・維持費用が絶対にかかってはならない」という結論を大前提として敷いた。
そこで最初に構想したのは、ProxmoxローカルサーバーにWordPressをインストールして使うことだった。
このように使うには最小限のセキュリティのためにL2スイッチとpfSenseのようなファイアウォール設置は必須だと考えた。
そうしてある程度構成を終えてからWordPressを改めて見直してみると、カスタムが難しすぎた。
これをカスタムするにはPHPを本格的に勉強しなければならないと判断した時点で、この方式は諦めることになった。
5.
そしてすぐに他の方法を探してみたが、結局どれも一つずつ引っかかった。
どんな方法であれ、導入すればそれについて新しく勉強しなければならないという点が非常に疲弊感として押し寄せてきた。
その疲弊感が「あ、もうシンプルに自分で作っちゃおう」という考えへと導いた。
6.
この時、すでに私はSvelteとSvelteKitで色々と遊び倒していたところだった。
ブログを作ること自体は非常に簡単な状況だった。
問題は、自分が作ったデザインを自分が信用できないということだった。
そこで、デザインを簡単に変更できる構造にしようとした結果、転がり転がってここまで来ることになった。
7.
実際にデザインエディタの高度化とデバッグに最も多くの時間を費やした。
最初に「シンプルなブログツール」を作ろうと決めて、一日でコードの90%ほどを完成させた。
そして実際にブログを作って運用してみた。
すると、「これも必要だな」「この機能も入れなきゃ」「これがあったら便利そう」「これはないとダメだろ」がほぼ無限に溢れ出てきた。
そうして昨年11月末に始まったプロジェクトらしきものが、今年3月に機能実装が一段落し、7月になってようやくGitHubオープンにこぎ着けた。
8.
気がつくと機能が増えすぎてコードも複雑になったため、途中でモジュール化やリファクタリングを行った。
システム自体を根底から覆すことも何度かあった。
最初は管理画面をProxmoxサーバーにインストールしてローカルからのみ接続可能にし、DBはSupabase、認証もSupabase Authを使っていた。
かなり深刻なコールドスタートと無料プランでは認証時にプロジェクト名が露出する状況を経験し、素直にCloudflareエコシステムを使うことにして、以前使ったことのあるBetter-authを搭載する計画へと変更した。
その後も内部的にロジックや構造を相当大きく変えることになった。
その上、Windows環境で作業を進めたせいで、何か一つ直すたびに実際のデプロイまで行わないと確認できず、本当に凄まじい遠回り(試行錯誤)をした。
9.
ほぼ終わりが見えてきた頃には、自分一人では到底修正もできないほどコードが肥大化していたため、自分でやった部分もあるが、大部分はGeminiにやらせて進めた。
さらにドキュメント化をしていなかったため、一つ一つ実際の機能と照らし合わせながらドキュメント化を進め、エラーを見つけては再び修正作業に入る…という状態だった。
このように3月から7月まで、ドキュメント化 ➔ エラー発見 ➔ 修正 の無限ループだった。
その間にも「これはないとダメだろ」と「この機能あったのにどこ行った?」が頻繁に飛び出して、本当に気が狂いそうだった。
10.
泣き面に蜂で、Geminiが本当に暴走する事態が非常に頻繁に発生した。
コード一行直せば済むものを関係のないモジュールをごっそり書き換えたりと、とにかくGeminiが暴れさえしなければ2ヶ月は早く終わっていただろうと確信している。
ともかくGitHubオープン直前まで極度のストレスに苛まれたが、最終的に「これはないと」という機能をすべて削ぎ落とし、できているものだけ整理して公開することに決めた。
それが v1.0.0.0 だった。
11.
その直後にすぐ v1.0.0.1 が出ることになる。
「できているもの」だけ整理して上げたはずだったのに、整理が不十分だった部分にすぐ気づいたのだ。
きっとこういう部分がまだあるだろうと確信していて非常に不安でもある。
公開した時点から直感していたので、あらかじめ v1.0.0.x のバージョンを切っておいたのかもしれない。
12.
…というわけで、こうしてSvelteKitブログエンジンが完成しました。
締めくくりが曖昧なので、PageSpeed Insightsのスコアでも載せて終わりにしたいと思います。
AdSenseは申請後審査待ちの状態ですが、すでにコードが挿入されており、CDNキャッシュも2分間隔に設定されているため、キャッシュがパージされて再生成される間にテストが行われるとパフォーマンスに影響を与えるのか、正確な理由は分かりませんが現在スコアの変動がかなり大きいです。
平均くらいが出た時のスコアですので、参考程度にご覧ください。
AdSenseが承認されたら、またPageSpeed Insightsのレポートを載せます。
それでは、良い一日を! :)


コメント 0件
コメントを投稿するにはログインが必要です。