👋 Hello I’m nove-b

Blogger / OSSer / Dev / Bookworm / Twin Dad

【2025年12月】12月は一瞬で過ぎ去る

12月に読んだ本 まるで渡り鳥のように 藤井太洋SF短編集 (創元日本SF叢書) 松岡まどか、起業します AIスタートアップ戦記 現代生活独習ノート (講談社文庫) 七つの怖い扉 (新潮文庫) あまからカルテット (文春文庫 ゆ 9-2) 団地のふたり (双葉文庫 ふ 22-05) I love letter アイラブレター (文春文庫) 7冊だった。なんか社会人になり、起承転結がはっきりしていない本を読めなくなった気がする。空想の中でくらい、奇想天外な展開を求めているのかもしれない。 いい距離間の友達が主人公の本が多かった。 現実でも年末ということで食事に誘われることが多く、なんか色々考えた。友達は大切にした方がいいって考えながら断った。 ウィルス性じゃない胃腸炎 双子の片方がウィルス性じゃない胃腸炎になった。ウィルス性じゃない胃腸炎ってストレスとか疲れからくるらしく、1年の疲れが出たのかもしれない。保育園に頑張って通って偉かった。 しかし登園時いつになったら泣かなくなるんだろう。 泣く癖に帰りは帰りたがらないらしい。 ドクターイエロー ドクターイエロー見に行ってきた。 石拾ってるほうが楽しそうだった。 [image or embed] — nove-b (@nove-b.dev) 2025年12月7日 12:42 2回目のドクターイエローを見に行った。前回は小田原駅に入ってくるのを見たので、次は走っているのを見せたいと思い、近くで見られる場所を探して見に行った。たぶん、子どもたちはドクターイエローがそろそろ見納めで見れることが珍しいということを知らない。それでも機会は与えたいと思うあたり、自分でもしっかり親をやっていると思う。 年末は 公園 鎌倉 公園 公園 で、終わる。 公園に行かない時間は、追い込みの大掃除、そして夜は妻と桃鉄に興じる。 仕事がないと本当に平和な日々を送れる。 旅行に行きたい 1月にはディズニーに行く予定を立ててる。 で、その次は大井川鉄道を見に行こうかって話している。 子どもの興味が変わるたびに旅行先がどんどん出てきて、わりと充実している。 Macにした armのサーフェスでandroid studioが使えないという事実を知り、Macを買うかって思っていたところ、会社のMacに空きがでたので所有権を得ることができた。Macのキーボード打ちにくいけど、わりかし満足している。環境構築が楽になったので、それだけで満足。 操作性というかOSレベルでWindowsとそれほど変わった気はしない。 ちなみにサーフェスのほうがかっこいいと思っている。 vite-pwa-pluginのコードを読んでいた 一部実装でうまくいかない箇所があったので、コードを読んで原因を追究していた。解決はできなさそうだったけど、原因の理解はできた。AIによって0~1が楽になり、個人開発に魅力がなくなってきて、複雑で大規模なコードのバグを修正する方がやりがいを感じるようになってきた。 12月はこれくらい、いつも早く終わる。

2025年12月31日 · 1 分 · nove-b

2025年を振り返ってみる

また年が変わった。 毎年変わらず、恒例の1年振り返りをすることにする。 家のこと 保育園のルーティン 家庭では、保育園の通園が始まり、時間のサイクルがまた変わった。 5時半に起き、自分の準備をし、子どもを起こし、準備をさせて保育園に連れていく。 泣いている姿に後ろ髪引かれつつ保育園を後にし、残っている家事を終えたら会社に向かう。 っていうルーティンができた。 結構辛かったけど、流石に慣れてきた。 たぶん子どもたちも慣れてきたおかげで少しづつ楽になってきた。 いつかこちらを見ずに保育園に走っていくことを考えると、いま離れる時に泣いてくれるのも貴重なのかもしれない。 自分に時間が、余裕がなくなると、その貴重な時間を無駄にしちゃうので、 子どもがいるときは無駄にしないで向き合いたいなあって思っている。 お出かけ 子どもたちの好きが増えて色々なところに行くことが楽しくなってきた。 印象に残っているものは、 ディズニーランドと星野リゾート Post by @nove_b@social.nove-b.dev View on Mastodon プラレール博 ディズニーランドに日帰り 大宮鉄道博物館 Post by @nove_b@social.nove-b.dev View on Mastodon 軽井沢に2泊3日 Post by @nove_b@social.nove-b.dev View on Mastodon サンリオピューロランド おかあさんといっしょ スペシャルステージ 七五三 Post by @nove_b@social.nove-b.dev View on Mastodon アンパンマンミュージック 秩父に1泊2日 子どもが生まれて旅行の世界も広がった。 [image or embed] ...

2025年12月31日 · 1 分 · nove-b

Angularのライブラリを作成し、GitHub Packagesで共通化、複数のAngularプロジェクトで使用する

はじめに Angularで複数のプロジェクトを作成している。基本的なデザインシステムがあるのでそれを各プロジェクトで使用したいのだが、プロジェクトごとで二元管理をしたくないので、submoduleを使用していたんだけど、運用が面倒なのでGitHub Packagesに移行することにした。 Angularでライブラリを作成しGitHub Packageで公開するメモを書いておく。 Angularライブラリとは まずそもそそもAngularのLibraryとは、 Angularライブラリは、コンポーネント、サービス、ディレクティブなどの再利用可能なコードをまとめたパッケージです。これらは単独で実行することはできず、Angularアプリケーションにインポートして使用されます。 とのこと。 GitHub Packagesとは そしてGitHub Packagesとは GitHub Packagesは、コンテナやその他の依存関係を含むソフトウェアパッケージをホストおよび管理するためのプラットフォームです。ソースコード管理とパッケージ管理を同じGitHub上で一元化できる点が大きな特徴です。 とのこと。 GitHub Packagesの利用シーン GitHub Packagesの利用シーンとしては、 組織内でのみ共有したい非公開のライブラリやコンポーネントを、npmやDocker Hubのような外部サービスではなく、GitHub内で安全にホストしたい場合。 ちなみにnpmパッケージも非公開で公開できるらしい。 ただ有料らしいので、制限付きとはいえ無料で非公開設定ができるという点では、GitHub Packagesの方が有用そうだった。 GitHub Packagesの制限 制限は ストレージ容量:500 MB データ転送量:1 GB/月 (月間) とのこと。 利用枠的にUIコンポーネントを共有する分にはなんの問題もない気がする。 Angularライブラリの作成 まずはAngularのUIライブラリーを作成する。 user@nameMacBook-Air filename % ng version _ _ ____ _ ___ / \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _| / △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | | / ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | | /_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___| |___/ Angular CLI: 19.2.19 Node: 22.7.0 Package Manager: npm 10.8.2 OS: darwin arm64 Angular: ... Package Version ------------------------------------------------------ @angular-devkit/architect 0.1902.19 (cli-only) @angular-devkit/core 19.2.19 (cli-only) @angular-devkit/schematics 19.2.19 (cli-only) @schematics/angular 19.2.19 (cli-only) バージョンとか前提はこんな感じだった。 ...

2025年12月13日 · 2 分 · nove-b

vite pwa pluginでreact router v7がpwaにできない理由を調べてみた

React Router v7で作成したウェブアプリをPWA(インストールに対応のみ)にする ローカルのvite-plugin-pwaを、手元のReact Router v7プロジェクトで直接利用する方法 過去にreact router v7がvite-pwa-pluginでpwa化できないと言うことを言ってきた。 実際のIssueはFeature Request: Vite PWA Support for React Router 7 #809←こちら。 問題の現象 まず起きている事象としては、 manifestの作成はできているけど、 index.htmlにスクリプトの挿入がされない pwaの機能が使えないとかそう言う次元ではなく、そもそもvite-pwa-pluginをそのまま使おうとするとpwaにすらならない。 manifestは生成されているのでroot.tsxに { rel: "manifest", href: "/manifest.webmanifest" } を追加すればpwa化はできるが、vite-pwa-pluginの使い方ではない。 実際にコードを動かしてデバックする方法はこちら 原因の調査 まずはなんでindex.htmlでmanifestが読み込まれないかを実際にコードを読んで理解を試みた。 export function VitePWA(userOptions: Partial<VitePWAOptions> = {}): Plugin[] { const ctx = createContext(userOptions); const api = createAPI(ctx); return [ MainPlugin(ctx, api), InfoPlugin(ctx, api), BuildPlugin(ctx), DevPlugin(ctx), AssetsPlugin(ctx), ]; } これがvite-pw-pluginを構成する関数群。 で、コードを読んでいくと開発環境の場合は、DevPlugin(ctx),でscriptを挿入記述らしきものを見つけた。 transformIndexHtml内でtransformIndexHtmlHandlerが呼び出される transformIndexHtmlHandler内のhtml = injectServiceWorker(html, options, true)が実行される。 headにmanifestが登録される仕組み つまりこれが発火していない。 関連するIssue で、いろいろ調べてみると Vite plugin transformIndexHtml does not work #12736 こんなissueを見つけた。 The transformIndexHtml is never called. This means a whole set of vite plugins will not work without any error message. ...

2025年12月13日 · 1 分 · nove-b

【2025年11月】たぶん今が一番かわいい

11月に読んだ本 シャーロック・ホームズの凱旋 世界一流エンジニアの思考法 ミシンと金魚 三千円の使いかた 君のクイズ 勿忘草の咲く町で メイド・イン京都 今月は7冊と結構読めた。 寒くなって湯船に浸かるようになり、読書時間が増えたことが読書量につながった。 これだけ読んで無料って図書館が優秀すぎる。 予約と返却期間を考えるのは面倒くさいけれど、(700 * 7)円、得しているのはでかい。 あとキンドルアンリミッド縛りを辞めたのも読書量が増えた要因かもしれない。 不要なものをハードオフに売った 青春の思い出ギター、もうずいぶん触ってないし、誇り被っていたので思い切って売ることにした。 ついでに他の不用品もいくつか売りに出した。 結果、8万円になった。 できる限り物を持たないようにしたいので、内田百閒の全集も売ろうとしたけどそれは止められた。 別に読んだしいらないんだけど、もう少し置いておけば値上がりするかもしれないので、もう少し大切にしまっておく。 ...

2025年12月1日 · 1 分 · nove-b

ローカルのvite-plugin-pwaを、手元のReact Router v7プロジェクトで直接利用する方法

React Router v7でvite-plugin-pwaで使えないという情報をもらった。 確認したところ確かに使えないことが確認できたので、React Router v7で作成したウェブアプリをPWA(インストールに対応のみ)にするに急いで「(インストールに対応のみ)」という文言を追加した。 どうやらインストールのみ対応であれば問題はなさそうだった。 せっかくなのでなぜうまく使いないのか確かめてみようと思い立った。 npmでインストールしても色々試せないので、ローカルに置いたvite-plugin-pwaで試してみることにした。 該当するissueは、こちら。 Feature Request: Vite PWA Support for React Router 7 #809 pnpmの ワークスペース(workspace) 機能を使うのが最も簡単 ってgeminiが言っていたので、それを手掛かりにする。 そもそもpnpmのワークスペースとは、 pnpmのワークスペースは、複数のパッケージ(プロジェクト)を単一のリポジトリで管理するための機能です。これは、一般的に「モノレポ(Monorepo)」と呼ばれる開発スタイルを実現するのに役立ちます で、これもgeminiが言っていた。 vite-pwa-pluginは複数のフレームワークに対応しているのが特徴で、そのすべてのプロジェクトpnpmのワークスペースを用い1つのリポジトリで管理しているとのことらしい。 モノレポってフロントとバックエンドを1つのリポジトリで管理するためのものって決めつけていたので、こういう使い方もできるのかと驚いた。 本題に戻しpnpm-workspace.yamlというファイルを見に行くと、 packages: - docs/ - examples/* onlyBuiltDependencies: - sharp と書かれている。 で、examplesを見に行くと、 examples\vue-router examples\react-router examples\solid-router とか対応しているプロジェクトがあるのでここに各プロジェクトを作成すればいいっぽい。 プロジェクトを作成してみる npx create-react-router@latest react-router-v7 ↓新しくgitを初期化するか聞かれるけど、すでにgit管理されたプロジェクトの中にいるのでNoを選択する。 Initialize a new git repository? No ↓npmを使うか聞かれるけどvite-plugin-pwaはpnpmを使用しているのでNoを選択する。 Install dependencies with npm? No これでインストールが完了した。 examples以下にプロジェクトが作成されていることを確認できる。 examples\react-router-v7 vite-plugin-pwaをインストールし、自分自身を見るように修正する ここでいう自分自身はcloneしたvite-plugin-pwaのこと。 まずは作成したプロジェクトにvite-plugin-pwaをインストールする。 pnpm add vite-plugin-pwa -D インストールすると最新のvite-plugin-pwaがインストールされるので、自分自身を見るようにする。 ...

2025年11月16日 · 1 分 · nove-b

【2025年10月】イベントが盛りだくさんだった

10月に読んだ本 嫌いなら呼ぶなよ 愛なき世界(上) 愛なき世界(下) アーセナルにおいでよ 図書館本を本格的に読み始めた。 文庫本だけじゃないので持ち運びがつらいときもあるけど、無料で人気作が読める図書館って便利すぎる。 この世の中でえもっとも有益な公共サービスかもしれない。 10月は4冊読んだ。 中でも綿矢りさが圧倒的だった。 最年少芥川賞受賞時からずっと天才のまま。 盛りだくさんの10月 ハロウィンツリーを出した 過去に買ったクリスマスツリーだけど、あまりにも使う頻度が少なすぎたので、ハロウィンツリーなるものにして活用することにした。 ハロウィンに全くなじみないし、どういうイベントかも知らないけど可愛いので良しとする。 幸せを掴みに行く 見ると幸せになれるというドクターイエロー。 引退したということが話題になって久しいが、どうやら引退したのは特定の機体の話であり、一部のドクターイエローはまだ現役らしい。 JR東海のドクターイエロー(T4編成)は、老朽化のため2025年1月に検測走行を終了し、引退しました。JR西日本のドクターイエロー(T5編成)も2027年頃に引退予定です。今後は、営業車両に搭載される検測機能によって後継される予定です しかもしっかり調べてみるとどうやら走る日時の予測が出ており、それなりに正しそうだった。 それじゃ、会いに行こうということで小田原駅に見に行った。 わざわざ見に行くなんていう物好きいないと思ったら子どもずれの家族がわんさかいて、みんな子どものために頑張っているなって思うと少し幸せになれた。 今度は駅ではなく、走っているドクターイエローを見に行く計画を立てている。 引退までに、子どもがはまっている間にもう何回かは見にいきたい。 七五三のお祝い ...

2025年11月1日 · 1 分 · nove-b

とりあえずデプロイしたらキャッシュに惑わされたのでNuxtのユニバーサルレンダリングについて調べてみた

SSGでデプロイされていると勘違いしていた https://contributions.nove-b.dev/をNetlifyにデプロイしている。 Clone元はhttps://github.com/atinux/my-pull-requestsで、envを変更するだけで自分ようになるので、ソースコードを読まずにnuxi buildでデプロイした。 最近は静的ジェネレータをメインに触っていたせいか、SSGでデプロイされると思い込んでいたので、プルリクを出すたびにデプロイしなくちゃいけなく、デプロイの定期実行をどうしようと思い悩んでいた。 先日プルリクを出したあとに見に行くと、最新のプルリクが反映されており、勝手にデプロイが走ったのかと混乱した。 デプロイ履歴を見に行くとデプロイ履歴は更新されていない。 SSGじゃないんじゃと思い返して、試しにプルリクを出し、観察しに行くとプルリクが更新されておらず、さらに混乱する。 しばらく経ち再訪すると更新されていて大混乱したので、しっかりコードを見に行くことにした。 コードリーディングしていく CSR or SSR api fetch fetchしている部分を見に行くと、 const { data: contributions } = (await useFetch) < Contributions > "/api/contributions"; 特に特別なことをしていない。 ちなみにuseFetchとは、 このコンポーザブルは、との便利なラッパーを提供します。URL とフェッチ オプションに基づいてキーを自動的に生成し、サーバールートに基づいてリクエスト URL の型ヒントを提供し、API レスポンス タイプを推測します。 とのことだった。 調べてみると特定のレスポンスにおけるKeyだけを取得できるpickという機能とかssrとcsrを切り替えるserverとかあって便利そうだった。 パラメーター一覧 ちなみに全体でssrとcsrを切り替える方法は、nuxt.config.tsで export default defineNuxtConfig({ ssr: false, ... のように設定すると実現できるようだった。 つまり特別なことはしてないので、Nuxtのデフォルトのレンダリングをしていると思われる。 Nuxtのレンダリングモード Nuxtのドキュメントを見に行くとデフォルトはユニバーサルレンダリングというレンダリング方法らしい。 ユニバーサルレンダリングについて調べてみると、 また、ページが事前に生成されている場合は、キャッシュから完全にレンダリングされたHTMLページを返すこともあります。クライアントサイドレンダリングとは異なり、ユーザーはアプリケーションの初期コンテンツ全体を即座に取得できます。 とのこと。 そうすると、 SSGじゃないんじゃと思い返して、試しにプルリクを出し、観察しに行くとプルリクが更新されておらず、さらに混乱する。しばらく経ち再訪すると更新されていて大混乱したうえで、しっかりコードを見に行くことにした。 ここで即座に反映されなかったことが腹落ちした。 それでこのキャッシュに関してはisrのことを言っているっぽい。 調べてみるとnuxt.config.tsに $production: { routeRules: { '/': { isr: 60 * 5 }, '/api/contributions': { isr: 60 * 5 }, '/feed.xml': { isr: 60 * 5 }, }, }, という記述があった。 一度生成されると5分間 (60秒 * 5) キャッシュされてssrで生成された静的ページが表示されるようになる。 という仕組みになっていた。 便利なリポジトリは活用しつつ、勉強の一助にもしたいと思った今日この頃でした。

2025年10月20日 · 1 分 · nove-b

Hugoのテーマを変更したらnetlifyのビルドが失敗するようになった

HugoのテーマをPaperModに戻した Hugoのテーマをまた変更した。 コントリビュートとリリースとブログを一元管理したいということで自作のテーマを作成したけど、コントリビュートを自動で収集したくなったので、atinux/my-pull-requestsを使用することにした。 できたものはこれ、GithubのAPIから持ってくるのでこちらで運用する必要がない。 そういうわけで、hugo-Passageにあるコントリビュートカテゴリが必要なくなっため、ブログはブログだけを管理するように変更し、そのためにテーマを最初のhugo-PaperModに戻した。 Hugoのビルドは脆い で、戻してnetlifyでビルドしたところ、失敗した。 テーマを変えるとビルド失敗するのはよくあること?なのでnetlify上で定義しているHugoのバージョンを見直してみたりしたけど、一向にビルドが通らない。 原因はバージョンではなくビルドイメージ 他の原因かとエラーを探ると、 hugo: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by hugo) hugo: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by hugo) hugo: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by hugo) hugo: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by hugo) というログが残されていた。 Netlify のビルド環境にインストールされている GLIBC(Linux の標準ライブラリ) のバージョンが、あなたが使っている Hugo のバイナリが要求するバージョンより古い のが原因です。 とのことらしい。 確かにビルドイメージをUbuntu Focal 20.04からUbuntu Noble 24.04 (default)に変更したところビルドが成功した。 腑に落ちない ただそうするといままで成功していた意味が分からない。 腑に落ちないけれどChatGPTによると、 Netlify はビルド高速化のために、以前使った Hugo の実行ファイルをキャッシュしておく仕組みがあります。 とのこと。 つまり今までは最初に成功したときにHugoを使い続けていたのかもしれないとのこと。 それがいつのものかわからないし、どのバージョンかもわからない。 1:59:22 AM: Failed to fetch cache, continuing with build ただ確かにログを見ると以前の Hugo バイナリキャッシュが使えなかったと書かれていた。 なので、解決策としてはビルドイメージをUbuntu Noble 24.04 (default)を変更するという着地になった。 ...

2025年10月18日 · 1 分 · nove-b

【2025年9月】やっと公園に行ける気温になった

9月に読んだ本 成瀬は天下を取りにいく(新潮文庫) 「成瀬」シリーズ タイムマシンに乗れないぼくたち (文春文庫) 今月も2冊しか読めなった。 Kindleデバイスが古くなった&キンドルアンリミテッドを退会したという理由で紙の本に切り替えた。 久々の紙の本は思ったより軽くて、読みやすかった。 読みやすさで言えばKindleなんて比じゃないレベルで読みやすい。 ただ出先に何回か本を忘れ手持無沙汰になったので、Kindleは良かったと思うこともあった。 つまり一長一短ってこと。 今は紙の本にした。ただ明日はわからない。 図書館は最強という再発見 9月読んだ本は適当に書店で買った。そうすると当然紙の本が家にある。 本のデメリットは場所を取ることで、いままでの引っ越しでも何回もつらい思いをした。 今は家に内田百閒の全集を残し本を置かないようにしている。 そういうわけで、すぐに売りたいんだけど売る場所が家の近くにない。 そこで図書館に頼ることにした。幸いなことに歩いて行ける場所に図書館がある。 久々に、たぶん大学生依頼の予約をした。 ただなかなか来ないので、1冊普通に買っちゃった。 9月13日はトイレ記念日(再) 双子の片割れ(男)の方がトイレデビューした。 トイレデビューした日に外のトイレでもトイレデビューした。 度胸がある。 双子の片割れ(女)の方は家でのトイレは完璧だけど、外のトイレは怖がってギャン泣きする。 お出かけすると、トイレにいる時間のほうが長いかもしれない。 まだまだ先は長そうだけど、とりあえず2人ともデビューできた、お疲れさま。 おかあさんといっしょ ファミリーコンサートに応募して落ちた。 初応募で4列目が当たったのは奇跡だったのかもしれない。 まあ、仕方がないので諦める。 それとは別に3歳の1年間番組の観覧に応募ができる。 毎月25日までに頑張って応募し続ける。 とりあえず9月は応募した。 キックバイクにはまる 祖父母からもらったキックバイクに乗り始め、いい感じに興味を持ってくれたよう。 公園に行っては乗り回している。 双子用ベビーカー、テント、キックバイク2つと大荷物で大変だけれど、公園に長い間いれるようになったので行く甲斐ができた。 今までは他の子がたくさんいるともう帰ると言っていたけど、保育園のおかげが、成長か、まだ帰りたくないと言うようになった。 せっかく行っているので、そっちのほうが嬉しい。 転職活動の終結と再開 ずっと憧れていた企業に落ちたことは8月に書いた。 で、そういうわけならばと転職活動を辞めたんだけれど、実際にいろいろな企業の方と話すにつれ、楽しそうなプロダクトをたくさん見つけた。 ただ転職試験となると、自分自身の実力不足が露呈するかもしれない。 まあ、それも含めて自分の現在地を知るいい経験になりそうなので、面白そうなプロジェクトにはぶつかっていくことにした。 鍵っ子にしたくない というのも今後のことを考える。 鍵っ子が悪いわけじゃないけど、子どもが帰ってきたときに誰かが家にいてあげたい。 そのためには一馬力に近い状態を目指す必要があり、年収を上げる必要がある。 ...

2025年9月29日 · 1 分 · nove-b