2026年に読んだ本
随時更新していく。上に行くほど最近読んだ本。
棋士がうつ病になったときの記録。うつ病は心の病気ではなく、脳の病気であることは認識を変えなければならない。5手詰めで躓く話を見て、うつ病の恐ろしさを感じた。今までできたことができなくなることの恐怖や絶望に対して立ち向かえるところがすごいし、それの原因でもあり糸口でもある将棋はやはり魅力的なものだと思った。
1/15 読了
随時更新していく。上に行くほど最近読んだ本。
棋士がうつ病になったときの記録。うつ病は心の病気ではなく、脳の病気であることは認識を変えなければならない。5手詰めで躓く話を見て、うつ病の恐ろしさを感じた。今までできたことができなくなることの恐怖や絶望に対して立ち向かえるところがすごいし、それの原因でもあり糸口でもある将棋はやはり魅力的なものだと思った。
1/15 読了
2025年を振り返る。推敲せず、思うままに
今年のビックイベントはなにかと聞かれたらやはりこれかなぁ。
新しい環境に入って半年経った。とても楽しくやっている。やっている内容が新鮮で楽しいし、一緒に働く周りの人がとても優秀で刺激になる。組織としても、個としても高まって、それがAIですごい勢いで加速しているような、そんな高揚感がある。
働き方も満足している。現在はハイブリッドで、週1,2回オフィスに行く。
前の職場にいた頃にフルリモートがしんどいことを書いたが、極端なリモートがしんどいのかもしれない。Slackでのやり取りが活発で、meetで顔をみて会話すれば、リモートの環境でもあまりしんどさは感じない。
会社でポーカーが流行っているのもたのしい。オフィスに行くとたいていポーカーしてる。
今年は韓国、オーストラリア、台湾、カンボジアでポーカーをした。合わせて35時間ぐらい?
国内のアミューズはほとんど行っいない。友達に誘われたときに行くぐらいだし、一人ではあまり行かなくなったかも。海外でポーカーすると国内で遊ぶ気にあまりならなくなる。
JOPTに初めて参加した。608人参加で70位ぐらい。まぁまぁ走ったので楽しかった。
転職先でポーカーがブームになっていてとても楽しい。ディーラーもっとうまくなりたい。
結構楽しくやっている。最近は自分が苦手だと思っていたピンチが成長しているのを実感している。整体との相性がいい。
今年も色んなところに行った。
韓国

オーストラリア・ニュージーランド



ロイズピークの景色は良かった
川越。このうなぎが美味しかった

瑞垣

鎌倉

八丈島

柏島

宇都宮

台湾

カンボジア

岡山香川徳島

前歯のインプラントの手術をした。複数回手術を行う。せっかくなので記録を残す。,,骨を足す手術(0回目),2023年の9月に実施。お値段は19万円。インプラントの基本的な流れとして、骨にインプラントを埋め込むためのボルトをいれる手術を行い、その後にインプラントをいれる手術を行う。自分の場合は骨がとても薄く、まずその骨を増やす手術から行った。,手術を行ったが結果あまり骨がくっつかず、最終的に今のお医者…
,前回手術をして、経過観察中に緊急手術になったのでメモ,,前回の手術から一ヶ月以上経過した。食事や飲酒も自由にできていたが、手術をしたところが少し痛み始めた。,経過観察の予定があったので、痛み始めてから4日ぐらいのタイミングで再び歯医者へ、先生曰く内部で感染を起こしている可能性があり、切除するために切開するとのこと。,歯医者のあとに飲む約束をしていたが、流石に健康を優先した。(ガチのドタキャンで申…
インプラントの3回目の手術をした。今回は土台を用意する手術。
手術をするともうその日が終わってしまうので夕方からにした。 午前はボルダリングで軽く登った。しばらく登れないかもしれないし。
歯医者にありがちの少し待たされてからのスタート。麻酔がうたれ、いつもの心臓が早くなるやつを感じる。右前歯が痛むのでそこだけ麻酔を追加。めちゃくちゃ唇が腫れる。
手術はいつも通りやることがない。術中ドリルで穴を開けているっぽい振動を感じた。多分土台を作っていたのだと思う。
手術中毛布をかけられていたが、そのせいで暑くて下半身だけ汗をかいてしまった。あと何回か寝てた。
手術自体は2時間半ぐらいかかった。レントゲンを撮り、ボルトがしっかり入っていた。
今回の手術は上顎の歯茎を大きく切っている(歯茎の移植をしたらしい)ため、血がかなりにじみ出てくるらしい。枕にタオルを巻くことを勧められた。2,3日はそういう状態になるらしい。
最後に抗生物質と痛み止めをもらった。手術をしているところはしばらく歯を磨けない。液体ハミガキを勧められたので購入。手術費用は11万円。麻酔直後は大きく腫れていた唇も収まっていたので、特にマスクなどはせず帰宅。
手術直後は、前回と比較するとそこまでダメージを受けていない印象だったが、帰宅するにつれてどんどんダメージを感じてきた。帰宅後口をゆすいだらずっと血が出ていた。ゆすぐのはやめ、1時間ほど横になっていた。そのあとゆすいだら血がだいぶ収まった。
血が収まっていそうだったので夜ご飯としてビーフシチューを食べようとしたが、傷口がとても痛むので全部食べられなかった。せっかく作ってもらったのに申し訳ない。空腹だが今日はこれ以上食べないほうがいいと判断。口の中にでかい口内炎や、上顎の側の激しいやけどをしているような感覚。
シャワーに入り、歯を磨いて就寝。
2日目
思ったより血は出ていなかった。ただやけど感は常にある。やけど感を刺激しない食べ物が良さそう。
朝はプロテインを摂取。そこまで染みずに飲むことができた。抗生物質と痛み止めを飲んだ。痛み止めは念の為。
昼は冷たいそばを食べた。これならしみない。
誘われたのでポーカーをして過ごす。気が紛れてありがたい。
夜はまた冷たい蕎麦を食べる。ヨーグルトをプレーンの状態で摂取。
あとプリンを2個食べた。
3日目
喉風邪を引いたっぽい。血は一切でない。やけど感はある。
月曜日、リモートワークができるのでありがたい。社内ハッカソンが楽しかった。
朝プロテイン、昼そば、夜は鍋に挑戦。十分冷ませば食べられた。雑炊も冷ましながら食べることができた。ヨーグルトはプレーン。
痛み止めは継続して飲んでいる。喉風邪もあるので早めに就寝。
4日目
痛みで朝の5時半に目が覚める。痛み止めを飲む。
リモートで仕事をしていたが、体調がひどくなったので早退。多分喉風邪が原因。
鍋を食べるが食べるときの痛みが強かった。
5日目
定期的に痛み止めを飲む。喉風邪はだいぶ収まった。
昼も夜もうどん。夜にアイスを食べたらとてもしみる。このタイミングで初めて傷口を見る。でかい穴が空いて赤くてびっくりした。傷口を見たらよりいっそう痛く感じてしまった。毎日ヨーグルトを食べていたが、これ以上口にものを入れる気がしなくなったので、歯磨きにして寝ることにする。
6日目
上顎の傷口が痛い。回復している感覚もない。
朝はプロテイン。昼にそばを大量に食べたけど、そのときに口の中を傷つけたかもしれない。夜ご飯のときに傷口が痛すぎてご飯を断念してしまった。プロテインもしみるようになった。
昼間は痛み止めを飲んでいたが、寝る前の痛み止めは飲まなくなった。
7日目
鏡で傷口を見ると、前見たときよりは収まっているように見える。ただ痛みはひどく、プロテインを飲むのも5分ぐらいかかった。傷口に影響を与えたくないので、今日は思い切ってプロテインだけ摂取しようと思う。
ボルダリングをした。
8日目
上顎の傷口がずっといたい。朝昼プロテインで、夜薬局に行って口内炎用の塗り薬を買った。ステロイド成分が入っているものと、入っていないものが選べた。よくわからなかったがステロイド入りを購入。塗ったら膜ができるので少しだけ落ち着いた。痛いけどご飯(鍋の残りとうどん)も食べられた。
この日も軽く登ったが、アップの段階でいつものと違う感覚だと思いすぐに帰った。登るたびに傷口が痛み、ほとんど食べ物を食べていないせいか瞬発力が出ない。
9日目
朝口の中が乾燥して激しい痛み。ヒィヒィしながらプロテインを飲み、術後検診で歯医者に。
歯医者いわく順調そうに治っているとのこと。「こんなに痛いのに?」と思ったけど順調そうならよかった。上顎の糸を切ってもらう。糸を切ってもらったら痛む範囲が減った気がする。糸によって過敏になっていたのかも?
口内炎用の塗り薬は治りを遅くするからあまりやらないほうがいいとのこと。抜糸によって少し痛みに耐えられそうになったので今日は薬を塗らなかった。帰りに池袋にできたARC'TERYXのお店に寄って、シューズバッグをもらった。百貨店で布団を衝動買いした。
昼はうどんを食べ、お出かけで六本木。出汁のお店で何故か一口チキンライスが配布されており、食べてみたら口の中が崩壊した。痛すぎた。
夜は鍋。野菜とうどんはしみるが全然食べられる。ヨーグルトは冷たさが刺激になるのか断念した。
10日目
口の中が乾燥して舌と傷口が張り付いたのか異常に痛かった。即痛み止めを飲む。
プロテインを飲もうとしたが、冷たさが染みてしまうのかすごく痛い。医者には勧められていないけど口内炎の塗り薬を塗って飲んだ。昼はうどんを食べた。
傷口は左側が相変わらず痛い。触っちゃいけないのだろうけど、つい触ってしまう。
医者にステロイド系の薬は治りを遅くすると言われていたので、薬局に行きステロイドが入っていない口内炎の薬を新たに購入。口につけるとものすごいゼリーになる。膜があるだけでありがたい。
夜は鍋を食べた。右側だけで噛みながら食べると、しみるにはしみるが割と普通に食べられた。
ヨーグルトは冷たくて染みてしまい断念。ただ昨日ほど痛くはないかも。
ゼリーの塗り薬を塗って寝る。
11日目
ここ数日続いていた乾燥による痛みがなかった。昨日塗り薬を塗ったおかげかも。
プロテインも冷たさはしみるがこれまでほどではない。少しずつ回復を感じている。
上顎の左側はまだ食べ物が当たると痛い。右側で基本的に噛む。
今日はヨーグルトに挑戦。右側中心で食べることで久しぶりに食べることができた。嬉しい。
ゼリーの塗り薬を塗って寝る。
12日目
確実に回復している。食べ物を食べたときの染み方が減った気がする。基本的に右側で噛む。
今日は痛み止めを飲まなかった。
13日目
塗り薬を塗らなかったからか、朝傷口が乾燥して痛かった。塗り薬は塗ったほうがいいのかも
昼は挑戦してトマトとの生ハムの冷製パスタを食べた。右噛みメインで食べたけど、多少染みたくらいで収まった。かなり回復している。
今日も痛み止めを飲まなかった。塗り薬を塗って寝る。
14日目
右噛み中心で色々食べられるように、パンも食べられた。みかんは食べられるが少ししみる。
15日目
会社でパーティがあり色々なものを食べた。右噛みなのは変わらないが、食べられるものが増えて嬉しい。夜にラーメンを食べた。太麺だったので傷口に触れてしまい少し痛かったが食べられた。お酒はまだ飲んでいない。
この日は塗り薬を塗らなかった。
16日目
抜糸した。まだ糸は残っている。カレーが食べられた
17日目
ついに酒を飲んだ。
これは自分が子供の頃から意識している考え方。最初に出会ったのはどこかの掲示板だったと思う。
持っているお金の量は変えられないが、その使い方で効用は大きく変えることができる。どうすれば効用を最大にできるかを考えることはとても大事。
自分の人生で軸にしている考え方はなんですか?と聞かれたらこれかもしれない。
買おうとしている対象の本当の価値みたいなものに目を向けて、それが欲しいものなのかどうかを考える姿勢は、お金に限らず仕事にも応用が効きそうな気がしている。
その仕事をする理由が「時間があるから」なら、その仕事はしないほうがいいだろうし、その仕事をしない理由が「忙しいから」なら、その仕事はしたほうがいいと思う。
Next.js(Vercel)でフロントエンド、Railsでバックエンドを用意する。結構やることが多かったのでメモ。
なかなか全体像がつかみにくかった。今回取り組んでわかったことをまとめる。
ユーザーはNextからログインや登録を行い、Auth0に遷移する。
Auth0に遷移し、そこで認証を行う。認証が成功するとアクセストークンがJWTとして取得できるようになる
Next側でそのJWTを使ってRailsに情報を連携する
Rails側でJWTをパースし、問題なかったら処理を実行する
こういうことを行うためにこれから色々設定をする。
Reguler Web Applicationsを選択。アプリケーションを作ると、QuickStartでフレームワークごとの設定が案内されるので、原則そらのドキュメントに従う。
ローカル用と、本番のそれぞれを入力する。後述するSDKを用いればそのあたりのエンドポイントは勝手に作られる。
1npm install @auth0/nextjs-auth0どう設定すれば良いのかはドキュメントに記載されてる。
サンプルをベースに少し改造
1// lib/auth0.js
2
3import { Auth0Client } from "@auth0/nextjs-auth0/server";
4
5export const auth0 = new Auth0Client({
6 domain: process.env.AUTH0_DOMAIN,
7 clientId: process.env.AUTH0_CLIENT_ID,
8 clientSecret: process.env.AUTH0_CLIENT_SECRET,
9 appBaseUrl: process.env.APP_BASE_URL,
10 secret: process.env.AUTH0_SECRET,
11
12 authorizationParameters: {
13 scope: process.env.AUTH0_SCOPE,
14 audience: process.env.AUTH0_AUDIENCE,
15 }
16 async onCallback(error, context, session) {ユーザー作成の処理}
17});このサンプルもドキュメントから。
1import type { NextRequest } from "next/server";
2import { auth0 } from "./lib/auth0";
3
4export async function middleware(request: NextRequest) {
5 return await auth0.middleware(request);
6}
7
8export const config = {
9 matcher: [
10 "/((?!_next/static|_next/image|favicon.ico|sitemap.xml|robots.txt).*)",
11 ],
12};ここまででログインやログアウトのエンドポイントが作られる。
1<a href="/auth/login">ログイン/新規登録</a>ここでLinkなどを使うと先読みが入ってややこしくなるらしい。
設定した環境変数
AUTH0_CLIENT_ID
AUTH0_CLIENT_SECRET
AUTH0_SECRET
AUTH0_DOMAIN:https://を取り除かないとエラーがでる
AUTH0_AUDIENCE
AUTH0_SCOPE
APP_BASE_URL
最初環境変数の設定をミスっていてローカルでは問題ないのに本番でMIDDLEWARE_INVOCATION_FAILEDエラーが発生して詰まっていた。
Auth0のダッシュボードで作成。
Identifierと、ドメインの情報を記録する。これをRailsの設定に使う。
1gem 'jwt'1EDITOR="vim" bundle exec rails credentials:edit --environment development1auth0:
2 api_identifier: xxx
3 domain: xxxここでのdomainはhttps://を含まない
このあたりもドキュメントのママ
1# app/lib/json_web_token.rb
2require 'net/http'
3require 'uri'
4
5class JsonWebToken
6 def self.verify(token)
7 JWT.decode(token, nil,
8 true, # Verify the signature of this token
9 algorithm: 'RS256',
10 iss: "https://#{Rails.application.credentials.auth0[:domain]}/",
11 verify_iss: true,
12 aud: Rails.application.credentials.auth0[:api_identifier],
13 verify_aud: true) do |header|
14 jwks_hash[header['kid']]
15 end
16 end
17
18 def self.jwks_hash
19 jwks_raw = Net::HTTP.get URI("https://#{Rails.application.credentials.auth0[:domain]}/.well-known/jwks.json")
20 jwks_keys = Array(JSON.parse(jwks_raw)['keys'])
21 Hash[
22 jwks_keys
23 .map do |k|
24 [
25 k['kid'],
26 OpenSSL::X509::Certificate.new(
27 Base64.decode64(k['x5c'].first)
28 ).public_key
29 ]
30 end
31 ]
32 end
33endTokenVerificationを作り、認証してユーザーを返すAuthorizationServiceと、新規にユーザーを作成するUserRegistrationServiceを作る
1module TokenVerification
2 private
3
4 def http_token
5 if @headers["Authorization"].present?
6 @headers["Authorization"].split(" ").last
7 end
8 end
9
10 def verify_token
11 JsonWebToken.verify(http_token)
12 end
13end
1class AuthenticationService
2 include TokenVerification
3
4 def initialize(headers = {})
5 @headers = headers
6 end
7
8 def perform!
9 payload, _header = verify_token
10 User.find_by!(sub: payload["sub"])
11 end
12end
1class UserRegistrationService
2 include TokenVerification
3
4 def initialize(headers = {})
5 @headers = headers
6 end
7
8 def perform!
9 payload, _header = verify_token
10 User.find_or_create_by(sub: payload["sub"])
11 end
12end
認証に成功したらユーザーを返す
1class SecuredController < ApplicationController
2 before_action :authorize_request
3
4 private
5
6 def authorize_request
7 @current_user = AuthenticationService.new(request.headers).perform!
8 rescue JWT::VerificationError, JWT::DecodeError
9 render json: { errors: [ "Not Authenticated" ] }, status: :unauthorized
10 end
11
12 def current_user
13 @current_user
14 end
15end
ユーザーの作成はUsersControllerに作成
1class UsersController < SecuredController
2 skip_before_action :authorize_request, only: [ :create ]
3
4 def create
5 user = UserRegistrationService.new(request.headers).perform!
6 if user.save
7 render json: user, status: :created
8 else
9 render json: { errors: user.errors.full_messages }, status: :unprocessable_entity
10 end
11 end
12endこれでログインまわりの機能ができた