Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

new post: 2024-06 振り返り #324

Merged
merged 8 commits into from
Jul 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified bun.lockb
Binary file not shown.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
"concurrently": "8.2.2",
"eslint": "8.56.0",
"eslint-config-next": "14.1.4",
"iconv-lite": "0.6.3",
"jsdom": "24.1.0",
"prettier": "3.2.5",
"textlint": "14.0.4",
Expand Down
25 changes: 22 additions & 3 deletions scripts/fetch-ogp.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { promises as fs } from 'fs'
import { decode } from 'iconv-lite'
import { JSDOM } from 'jsdom'

const files = await fs.readdir('./src/contents/posts')
Expand All @@ -17,8 +18,6 @@ const urls = (
)
).flat()

console.log(urls)

type Data = {
[url: string]: {
title?: string | null
Expand All @@ -27,9 +26,29 @@ type Data = {
}
}

const getCharset = (res: Response): string => {
const defaultCharset = 'utf-8'

const contentType = res.headers.get('content-type')
if (contentType == null) {
return defaultCharset
}

const regex = /charset=([^;]+)/i

const matches = contentType.match(regex)
if (matches && matches[1]) {
return matches[1].toLowerCase()
}

return defaultCharset
}

const fetchOgp = async (url: string): Promise<Data[string]> => {
const res = await fetch(url)
const html = await res.text()
const buf = await res.arrayBuffer()
const html = decode(Buffer.from(buf), getCharset(res) || 'utf-8')

const dom = new JSDOM(html)

const data = {
Expand Down
23 changes: 15 additions & 8 deletions src/components/mdx/CardLink.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,17 +54,24 @@ export const CardLink: React.FC<Props> = ({ href }) => {
gap={6}
>
{ogp.image && (
<Image
src={ogp.image}
alt="Link preview image"
height="100%"
<Box
minW="min(20%, 150px)"
maxW="min(40%, 250px)"
maxH="200px"
objectFit="cover"
/>
display="flex"
alignItems="center"
justifyContent="center"
>
<Image
src={ogp.image}
alt="Link preview image"
height="100%"
maxH="200px"
objectFit="cover"
/>
</Box>
)}
<Box flex="1">
<Text fontSize="md" fontWeight="bold">
<Text fontSize={15} fontWeight="bold">
{ogp.title}
</Text>
<Text fontSize="sm" color="gray.600">
Expand Down
144 changes: 144 additions & 0 deletions src/contents/posts/202406-review.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
---
title: '2024 年 6 月 振り返り'
date: '2024-07-10T00:58:28+09:00'
---

もう 7 月に入って一週間以上経つが、6 月の振り返りをしていく。端的に総括すると音ゲー再燃の月だった。
先月の振り返り: [2024 年 5 月 振り返り | fohte.net](/blog/posts/202405-review)

# ゲーム

## DDR

6 月の最大の変化は DDR を始めたこと。DDR はずっと認知していたけど、運動自体に苦手意識があってやっていなかった。が、さすがにたるんだ体をなんとかせねばいけないと一念発起して DDR をやり始めた。ジムに行くことも考えたけど、結局音ゲーが一番楽しいしゲームセンターに行く習慣もあったので、運動習慣をつけるハードルとしては一番低かった。

いまはだいたい一週間に 5 日くらい、1 日 3 クレほどやっている。最高クリア難易度は 15。15 ギリギリクリアできるかできないか程度。
エクササイズくらいの感覚なのであまり明確な目標は立てていないけど、年内に 19 なにかクリアできたらいいなあとはぼんやり思っている。よくわかってないのでめちゃくちゃハードル高い目標かも。

<Mastodon url="https://social.fohte.net/@fohte/112745713959343317" />

### DDR 用の靴とウェアがチートアイテムな件

DDR はもはやスポーツなのではと思うくらい疲れる。特に脚の脛あたりが苦しい。単に運動不足というのもあるだろうけど、靴とコンプレッションウェアを買ってみた。するとこれが劇的に良かった。もはや Pay to Win だ。

靴はスニーカーだったので厚底のランニングシューズに買い替えた。厚底かつグリップも効くのでやりやすい。パネルの段差がほとんど気にならなくなるし、パネルを押す感覚も頑張って足で押している感じから足を乗せるだけに変わった。
自分の場合は足幅が広いらしく、4E でちょうどフィットする靴が見つけられたのも大きい。あまりのフィット感に靴を履きたくなる。ずっとかかとの靴擦れに悩まされていたのもあり、ここ最近で最も買って良かったものだと感じている。

<CardLink href="https://amzn.to/4cy4Mho" />

コンプレッションウェアは想像よりもはるかに効果があって驚いた。屋外スポーツをしている人がよく着ているという印象しかなく、暑そうだし日焼け止めなのかなくらいの解像度だったのだが、実際に着用して DDR をしてみたらチートのように体が軽く感じた。脛の痛みを全然感じなくなったのと、プレー後の疲労が小一時間もすれば何もなかったかのように回復するようになった。
全然原理を理解しておらず感覚でものを言うのだが、密着させることで筋肉が無駄に動くのを抑制して疲労を軽減させているのかなと感じた。
また別の効果だと、固有受容感覚 (Proprioception, 自身の体がどこに位置しているのかを把握する感覚) が強化されるという研究があるらしい [^proprioception]。確かに感覚的にコンプレッションウェアを着ていない状態よりも自分の体をコントロールしやすく感じる。
ただゲーセン行くだけなのにガチで運動する服装で行くのは若干の恥じらいがあるけど、そんなことが気にならなくなる程度には効果があるので、日々の DDR に欠かせないアイテムになった。

[^proprioception]: [コンプレッションウェアは本当にパフォーマンスとリカバリーに役立つのか?|JAPAN WELLNESS INNOVATION](https://note.com/jwi/n/nd0276c2a1bcf)

<CardLink href="https://amzn.to/3XV0LyQ" />
<CardLink href="https://amzn.to/4eNv40u" />

## IIDX

DDR を始めたついでにまたやり始めた。DDR のすぐ近くに置いてあるので、なんとなくやってみたらこれがまた面白かった。DDR を 3 クレほどプレーして生まれたての子鹿になったあとに IIDX をやる習慣がついた。

<Mastodon url="https://social.fohte.net/@fohte/112745743455097243" />

いまはかなり面白くて、全盛期ほどまではいかないもののそれなりの頻度でプレーしている。面白いと感じる要因はいくつかある。

- 環境が改善されていつでも連コ (待ちなしでプレー) できるようになった
- なにかに追われるかのようにプレーする必要が無くなった

前者については、1 年以上プレーしていない間に環境が変わっていた。筐体数が 2 倍ほどになって、以前のように常に混みすぎて待たないとプレーできず、ただ時間がなくなるだけという悲しい思いが減って嬉しい。とはいえゲーセンからすると稼働率 100 % を維持できなくなったのは厳しい気がしているし、それによっていつか筐体数が減るのではないかと危惧もしている。遊べるときに遊んでおきたい。

後者については、特に HEROIC VERSE と CastHour あたりではライバルと切磋琢磨したり大会に追われたりととにかく何かに追われてプレーしていることが多かった。大会はかなり大変で、普段プレーしないような譜面を対策のために何度もプレーする必要があった。対策に重点を置くので、必然的に好き・得意な譜面よりも苦手な譜面を何度もプレーすることになる。曲を聴き込んで譜面研究もして連日ゲーセンにこもるのは刺激的でもあり大変だった。
いまではその苦悩から解放されて、ライバル登録もせず大会出場を目標にすることもなく自由気ままにプレーできていてとても面白い。BPI も見ていない。アリーナもしない。自己ベストと自己歴代だけは見ているけど、そのくらい。好きな譜面を好きなタイミングで好きなだけプレーできるというのはとても楽しく、初心に帰ったような気持ちで日々 IIDX を楽しんでいる。

# エンジニアリング

## 登壇

登壇は落ち着いた。3-5 月の期間では 8 回も登壇やらのイベントをこなしていたらしいが、6 月は落ち着いて登壇はしなかった。というよりいろいろ大きめのカンファレンスに Proposal は出していたのだが、全て落ちてしまった。まだまだ Proposal を通すという観点では実力不足らしい。
幾度とない登壇で燃え尽きた感は否めないけど、登壇は得られるものが多いし [^登壇メリット] 、まだ登壇を始めとする発信は続けたいなと思っているので、怠らずにやっていきたい。

[^登壇メリット]: [RubyKaigi で LT 初登壇したきっかけと感想 - Speaker Deck](https://speakerdeck.com/fohte/rubykaigi-te-lt-chu-deng-tan-sitakitukaketogan-xiang)

## yabai

[yabai](https://github.com/koekeishiya/yabai) という macOS でタイル型ウィンドウマネージャー的なことをシミュレートするツールを使い始めた。以前 Ubuntu をメイン OS として使っていたときに i3wm を使っておりとても気に入っていたのもあって、便利に使えている。

Ubuntu → macOS に変えてからはそんなにタイル型ウィンドウマネージャーの必要性は感じていなかったのだが、最近自宅のモニターをウルトラワイドモニターにしたこともあって、広い画面領域を有効活用するためにウィンドウをいい感じに整理してくれるツールを探していた。レイアウト調整用のスクリプトを書いたりもしたが、いまいち柔軟性に欠けたりして、手に馴染むものがなかった。そこでタイル型ウィンドウマネージャーなら全てを解決してくれるのでは、という期待から使ってみたというところ。

いまのところ、ウルトラワイドモニターを活用する幅が広がって割と手に馴染んでいる。ウィンドウを雑に垂直方向に 3 分割できるし、水平方向にも分割しやすくて便利。基本的に以下のようなウィンドウレイアウトにしていて、ここにウィンドウが新しく生えたら縦に 4 分割されたり中央が水平 2 分割されたりという感じ。

```text
+-----------------+-----------------------------+-----------------------+
| | | |
| Memo | | Browser or |
| | Terminal or | Terminal |
| | Browser | |
+-----------------+ +-----------------------+
| | | |
| Calendar | | ChatGPT App |
| | | |
| | | |
+-----------------+-----------------------------+-----------------------+
```

いまの設定は dotfiles に置いているので参考までに。

- yabairc: https://github.com/fohte/dotfiles/blob/4144fce85406465f10a3dda41bb82eabe8a2f1cd/config/yabai/yabairc
- yabai のショートカット (Hammerspoon): https://github.com/fohte/dotfiles/blob/4144fce85406465f10a3dda41bb82eabe8a2f1cd/config/hammerspoon/rc/yabai.lua

# コンテンツ

⚠️ ここからはネタバレが含まれる可能性があります ⚠️

## 無職転生 2 期 (アニメ)

<CardLink href="https://mushokutensei.jp/" />

1 期も最高だったが 2 期もとにかく最高だった。シルフィとの微笑ましい生活もよかったが、ロキシーとの再会やルーデウスの家族愛や絶望が存分に描かれていてとにかく良かった。登場人物が皆いいやつすぎる。全員いい人なんだけど、パウロが特に良きパパすぎた。いま 1 期を見返すとそれはもう格別の良さがありそう。

テーマはよくある (最近はブームが落ち着いた?) 異世界転生なろう系だけど、ただ主人公が無双するだけではなく後悔や絶望を味わいながら、そこから這い上がり幸せを掴み取っていく展開が本当に良い。自分が人生で見た中で一番好きな作品がリゼロなのだけど、それと肩を並べるほどに好きな作品だ。まだ見ていない人は 1 期からぜひ見てほしい。
3 期待ってます。

## アルマ (漫画, 完結済み)

<CardLink href="https://amzn.to/3Wg0t4s" />

全 4 巻。自分が好きなポストアポカリプス系 SF 作品。義人と呼ばれるロボットに支配された世界で、数少ない人間が抵抗し人間の世界を取り戻す、という物語。
主人公であるレイが孤立した状態から、周りを巻き込みながら義人と人間の対立と衝突を解決していく展開が面白かった。サクサクと物語が進んでいき、話全体が綺麗にまとまっているという印象。絵も綺麗だし、非の付け所がない良い作品だった。ちゃんとネタばらしも用意されていて、読後感も良い。最終巻でのネタばらしは想像の斜め上をいく内容だったので、ぜひ読んでほしい。

## 菌と鉄 (漫画, 未完結)

<CardLink href="https://amzn.to/4eU91Fy" />

現在 5 巻まで発売されている未完結作品。これまたポストアポカリプス系 SF 感がある。閉鎖空間で訓練を受けるダンテという主人公が外の世界を知り、世界を牛耳る存在を倒すために仲間たちと奮闘する物語。
戦闘! 仲間! みたいな王道漫画のような要素もありつつ、突然のポストアポカリプス系 SF 要素があり、そしてそれらがうまく融合して伏線回収されていくのが特に面白いと感じたポイント。読み進めていくにつれて見えていなかった伏線が回収され、そういうことだったのかと膝を打つような展開が続いていくのが面白い。
続きが楽しみな作品。

## 恋する寄生虫 (漫画, 完結済み)

<CardLink href="https://amzn.to/3WdoZ6l" />

全 3 巻。ひじりという不登校の少女と高坂という無職で潔癖症の青年のラブコメ (のようなもの)。タイトルにある通り「寄生虫」がこの物語の主軸。人に寄生するというのがミソ。寄生された上で、自分の在り方や人との関わり方を探っていくような作品。
全体を通して面白かった。くどさがなくちょうどよくまとまっている作品で、謎や伏線が小気味よく回収されていくのが特に良かったポイント。設定も斬新に感じた。ラブコメ要素が少しあるミステリアスな作品、という印象だった。個人的にはあと 1, 2 巻長くしてラブコメ要素や日常的な要素が増えていればより読後感が良かったかなと思うが、3 巻で綺麗にまとまっているのもそれはそれで良かった。

# 生活

## 自炊

自炊 (SP BEGINNER) を始めた。スーパーで適当な海鮮を買ってきてご飯の上に乗せるだけの簡単なお仕事。
いままでは完全栄養食だったり Uber Eats だったり nosh だったりに頼り切りだったのだが、何かを食べたいと思ったときに絶妙に食べたいものが見つからずに若干困っていた。それなら料理を自分で作れば良いのでは? とふと思い立って、簡単なところから料理とは言いがたいが雑などんぶりの自作から始めた。市販のキーボードに良いものがないから自作する、みたいなノリ。自分が好きなものを好きなように味付けして好きなだけ食べられるという体験が良い。
自分は賞味期限管理が苦手なので、凝った料理はまだまだできなさそう。そのうち気合が生まれたらやりそう。やれたらやる。

## CHILL OUT

<CardLink href="https://amzn.to/3S2lVY9" />

chill する (落ち着かせる) ためのドリンク。割と有名なのかな。エナジードリンクの逆のドリンクだと思っている。
chill するための作用は正直懐疑的なのだが、単純にジュースとして美味しい。味は酸っぱさがないグレープフルーツジュースという感じ。CHILL OUT ゼログラビティであれば 0 kcal なので無限に飲んでも罪悪感がない。風呂上がりに冷えたジュースを飲んでぼーっとしているとかなりリラックスできて結果的にめちゃくちゃ chill できる。CHILL OUT の効果なのかは知らない。
chill しきってベッドに横たわって熟睡するのが最近のナイトルーティン。

## 入浴剤

浸かる CHILL OUT (?)。入浴する習慣はあるものの入浴剤を使う習慣は全くなかったのだが、スーパーで良い香りが気になってなんとなく買ってみたらハマった。香り以外にも効能があるようだが、香りでリラックスできて最高に chill できる。入浴しながら良い香りの中で Kindle で漫画を読むのが最近の趣味。
Loading