2024 年も残り僅かなので、今年やったことを思いつくままにまとめます。
去年の振り返りはこちら:https://hackmd.io/@anqou/HkJ4qgkda
#買ったもの:カフェばこ PRO
年始にカフェばこ PRO という全自動コーヒーメーカーを買いました。これは今年の個人的なベスト・バイで、これを買ったおかげで頻繁にレギュラーコーヒーを飲むようになりました。以前からコーヒー豆は買っていたのですが、手で豆を挽いて淹れるのがあまりにも面倒だったので、一ヶ月に一回くらいしかレギュラーコーヒーは飲んでいなかったところ、カフェばこ PRO だとボタンを押すだけでコーヒーが入るので、ほぼ毎日飲むようになりました。他の全自動コーヒーメーカーと違ってこの機種だと上のケースの部分にコーヒー豆をまとめて入れておけるので、それなりに量のある豆を買ってザーッと入れておくと、一ヶ月弱くらいは豆に触らなくてもコーヒーが飲めて便利です。
最近は主に Nelson Coffee Roaster で豆を買って淹れています。ここのお店は、店主の Mastodon アカウントが pawoo.net にあって以前から知っていたのですが、カフェばこ PRO を使い始めてから初めて豆を注文しました。豆を注文したタイミングで「豆を注文した」みたいなことを Mastodon に書いた結果無事身バレして、三上さんの缶バッジを同封してもらったりしました(なんで?)。
#やったこと:わくわく鮟鱇ランドを Kubernetes に移行
わくわく鮟鱇ランド(mstdn.anqou.net)を支えるインフラを Kubernetes に移設しました。もう少し具体的には、今わくわく鮟鱇ランドが動いているサーバは ConoHa に借りていて、その上に k3s で Kubernetes の環境を構築し、そこに Mastodon のコンテナイメージをデプロイして動かしています。
仕事で Kubernetes を使うようになって以来この計画はあったのですが、年始に思い立って本格的な作業を開始しました。まずローカル環境で Minikube を立てて最低限のセットアップ(Argo CD とか Grafana+VictoriaMetrics とか)を確立したあと、Contabo にサーバを借りて実際にデプロイするところから始めました。
Mastodon には一応公式の Helm Chart が用意されているのですが、使っている人をほとんど見かけたことがないのと、データベースのマイグレーションを毎アップデートごとに手で実行するのはあまりにも面倒だったので、オペレータを書いて自動化しました。一番最初は OCaml で書いて mahout という名前で公開しました。このことは記事にもしました。これは最近まで元気に稼働していたのですが、Kubenretes の API を叩くところから全てスクラッチで書いた都合で Kubernetes のバージョンアップに伴うメンテナンスがつらく、諦めて Go で書き直しました。こちらは magout という名前で公開しています。現在のわくわく鮟鱇ランドはこれで動いています。
最初のうちは mstdn.anqou.net ではなく nefmolojten.anqou.net という新しい Mastodon サーバを立て、これをステージング環境として実験をしていました。今年の 6 月頃に十分安定したように見えたので mstdn.anqou.net を移行しました。移行は (i) まず状態を持たない web, sidekiq, streaming などのプロセスを移行し、 (ii) 次に Elasticsearch や Redis のような、最悪データが吹き飛んでも再構成可能なものを移行し、(iii) 最後に PostgreSQL を移行する、という感じで段階的に行いました。
移行そのものは無事に終了して元気に動き始めたのですが、その後 Contabo の障害に二回見舞われて長時間サービスがストップしたのを機に ConoHa に移動しました。つい最近までは ConoHa(メイン)+ Contabo(サブ)+さくらの VPS(サブ)の三台構成でしたが、Contabo の契約期間が切れるのが近いので、いまは ConoHa のみで稼働しています。このように比較的柔軟にサーバの組み換えができるのは Kubenretes の良いところです。
ConoHa に載せ替えてからは割と安定して動作していると思うので、このまま安定稼働してほしいですね。まぁ ConoHa もサーバの値段が結構高いので、来年のどこかでもう一度別の場所に載せ替えないといけないかもしれませんが……。
#つくったもの:JITsonnet
Jsonnet インタプリタが遅いのでコンパイルして実行したら早いんじゃね!?ってなって今年の 4〜6 月くらいに作りました。名前は JIT ですが実態は AOT コンパイラです。 詳細は記事にしたのでそちらを読んでください。結局速くなるコードもあれば遅くなるコードもあるという感じで良し悪しでしたが、ちゃんと速くなるものは速くなったので個人的には満足しています。
ブログ記事に書かなかった裏話として、実はターゲット言語として、始めは OCaml を採用していました。これは OCaml 中で OCaml のコードを生成するのは PPX などがあるので容易にできるだろうと踏んでのことだったのですが、生成したコードをコンパイルすためには結局 OCaml コンパイラを外部プロセスとして立ち上げる必要があった上、最適化も効きづらくそれほど高速になりませんでした。結局外部プロセスでコンパイルするなら OCaml 以外の言語でもよいし、しかも Jsonnet はほとんど全ての式が純粋だということに気づいたので、ターゲット言語を Haskell に変更して書き直したところ最適化がうまく効き、高速化できてハッピーでした。
純粋にプログラミングをして作ったものという意味でいうと、結果的に今年一番大きかったのはこれかなという気がします。他にも色々作ったのですが、大体は個人的に必要になった細かいツールが多くて、あえてここで取り上げるほどのものでもありませんでした。去年は社会人一年目で、自由時間が爆増したことに歓喜して趣味プログラミングをしまくっていたのですが、今年は落ち着いてきた一年でした。わくわく鮟鱇ランドの移行とその後の安定化にリソースを持っていかれたという説もあります。
#始めたもの:NixOS
つい最近、しばらく使っていた Ubuntu をやめて NixOS を使い始めました。今のところ快適です。詳細は別の記事にまとめたので、そちらを読んでください。
#つくったもの:自作 PC
初めて自作 PC を組みました。前に使っていたマシンは 2019 年にサイコムで BTO したもので、特に不満はなかったのですが GPU が GTX 1660 Ti で若干非力だったのと、5 年経ったら買い替えたいと思っていたので買い替えました。もともとは以前と同様 BTO にしようと思っていたのですが、各種 BTO のサイトを見ているとやたらと値段が高く自作したほうが安く組めそうだったのと、以前から自作 PC に興味があったので、色々考えて自作で組みました。
自作 PC の知識がほぼ 0 だったので、知識をつけたりパーツの値段推移をみたりするのに合計で 2〜3 ヶ月くらいかけました。時間はかかりましたが、知らない発見があって結構楽しかったです。PC を組んだあとも YouTube やらブログやらで自作 PC の情報は追いかけ続けています。こういう情報を仕入れると購買欲が刺激されてしまい、必要もないのに PC パーツを買いたくなるのでお財布には優しくないっぽいです。あと人から自作 PC の話を振られると早口で無限に喋るオタクになるので気をつけます。
最終的に組んだ PC の構成は pcpartpicker.com に置いてあります。個人的には結構満足しています。でも円安は憎いです。
#続いているもの:!w会
2018 年頃から続けている!w会を今年もやりました。学生のところは同期で集まって LT 会をやる勉強会っぽい会でしたが、学生をやめてからは、わくわく鮟鱇ランドでしか普段接点の無い人々が年一でオフラインで会って LT をする会になっていて、ほぼオフ会です。結構楽しいので来年もできるといいなと思っています。年 1 回の開催は回数が少なすぎてどうしても参加できない人が生まれてしまうので、年 1.5 か 2 回くらいやるといいのかなと最近は画策していますが、予定は未定です。
#続いているもの:技術雑談会
去年の振り返りの「まとめ」に書いた同期との技術雑談会は今も続いています。去年は業務に関係ない話をたくさんしていたのですが、今年は Kubernetes 移行の話とかをしていたので結構業務に関係する話もしました。この会で話せるように趣味プログラミング頑張るかということで頑張っている面も少なからずあるので、この会が最近の生きがいだなぁという話をしていたら、いつのまにか会の通称が「anqou 生きがいの会」になっててウケました。
#まとめのまとめ
振り返ってみると今年も良い一年でした。来年も良い一年になるといいですね。ここまでのお相手は anqou でした。またね。