HagaSpa Logs

近況報告

気づいたら 3 年も放置していた…

ここ数年で様々なブログサービスが出てきており、業務で書かないといけないことはそちらを利用していたので、このブログ自体の存在すら正直忘れていた

2023~2026 の間に起きたことは今までの人生を俯瞰で見ても、特殊な経験やイベントが多数起きた数年だった。 自身のパフォーマンスが上がらなかったことや、会社都合で退職勧奨をされるなど、あまり経験できないような貴重な経験を得られたと思う。 特に一番大きかった出来事は、生成AIの登場によってプログラマとしてのモチベーションを再認識できたこと。

ここ数年の業務では採用・技術広報、また技術選定や組織に対する意思決定など、純粋にコードと触れ合うだけの時間が少なくなっていた。 代わりにミーティングや、事業との連携に時間が取られるようになり、徐々にマネジメント方面への染み出しを期待されつつあった。 また一時期は採用・技術広報を担当した時間が多く、当時は業務のコードを見ても何が起きてるのか正確に理解することに困っていたように思える。

そんな中 Claude Code の登場により、コードを書くという行為が人間のものではなく、 AI が担当する世界になった。 元から業務でコーディングをする立場ではなくなっていた自分からすると、これは非常に面白く、ここ 1 年ほどはプライベートの時間のほとんどを費やして知的好奇心の赴くままに学習していた。 自分の理解が足りていない領域への学習が進んだことで、徐々に業務でも技術と向き合う時間を作ることができるようになっていった。例えば誰もやりたがらない、SQLのチューニングなど。

この辺りの取り組みについては、これから書いていく予定だが、忘れていたプログラマへの憧れを思い出すことができた。意義ある数年だった。

デスク上に置かれた Kinesis Advantage 360 Pro

念願の Kinesis Advantage 360 Pro が買えた。

数年前から自分は Kinesis Advantage 2 LF を使っており、もう Advantage 以外のキーボードでは満足できない体になってしまった。

そのため新しい Advantage が出たら買わない選択肢はなく、今後も新しい Advantage は全て購入すると思う。

感想としては正直 Kinesis Advantage 2 LF とそんなに変わらない。というよりもう Advantage 2 で完成されてる気がする。

明確なメリットとしては無線も有線も選べる点があるが、日本円で7万超えの価値があるか?と言われると難しいところではある。

あと今回は茶軸しか選べなかったのだが、思ったよリもうるさい。ピンク軸で売ってほしかった…

購入方法

エルゴノミクスショップ のホームページで購入した。

日本公式代理店というのもあるが、個人輸入せずに購入できるのはここしか知らない。

ただ定期的に再販をしてくれてるのだが、開始数分で売り切れになってしまい今まで購入できなかったため、今回は直前からホームページに張り付いて結果購入できた。

需要に供給が全く追いついてないので、受注生産とかできないのか?と少し思っている…

リマップ

Kinesis の Github から公式で ZMK ファームウェアをビルドできるリポジトリが公開されている。

これを fork して Github Actions を許可した後にGUIのサイト にアクセスすると、GUIでキーのリマップをして ZMK ファームウェアを出力できる。

出力したファームウェアを USB 経由で左右それぞれのキーボードにインストールすることで、ファームウェア経由でリマップすることができる。

自分は今までキーボードのファームウェア周りの知識がなかったので、Advantage 360 のユーザガイドで読んで初めて知った。

少なくとも直接 .keymap ファイルを実装するようは楽だし、その結果を Git 管理できるのは便利。

今のところ自分は以下のようにしている。

ZMK ファームウェアをブラウザでリマップする GUI

Advantage 2 では CapsLock があったところに Escape があるので、今回は単押しで Escape にして他のキーと同時押しで Ctrl にしている。

こんなこともできるとは知らなかったし、この辺りを最適化しようとすると沼だなと思った。

年も新しくなったこともあり、個人ブログを作ってみた。 せっかくなので、このブログを作るために利用した技術と理由を書いていく。

System Architecture

軽く調べたところ最近はJamStackというアーキテクチャにするのがトレンドらしい。

ビルド時にJavaScriptやAPIを用いてデータの取得を行い、そのデータを使って静的なhtmlを出力する。

htmlをCDNにデプロイしてCDNだけでコンテンツの配信をする形態のことだ。 サーバを用意しないためユーザからのアクセスは全てCDNに行く。よってキャッシュ戦略を考慮する必要はない。

しかしユーザ操作による動的な処理、例えば検索やECサイトの注文などはhtmlだけでは実現できない。

そこはWebブラウザが外部APIを叩いて処理を委譲する。 APIを作ってもいいが最近はサービスベンダが外部APIを提供している。これらを使って構成すればバックエンドやDBに対する面倒事1とはおさらばできる。 逆に言うと外部サービスの利用を増やせば増やすほど、外部サービスのメンテや障害でサービス停止を考慮する必要がある。

また似たような構成としてSPAがあるが、こちらは原則として空のbodyだけをWebブラウザへ渡して、コンテンツの描画はjsが頑張る。 そのため事前にコンテンツ含めたhtmlを渡すJamstackの方が、コンテンツの表示速度が速い。 またページのレンダリング時にコンテンツが存在するため、SEO対策としても有効である。

CMS

Jamstack構成でよく出てくるワードがCMSだ。Contents Management System.

Webサイトを作る上でコンテンツや画像などを管理できるシステムだ。 最近ではヘッドレスCMSといってCMSの機能をAPIで提供している。2

これらを上記のJamstack構成のビルド時に利用しようと言うわけだ。

個人的にはgithubでmdファイルを用いてコンテンツ管理をしたいので、今回は採用しなかった。

Web Framework

フレームワークとしてはAstroを採用することにした。 静的ファイルを出力をしてくれるのと、ファイルのパスルーティングなどもしてくれる軽量なフレームワーク。何よりチュートリアル が非常にわかりやすく、ある程度のblogはすぐに作れてしまう。 このブログもほとんどチュートリアル通りに作成したもの。

業務では基本的にNext.jsを使ってるが、個人的には薄くて軽量なフレームワークの方が好きだ。

Hosting Service

ホスティング環境はCloudflare Pages を採用した。

当初は業務でも使っていて、割と好みなVercelを採用しようと思っていた。 ただpricingや無料でも広告を載せることが可能と言ったこともあり、Cloudflare Pagesにした。

Githubへ連携すればPR毎にpreview環境を自動で作ってくれるため、手触りはVercelと遜色ない。

Domanin Name Registrar

これはどこでもよかったが、Cloudflare Pagesを使ったので同じくCloudflareに統一したというだけ。

特に良いも悪いもない。

まとめ

当たり前すぎてあれかもだが、ブログを作るだけならもうバックエンドは全く必要ないらしい。 自分は今までブログの開発はしたことがなく、もっぱらQiitaなどの既存サービスを使って書いていた。

そのためブログ開発に対する知見を得られたのはよかった。

Jamstackについては思想も含めてかなり好きだ。 何より静的ファイルだけを配信することで、ページの表示が爆速になるのが気持ちいい。

これがWebページではなく、ある程度リッチなWebサービスだとこうはいかない気もするが。。。

実装自体のカロリーは大分低いので、興味がある方は三連休とかでやってみてもらいたい。

このブログもドメイン取得を含めて大体2日くらいで完了している。


1. サービスのスケールアウトやdbインスタンスのスケールアップ。それに伴うダウンタイムの発生など。

2. microCMSとかContentfulとか