プログラミング

電子書籍・Python・生成AIで、日々の生活をちょっと楽にする自作ツールと記録

プログラミング

有線LANに切り替えたら自宅サーバーに繋がらなくなった|原因は壁のLANポートだった

Wi-Fiでは自宅サーバーに繋がるのに、有線LANに切り替えた途端つながらなくなりました。原因はLANケーブルを壁のLANポートに挿していたことで、PCがサーバーとは別のサブネット(192.168.0.x)のIPを受け取っていたためです。ipconfigでの診断手順、ケーブルの挿し先を変える解決策、Tailscaleを使った応急処置までまとめました。

プログラミング

ObsidianのMarkdownをnoteの下書きとして投稿するツールを作りました(note_uploader)

ObsidianなどのMarkdown記事を、note.comの下書きとしてそのまま投稿できる自作のCLI/GUIツール note_uploader の紹介です。noteのエディタでは貼れないテーブルを画像に変換し、記事内の画像を自動アップロードし、数式をnoteの記法に書き換えます。複数アカウントの切り替え、投稿済み記事の更新・公開・削除、PVの取得まで、実装コードの抜粋を交えて仕組みごと説明します。コード一式はこのページでMITライセンス・無料のzipとして配布しています。

プログラミング

noteの非公式APIとエディタ仕様を調べた話|Markdown自動投稿ツールを作るためにわかったこと

note.comには公開された公式APIがありません。そこでMarkdownの自動投稿ツールを作るために、ブラウザの通信を観察してnoteの内部APIを一つずつ確かめました。下書きの作成・保存・公開に使うエンドポイント、画像アップロードのpresigned URL、公開PUTが全置換で設定を吹き飛ばす罠、noteのエディタが受け付けるHTMLの形(uuid属性・インラインコード・数式の記法・URLの埋め込みカード・目次)、そして連続アクセスでIPごとブロックされた実話まで、実際に叩いたパスとコードの抜粋つきで記録します。

プログラミング

自宅サーバーが落ちた?と思ったらTailscaleのキー期限切れだった話

外出先から自宅サーバーに突然つながらなくなり、サーバー本体の故障を疑ったら、原因はTailscaleのノードキーの有効期限切れでした。サーバー本体とTailscaleを切り分ける手順、再ログインでの復旧、キーの有効期限をサーバーだけ無効化する恒久対策(Disable key expiry)までを、実際のコマンド出力つきでまとめた障害記録です。

プログラミング

ClaudeにW杯2026の全104試合をGoogleカレンダーへ自動登録してもらった話(カレンダーMCPの限界も込み)

AIのClaudeにGoogle Calendar MCPをつないで、W杯2026の全104試合をGoogleカレンダーへ登録し、さらにW杯専用カレンダーへ引っ越しさせた記録です。カレンダー自体は新規作成できない・イベントはカレンダー間を移動できないというMCPの制約と、AIが拾った日程に混ざっていた誤りを数の保存則で検算した過程、実際に使ったイベントの設定値までまとめました。

プログラミング

初めてUSキーボードに挑戦する方へ|管理者権限のないPCでは設定を変えられない話

Windowsで初めてUSキーボードを使う前に知っておきたい注意点です。管理者権限のないPCではキーボードレイアウトの設定項目が出てこないため、印字通りの入力ができません。設定手順の画面を追いながら理由を説明し、日本語レイアウトのまま使う方法やキーマッピングソフトを試した結果、PowerToysでCaps Lockに半角・全角を割り当てた設定までまとめました。

プログラミング

「検索可能PDF」とは何か|画像PDF・テキストPDFとの違いと「テキストレイヤー」の仕組み

自炊やスキャンの話で出てくる「検索可能PDF」の仕組みを整理した記事です。画像PDF・テキストPDF・検索可能PDFの3タイプの違い、透明なテキストレイヤーを重ねた二層構造、OCRが何をしているか、ファイルサイズが軽くならない理由、用途別の使い分けまでをまとめました。

プログラミング

Kindle ScribeでUSB転送したPDFに手書きできるようになりました(ファームウェア5.19.2〜)

Kindle Scribeは、以前はUSBで直接入れたPDFに手書きできませんでしたが、ファームウェア5.19.2からサイドロードしたPDFへの手書き注釈に対応しました。以前書けなかった理由、USBでPDFを入れて書く手順、Send to Kindleとの使い分け、2026年6月に1.2GB・204ページのPDFで実機確認した内容と注意点をまとめました。

プログラミング

KindleをPDF化してKindle Scribeで読むと文字がガビガビ|原因はモニターの解像度だった

自分でPDF化したKindle本をKindle Scribeに入れると文字の輪郭がぼやける現象について、原因の切り分けと直し方をまとめました。犯人はJPEG圧縮ではなく、スクリーンショットを撮っていたPCモニターの解像度不足でした。モニターを縦設定にして撮り直した実測値、USB転送を選んだ理由、サイドロードPDFへの手書きのファームウェア条件まで記載しています。

プログラミング

Pandasで日本語CSVが文字化けするときはcp932でエンコーディングしてみよう

PandasでCSVを読み込むときに出る UnicodeDecodeError と文字化けの原因を、文字コードの仕組みから説明します。pd.read_csv() が既定でUTF-8として読むこと、Excelで保存したCSVがcp932になりやすいこと、encoding='cp932' を指定して解決する方法、おまけとしてExcel側で文字化けしたときにメモ帳でANSI保存する手順をまとめました。

プログラミング

NotebookLMのOSS版2ツールをClaude Maxのclaude -pで動かして比較してみた

NotebookLMのOSS版であるAnythingLLMとOpen Notebookを、Claude Maxの `claude -p` を生成エンジンにして動かし、比較した記録です。自作シムでOpenAI互換APIに見せかける構成、AnythingLLMで詰まった2箇所、Open NotebookのREST API全自動化、回答精度と所要時間の実測、そして規約や埋め込み・音声の限界までまとめました。

プログラミング

自炊代行のOCRと国会図書館のOCR、どちらが正確か|同じ本で再OCRして比較した

自炊代行で納品された検索可能PDFのテキスト層と、国立国会図書館のOCRエンジン「NDLOCR-Lite」でかけ直した再OCRを、同じ本の同じ9ページで比較しました。文字一致率は納品97.2%・再OCR97.6%でほぼ互角ですが、納品は文字が化け、NDLは文字が消えるという違いがあります。検証の手順、誤りの実例、所要時間、用途別の使い分けまでまとめました。

プログラミング

PythonでObsidianのwikiリンクを標準Markdownに一括変換する

Obsidianで書いたMarkdownを他のプラットフォームに持っていくとき、二重角カッコのwikiリンクと画像リンクが標準Markdownと違うので表示が崩れます。フォルダを選ぶだけで配下のmdファイルをまとめて標準Markdown形式に書き換えるPythonスクリプトの全文と、正規表現の中身の解説、実際に変換したときの画面をまとめました。標準ライブラリだけで動きます。

プログラミング

紙もKindleも電子書籍も、Obsidianに一冊残らず並べる本棚プラグインを作りました(Obsidian Bookshelf)

紙・Kindle・Google Playに散らばった蔵書を、Obsidianの中の一つの本棚にまとめる自作プラグイン Obsidian Bookshelf の紹介です。type: book のノートを集めて書影付きギャラリーに描く仕組みから、認証情報をプラグインに渡さないKindle取り込み、Amazon商品ページの多段フォールバック、シリーズ名の自動推定まで、実際のコードを抜粋しながらまとめました。

プログラミング

NotebookLMに自炊PDFが読み込めない2大原因と対処法|OCR非対応と容量制限

自炊した本のPDFをNotebookLMに入れても中身を読んでくれない現象について、原因が「画像PDFはOCRされない」「容量・語数の制限」の2つであることと、その見分け方をまとめました。検索可能PDF化が遠回りになる理由と、テキスト/Markdownで渡す対処法、取り込み前のチェックリストも載せています。制限値は2026年6月時点の情報です。

プログラミング

noteで数式を書く方法|インライン・複数行の記法とObsidianから転載するときの変換ルール

noteの数式記法の書き方をまとめました。noteの数式はKaTeXベースのTeX記法ですが、インラインは「ドル2つ+波カッコ」というnote独自の合図で、標準のMarkdownとずれています。インライン・複数行それぞれの書き方と使える場所、Obsidianなどから転載するときの書き換えルール3つ、表示されないときのトラブルシューティングを載せています。

プログラミング

ObsidianをRSSリーダー+AIニュース秘書にする自作プラグインを作りました(Miniflux Reader)

自宅サーバーに立てたセルフホスト型RSSリーダー「Miniflux」を、Obsidianの中で読むために作った自作プラグイン Miniflux Reader の紹介です。3つのレイアウトを持つ記事一覧、4段階のサムネイル解決、記事のMarkdown保存に加えて、サーバー側のスクリプトがAIに選ばせた「今日の必読」を読むキュレーション画面まで、実装のコードを抜粋しながら内部の動きを説明します。

プログラミング

ObsidianやAIのMarkdownをそのままNotionに流し込む自作ツールを作りました(Markdown to Notion)

ローカルの .md ファイルを構造を保ったままNotionのネイティブブロックとして一括取り込みするPython製ツールの紹介です。Notionに貼ると崩れる理由、行ベースのパーサ・装飾の重なり解決・2000字と100件の上限処理という実装の中身を抜粋コードで説明し、モジュール構成、テスト162件の内訳、Notion側の設定手順、使い方の3シナリオ、よくあるトラブルまでまとめました。

プログラミング

大量のMarkdownを1ファイルにまとめるWindows用GUIツールを作りました(Markdown Combiner)

複数のMarkdownファイルをAIに読ませやすい1ファイルに整形しながら結合する、Windows向けの自作GUIツール Markdown Combiner の紹介です。自然順ソート・YAMLフロントマター除去・見出しレベル変換・ファイル名のH1挿入という4つの処理を、実装コードの抜粋を交えて内部の動きまで説明します。ロジック約100行・tkinter画面約130行・ユニットテスト62件の構成です。

プログラミング

ローカルRAGが遅いのはLLMじゃなく埋め込みだった話

ローカルでRAGを組んだときの「遅い・効かない」の原因が、生成LLMではなく埋め込みモデルの側にあった記録です。CPUでの `bge-m3` が1チャンク30〜60秒かかって大きな文書が入らなかった件、英語中心の埋め込みモデルで日本語検索が無言で0件になった件、そしてOllamaが2つ動いてポートを奪い合っていた件をまとめました。

プログラミング

自炊代行の納品PDFは検索に使えるか|OCR精度を実際に確かめた

自炊代行サービスから納品された検索可能PDFのOCR精度を、手元の2冊(横書きの技術書と縦書きの読み物)で実測した記録です。テキスト層がどのページに入っているか、本文にある20語が検索でヒットするか、どんな誤認識が起きるかを調べ、読む・探す・コピペ・AI利用・コードの再利用という用途別に整理しました。

プログラミング

古いWindows機を自宅Linuxサーバーにする|Ubuntu+CasaOS+Dockerで土台を作る

買い替えて使わなくなった古いWindowsデスクトップ(Core i5-6400・メモリ8GB)を、Ubuntu Server 24.04 LTS の自宅サーバーにした手順です。SSHの方針、データ用HDDのUUID指定での自動マウント、CasaOSとDockerによるアプリ管理、Sambaでのファイル共有、UFWでの入り口の絞り込みまで、実際に使っている設定値とあわせてまとめました。

プログラミング

Obsidian SyncをSyncthingで無料代替する|自宅サーバーで全端末同期

有料のObsidian Syncを、無料のSyncthingで置き換えた記録です。自宅のUbuntuサーバーにDockerでSyncthingを立て、サーバー・Windows・Androidスマホの3台でObsidianのvaultを双方向同期しています。実際に使っているdocker composeの内容、4つのポートの役割とUFWの開け方、.stignoreとバージョニングの設定、Claude Codeへの指示書までまとめました。

プログラミング

Obsidianを操作するMCPサーバーを自作して、Claudeから自分のノートを読み書きする

自宅のUbuntuサーバーにObsidian操作用のMCPサーバーを立てて、スマホやパソコンのClaudeから自分のメモを検索・閲覧・編集できるようにした記録です。Python 3.12+FastMCP(HTTP・ポート8751)の構成、Dockerでの動かし方(user: 1000:1000)、用意した20個のツール、ウィキリンク解析やdry_run・transactionといった安全機構、Tailscale Funnelでのつなぎ方、Claude Codeへの指示書までまとめました。

プログラミング

Google DriveをNextcloudで自前に置き換える

自宅のUbuntuサーバーにNextcloudを立てて、Google Driveの代わりにファイル置き場を自前で持つ手順です。公式イメージ nextcloud:32.0 の導入、保存先とポート(10081/10443)の決め方、アップロード上限の引き上げ、パソコン・スマホの同期アプリ、Tailscale経由での外部アクセス、Claude Codeへの指示書までまとめました。

プログラミング

MinifluxでRSSリーダーを自前化する|Google NewsをRSSで読む

自宅のUbuntuサーバーにMinifluxを立てて、有料のクラウドRSSサービスの代わりに自分専用のRSSリーダーを持つ手順です。本体とPostgreSQLの2コンテナ構成、ポート8750と更新間隔10分などの設定値、RSSHubとGoogle NewsのRSSで情報源を集約する方法、全文取得(Fetch original content)、Tailscale経由の外部アクセス、Claude Codeへの指示書までまとめました。

プログラミング

Google PhotosをImmichで自前に置き換える

自宅のUbuntuサーバーにImmichを立てて、Google Photosの代わりにスマホの写真を自前でバックアップする手順です。本体・AIの頭脳(ML)・DB・Redisの4コンテナ構成、実際に使っているイメージのバージョンとポート2283、写真の保存先、ベクトル検索でAI検索が動く仕組み、Tailscale経由の外部アクセス、Claude Codeへの指示書までまとめました。

プログラミング

自宅サーバーにClaude Codeを入れて、面倒な設定を全部AIに任せる

Ubuntuの自宅サーバーにClaude Codeを導入して、以降の構築をAIに任せられる状態を作る手順です。Node.js 22系の確認、npmの導入先を ~/.npm-global に変えてパスを通す理由、@anthropic-ai/claude-code の導入とログイン、許可(パーミッション)の考え方、CLAUDE.md に書いておく内容、command not found などのトラブル対処までまとめました。

プログラミング

自宅サーバーから暗号化HDDへ毎日自動バックアップする仕組みを作る

自宅サーバーのデータを、暗号化した外付けHDDへ毎日自動でバックアップする仕組みの中身です。LUKSと /etc/crypttab(nofail・keyfile-timeout)での自動解除、rsync --link-dest によるスナップショット(日次14世代+週次4世代)、データベース・ファイル・設定・復元手順書の4層構成、systemdタイマーでの毎日実行、異常時だけ通知する番犬スクリプトまでまとめました。

プログラミング

バラバラの体組成・筋トレ・睡眠を自宅サーバーに集約するMCPと自動同期アプリを作りました

体組成計・筋トレアプリ・スマートウォッチに分散していた健康記録を、自宅サーバーの1つのデータベースに集約した話です。スクショをClaudeに読ませて記録するMCPサーバー(gym-mcp)と、Health Connectの連続データを自動送信するAndroidアプリ(からだ同期)の2本立てで、設計判断と実機で見つかったバグまでまとめました。

プログラミング

ObsidianやAIのMarkdownをそのまま「はてなブログ」に投稿する自作アプリを作りました(Hatena Blog Publisher)

YAMLフロントマター付きのMarkdownファイルを選ぶだけで、はてなブログへ投稿・更新できるWindows向けの自作デスクトップアプリ Hatena Blog Publisher の紹介です。AtomPubとWSSE認証、本文をCDATAでそのまま送る仕組み、記事IDをファイルに書き戻して新規と更新を自動判定する設計を、実装コードの抜粋を交えて説明します。ユニットテスト44件の内訳と既知の制限も載せています。

プログラミング

Google Photosの写真をローカルに丸ごとバックアップするツールを作りました(gphoto_backup)

Google TakeoutのZIPを、EXIF整備済み・撮影年フォルダ分類・重複なしの写真ライブラリに変換するWindows向けツール gphoto_backup の紹介です。作った背景から導入手順、シナリオ別の使い方、コマンドとconfig.iniのリファレンス、トラブルシューティングまでまとめました。

プログラミング

電子書籍キャプチャの解像度を上げるモニター設定|縦向き・必要ピクセルの計算・見開きNGの理由

電子書籍をスクリーンショット方式でPDF化するときに、画質を決めているのはモニターの縦のピクセル数です。読む端末から必要ピクセル数を逆算する方法、Windowsの画面の向きを「縦」にして天井を引き上げる手順、見開き表示が解像度を落とす理由、撮影後のピクセル数の確認方法をまとめました。

プログラミング

数学ができない文系非エンジニアが3か月でE資格に合格した勉強法

文系大卒・非エンジニアの私がE資格2024#2に3か月で合格したときの勉強法をまとめました。応用数学を捨てて機械学習に注力する戦略、生成AIでの問題集作成、使った教材、3か月のスケジュール、項目別の対策と試験本番の感想まで、得点率(応用数学29%)も含めて書いています。

プログラミング

Dockerコンテナの通信が全部CERTIFICATE_VERIFY_FAILED|犯人はアンチウイルスだった

Windowsで動かしているDockerコンテナからの外部HTTPSが、すべて `SSL: CERTIFICATE_VERIFY_FAILED` で落ちた原因と対処の記録です。犯人はホストのアンチウイルス(Norton 360)のHTTPSスキャンでした。`openssl s_client` で発行者を見て確定させる診断コマンドと、ルート証明書の書き出し・certifiとの結合・コンテナへのマウントという3手順をまとめました。

プログラミング

claude -pを自作アプリのLLMにしたら、勝手にObsidianを読みにいった話

Claude Codeの非対話モード claude -p を自作RAGツールの生成エンジンに繋いだところ、質問と無関係な個人のCLAUDE.mdを読み込んでObsidian Vaultを探しに行きました。どこまで中立化できるのかをA/B/C/Dの4段階で実測し、最終的に使った起動オプションと、Windowsで空文字引数が壊れた原因までまとめています。

プログラミング

claude -pを150行のシムでOpenAI互換APIにする(APIキー不要)

Claude Codeの非対話モード claude -p を、OpenAI互換のAPIサーバーに見せかける小さなシムの中身を解説します。追加ライブラリゼロ・Node標準モジュールだけの実装から、プロンプトをstdinで渡す理由、擬似SSEとハートビート、total_cost_usdでのコスト可視化、起動オーバーヘッドと日本語文字化けの罠までまとめました。

プログラミング

スマホからサーバーのClaude Codeを使う自分専用Webアプリを作りました

自宅サーバーのClaude Codeをスマホのブラウザから操作するために自作したWebアプリ cliweb の紹介です。Claude Agent SDKのストリーミング入力モードで会話をサーバー側に常駐させる設計、1つのHTTPサーバーに2系統のWebSocketを同居させる振り分け、SDKイベントを正規化したチャットUI、セッションIDを確認してからresumeする復元、画面に入ったコードだけを色付けする遅延ハイライト、ツールの承認、ローカル待ち受けと自分を再起動させないフックまで、実際のコードを抜粋しながらまとめました。

プログラミング

マークダウンで数式を書く方法|LaTeX記法の基本から複数行・行列、Obsidianでの運用まで

MarkdownでLaTeX記法の数式を書く方法をチートシート形式でまとめました。インライン・ディスプレイの基本、分数・総和・ギリシャ文字などの基本記法から、alignedによる式変形・場合分け・行列、機械学習ノートで使う記号まで。うまく表示されないときのチェックリストと、勉強ノートでの実戦例も載せています。