oinume journal

Scratchpad of what I learned

PostgreSQL + HasuraでUUID v7を生成できるようにする

2024年にRFC 9562としてUUID v7が標準化された。今までは主キーにUUID v4を使っていたけど、時間軸でソートできるUUID v7を使いたいと思ったのでメモ。

簡単に書くとPostgreSQLでUUID v7形式のUUIDを生成するには以下を行えば実現できる。

  • PostgreSQLにはUUID型が標準装備されているのでこれを使用する
  • postgres-uuid-generate-v7にあるUUID v7を生成するFUNCTIONを定義する
  • カラムを "id" uuid NOT NULL DEFAULT uuid_generate_v7() のように定義する

上記を踏まえてHasura consoleでUUID v7のFUNCTIONを定義して使えるようにするには、

  1. consoleからであればDATAタブのSQLを選択
  2. エディター部分にpostgres-uuid-generate-v7リポジトリのuuid_generate_v7.sqlの中身をそのままコピペ
  3. This is a migration にチェックを入れてMigration nameに適当な名前をつける

をやれば良い(以下スクショ参照)

IntelliJ IDEAでよく使うショートカットキーをVSCodeでも使えるようにする

コードを書くためのエディタとして、IntelliJ IDEAとVSCode(Cursor)を併用して使っている。そのため、この2つのエディタのショートカットキーを同じように設定したい。IntelliJ IDEA Keybindingsを過去に使ったのだが、自分が想定してないキーも変更されてしまって使いづらいと感じたので、自分でキーバインドをカスタマイズすることにした。

ちなみにここで紹介する技はもちろんIntelliJ IDEAのみではなく、GoLand, PHPStorm, PyCharm, WebStormなどでもできる。

1. IntelliJ IDEAでよく使っている機能とショートカットキーを調べる

まず、IntelliJで自分がよく使っているキーを把握するために、Help -> My ProductivityでProductivity Guideを開く。そうすると以下のような画面が出るので、Usedの列でソートして使用頻度の高い機能名とショートカットキーを調べておく。

2. VSCode側の機能名を調べる

次に、1.で調べた機能名に対するVSCodeの機能名をChatGPTなどの生成AIを使って調べる。プロンプトは以下のような感じ。

以下のIntelliJ IDEAの機能名に対するVSCodeの機能名(英語)を教えてください。
* Search Everywhere
* Go to declaration
* Go to Implementation(s)
(以下略)

www.perplexity.ai

3. VSCodeのKeybindingを変更する

コマンドパレットからOpen Keyboard Shortcutsを開き、2.で調べた機能名に合致するCommandを調べて、IntelliJ IDEAと同じショートカットキーを登録する。生成されるkeybindings.jsonはこんな感じ。このファイルはmacOSだと ~/Library/Application Support/Code/User/keybindings.jsonに保存されているので、このファイルをGitHubなどでバージョン管理しておくと良い。

// Place your key bindings in this file to override the defaults
[
    {
        "key": "ctrl+d",
        "command": "-workbench.action.debug.run",
        "when": "debuggersAvailable && !inDebugMode && !terminalFocus"
    },
    {
        "key": "cmd+b",
        "command": "editor.action.revealDefinition",
        "when": "editorHasDefinitionProvider && editorTextFocus"
    },
    {
        "key": "f12",
        "command": "-editor.action.revealDefinition",
        "when": "editorHasDefinitionProvider && editorTextFocus"
    },
    {
        "key": "alt+cmd+b",
        "command": "editor.action.goToImplementation",
        "when": "editorHasImplementationProvider && editorTextFocus"
    },
    {
        "key": "cmd+f12",
        "command": "-editor.action.goToImplementation",
        "when": "editorHasImplementationProvider && editorTextFocus"
    },
    {
        "key": "cmd+r",
        "command": "editor.action.startFindReplaceAction",
        "when": "editorFocus || editorIsOpen"
    },
    {
        "key": "alt+cmd+f",
        "command": "-editor.action.startFindReplaceAction",
        "when": "editorFocus || editorIsOpen"
    },
    {
        "key": "shift+f6",
        "command": "editor.action.rename",
        "when": "editorHasRenameProvider && editorTextFocus && !editorReadonly"
    },
    {
        "key": "f2",
        "command": "-editor.action.rename",
        "when": "editorHasRenameProvider && editorTextFocus && !editorReadonly"
    },
    {
        "key": "f1",
        "command": "editor.action.showDefinitionPreviewHover"
    },
    {
        "key": "ctrl+alt+h",
        "command": "references-view.showCallHierarchy",
        "when": "editorHasCallHierarchyProvider"
    },
    {
        "key": "shift+alt+h",
        "command": "-references-view.showCallHierarchy",
        "when": "editorHasCallHierarchyProvider"
    },
    {
        "key": "alt+f7",
        "command": "references-view.findReferences",
        "when": "editorHasReferenceProvider"
    },
    {
        "key": "shift+alt+f12",
        "command": "-references-view.findReferences",
        "when": "editorHasReferenceProvider"
    },
    {
        "key": "f2",
        "command": "editor.action.marker.next",
        "when": "editorFocus"
    },
    {
        "key": "alt+f8",
        "command": "-editor.action.marker.next",
        "when": "editorFocus"
    }
]

ここまで書いて、こんな回りくどいことをしなくとも、1.で調べた機能名とショートカットキーからVSCodeのkeybindings.json(キーバインドの設定ファイル)を生成AIに生成してもらえばいいことに気づいたw

Cursorで開いているファイルをIntelliJ IDEAで開く

最近Cursorを使い始めているのだけど、ガッツリコードを書きたい時はIntelliJに頼ることもまだ多い。なので、Cursorでユーザータスクを定義して、Cmd + Shift + p でコマンドパレットを開いて Tasks: Runt Task でIntelliJでそのファイルを開けるようにした。

Tasks: Open User Tasks で以下のタスクの定義を記述する。(macOSの場合、このファイルは ~/Library/Application Support/Cursor/User/tasks.json に保存される)

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Open Current File with IntelliJ IDEA",
            "type": "shell",
            "command": "idea",
            "args": [
                "${file}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
             "problemMatcher": []
        }
    ]
}

参考: https://code.visualstudio.com/docs/editor/tasks


ここからアフィリエイト広告

2024年の振り返りと2025年

年末年始はハワイに行っていたので全く正月感がない感じで過ごしてしまった。1年の振り返りをしたり新年の抱負を書いたりしてもどうせ達成できないし、徒然なるままに生きたい人間なのだけれども、暇なので雑に振り返りと今年への意気込みをアウトプットしておく。

ライブ

2024年は合計9本のライブに行った。ハイライトは5年ぶりにサマソニに行ってManeskinが好きになったこと。あとはThe Bonez x Dragon AshのStraigh Upが、久しぶりにライブで酸欠になるぐらい激しくて久しぶりにライブで死を感じた。ずっとミクスチャーをやっている2つのバンドが対バンするとこんなにエネルギーが湧き出てくるのかというぐらいの熱気だった。12/30の追加公演ではPABLOも参戦してPTPの曲もやったようで本当に本当に行きたかった...!

あと12月にKORNのライブがオーストラリアであって行こうかどうかとても悩んだけど金銭的な理由で断念した。来年こそは日本に来てくれないかなと祈っている。

(以下は今年に参戦したライブとフェスの一覧)

  • 1/21: マサラーフェース2024
  • 3/17: PUNK SPRING 2024
  • 3/31: Dragon Ash x SHANK
  • 4/6: The Ravens
  • 7/18: TMC at CLUB CITTA
  • 8/7: SUMMER SONIC
  • 11/10: The BONEZ x Dragon Ash Straight Up Tour
  • 11/30: ビクターロック祭り2024
  • 12/8: REDLINE ALL THE FINAL

仕事

特筆することはないけど、生成AIのおかげでコードを書くモチベーションが激減したので、自分で手を動かすような機会が減った。つまりMTGと目の前の課題をひたすらやっつけることをしている。「BackendなんてHasura使えばいいんでないの?」と思っている人間なので、Backendの開発に楽しみが見い出せなくなっている。

事業ドメイン的には楽しい領域なので、ビジネス的に成長していればそれでよし。

その他

  • 今年からAudible始めたので読書が捗った
  • Audibleと併せてウォーキングを始めたので体重が2.5kg減った

2025年に向けて

今年は趣味プロダクトで作りたいアプリがあるので、なんとしても今年中に完成してリリースしたい。ライブは10回は行きたいけど行けるかなぁ。2024年は勉強会にほとんど参加せず技術的なことに興味を失いつつあるので、今年はもう少し参加したい。サマソニは観たいバンドがなくても行くべきだと昨年痛感したので、今年も行きたい。

そんな感じで今年もゆるふわに生きます。

2024年に買ってよかったもの

あまりものを買わない主義なのだけど、ささやかながら買ってよかったものを。(Amazonのリンクはアフィリエイトが入ってる)

[ニューバランス] インソール サポーティブリバウンドインソール

1年以上履いていたニューバランスのスニーカーのインソールがボロボロになったのでこれに入れ替えてみた。そしたらなんとびっくり、クッション効果が凄くて歩くのが大変快適になりQoLが爆上がりした。2000円弱の投資でここまで快適になるのならとてもコスパ良いと思う。なんだかんだでスニーカーは毎日履くものだし。とにかく快適すぎるので他のニューバランスのスニーカーも全部このインソールに替えた。デフォルトでこれを搭載してほしい

Anker 511 Charger (Nano 3, 30W) (充電器 USB-C)

常にPCを持ち歩いているため充電器も持ち運ぶ必要があり購入。元々は65Wのもの(150g)を持ち歩いていたのだけど、こっちは40gと超軽量なので買い換えた。100g減るだけでも持ち運び時の腰への負担が減るのでQoLが上がった。

タニタ 体重計 体組成計 スマホ連動 50g単位 バックライト BC-332L WH ホワイト

元々はAnkerの体重計を使っていたのだけど、たまに1kg単位でズレることがあり信憑性に疑問を持ったので安心安定のタニタのものを購入。スマホと連動する機能はAnkerの方が便利だったけどまぁよし。

[ヘリーハンセン] スカンザライトジャケット SCANDZA LIGHT JKT ユニセックス

風を通さないので、中にフリースを着れば東京の冬はこのアウターで乗り切れる。あまりにも気に入ったので同じものをもう一つ購入した。

Logicool Signature M750LGR ワイヤレスマウス

クロールがなめらかでホイール音も静か。2台のPCにBluetooth接続できるのが便利