Orcantus

Notes

測ってみた記録

道具を作る過程で実際に計測したこと・分かったことを置いています。 うまくいかなかった結果も、数字が残っているものはそのまま出します。

リバーシは探索だけで足りたが、どうぶつしょうぎは2.1GBの解析を59KBに削る必要があった

ブラウザ上だけで動くCPUを2つ作ったところ、リバーシは探索だけで足りた一方、どうぶつしょうぎは2.1GBの完全解析から59KBだけを切り出す必要がありました。持ち時間1200msに対し実測の最大は1205msでした。

無料の騒音計アプリを調べ直したら、iOS/Android対応と書いた前提が間違っていた

無料の騒音計・FFTアプリを調べ直したところ、代表格のNIOSH Sound Level MeterはiOS専用でAndroid版が存在せず、日本語にも対応していませんでした。統合機能と日本語対応の空白は、以前の調査より範囲は狭いものの、よりはっきりした形で残っていました。

GitHub・Zenn・Qiitaのコールアウト記法11種を、4色に正規化して1つの見た目にする

GitHub Alerts(5種)・Zennのmessage(2種)・Qiitaのnote(4種)という、由来も記号も違う11種のコールアウト記法を、Orcantus Notesのビルドパイプラインがどう解析し、4色のコールアウト(note/tip/warning/strong)へ正規化しているかを、実際にparseNoteへ通した入力と出力HTMLで示す。

検証用HTMLを他サービスのページへ注入して計測したら、結論を2件間違えた話

検証用HTMLを他サービスの実ページに注入してCSSを計測する方法で、見出し(h1)と番号付きリストの表示仕様を2件とも誤判定した。原因は注入したHTMLの構造が実物のDOM構造とわずかに違い、適用されるCSSセレクタがずれたこと。実記事のHTMLと配信CSSを直接読む方法へ切り替えて訂正した一部始終を開発ログから示す。

「25分で鳴るアラーム」が合わない人向けの手法には、すでに名前がついていた

集中が乗ってきたところで25分のアラームに切られる問題には、Flowtime Techniqueという確立した代替手法がありました。無料OSSのSuper Productivityが実装済みで、一方でForestなど主流アプリは固定時間のままです。

Markdownエディタ8本の価格と開発状況を調べ直したら、定番の1本が3年止まっていた

Markdownエディタの価格を公式ページで確認し、OSS勢の開発状況をGitHubのコミット数で調べました。StackEditは2023年5月から更新が止まり、MarkTextは逆に2026年だけで515コミットと復活していました。

PDFをアップロードせず処理できる無料ツールを調べたら、Windowsでは強い先行者がいた

PDFの結合・分割・圧縮をサーバーへ送らず処理できる無料ツールを調べました。大手は無料だとサーバー処理で、ローカル処理は有料プランの中。一方Windowsには全機能無料のPDF24という先行者がいます。

Color Sort(筒を注いで色分け)の生成ロジックを読む — その1: 筒の表現・乱数・配色・少なくとも1つの解の探索

Color Sort(筒を注いで色分け)の問題生成ロジックを、実装コードと再現可能な具体例から読み解く。前編は筒・色・容量の配列表現、乱数、ランダムな配色(dealTubes)と空筒の追加、深さ優先探索による「少なくとも1つの解」の存在確認まで。後編(その2)は生成ループ全体の却下・再試行条件、難易度プリセット、隠し色モードの表示上の扱い、失敗時の扱いを扱う。

Color Sort(筒を注いで色分け)の生成ロジックを読む — その2: 生成ループ・難易度プリセット・隠し色モード・失敗時の扱い

Color Sort(筒を注いで色分け)の問題生成ロジックを、実装コードと再現可能な具体例から読み解く。後編は生成ループ(generate)の却下・再試行条件、難易度プリセット(エンジン内蔵ではなくUI側の組み合わせ)、隠し色モードの表示上の扱いと生成側の関連条件、失敗時の扱いを扱う。前編(その1)は筒・色・容量の表現、乱数、配色(dealTubes)、少なくとも1つの解の探索(solve)を扱う。

Color Sort(筒を注いで色分け)の解き方 — 初級編: 筒の見方と、詰まらない注ぎ方の基本

Color Sort(筒を注いで色分け)の解き方ガイド・初級編。筒・色・容量・隠れた「?」の見方とタップ操作、undo/ヒント/答えの実際の挙動を説明したうえで、実際に生成した4層・5色・7本の盤面(seed notes-colorsort-easy-16)を、常に「今すぐ安全に進められる注ぎ」だけを選ぶ手順で15手すべて解ききる実例を示す。中級編(その2)・上級編(その3)に続く。

Color Sort(筒を注いで色分け)の解き方 — 中級編: 「同じ色を重ねるだけ」が通用しない場面を見分ける

Color Sort(筒を注いで色分け)の解き方ガイド・中級編。「注ぎ先の一番上と色が一致していれば常に安全」という初級編の進め方だけでは見分けられない場面を、実際に生成した4層・5色・7本の盤面(seed notes-colorsort-medium-easyset-234)で示す。合法な3択のうち1つだけが唯一詰みへ向かうことをsolve()で確認し、正しい側で最後まで19手を解ききる。初級編(その1)の続き、上級編(その3)へつながる。

Color Sort(筒を注いで色分け)の解き方 — 上級編: 色数が増えた盤面で、対称に見える2択を見分ける

Color Sort(筒を注いで色分け)の解き方ガイド・上級編。色数が多い盤面(5層・12色・14本)では、中級編と同種の「合流後にsolve()で確認する」判断が、序盤12手を終えたあとの一見対称な2択というより深い場面で必要になることを示す。実際に生成した盤面(seed notes-colorsort-superhard-3)で、2つの合流のうち1つだけが唯一詰みへ向かうことを確認し、全74手の解の完了までを検証する。初級編(その1)・中級編(その2)の続き。

Loop(数字で描く一筆の輪)の生成ロジックを読む — その1: 盤面表現・乱数・領域成長

Loop(数字で描く一筆の輪)の問題生成ロジックを、実装コードと再現可能な具体例から読み解く。前編はビット表現ではなく辺の通し番号による盤面表現・乱数・ランダム領域成長・答えの輪の構築まで。後編(その2)は制約伝播・一意解判定・ヒントの間引き・生成ループ全体を扱う。

Loop(数字で描く一筆の輪)の生成ロジックを読む — その2: 制約伝播・一意解判定・ヒントの間引き

Loop(数字で描く一筆の輪)の問題生成ロジックを、実装コードと再現可能な具体例から読み解く。後編はマス制約・ドット制約・閉路検出の3種の伝播、一意解判定(探索打ち切り含む)、ヒントの間引き、生成ループを扱う。前編(その1)は盤面表現・乱数・領域成長を扱う。

Loop(数字で描く一筆の輪)の解き方 — 初級編: 数字の0・4と、格子点の「0本か2本」だけで解く

Loop(数字で描く一筆の輪)の解き方ガイド・初級編。盤面の見方(マスの数字・辺のタップ操作・格子点の0本/2本ルール)を説明したうえで、これらの制約の繰り返しだけで最後まで解ける実例(4×4・seed notes-loop-easy-scan-43)を、最初の1手から解答完了まで再現可能な形で示す。中級編(その2)・上級編(その3)に続く。

Loop(数字で描く一筆の輪)の解き方 — 中級編: 制約だけで止まったら、1辺だけ仮に決めて矛盾を探す

Loop(数字で描く一筆の輪)の解き方ガイド・中級編。数字と格子点の制約を繰り返しても11辺が未確定のまま残るケースに対し、1辺だけ仮に輪と決めて波及させ、格子点で「輪が1本だけ集まり、他に足す辺がない」という矛盾に突き当たることで逆側を確定する手順を、5×5・seed notes-loop-medium-scan-90の実例で示す。初級編(その1)の続き、上級編(その3)へつながる。

Loop(数字で描く一筆の輪)の解き方 — 上級編: 仮置きを入れ子にして、奥で矛盾を見つける

Loop(数字で描く一筆の輪)の解き方ガイド・上級編。制約の伝播だけでは1マスの仮置きでも解けず、仮置きの中でさらに仮置きを重ねる(入れ子の仮置き)必要があるケースを、6×6・seed notes-loop-hard-scan-71の実例(探索15ステップ)で示す。中級編(その2)の続き。

Number Place(9×9数字配置)の生成ロジックを読む — その1: 盤面表現・乱数・完成盤の生成

Number Place(9×9数独)の問題生成ロジックを、実装コードと再現可能な具体例から読み解く。前編は盤面表現・乱数・MRVバックトラッキングによる完成盤の生成まで。後編(その2)は数字の除去・一意解判定・難易度分類・生成ループ全体を扱う。

Number Place(9×9数字配置)の生成ロジックを読む — その2: 数字の除去・一意解判定・難易度

Number Place(9×9数独)の問題生成ロジックを、実装コードと再現可能な具体例から読み解く。後編は数字の除去・一意解判定(探索打ち切り含む)・難易度分類・生成ループ・失敗時の扱いを扱う。前編(その1)は盤面表現・乱数・完成盤の生成を扱う。

Number Place(9×9数字配置)の解き方 — 初級編: 「行・列・3×3ブロックに残る数字が1つだけ」を見つける

Number Place(9×9数独)の解き方ガイド・初級編。盤面のルール・実際の操作(タップ入力・メモ・ヒント・答え合わせ)を説明したうえで、「行・列・3×3ブロックに残る数字が1つだけ」というnaked single技法だけで最後まで解ける実例(9×9・seed notes-numberplace-easy-1・level easy・36マス空き)を、最初の1手から解答完了まで再現可能な形で示す。中級編(その2)・上級編(その3)に続く。

Number Place(9×9数字配置)の解き方 — 中級編: naked/hidden singleで止まったら、1マスだけ仮に決めて矛盾を探す

Number Place(9×9数独)の解き方ガイド・中級編。naked single・hidden singleの繰り返しでは50マス中29マスが未確定のまま残るケースに対し、1マスだけ仮に数字を決めて波及させ、ある行またはブロックで候補が0個になる(=どの数字も入れられなくなる)矛盾に突き当たることで逆側を確定する手順を、9×9・seed scan-medium-49・level mediumの実例で示す。初級編(その1)の続き、上級編(その3)へつながる。

Number Place(9×9数字配置)の解き方 — 上級編: 仮置きを入れ子にして、奥で矛盾を見つける

Number Place(9×9数独)の解き方ガイド・上級編。naked/hidden singleの繰り返しだけでは1マスの仮置きでも解けず、仮置きの中でさらに仮置きを重ねる(入れ子の仮置き)必要があるケースを、9×9・seed scan-hard-6・level hardの実例(2段の仮置き、生じる4通りの分岐すべてを検証)で示す。中級編(その2)の続き。

Pattern(行・列の数字で塗るお絵かきロジック)の生成ロジックを読む — その1: 盤面表現・乱数・配置列挙・伝播

Pattern(お絵かきロジック)の問題生成ロジックを、実装コードと再現可能な具体例から読み解く。前編は盤面表現・乱数・行/列の配置列挙(linePlacements)・制約伝播(propagate)まで。後編(その2)は一意解判定・生成ループ・失敗時の扱いを扱う。

Pattern(行・列の数字で塗るお絵かきロジック)の生成ロジックを読む — その2: 一意解判定・生成ループ・失敗時の扱い

Pattern(お絵かきロジック)の問題生成ロジックを、実装コードと再現可能な具体例から読み解く。後編は一意解判定(solve、探索打ち切り含む)・生成ループ(generate、密度付きランダム生成・再試行)・再現可能な具体例・性能実測・限界を扱う。前編(その1)は盤面表現・乱数・配置列挙・制約伝播を扱う。

Pattern(行・列の数字で塗るお絵かきロジック)の解き方 — 初級編: 1行・1列の候補を数え上げて、塗り分けを絞る

Pattern(行・列の数字で塗るお絵かきロジック)の解き方ガイド・初級編。盤面の見方(行・列の数字・タップ操作)を説明したうえで、ある行(列)の数字が許すすべての塗り方を書き出して見比べる、という基本の考え方だけで解ける実例(5×5・seed notes-pattern-easy-scan-0)を、最初の1マスから解答完了まで再現可能な形で示す。中級編(その2)・上級編(その3)に続く。

Pattern(行・列の数字で塗るお絵かきロジック)の解き方 — 中級編: 候補列挙だけで止まったら、1マスだけ仮に決めて矛盾を探す

Pattern(行・列の数字で塗るお絵かきロジック)の解き方ガイド・中級編。行・列の候補列挙を繰り返しても16マスが未確定のまま残るケースに対し、1マスだけ仮に塗りと決めて波及させ、ある列の数字が「候補となる塗り方が1つも残らない」という矛盾に突き当たることで逆側を確定する手順を、8×8・seed notes-pattern-scan-8-65の実例で示す。初級編(その1)の続き、上級編(その3)へつながる。

Pattern(行・列の数字で塗るお絵かきロジック)の解き方 — 上級編: 仮定の上にさらに仮定を重ね、矛盾で1段ずつ引き返す

Pattern(行・列の数字で塗るお絵かきロジック)の解き方ガイド・上級編。候補列挙を尽くしても37マスが未確定のまま残るケースに対し、1マスの仮定→波及→さらに仮定→波及、を3段重ねてようやく矛盾に突き当たり、その全段を投げ捨てて最初の仮定を逆にすると即座に全100マスが確定する手順を、10×10・seed notes-pattern-scan-10-137の実例で示す。初級編(その1)・中級編(その2)の続き。

Signal(回転ネットワーク)の生成ロジックを読む — その1: 盤面表現・乱数・全域木

Signal(回転ネットワーク)の問題生成ロジックを、実装コードと再現可能な具体例から読み解く。前編はビット表現・乱数・ランダム全域木・初期シャッフルまで。後編(その2)は一意解判定・難易度・スコアリングを扱う。

Signal(回転ネットワーク)の生成ロジックを読む — その2: 一意解判定・難易度・スコア

Signal(回転ネットワーク)の問題生成ロジックを、実装コードと再現可能な具体例から読み解く。後編は制約伝播・一意解判定(探索打ち切り含む)・難易度判定・スコア計算・生成ループを扱う。前編(その1)は盤面表現・乱数・全域木を扱う。

Signal(回転ネットワーク)の解き方 — 初級編: タイルの見方と境界からの確定

Signal(回転ネットワーク)の解き方ガイド・初級編。タイルの形状の見分け方、タップ=右回転90°という唯一の合法手、盤面の「点灯」表示の意味を説明したうえで、境界(盤の端)と隣接マスの確定だけで最後まで解ける実例(4×4・seed notes-solve-easy)を、最初の1手から解答完了まで再現可能な形で示す。中級編(その2)・上級編(その3)に続く。

Signal(回転ネットワーク)の解き方 — 中級編: 隣接だけで止まったら、仮に置いて確かめる

Signal(回転ネットワーク)の解き方ガイド・中級編。境界+隣接の確定だけでは全マス確定に至らず、数マスが2択のまま残るケースに対し、1マスだけ仮に決めて波及させ、点灯数の停滞や輪の形成から矛盾を見抜いて正しい向きを選ぶ手順を、5×5・seed notes-solve-mediumの実例で示す。初級編(その1)の続き、上級編(その3)へつながる。

Signal(回転ネットワーク)の解き方 — 上級編: 未確定マスが半分以上残るときの進め方

Signal(回転ネットワーク)の解き方ガイド・上級編。境界+隣接の確定だけでは36マス中21マスが未確定のまま残る問題に対し、候補が少ないマスから順に仮置きし、波及の連鎖で次々と他のマスも確定させ、誤った仮置きは点灯数の停滞や輪の形成で見抜いて後戻りする進め方を、6×6・seed notes-solve-hardの実例で示す。初級編(その1)・中級編(その2)の続き。

「友達とだけ将棋を指す」サービスを調べたら、仕組みを説明しているのは1つも無かった

招待URLやQRコードで友達とだけ将棋を指せるサービスを調べたところ、指し手がどこを経由するかを説明しているものはありませんでした。代わりに見つかったのは「仕組みを明かさない分、再接続に強い」という設計のトレードオフです。

Claude Codeの使用量通知アプリを調べたら、この2ヶ月でWindows版の有料競合が現れていた

Claude Codeの使用量上限リセットを通知するアプリを調べ直したところ、個人OSSしか無かったWindows市場に、この2ヶ月でTokenKarmaという有料サブスクの競合が現れていました。無料・投げ銭という方針を維持する理由を書きます。

Mermaidが消えるバグを、同じ原因で2度直した話

dangerouslySetInnerHTMLの仕様(html文字列が変わらなくてもDOMが再構築される)が原因で、Mermaidを再描画するuseEffectの依存配列に足りない値があるたびに図が消えた。1回目はtheme、2回目はcolorModeで同じ穴を踏んだ経緯と、後の実装変更(morphdom移行)がこの不具合をどう扱ったかまで追った記録。

AIエージェントに見せる画面を1つのウィンドウに絞ったら、応答の文字数が88%減った

AIエージェントにWindowsを操作させるMCPサーバーで、見せる範囲を「デスクトップ全体」から「対象ウィンドウ1つ」に絞ったら、同じ電卓アプリの状態取得で応答の文字数が5,630字→678字(88%削減)になりました。測ったのは文字数で、トークン数そのものの計測ではありません。

ローカルLLMに任せても、Claude Codeは安くならなかった

「簡単な作業はローカルLLMに投げればトークンを節約できるはず」を実測したところ、数値で示せるフェーズ2(3条件×n=2)では費用2.3倍・時間2.9倍に悪化しました。原因は、節約分より検証コストが上回ること。フェーズ1(18試行)は個別ログが確認できず、方向の一致のみを傍証として扱います。