2025 年のキーボード振り返り
カスタムキーボード歴 2 年目になりました。今年も振り返ってみます。
昨年の振り返りは
置き場所にも困るためさすがにペースは落ちると思いますが、来年も新しいキーボードを組んだ際は KEEB_PD に参加させて頂こうと思います
と締めていましたが、今年はさらに深くこの趣味に没頭することとなりました。年初からキーボード関連の情報を Notion でまとめるようになったので、集計した数字を列挙してみます。
買ったもの
- キーボード: 11 台
- スイッチ: 124 種類 (内 70 個以上は 11 種類)
- キーキャップ: 44 種類 (内ベースキット 16 種類)
- アクセサリー: 48 種類
昨年と比べてかなり多いです。スイッチとキーキャップが特に多く見えますが、スイッチはお試しで 10 個だけ購入することが多く、キーキャップは Novelty や Artisan を含んでいるためです。スイッチは 70 個以上購入したものは 11 種類で、キーキャップはベースキットに限ると 16 種類でした。
この中で、特に買ってよかったと感じたものをいくつかピックアップします。
Akko Mirror Switch
Akko が出しているリニアスイッチです。製造は HMX なので、同社のスイッチを想像してもらえばその品質が伝わると思います。
The purpose of designing those switches is to reflect (mirror) the authentic sound of any keyboard as much as possible.
という商品説明に偽りはなく、かなり鋭い音が出るスイッチです。 PBT のキーキャップでも籠った音にならないため重宝しています。
PBTfans Dyesub Keycaps
PBTfans Doppelganger US-Intlkbdfans.com
PBTfans の昇華印刷キーキャップです。私は GMK に代表される ABS キーキャップも好きですが、個人的にキートップのテカりが苦手なため、デイリーユースでは PBT を使うことが多いです。 PBTfans のキーキャップは Doubleshot も好きですが、Dyesub は特に PBT 製としては薄肉で、明るめの音が気に入っています。
The raw material for PBTfans thermal sublimation is a separate mold, not a shared mold.
The side thickness of PBTfans thermal sublimation keycap is about 1.3-1.4, and the top thickness is about 1.7mm. It belongs to the thinner keycap in the thermal sublimation field. Because it needs to go through high temperature, the thinner the material, the more difficult it is to make. The keycap thickness has been controlled to the extreme, which poses a great challenge to our production.
Thin keycaps have many advantages, such as the sound will be crisper than thick raw materials, and the touch will not be so heavy. But the disadvantages are also obvious, the processing and manufacturing difficulty is higher, and the manufacturing cost is higher!
PBTfansの熱昇華キーキャップは、共通の金型ではなく、専用の金型で製造されています。
PBTfansの熱昇華キーキャップの側面の厚さは約1.3~1.4mm、上面の厚さは約1.7mmです。熱昇華キーキャップの中でも薄型部類に入ります。高温処理が必要なため、材料が薄いほど製造が難しくなります。キーキャップの厚さは極限まで制御されており、これは当社の製造にとって大きな課題となっています。
薄型キーキャップには、厚い素材よりも打音が鮮明で、キータッチもそれほど重くないなど、多くの利点があります。しかし、加工・製造の難易度が高く、製造コストが高くなるという欠点も明らかです。
この商品説明からもわかるように、 PBTfans は明確な意図を持って薄いキーキャップの製造を行っているようです。私はこの理念が好きなので、今後も PBTfans を購入して応援していきたいと考えています。
Geon 19mm Single-Stage Pingless Springs
Geon Springs 19mm Single-Stage Pingless MX springsgeon.works
GEONWORKS のスプリングです。 ルブなしで使用していますが、 Pingless の名の通りノイズを感じません。 Bottom-out force は 42.5g ですが、押し始めがかなり軽く、 14mm なのではないかと感じます。個人的に軽いスプリングは好きなので、この点はマイナスに感じませんでした。
カスタマイズ回数
- 216 回 (148 日)
キーボードのビルドやカスタマイズの回数です。初期ビルドも含め、キーボードをいじる際はすべて履歴を残すようにしています。フォームを 1 枚足すだけでも 1 つの履歴としており、少し過剰だとも思いますが、履歴ごとに所感をコメントしておくことで、以前行ったカスタマイズを振り返ることができるので便利です。
総括
今年はカスタムキーボードを自分の趣味として自認する一年だったと思います。年初に考えていた予算からは大きく超過することになりましたが、それに見合った満足感が得られました。もはや来年はどのようなペースになるのか想像もできませんが、まだ気になっているプロダクトもあるので、マイペースに続けていければと思います。
最後に、今年の KEEB_PD に参加した写真を並べて終わりにしたいと思います。
Keyboard: Neo65 Cu
— ʞssɥɔʇ (@tchssk) 2025年4月6日
Switch: HMX Cloud Linear Switch
Keycap: SW Foundation Cherry Profile Double-shot PBT#KEEB_PD #KEEB_PD_R244 pic.twitter.com/n6J6IVErJz
Keyboard: SW Eave65
— ʞssɥɔʇ (@tchssk) 2025年5月4日
Switch: Gateron Milky Yellow Pro Linear
Keycap: Womier WoB Cherry Profile Double-shot PBT#KEEB_PD #KEEB_PD_R248 pic.twitter.com/0loErtG4Wj
Birthday present for myself
— ʞssɥɔʇ (@tchssk) 2025年6月29日
Keyboard: Keycult No.1/65 - Extended 2048
Switch: Akko Mirror Linear
Keycap: PBTfans Pastel gray Cherry Profile Double-shot PBT#KEEB_PD #KEEB_PD_R256 pic.twitter.com/E7cZGalAfu
EVA-02 Lift Off
— ʞssɥɔʇ (@tchssk) 2025年7月20日
Keyboard: QK Alice Duo
Switch: WS Red Arowana Linear
Keycap: MW Asuka R2 Cherry Profile Double-shot PBT#KEEB_PD #KEEB_PD_R259 pic.twitter.com/lc9KZ3MS1k
Keyboard: F1-8X V2 Classic
— ʞssɥɔʇ (@tchssk) 2025年9月28日
Switch: Cherry MX2A Black Linear
Keycap: PBTfans Doppelganger Cherry Profile Dye-sub PBT + Alpha Keycaps Hawk Tuah Devoura#KEEB_PD #KEEB_PD_R269 pic.twitter.com/exJ6MJfdYA
Keyboard: Machina Orbit 2
— ʞssɥɔʇ (@tchssk) 2025年10月12日
Switch: HMX Lunar Stone Linear
Keycap: MW Alhambra R2 Cherry Profile Double-shot PBT#KEEB_PD #KEEB_PD_R271 pic.twitter.com/c5N55Z1zQu
Keyboard: TGR Mia
— ʞssɥɔʇ (@tchssk) 2025年12月7日
Switch: None
Keycap: None#KEEB_PD #KEEB_PD_R279 pic.twitter.com/OkUgkMqzq4
Keyboard: TGR Mia
— ʞssɥɔʇ (@tchssk) 2025年12月14日
Switch: HMX Tequila
Keycap: SW Beige + Gothcaps Sunken Furball Sad Girl#KEEB_PD #KEEB_PD_R280 pic.twitter.com/wZ5JlBi0eB
🎄Holiday vibes🎄
— ʞssɥɔʇ (@tchssk) 2025年12月21日
Keyboard: Neo70
Switch: Keygeek Briny
Keycap: Nuphy Meow Xmas#KEEB_PD #KEEB_PD_R281 pic.twitter.com/MIkgKm2XQz
この記事は F1-8X V2 Classic で書きました。
2024 年振り返り
仕事
昨年の振り返りで考えていた通り、今年は機能要件に多く関わる一年となりました。来年はリファクタリングをテーマに据えて取り組んでいきたいと思います。
OSS
今年は GitHub Sponsors を始めました。
ありがたいことに、Goa の作者である Raphael さんがスポンサーになってくれました。活動内容は特に変わりませんが、外部からの支援によってモチベーションを保ちやすくなり、とても感謝しています。
ゲーム
Slither Loop
セールで購入しました。スリザーリンクという種類のパズルで、なかなか癖になる面白さがあります。難易度の高い問題が多く、まだカンストしていません。
SUDOKU UNIVERSE
Slither Loop と同じメーカーの作品です。こちらも骨のある問題が多く、やりごたえがあります。
8番出口
今年話題になったゲームです。ゲーム実況を見て予備知識を得た状態でプレイしましたが、それでも楽しむことができました。
8番のりば
8番出口の続編です。前作に引き続き、完成度の高い作品でした。
CARRION
怪物を操作して人間を襲う逆ホラーアクションゲームです。斬新なコンセプトと滑らかに動くドット絵風のグラフィックが非常に魅力的でした。
買い物
今年はデスク環境リフレッシュの機運が高まっていたのでその関係のアイテムが多めでした。
サンワサプライ フェルトデスクマット
デスク環境リフレッシュの第一弾。小さなタグがついているだけのシンプルな作りが魅力です。国内メーカー品という安心感もあります。
final E500
ゲーム用に使用していた古い EarPods が断線したため代替品として購入しました。クセのない音質で、価格も手頃なため満足しています。
Quntis HY210
デスク環境リフレッシュの第二弾。劇的な変化は感じませんが、常時点けて活用しています。
Anker Solix C1000 Portable Power Station
地震などの停電対策として購入しました。普段はデスクの電源に接続し、満充電を維持するようにしています。
エレコム Apple Watch用 ミラネーゼ マグネットバンド
手頃な価格ながら、安っぽさがなく気に入っています。
Aulumu A15
iPhone の買い替えを見送ったので代わりにケースを交換しました。さらさらとした手触りとスタイリッシュなデザインが魅力です。
Anker MagGo Wireless Charging Station (3-in-1 Pad)
デスク環境リフレッシュの第三弾。AirPods は使っていないため 2-in-1 で十分ですが、なかなか良いものがないので 3-in-1 にしました。 Qi2 で充電速度が速く便利です。
キーボード
たくさん購入したので、個別記事にまとめました。
総括
今年はキーボード漬けの一年でした。最初はホットスワップ PCB にキースイッチを挿すのもおっかなびっくりでしたが、ベアボーンキットの組み上げくらいはスムーズにできるようになりました。来年もこの熱は続きそうですが、買い過ぎないように本当に気をつけなければ...
2024 年のキーボード振り返り
これは KEEB_PD Advent Calendar 2024 の 13 日目の記事です。
昨日はぎーくらびっとさんの 2024年のKEEB_PD振り返り でした。
2023 年末、気まぐれで Keychron を購入したのをきっかけに、キーボードにハマってしまいました。
足を踏み外すと恐ろしいキーボード沼が広がっているので気をつけないといけません
などと書いていたものの、今年は結局 4 台増えてしまいました。 KEEB_PD に参加した写真とともに振り返ってみます。
Yunzii AL66
最初に買ったロープロファイルのキーボードを使っているうちに、ノーマルプロファイルにも興味が湧き購入しました。
安価ながらガスケットマウントで程よい打ち心地です。最初から付いている Yunzii Milk Linear Switch はキーを離したときの天付き音がカチャカチャして気になったので Gateron Milky Yellow Pro に交換しました。高音域が減っていわゆるコトコト系の音になりました。キーキャップは PBT を謳っていてサラサラした手触りですが、半年ほどでキートップに薄っすらとテカリが出てきたため、PBT 含有率は低いのかもしれません。
現在の構成
- Switch: Gateron Milky Yellow Pro Linear Switch
- Keycap: Yunzii AL66 Cherry Profile Double-shot PBT (Stock)
Weikav Record Alice
Keyboard: Weikav Record Alice
— ʞssɥɔʇ (@tchssk) 2024年12月8日
Switch: HMX EVA Linear Switch
Keycap: Nuphy Meow Xmas KDA Profile Dye-sub PBT#KEEB_PD #KEEB_PD_R227 pic.twitter.com/Z5nMPcInky
アリス配列の存在を知り、疲労軽減を名目に購入しました。
リーフスプリングマウントで柔らかい打ち心地です。当初は Jwick Vertex V1 Linear Switch と XVX Profile BoW PBT を付けていたのですが、ケースとの相性か音がモッサリしていたので HMX EVA に変更しました。芯が締まったコツコツした音になりました。短めのキーはそれで満足しているのですが、スタビライザーのある長めのキーがポコポコした音なので、何か対策できないかと思っています。クリスマスシーズン用にキーキャップを Nuphy に交換していますが、 KDA と XVX はほとんど同じ形状で音も似ています。
現在の構成
- Switch: HMX EVA Linear Switch
- Keycap: Nuphy Meow Xmas KDA Profile Dye-sub PBT
Neo Ergo
Keyboard: Neo Ergo
— ʞssɥɔʇ (@tchssk) 2024年7月21日
Switch: HMX EVA Linear Switch
Keycap: XVX Profile Double-shot PBT#KEEB_PD #KEEB_PD_R207 pic.twitter.com/jq1Dj9kcbb
Record Alice でアリス配列が気に入ったタイミングで話題になっていたため購入しました。
中央が盛り上がったテンティングアリスは非常に打ちやすいです。見た目が好み、ボールキャッチ構造と磁気コネクターで組み立て分解が容易、ガスケットマウントの優れた打ち心地、と文句の付けどころがありません。当初は HMX EVA と XVX Profile WoB PBT で組みましたが、いくつかのスイッチとキーキャップを経て現在は Keygeek と KeyKobo の組み合わせに落ち着きました。コロコロしたクリーミーな音色です。個々人にとって最高のキーボードをエンドゲームと呼ぶそうですが、今のところこれが私のエンドゲームになりそうです。
現在の構成
- Switch: Keygeek Briny Linear Switch
- Keycap: KeyKobo Vibrato Cherry Profile Double-shot ABS
Cornelius Low-profile
Keyboard: Cornelius Low-profile
— ʞssɥɔʇ (@tchssk) 2024年10月13日
Switch: Lofree Ghost Low-profile Switch
Keycap: XVX Low Profile Double-shot PBT#KEEB_PD #KEEB_PD_R219 pic.twitter.com/vEnQLpmedW
以前から分割キーボードにも興味があったのですが、その前にカラムスタッガードを経験するため購入しました。
最初は普段の 3 割くらいのタイピング速度でしたが、アルファベットキーに関しては数日で慣れました。記号系はまだ打ち間違えることが多いのでキーマップと共に調整する必要がありそうです。
ロープロファイルのペタペタとした独特の音と感覚が癖になる心地良さです。所有している Keychron K3 Pro のカチャカチャした打鍵音と比べると高級感が感じられます。スイッチプレートは最初に FR4 で組んだままなのでいずれ PC への変更を試してみたいところです。あと気になるのは、ガスケットマウントながらほとんど沈み込みがない点です。付属のケースフォームが分厚くケース内部に潰されて収まっている為ですが、フォームなしだと打鍵音が悪化してしまったので、薄いフォームを調達できないかと思っています。
現在の構成
- Switch: Lofree Ghost Low-profile Switch
- Keycap: beekeeb SMOLO (smooth and low profile) PBT
カラムスタッガードについて
カラムスタッガードは各指に対応するキーが縦に並んでいて打ち易いという意見を見かけますが、私にはあまり合いませんでした。自分でも気づいていませんでしたが、 C キーを左手人差し指で打つ癖があり、カラムスタッガードでは打ちづらいのです。 C → E を人差し指→中指の運指とするため無意識にそうなっていたようです。カラムスタッガード派の方はその辺をどのような運指としているのか気になっています。
総括
ここまでハマった趣味は久しぶりで結構使ってしまいましたが、気分でローテーションして使えるので QoL が上がって良かったです。エンドゲームと書きましたが、それぞれ打ち心地や音が違うので甲乙つけがたく、手に入れたものは処分しづらいのが悩ましいです。置き場所にも困るためさすがにペースは落ちると思いますが、来年も新しいキーボードを組んだ際は KEEB_PD に参加させて頂こうと思います。とりあえず既に注文済みの 1 台が届くのを待っていますが、 In-Stock のはずなのに一ヶ月ほど音沙汰がありません🤔
この記事は Neo Ergo で書きました。
明日は mass さんの記事です。
GitHub Sponsors を始めた & Goa のリポジトリーに追加された
GitHub Sponsors を始めた
始めてみました。
特に明確な理由があって始めたわけではないのですが、支援してくれる人が現れることで自分の活動が認められたら嬉しいなと思っています。
お金のために OSS やってるわけじゃないけど、少なからず時間を使っていて、それが人の役に立っているのなら、少し対価を求めてもいいのかもしれないと最近考えている
— ʞssɥɔʇ (@tchssk) 2024年5月19日
Goa のリポジトリーに追加された
GitHub のリポジトリーには、資金提供のオプションについての認知度を高めるためのスポンサーボタンというものが追加できるようになっています。 Goa のリポジトリーにも作者の Raphael さんと Patreon のボタンが以前から表示されていますが、嬉しいことに今回私のボタンを追加してもらえました。正直これだけでも励みになるものがあります。

スポンサー募集中
2017 年に Goa の開発チームに入って早 7 年になります。特に開発の分担があるわけではなく、使っていて気がついた不具合の修正や思いついた機能の追加を行なっています。過去の活動は GitHub Sponsors のページに記載しているのでご覧ください。
月額 1 ドルから支援が可能なので、 Goa を使っている企業や個人の方はスポンサーになって頂けると嬉しいです。
GoaVersionRemover という Goa v3 プラグインを作った
goaversionremover は Goa v3 のプラグインで、各生成ファイルのヘッダーから Goa のバージョンを取り除きます。
プラグインの有効化
プラグインを有効にするには、下記のように goaversionremover を import します。
import ( _ "github.com/tchssk/goaplugins/v3/goaversionremover" . "goa.design/goa/v3/dsl" )
コード生成への影響
プラグインを有効化すると goa ツールの gen コマンドの挙動が変わります。
gen コマンドの出力は次のように変更されます:
各生成ファイルのすべてのヘッダーは Goa のバージョンを含まないよう変更されます。
- // Code generated by goa v3.14.4, DO NOT EDIT. + // Code generated by goa, DO NOT EDIT.
2023 年振り返り
仕事
CI やデプロイ、ライブラリ更新など非機能要件に関する作業が多い一年でした。来年はもう少し機能要件にも関わっていけるといいなと思いました。
OSS
仕事に使っているライブラリに機能追加しました。
今年は Goa にたくさん Pull request を出した気がしたので数えてみたら 15 回でした。 v3.13 でデフォルトルーターが変更された影響が大きく、それで不安定になった箇所の修正をしたりしました。また、長年気になっていた細かい不具合の修正や、いつかやろうと思っていた機能追加などに着手し始めたので、年が明けてもマイペースに改善に取り組みたいと思っています。
ISUCON
だらだらと参加してあまり成果が出ずに終わってしまった感じでした。それ自体は例年と変わらないのですが、今年はその不甲斐なさが非常にストレスでした。来年以降は参加するのであれば何かしら準備をして臨みたいですし、それが難しければ参加を見送ります。
ゲーム
メイドインアビス 闇を目指した連星
アニメと漫画を履修済みだったので世界観が再現できているか心配だったのですが、個人的にはかなり高評価な作品でした。「度し難いゲーム」というレビューもよく目にしましたが、慎重に進んでいけば理不尽に死んでしまうような場面もほとんどなく、中ぐらいの難易度で上手くまとまったゲームバランスだと感じました。グラフィックはもう少し頑張って欲しかった気もしますが、 Switch なので最初から全く期待していなかったこともあり許せる範囲でした。グラフィックのしょぼさと引き換えにサクサク動くので、もっさりするくらいならこれで良かったと思います。
ジュラシック・ワールド・エボリューション: コンプリート エディション
映画のジュラシックパークを運営するシミュレーションゲーム。恐竜が生育しやすい環境整備や餌の用意、観光客用に恐竜を見やすい展望台の設置やホテルの建設、自然災害や恐竜の脱走などの対策などやることがたくさんあって結構大変です。このゲームをやってから動物園に行ったら、運営者目線での改善点が思いついて面白かったです。
No Man's Sky
宇宙探索するゲーム。星、動植物、鉱物などゲーム中の多くの要素がプロシージャル生成されているのが興味深いです。 1800 京以上の膨大な惑星が存在する史上最大のオープンワールドゲームで、広大な宇宙を旅している感覚が味わえます。宇宙好きな人にはぜひプレイしてもらいたいです。発表から 10 年が経過するにも関わらずいまだに無料のアップデートが頻繁に提供されているのがすごすぎる。一度気に入ったら非常に長い期間楽しめる作品だと思います。
買い物
無印良品 体にフィットするソファ 大
リビングデくつろぐ用に購入しました。すぐに気に入ったようで無事子供の特等席になりました。
Keychron K3 Pro
キーボードはもうずっと Apple Wireless Keyboard を使っていて特に不満はなかったのですが、昨今のメカニカルキーボードの流行が気になってはいたので気分転換に購入してみました。イメージしていた昔のメカニカルとは違い剛性があって気持ちのいい打ち心地です。 RGB バックライトモデルを購入したのですが、純正のキーキャップは光が透過しないので XVX のキーキャップに交換して使っています。ホットスワップにも対応しているのでいずれ別のスイッチも試してみたいところです。タイピングが楽しくなったことでコードを書くモチベーションも上がったので、引き続きキーボード周り投資はしていきたいですが、足を踏み外すと恐ろしいキーボード沼が広がっているので気をつけないといけません。
XVX ロープロファイル キーキャップ
review
Analogue Pocket
以前から気になっていたのですがいつも売り切れ状態で入手は難しいかなと半分諦めていましたが 12 月の在庫復活に参戦し無事手に入れることができました。まだ届いたばかりであまり触れていませんが、ゲームボーイ系のゲームがネイティブで動作する他、 nanoloop というシーケンサーが内蔵されているので DTM にも活用できるようです。懐かしのゲームボーイソフトを入手しようととりあえずブックオフに行ってみましたが、数本しか置いていませんでした。 Analogue Pocket を入手する際は予めソフトも目星をつけておいた方が良さそうです。
総括
今年は保育園でもらってきた病気が家庭内で流行する頻度がとても高かったです。来年はみんなで健康に暮らしたい...
ErrorsWithStack という Goa v3 プラグインを作った
errorswithstack はGoa v3 のプラグインで、オリジナルのサービスエラーにスタックトレースを追加します。このプラグインは github.com/cockroachdb/errors/withstack に依存しています。
プラグインの有効化
プラグインを有効にするには、下記のように errorswithstack を import します。
import ( _ "github.com/tchssk/goaplugins/v3/errorswithstack" . "goa.design/goa/v3/dsl" )
コード生成への影響
プラグインを有効化すると goa ツールの gen コマンドの挙動が変わります。
gen コマンドの出力は次のように変更されます:
すべてのエラー初期化用ヘルパー関数は、
WithStackDepth()を使ってオリジナルのサービスエラーにスタックトレースを追加するよう変更されます。func MakeInternalError(err error) *goa.ServiceError { - return goa.NewServiceError(err, "internal_error", false, false, true) + return goa.NewServiceError(withstack.WithStackDepth(err, 1), "internal_error", false, false, true) }
ミドルウェア
Goa エンドポイントミドルウェアを使ってエラーをキャプチャーすることができます。 GetOneLineSource() を使って呼び出し元を抽出することができます:
func ErrorLogger(logger *log.Logger) func(goa.Endpoint) goa.Endpoint { return func(e goa.Endpoint) goa.Endpoint { return goa.Endpoint(func(ctx context.Context, req any) (any, error) { res, err := e(ctx, req) if err != nil { file, line, _, ok := withstack.GetOneLineSource(err) if ok { logger.Printf("%s:%d: %v", file, line, err) // file.go:15 something went wrong } } return res, err }) } }
もしくは GetReportableStackTrace() を使うこともできます;
func ErrorLogger(logger *log.Logger) func(goa.Endpoint) goa.Endpoint { return func(e goa.Endpoint) goa.Endpoint { return goa.Endpoint(func(ctx context.Context, req any) (any, error) { res, err := e(ctx, req) if err != nil { if st := withstack.GetReportableStackTrace(errors.Unwrap(err)); st != nil { if len(st.Frames) >= 1 { frame := st.Frames[len(st.Frames)-1] logger.Printf("%s:%d: %v", frame.AbsPath, frame.Lineno, err) // /path/to/file.go:15 something went wrong } } } return res, err }) } }
エラーの基になる具体的な値は ServiceError です。型アサーションして条件を作ることもできます:
func ErrorLogger(logger *log.Logger) func(goa.Endpoint) goa.Endpoint { return func(e goa.Endpoint) goa.Endpoint { return goa.Endpoint(func(ctx context.Context, req any) (any, error) { res, err := e(ctx, req) if err != nil { if serviceError, ok := err.(*goa.ServiceError); ok { if serviceError.Fault { file, line, _, ok := withstack.GetOneLineSource(err) if ok { logger.Printf("%s:%d: %v", file, line, err) // file.go:15 something went wrong } } } } return res, err }) } }
また report.ReportError を使って Sentry にエラーを送ることもできます:
func ErrorReporter() func(goa.Endpoint) goa.Endpoint { return func(e goa.Endpoint) goa.Endpoint { return goa.Endpoint(func(ctx context.Context, req any) (any, error) { res, err := e(ctx, req) if err != nil { report.ReportError(err) } return res, err }) } }










