ravelll の日記

よしなに

リモート会議用のイヤホンを Aftershokz Aeropex に乗り換えた

フルリモートで仕事をするようになって1年と少し、日々のミーティングに使うイヤホンとして SONY の WF-1000XM3 を愛用してきた。

音楽を聴くにもそこそこ好みの音を鳴らしてくれるし概ね満足していたのだけど、数少ない不満点として時々 MacBook Pro との Bluetooth 接続が切れてしまうことがあった。接続が切れたあとは10〜20秒程度で自動的に再接続されるのだけど、議論の進行を妨げたり大事な議論を聞き逃してしまうことがあった。また困ったことに問題が起きる頻度が徐々に高まり、最近では1時間ミーティングをすれば1回は切れるような状況で、完全に参ってしまった。

といったことがあり、Twitter で何度も見かけていた Aftershokz Aeropex を2週間ほど前から使い始めた。

問題の原因を特定せずエイッと乗り換えてしまったのでやや不安だったのだけど、15時間ほど使ってみた限りでは幸い接続は安定している。
数時間つけっぱなしでいるとモノを載せている耳介の付け根あたりが痛くなるが、日に日に痛みは小さくなっている気がする。音は音楽を楽しむには厳しいがミーティングをするには十分といった感じ。

接続に関して何が変わったのか気になり先程新旧それぞれの機器の Bluetooth の仕様を見比べて見たところ違いはほとんどなさそうで、問題解消の要因は未だ分からず。

もしまた同じような問題が起きることがあったら、またその時 Twitter で話題の何かを買おうと思う。

タブを uniq する Google Chrome extension を作った

ブラウザのタブを開きまくっていると同じページを複数タブで開いてたみたいなことが容易に起きる。開いているタブ群から特定のタブを探すときに同じページが無駄に複数のタブで開かれているとその分見つけづらくなるし少しだけイラッとする。タブを uniq したくなる。

という背景があり、それを実現する Google Chrome extension を作った。というか、何年も前に作ろうとして放置していたのをふと思い立ち動くようにして Chrome Web Store に公開した。

chrome.google.com

やっていることはただ開いている全タブの URL を取得して各 URL について重複して開いているタブを閉じているだけ。最低限動くようにだけしたという感じで、例えばパラメータやフラグメントについて何も考慮していなかったり、Manifest のバージョンが V2 だったり、Chrome Web Store の説明画像が雑だったりする。気が向いた時にちょいちょい手を入れていこうと思う。

Prisma Migrate の default(uuid()) attribute は DB のテーブル定義に影響を与えない

下記のようなデフォルト値の記述が無い id field を含む User model があるとする。

model User {
  id    String  @id
}

この id field に @default(uuid()) attribute を付けて prisma migrate dev --preview-feature を実行すると、DEFAULT gen_random_uuid() のような設定が id カラムに付与される ALTER TABLE が書かれた migration ファイルが作成されるかと思いきやそんなことはなく、何も起こらない。
なぜだろうと思っていたら、ちゃんとドキュメントに理由が書かれていた。

https://www.prisma.io/docs/reference/api-reference/prisma-schema-reference#uuid

Implemented by Prisma and therefore not "visible" in the underlying database schema. You can still use uuid() when using introspection by manually changing your Prisma schema and generating Prisma Client, in that case the values will be generated by Prisma's query engine.

Prisma Client に実装された generator が UUID を生成するので DB scheama には生成のための設定は付与しないということだった。cuid の場合も同様のようだ。