## 今年かっつ関連で作ったもの
これは [アドかっつ! Advent Calendar 2024 9日目](https://adventar.org/calendars/10130) の記事です。
ネタ切れで書くことがなさすぎる!助けて!
### 14 Minesweeper Variants の solver
中本會経由でかっつ鯖で一時14 Minesweeper Variantsが流行っていて、~~みんなまじめにやっている中~~ solver を作って遊んでいた。
#### 使用技術(?)
##### solver 本体
CP-SAT ソルバーを使いたかったので、 rye + python + or_tools (+ API 作成用途で FastAPI) を用いてる。
細かい解法とかはこれ。https://jupiro.hatenablog.com/entry/2024/09/05/025857
CP-SAT ソルバー自体あんまり経験なかったが、いろいろ解法を学べて面白かった。
##### 画面
せっかくなので、フロント練習がてらに画面作るかーと思って一応作った。
Vite + React ぐらいでフロント初心者って感じの画面だが、一応できた。もう少しいろいろ改善したいな~という気持ちありつつも、モチベが消失。
こんな感じで一応 `#+` のようにマスごとと全体のルールも個別に設定できるようにしている。緑が安全と確定しているマスで、フラグが地雷の位置を示している。

### かっつのブルスカ監視ツール
かっつのブルスカはよくツイートが消えるので、監視ツールを作った。
#### 使用技術(?)
uv + python + atprotcol で定期的にかっつの post を取るようにした。
uv は名前だけ知っていて使ったことなかったので一度使ってみたかった。rye との差別ポイントは正直よくわからないが、`uv run main.py` みたいな感じで実行できるのはちょっと体験がいいね。
atprotocol とも別にブルスカは API が提供されているぽいが、少なくとも今回の範囲では必要なかった
こんな感じで取っていて、画像は url で送られてくるので、 fetch してローカルに落として別で管理している

##### ブルスカの微妙にややこしい用語(?)
- DID: ブルスカは handle が自由に変更できるので、これとは別に内部に DID と呼ばれる ID を持っている。基本的になにかしらの情報をとるときはこの DID を使ってとる。 DID は atprotocol なら `client.get_profile(handle).did` で取得できる。
- feed: ツイート一覧みたいなのの総称。タイムラインであったり、リストであったり、ユーザごとのツイートだったりである。あるユーザの feed の一覧は、`client.get_author_feed(<did>)` で取得できる。
- URI: URI 自体は一般的な用語というのをさておき、ブルスカ(というか atprotocol では)、`at://did:plc:vlw3u7noimetvbp4meo54qtb/app.bsky.feed.post/3kxgrdunulv2d` のような感じで`at://<DID>/<COLLECTION>/<RKEY>` のフォーマットで指定される。基本的に API なりで何かを返したり取得するときはこの形式の URI になる。ブルスカの場合は URL の `https://bsky.app/profile/<DID>/post/<RKEY>` と対応している
### (作成中)原神聖遺物最適化ツール
原神の聖遺物は聖遺物スコアと呼ばれるもので比較されていることが多い。この指標は誰でも簡単に計算できる一方で、同一すべきかどうか怪しいパターンも多い。配分されるスコアでどう振られるのかが最適なのかを示すツール(予定)