技術

A tool was configured, tested, broken, and sometimes fixed. These entries document what worked and what didn't: recording setups, network infrastructure, text editors, file formats, and the quiet satisfaction of making something behave.

技術

1Passwordを閉じるボタンが……ねえ!

1Passwordを使っていたら、いつの間にかウィンドウの 閉じる/最小化/最大化ボタンが消えていた。Ctrl+Wでウィンドウ自体は閉じられるので長らく放置していたけれど、調べてみたら原因がしょうもなかったので共有しておく。 💡結論 F11を押してみよう 症状 * ウィンドウ右上の最小化・最大化・閉じるボタンが表示されない * タイトルバーも消えている * Ctrl+W では普通に閉じられる * PC再起動、1Passwordの終了・再起動、アンインストール → 再インストール、いずれも変化なし 原因 ただフルスクリーンモードに入っていただけ。 1Passwordコミュニティの投稿「Lost window minimize buttons top rhc.」で全く同じ症状が報告されていて、コミュニティマネージャーの回答が「F11でフルスクリーンを切り替えてみて」だった。 解決手順 1. 1Passwordのウィンドウをクリックしてフォーカスを当てる 2. F11 を押す これでタイトルバーとボタン類が戻ってくる。ダメな場合は Win + ↓(ウィン

By Sakashita Yasunobu

技術

外字と訓点を compile-time hash で解く

aozora は青空文庫の外字参照 (※[#「魚+師」、第3水準1-94-37] のような形) を約 14,000 件のテーブルで解決する。このテーブルを runtime の HashMap ではなく phf (perfect hash function) で持ち、コンパイル時に static 配列に焼き込んでいる。この記事はその選択の根拠と、JIS X 0213 → Unicode フォールバックの設計をまとめたもの。 handbook の対応章: Shift_JIS + 外字 resolver。 外字テーブルの形 外字エントリには 3 種類の解決結果があり、それぞれに対応する variant を GaijiEntry に持たせている。 static GAIJI_TABLE: phf::Map<

By Sakashita Yasunobu

技術

青空文庫の .txt を HTML に変換する最短手順

青空文庫 で配布されている .txt ファイルを HTML に変換したい、という用途向けの手順。Rust の知識は要らない。コマンド 1 行で済む。 1. CLI バイナリを取ってくる aozora の Releases ページ から自分の OS 向けのアーカイブを落とす。 OS アーカイブ名 Linux x86_64 aozora-vX.Y.Z-x86_64-unknown-linux-gnu.tar.gz macOS arm64 aozora-vX.Y.Z-aarch64-apple-darwin.tar.gz Windows x86_64 aozora-vX.Y.Z-x86_64-pc-windows-msvc.zip SHA256SUMS も同梱されているので、

By Sakashita Yasunobu

技術

50,000 ノードの AST を 16 回のアロケーションで: bumpalo 借用アリーナの実例

aozora の AST は bumpalo 単一アリーナの上に構築されている。Box<Node> を素直に並べた版に比べてパースが 6.4 倍速、ピーク RSS が 30% 減という結果が出ている。この記事は、その設計判断と Rust ライフタイムの取り回しを実装の視点から整理したもの。 handbook の対応章: Borrowed-arena AST。 問題設定 青空文庫の典型的な作品は約 500KiB のソースで、aozora がパースすると約 50,000 ノードの木に展開される。素直に Rust らしく書けば次のような形になる。 enum Node { Plain(String), Ruby { target: String, gloss: String }, Container { kind:

By Sakashita Yasunobu

技術

7 個のトリガーバイトを 12 GB/s で探す: Teddy を選んだ理由

aozora は青空文庫記法の Rust パーサで、字句解析の最初のフェーズが「ソース全体から 7 種類のトリガーバイトを探す」というマルチパターンスキャンになっている。この記事は、その 1 フェーズに Intel Hyperscan 由来の Teddy アルゴリズムを採用した経緯と、対立候補に勝った算術的な根拠を整理したもの。 handbook の対応章: SIMD scanner backends。 問題設定 aozora-pipeline の Phase 1 (字句解析の最初のフェーズ) は、ソース文字列の中から次の 7 文字の出現位置を全て列挙する。 | 《 》 ※ [ ] 全角空白 これらは青空文庫記法の構文トリガー (ルビ・注釈・字下げの開始/終了マーカ) で、出現する位置だけが分かれば後段のフェーズで「これは何の構文か」を解釈できる。 UTF-8 で見ると 7 文字 × 3 バイト

By Sakashita Yasunobu

技術

青空文庫記法を解析する Rust パーサ aozora

aozora は青空文庫記法のパーサ。CommonMark や Markdown は扱わず、青空文庫が配布している .txt ファイルに現れる注釈記法だけを対象にする。実装は Rust で、CLI バイナリ・Rust ライブラリ・WASM・C ABI・Python バインディングの 5 種類で配布する。 use aozora::Document; let source = "|青梅《おうめ》".to_owned(); let doc = Document::new(source); let tree = doc.parse(); let html: String = tree.to_html(); let

By Sakashita Yasunobu

光と写真

Capture Oneに待望のネガフィルム変換機能が来た

2026年4月3日、Capture One 16.7.4 がリリースされた。目玉はなんといっても Negative Film Conversion(ネガフィルム変換) の搭載だ。これまで Cultural Heritage エディション限定だったネガ反転処理が、ついに通常の Capture One Pro / Studio でも使えるようになった。 何が変わったのか 従来、Capture One でネガフィルムをポジに変換するには、Cultural Heritage(CH)エディションを使う必要があった。CH は文化財デジタル化向けの専用製品で、Base Characteristics ツールに Film Negative / Film Positive モードが用意されていた。しかし一般の写真愛好家がフィルムスキャンのためだけに CH を導入するのは現実的ではなく、多くのユーザーは Lightroom とそのプラグイン(Negative Lab

By Sakashita Yasunobu

技術

クジラはなぜがんにならないのか

体が大きい動物ほど細胞の数が多い。細胞が多ければ、そのうちどれかががん化する確率も高くなるはずだ。ところが現実には、クジラやゾウのがん発生率はヒトよりも低い。1977年、疫学者リチャード・ピートがこの矛盾を指摘した。以来この問いは「ピートのパラドックス」と呼ばれ、比較腫瘍学における最大の謎のひとつであり続けている。 種の中では予測通り、種の間では崩れる 同じ種の中では、直感どおりの傾向が確認されている。身長の高いヒトはそうでないヒトよりがんの発生率がやや高く、年齢を重ねるほどがんは増える。細胞の数が多いほど、細胞分裂の回数が多いほど、がん化の確率は上がる。 しかし種を超えて比較すると、この関係が崩壊する。シロナガスクジラの細胞数はヒトの約1000倍にのぼるが、がんの発生率がヒトの1000倍になるわけではない。哺乳類全体を見渡しても、体サイズとがんリスクの間に明確な正の相関は長い間見つかっていなかった。がんの発生率は種が異なっても約2倍の範囲にしか収まらないとされてきた。体サイズの差は100万倍を超えるにもかかわらず。 ゾウが持つ余分ながん抑制遺伝子 最もよく知られた説明は

By Sakashita Yasunobu

技術

電脳空間のハエ

ショウジョウバエの脳がコンピュータの上で再現され、仮想の体に接続されたら、歩き始めた。強化学習で訓練されたわけでも、行動規則をプログラムされたわけでもない。ニューロンの接続パターンをコピーしただけで、ハエは動いた。 何が起きたのか 2026年3月7日、サンフランシスコに拠点を置くEon Systems PBCが、デモンストレーション映像を公開した。同社の共同創設者であるAlex Wissner-Grossによれば、世界初の「身体を持つ全脳エミュレーション(embodied whole-brain emulation)」だという。 「全脳エミュレーション」とは、生物の脳の神経回路をニューロン単位、シナプス単位でコンピュータ上に再現し、動作させることを指す。「身体を持つ」とは、その脳のシミュレーションが物理法則に従う仮想の体に接続され、感覚入力を受け取り、運動出力を返す閉じたループを構成していることを意味する。 これまでにも脳のシミュレーションや体のシミュレーションは個別に存在した。線虫(C. elegans)の神経系を再現するOpenWormプロジェクトは約302個のニューロン

By Sakashita Yasunobu

技術

エンジニアを目指す大学生が取るべき資格

「資格なんていらない、実力があればいい」。エンジニア志望の大学生がSNSで一度は目にする言葉だ。一方で「資格を取っておけ」と勧める声もある。どちらにも一理ある。しかし、どちらも半分しか正しくない。 「資格は意味ない」の半分だけ正しいところ 「資格より実務経験」。これは事実だ。採用の現場で重視されるのは、何ができるかであって、何を持っているかではない。資格の有無だけで採否が決まることは、まずない。 しかし、大学生には実務経験がほとんどない。インターンで多少の経験を積んでいたとしても、実務を何年も積んだエンジニアと同じ土俵には立てない。実務経験がない段階で「実力で示す」と言っても、示す手段が限られている。 資格は、その限られた手段のひとつだ。特に新卒採用では、応募者の技術レベルを短時間で判断する必要がある。そのとき「基本的な知識がある」ことの客観的な証拠として、資格は機能する。 ただし、すべての資格が同じ価値を持つわけではない。取る意味のある資格と、学生のうちには取っても意味が薄い資格がある。ここからは、その区別を整理する。 まず取るべき国家資格 IT系の国家資格は、IP

By Sakashita Yasunobu

技術

翻訳が限りなく安くなる世界で言葉はどこへ向かうのか

翻訳は長い間、贅沢品だった。 日本語の文書を英語にする。プロの翻訳者に依頼すれば、日英翻訳で1文字あたりおよそ10円から20円が相場だ。1,000文字の文書で1万円前後。書籍1冊分(10万文字)なら100万円を超えることも珍しくない。この価格は、二つの言語の構造を理解し、文脈を読み、文化的なニュアンスを調整する知的労働への対価だ。安くはない。しかし不当でもない。 ところが、この構造が揺らぎ始めている。大規模言語モデル(LLM)の登場によって、翻訳コストに3桁の変動が起きた。 桁が違う コストを並べてみる。 プロの人間翻訳は、日英で1文字あたり10円から20円。専門分野(法務、医療、特許)ではさらに上がることもある。品質保証と校正を含めた価格だ。 ニューラル機械翻訳サービス(DeepLやGoogle翻訳の有料版など)は、月額制のサブスクリプションで大量のテキストを処理できる。1文字あたりのコストに換算すると、人間翻訳の数百分の一以下になる。 LLMのAPIはさらに話を複雑にする。料金は入力トークンと出力トークンの量で決まるが、日本語は英語に比べてトークン効率が低い。英語な

By Sakashita Yasunobu