だれよりもやる

ころちゃんの雑記

関ケ原Ruby会議01に懇親会奉行として参加してきた

6月から育休に入ったころちゃんです。2026/05/30 に行われた 関ケ原Ruby会議01 に奉行衆(オーガナイザー)として参戦してきました。

開催の詳しい経緯はSmartHRさんが出していたブログを見ていただけるといいのですが、ざっくり説明すると、2025年の 東京Ruby会議12、関西Ruby会議08、ながらRuby会議01(岐阜) の3会議流れで東西対抗戦やりたいねという話を ydah さんと osyoyu さんが話していたので、背中を押しつつ乗っかった形になります。

ローカルオーガナイザーっぽい顔をしていましたが、岐阜市から関ケ原ふれあいセンターまで車で1時間ぐらいかかるので実はそんなにローカルではないのでした。真のローカルオーガナイザーは会場まで10分の場所に住んでいる exSOUL で間違いない。

快晴

晴れてよかった。ydahさんが雨男って言ってたので、まかせてください私が晴れ男ですと言っていたけど、本当に晴れました。

さすがに晴れすぎワロタ

懇親会奉行

奉行衆は7人いたので7人の侍っぽいなあと思っていましたが、関ケ原つながりだと 1599年の 七将襲撃事件 という出来事があったようです。

私は会場の下見だったり近隣の酒屋やお菓子屋を巡ったりご飯系の発注を中心にやっていました。弁当奉行とおやつ奉行と懇親会奉行です。 ながらRuby会議をオーガナイズしたときはスタッフも少なくて省力的だったので、せっかくならRubyKaigiのローカルオーガナイザーぽいことをしてみたいなと思って、小ホールで好き放題やらせてもらいました。

お弁当・おやつ・懇親会と全て小ホールで提供したので、朝からほとんど小ホールにいました。 なかなかセッション見れなかったので動画で見返します。(まだ全部見れていない。)

小ホールの準備風景

ランチ

ランチは3種類用意しました。「お弁当選べるんだ!」と驚きの声も聞こえてきてニコニコしていましたが、当初お弁当は1種類で考えていて途中で欲が出てきて3種類にしたのでした。

1つ目は隣の古戦場記念館のレストランの伊吹庵の合戦弁当。

2つ目はGURUMAN VITALという会場近くで超有名なパン屋さんに頼んでサンドイッチBOXを作ってもらいました。米よりパン派の人向け。

3つ目はデリカスイトという隣の隣の町のお弁当屋さんの幕の内弁当。ここは美濃味匠というお弁当屋をやっていて、名古屋駅の銀時計横にもお店があります。結構でかいお弁当屋です。

合戦弁当

お弁当

おやつ

おやつは会場から徒歩圏にある松野屋さんにお願いしました。 ここは下見で飛び込んで食べた葛アイスがめちゃくちゃ美味しくて、その場で相談して発注依頼しました。

カンファレンスでアイス提供してるのなかなか見ないな?と思ったのでプチサプライズとして用意してみましたが、わりと評判良かったかなと思います。 葛アイスは多少溶けても垂れないのでカンファレンス向きだと思うので他のイベントでも採用してみてほしい。

冷凍庫準備できないのでおやつタイムの直前に持ってこれますか?と無茶なお願いしたけど、快諾してもらえました。ありがたい。

葛アイス

会場近くに100人規模でお酒が飲めるお店がなかったので本会終わってから大移動するか悩みましたが、その日に帰る人もいるので小ホールでやりましょう!と提案して準備をしました。

普段 nagara.rb の会場提供をしてくれている会社さんがまちづくりに強い会社さんでして、相談してオススメのケータリング業者の neshian さんと 岐阜ビール さんを紹介していただきました。

自分はそこまでお酒は強くない かつ 当日は車での運搬もあってお酒は飲まなかったんですが、みんなが芝生でビール飲んで美味しいごはん食べてるのが見れただけで十分お腹いっぱいでした。

飲み物周りは全部自前で手配していまして、一度全部自前でやってみたいなと思っていたので良い機会でした。ドブ漬けに大量の氷をぶちこんで屋台ごっこしたいという謎の欲求が満たせたので良かったです。

料理もビールも完食していただいたので、業者さんも喜んでいました。

クラフトビール

準備に安堵して、懇親会の写真を全然撮ってなかった。。。

まとめ

メインコンテンツは別の奉行衆に頼りきりでしたが、個人としてやりたいことはできたので良かったです。

みんながニコニコしてご飯食べてるのが嬉しいということが分かったので、脱サラして飲食やりたい気持ちが高まっています。

東西、遠方からご足労いただき本当にありがとうございました。


会社のふりかえりブログにも寄稿しました。

developer.leaner.co.jp

AI疲れかと思ったら眼鏡が合ってないだけだった

この記事で伝えたいこと

  • 目のケア大事
  • PC用メガネいいぞ

集中力が持たなくなってきた

昨年の夏ぐらいから、集中力が夜まで続かない状態が続いていた。 夕方にはディスプレイが宝石箱のように輝いて見えて目がシパシパ。 AIの書いた文章を読んでも目が滑る滑る。

思えばこの時点で眼精疲労を疑うべきだったのだが、 1年ぐらい前にAI並列駆動のレビューで疲弊していたのもあり、AI作の文章やコードを読むことも増えていて、AI疲れだと決めてかかってしまった。

同僚にPC専用眼鏡いいよと言われて、私そもそも眼精疲労では?と気づいた。

この眼鏡本当に見えてる?

眼鏡屋のおっちゃんに「え?これ右目本当に見えてる?」と言われた。 結果見えてはいたんだけど、そもそも度が合ってなかったのと、度が強すぎるのダブルパンチだった。 前回変えたのが2〜3年前だったので、そこからさらに目が悪くなったが正しい。

眼鏡を付けた状態で1.5度見えるように調整していたが、1日8時間以上パソコン作業をする場合は、普段遣いとは別に専用の眼鏡を用意したほうが良いとのこと。ディスプレイが50〜60cm ぐらいの位置にあるので、目の筋肉を使わなくてもその位置にピントが合うように調整してもらった。 これまではずっと筋肉を過度に緊張させた状態で作業していたってことだ。

PC用の眼鏡 = ブルーライトカットだけだと思ってたんだけど、全然認識が違った。おもしろいね。

プリズムレンズ

会社の同僚から "視覚情報センター" と呼ばれる大阪の眼鏡オタクのお店を紹介してもらったけど、岐阜から行くのが困難だったので、諦めた。 視覚情報センターは "プリズムレンズ" の処方が得意らしい。プリズムレンズは複視や斜視の補正のためのレンズで、眼精疲労にも効くレンズ。全国に視覚情報センターの弟子?がいるみたいだが、近くても三重県にしかなかった。しかも三重県の熊野w さすがに遠すぎる。

メガネと眼の使い方・見方で 健康と能力をサポートする

結局眼鏡作製技能士、視能訓練士のスタッフがいる近所の眼鏡屋に行ったが、 そこのスタッフさんも、視覚情報センターの講習を受けにいったことがあるとのこと。 ただ、プリズムレンズは人を選ぶとのこと。自分は合わなかったと言っていた。

私の場合は複視も斜視もほとんどないので、今回はピントを50cm程度の眼鏡を買った。

眼鏡を変えてみてどうだったか

とても楽

夕方には多少疲れてくる感があるので、目薬を使ってる。 普段用のレンズとPC用のレンズの2個で使い分けることになるが、業務中は基本PC用レンズなので煩わしさはない。

育休から復帰しました

あけましておめでとうございます。

昨年(2025)の10月頃に第二子が生まれ、2ヶ月間の育児休業を取得していました。

第一子のときは約1年育休を取得していましたが、今回は年末に2ヶ月、今年の夏に2〜3ヶ月と分割して取得する予定です。ちょうど上の子が小学校になるので、1年生の夏休みは色んなところを連れ回したいなと思っています。

はてなブログで書くのはしばらくぶりです。ここ数年は Next.js と esa で作ったブログサイトを運用していましたが、久々に記事を書いたらビルドに失敗してうまく公開できなかったりとだるかったので、結局はてブに戻すことにしました。

いままでの記事 → https://corocn.dev/

昨年は家に引きこもってることが多かったので、今年は色んなところに足を運ぼうかなと思っています。カンファレンス等でお会いしましたら仲良くしてください。

また、関ケ原Ruby会議01と名古屋Ruby会議05の準備も進めていますので、CfPの応募をお待ちしています。

今年もよろしくお願いします。

Slack用の絵文字ジェネレーターを作った

f:id:corocn:20190212201948p:plain:w128

Slack用の絵文字ジェネレーターを作りました。

特徴としては、リアルタイムに表示を確認しながら絵文字を作ることができるところ。

slackemojigen.com

絵文字ジェネレーターなんてたくさんあるじゃーん!と言われればそれまでなんですが、普段使用している絵文字ジェネレーターが毎回生成ボタンを押さなきゃいけないので、さくさく複数フォントの確認できるやつが欲しかったので作りました。あとはVue.js + TypeScriptの練習として連休で作れるものとして採用。

ためしがき に多大なる影響を受けています。

デモ動画

こだわりとか

  • リアルタイムにフォントを見比べられる
  • Slackで表示した時のサイズ感を確認できる
  • 9段階 font-weight に対応(フォントによって未対応の太さはある)
  • プリセットで使ってる4色はSlackロゴの4色から採用

技術スタック

Nuxt.jsが公式にTypeScript対応したので、ほぼTypeScriptで書いてます。 最近副業でTypeScript + Express でサーバーサイド開発してるけど、TypeScriptはいいぞ。Expressも良いぞ。この辺の知見は別途記事を書きますね。

サーバーサイド不要なのでSPAとしてNetlifyでホスティングすることにしました。 ドメインがせっかくAmazon Route53にあるので、Amplify Consoleを使ってもいいかと思ったけど、また次回にします。

仕組み

仕組みは簡単で、WebFontを使ってHTML5 Canvasに描画してるだけです。ダウンロードボタンを付けたけど、実は右クリックメニューからもダウンロードできます。

FontはWebFontLoaderとNuxt用のプラグインを使っています。対応したいfont-weightは全部読み込ませています。

  webfontloader: {
    timeout: 30000,
    google: {
      families: [
        'M+PLUS+1p:100,300,400,500,700,800,900',
        'M+PLUS+Rounded+1c:100,300,400,500,700,800,900',
        'Noto+Sans+JP:100,300,400,500,700,900',
        'Noto+Sans+SC:100,300,400,500,700,900',
        'Noto+Sans+TC:100,300,400,500,700,900',
        'Noto+Serif+JP:200,300,400,500,600,700,900',
        'Noto+Serif+SC:200,300,400,500,600,700,900',
        'Noto+Serif+TC:200,300,400,500,600,700,900',
        'Kosugi',
        'Kosugi+Maru',
        'Sawarabi+Gothic',
        'Sawarabi+Mincho',
      ]
    }
  },

WebFontの読み込み完了後に描画処理を走らせる必要があります。WebFontLoaderでも読み込み完了イベントをキャッチすることはできますが、FontFaceObserverのほうが使いやすかった。

 const font = new FontFaceObserver("M PLUS Rounded 1c", { weight: 900 })
 font.load("えも\nじ").then(() => {
     // ここで描画する
 })

自前のdrawメソッドの中に上記のような処理を入れています。 font-family, font-weight, これから描画する文字を指定して、ロード完了を待って描画。

今後

コード整理してGitHubに公開する予定。(現状だいぶ見せられない汚さw) 色んなフォントに対応できるといいけど大変そうなので、みんな使ってくれるようなら頑張ります。

フィードバック頂けると嬉しいです。

twitter.com

Thanks!!

公開前に見てもらってありがとう〜 @nabettu @girigiribauer

DIYの電動昇降デスク買ったら捗った

リモートワークしてるエンジニアなので、座りっぱなし作業環境を改善したく、DIYタイプの電動昇降デスクを購入してみた。

今回買ったのは FlexiSpot E3B で 5万円ぐらい。電動昇降デスクの中ではコスパがいいほう。

購入ツイートしたら、興味ある人が多かったようなので、ちゃんとレビューしてみた。

導入前の机

導入前はIKEAで購入した机を使ってた。雑だけどヤスリがけして、オイル塗ったんで愛着がある。

f:id:corocn:20190126120741j:plain
電動昇降デスク導入前

良かったところ

  • ある程度の幅・奥行きが確保されている(155x75)
  • 木製の天板がいい
  • 高価すぎない(組み立てに電動ドライバーが必要なので、合計25000円ぐらい)

微妙だったところ

  • 天板に対して脚が脆弱で不安定すぎる
  • 私の身長(160cm)に対して天板の位置(73cm)が高すぎる

不安定さは使っているうちに気にならなくなった。天板の高さは椅子を高くすると、足が地面に接地しないので、姿勢が悪くなる原因になってた。肩こりや腰痛にも繋がるので良くない。

最適な机の高さ

最適な机の高さは以下のサイトから計算できる。

身長160cmの私の場合、天板の高さの最適値は

  • 座った状態: 63cm
  • 立った状態: 93cm

今の机と10cmも違う。肩こりや腰痛を防止するためには、適正な高さの机を使うことが大事。

調整できるタイプの脚すれば良いんだけど、ずっと座っている状態がよくないし、スタンディングでも作業したいので、電動昇降デスクを試してみることにした。

電動昇降デスクの選定

今回のデスクを選んだときの基準は

  • 天板のサイズが今より広い(155x75 以上)
  • 高さ60cmまで下げられる
  • 送料込み5万円前後
  • モニターアームが付けれる
  • 安定している
  • 木製がいい

雑に調べると20万ぐらいのデスクがヒットして、膝から崩れ落ちそうになる。ちゃんと調べると5万前後のデスクがそこそこ見つかる。

身長が高ければこのあたりでもいいかも。天板込み。

色々調べた結果、今の天板も使い回せるし、今後天板を買い換えるという選択が取れるFlexiSpot E3B(脚のみ) にした。天板新しくすると2万ほどかかるのでちょっと予算オーバー。現在使用中のIKEA天板を流用した。

天板の選定

私の場合はIKEA天板を使いまわしたけど、集成材のオーダーカット注文するという手がある。

木材通販のマルトクショップ

材質とサイズにもよるが、155x75ぐらいの天板であれば、集成材なら1万〜、集成材+表面塗装で2万〜、無垢材であれば4万〜 ぐらい。地味に塗装で値段があがるので自分でやるのも面白いかも。

材質によっては柔らかく、経年で湾曲する可能性があるので、裏面に補強が入っていると良い。IKEA天板の裏には補強材が入っている(組み立て作業中の写真参考)

余談だけど、IKEAのGERTONは バーチ(カバ)と呼ばれる材質を使っている。この素材がめちゃんこ硬くて、しょぼい電動ドリル/ドライバーだと天板の取り付けが運ゲー*2 になるので注意が必要。もしGERTONを検討する場合は、GERTONでDIYしてる人が沢山いるので、事前に調べたほうがいい。

FlexiSpotの組み立て

まず重すぎるので、玄関で開封してパーツごとに部屋に運び込んだ

できれば2人以上で組み立てたほうがいい

f:id:corocn:20190126121510j:plain
玄関から動かせないFlexiSpotくん

FlexiSpot 30kgぐらいあるので天板20kgと合わせて50kg。床が抜けるんじゃないかと社内Slackで心配されたけど、人間の体重相当なので問題なさそう。

重すぎってレビューがついてるのを見たけど、これぐらい重くないと不安定になるので、安心。

f:id:corocn:20190126122220j:plain
組み立て作業中

f:id:corocn:20190126122303j:plain
天板に乗せた図

f:id:corocn:20190126122659j:plain
完成。いいかんじ。

f:id:corocn:20190126122731j:plain
昇降コントローラー

天板が硬すぎてネジが全部入らなかったけど、いまのところ安定しているのでヨシ。コントローラーの写真を見てもらうと分かるけど、隙間が空いてる。

ネジ数が多いので、組み立てには電動ドライバーを用意しておくといい。 借りるのも手ですね。

f:id:corocn:20190126123229j:plain
PCを置いたの図

ケーブルが見苦しい。モニタはディスプレイアームを使って、可能な限り下げるようにしている。正面を向いたときの目線が、ディスプレイの上端にくるぐらいがちょうど良い。

かっこいい!

使ってみた感想

非常に満足度が高い。買ってよかった。

使い始めた1週間は、毎日2時間程度スタンディングにしていたけど、最近は勤務中はずっとスタンディングにしている。8時間立ちっぱなしは筋肉痛になるけど、もう慣れた。以下のような効果を感じている。

  • 集中力が上がった
  • 昼食後の眠気がなくなった
  • 脚がムキムキに
  • たまに姿勢を切り替えることで気分転換になる
  • 高さを調整できるので座った状態の姿勢も改善した

デスクワークで運動不足になりがちな人は、ぜひ検討してみるといい。 特にリモートワーカーにはオススメしたい。姿勢もよくなる。

次は自作キーボードを作るぞ!

FlexiSpot 電動式スタンディングデスク 高さ調節スタンドアップワークテーブル学習机勉強机 ブラックE3B

*1:実際の価格は13000円だが、送料が7000円ぐらいする。

*2:場所によってすんなりネジが入ったり入らなかったり

2018年を振り返りと2019年の目標を少し

2018年の振り返りするぞ! まずは今年立てた目標を見ていく。

  • 新しい言語を学ぶ(Kotlinあたり)
  • 本を書きたい(技術書典に出したい)
  • 結婚したいです
  • 前のめりでやっていく

新しい言語を学ぶ

Kotlin、Go、Typescriptを書く機会があった。 普段は動的型付け言語ばかり触っていたので、静的型付け言語に触れる機会が持てたので良かった。

CodeRetreat と呼ばれるペアプロのイベントに参加して、PythonやJuliaにも触れることができた。

言語ではないが、認証認可技術(OIDC, FIDO2)を深掘りしたり、コンテナ技術(主にKubernetes)を学ぶこともできた。仕事ではAWSにべったりなので、プライベートでGCPを触れたのも良かった。

本を書きたい

技術書典4・5と出展することができ、大変ありがたいことに、出版社からお声がけいただき、商業誌の出版もできた。かなりのプライベートの時間を執筆に費やしたと思う。 出版自体はじめてで、全部一人で準備したので相当大変だったし緊張したが、良い経験になった。

結婚した

結婚することができた。妻に感謝。みんなに感謝。 毎週片道2時間かけて会いにいってたので、残業がなく、土日はちゃんと休む文化のホワイトな会社なので良かった。 そんな働き方が当たり前になる社会にしていきたい。

前のめりでやった

すごいアバウトな目標で反省はしているが、色々やった

  • Vue.js Night Nagoyaのイベント開催
  • Auth0 Ambassador への就任と発信活動
  • エンジニア採用系イベントへの登壇
  • ID系のイベント参加

東京1往復で2万飛ぶんだけど、結構な頻度で東京に行ったと思う。

その他やったこと

カレー

カレー作りに嵌って毎週作っていた。最近はカレーにとどまらずに、スパイス系の料理が作りたいなと思って火鍋を作ってみたり、色々作っている。調理師免許欲しい。

引っ越し

結婚したので引っ越した。家電を買い揃えた。食洗機と洗濯乾燥機とルンバのおかげでQoLが爆上げした。

2019年

目標は年が明けたらまとめる。ぼんやり今考えていること。

  • 転職
  • 開業(副業)してみる
  • 新しい言語を学ぶ
  • リモートワークに関する情報発信をする
  • リモートの勉強会を立ち上げる
  • マネジメントの技術を学ぶ
  • 子供がほしい

2019年は、個人のライフスタイルにあった働き方ができる活動に沢山コミットしていきたいと思う。このような気持ちが生まれたのは、結婚によってライフスタイルが大きく変わったのが発火点だが、今までに見てきた職場環境やトラウマが燃料になっている。

ということで、お仕事のお誘いやリモートワークやエンジニア採用関連の登壇依頼お待ちしております〜!来年も @corocn よろしくお願いします!

ALB + Lambda + Ruby に認証機能を付けてみる

こんにちは、@corocn です。 この記事は Misoca+弥生 Advent Calendar 2018 3日目の記事です。 最近は認証認可やFIDO2.0周りを中心に遊んでます。

さてAWS re:Invent 2018では次の新機能が発表されました。

これを組み合わせると、ALBのエンドポイントを叩くことでRubyで記述されたLambdaを実行することができます。 既に沢山の方が試して、記事をあげていますね。

さらに半年ほど前に次のような機能の発表がありました。

ALBがOpenID Connectに対応したとの話です。ALBに簡単に認証機能を組み込むことができます。

これらを組み合わせて、セキュアなRubyの実行環境を作ろうというのが今回のネタです。

LambdaでRubyを動かす

まずはLambdaをRubyで記述します。ランタイム選択時にRuby 2.5を選択するだけです。 デフォルトのコードは次のようになっています。

require 'json'

def lambda_handler(event:, context:)
    # TODO implement
    { statusCode: 200, body: JSON.generate('Hello from Lambda!') }
end

ALBからアクセスする場合、この返り値では不十分なので修正します。

require 'json'

def lambda_handler(event:, context:)
{
    statusCode: 200,
    statusDescription: '200 OK',
    isBase64Encoded: false,
    headers: {
        'Content-Type': 'text/html; charset=utf-8'
    },
    body: 'Hello from Lambda!',
}
end

以下の記事を参考にしました。

ALBとLambdaを連携する

ALBとの連携はLambdaのトリガーの追加でも良いし、EC2のダッシュボードからALBを作成して、ターゲットに追加しても良いです。

f:id:corocn:20181203183924p:plain

最終的に認証機能を付与するので、ALBのエンドポイントはHTTPS対応しておく必要があります。ドメインや証明書の準備が必要です。

今回は https://api.corocn.me/ というAPIを作ってみました。(いつもはお名前.comでドメインを取得してるので、Route53で取得してACMで証明書も取得してみました。)

f:id:corocn:20181203183445p:plain:w300

叩くとこんな感じで返ってきます。

Googleの OAuth2.0 クライアントを作成する

ALBにGoogle認証を追加します。事前にGCPでOAuth 2.0のクライアントを作成しておきます。

「OAuth同意画面」から アプリケーション名を入力するのと、承認済みドメインにALBに紐づけたドメイン名を追加しておきます。

f:id:corocn:20181203184546p:plain:w500

認証情報を作成からOAuthクライアントIDを選択します。

f:id:corocn:20181203184727p:plain:w500

リダイレクト先は次の値を設定します。

https://<YOUR_DOMAIN>/oauth2/idpresponse

ALBの認証リダイレクトはこのパスで固定です。

f:id:corocn:20181203185112p:plain:w500

クライアントIDとシークレットは後ほど設定するので控えておきます。

ALBにOIDC認証を追加する

ALBのルール設定で認証ルールを追加します。

CognitoやOIDC(OpenID Connect)が使えますが、Google認証を使うのでOIDCです。

f:id:corocn:20181203185421p:plain:w500

f:id:corocn:20181203185722p:plain:w500

ポイント

  • クライアントID・シークレットは控えておいた値を入力します
  • 一度設定したら、設定を更新するたびにシークレットの入力が必要になります。注意です。
  • スコープに「openid profile email」をすることで、名前やメールアドレスの情報が取得でき、Lambda側に渡ります。

各種エンドポイントは次のようになります。

設定情報は、OpenID Connect  |  Google Identity Platform  |  Google Developers に書いてありました。

Lambda側で認証情報を使う

Lambda側にはヘッダの x-amzn-oidc-data にJSON Web Token(JWT)形式で格納されます。JWTの詳しい仕様は、 JSON Web Tokens - jwt.io あたりを参照すると良いです。

require 'json'
require 'base64'

def lambda_handler(event:, context:)
    jwt = event['headers']['x-amzn-oidc-data']
    header, payload, signature = jwt.split('.')
    profile = JSON.parse(Base64.decode64(payload))
    {
        statusCode: 200,
        statusDescription: '200 OK',
        isBase64Encoded: false,
        headers: {
            'Content-Type': 'text/html; charset=utf-8'
        },
        body: "Hello, #{profile['name']}!! Your email is #{profile['email']}"
    }
end

JWTはBase64EncodeされたJSONがドット区切りでつながっているだけです。ペイロード部にprofile情報が含まれていますので、splitしてdecodeすれば必要な情報は取り出せます。

f:id:corocn:20181203191226p:plain:w400

認証情報をLambdaに引き渡すことができました。

特定ユーザーのブロック

現状ですとGoogle認証を通過した全てのユーザーがAPIにアクセス可能です。 例えばG Suiteの自組織内のみ認証を通したいという場合が考えられます。

この場合、Lambdaの最初でemailの値を見て弾くのが一番簡単な処理ですが、そもそもLambdaまで到達させたくありません。 本来であれば認証の段階でユーザーをブロックしたいと思うので、その場合は Auth0Amazon Cognito を活用して処理を組み込むことになりそうです。

最後に

証明書の設定は面倒ですが、API Gatewayよりもクセなく使えて簡単でした。 OIDCのIdPとしてAuth0と連携させようと思ったのですが、時間が無かったのでまたどこかで試してみようと思います。