Portfolio

CODE VOID

暗い空間に浮かぶガラスのエディターでコードが書かれ、光の粒子となって運ばれ、演算され、制作物として現れます。スクロールでその一連の流れを辿れます。

Code is written on a glass editor floating in dark space, carried away as particles of light, computed, and returned as finished work. Scroll to follow the whole run.

お使いの環境では3D表示を利用できないため、内容をテキストで表示しています。

3D rendering is unavailable in this environment, so the contents are shown as text.

制作物

Works

静かな脳活 Beta

毎日無理なく続けられることを目的とした脳活Webアプリ。

A brain-training web app designed for a manageable daily routine.

日替わり脳活で、計算・判断・記憶・注意・視空間・推理など複数ジャンルの問題に取り組めます。IQ系問題(数列推理・図形マトリクス・関係の類推・論理推理)と、画像を覚えて別問題の後に答える画像遅延再認を収録。

Daily exercises cover calculation, judgement, memory, attention, visuospatial skills and reasoning. Includes IQ-style puzzles (number sequences, shape matrices, analogies and logic) and delayed image recognition after an intervening exercise.

PC・スマートフォン向けのWeb / PWAアプリとしてCloudflare Pages上で提供する限定ベータ版です。ライト/ダークテーマ、任意のBGMに対応。履歴は端末内にローカル保存し、表示・音設定も端末内で扱います。

A limited-beta Web / PWA app for PCs and smartphones, hosted on Cloudflare Pages. Light and dark themes, optional BGM, locally saved history, and on-device display and sound settings.

  • JavaScript
  • PWA
  • IndexedDB
  • Local history
  • Beta

ベータ期間中は無料・広告なし・アプリ内課金なし。正式版では提供条件を変更する場合があります。

Free during beta, with no ads or in-app purchases. Availability terms may change in the full release.

開くOpen

LLM_Local_Chat

完全ローカルで動く音声対話AIチャット。

A voice-conversation AI chat that runs entirely on the local machine.

音声入力から応答生成、読み上げまでを手元の環境だけで完結させる対話アプリです。会話内容を外部へ送信しない構成を前提に設計しています。

Speech input, response generation, and read-back all happen on your own machine. It is designed around never sending conversation content to an external service.

  • Python
  • llama-cpp-python
  • Whisper
  • Tkinter
  • Local only

修正版 v1.9.0 公開中

Patched v1.9.0 now available

証明書問題への対策として、pip・certifiの安全な更新処理を改善したv1.9.0を公開しました。旧v1.8.5の配布は終了しています。

Version 1.9.0 includes improved secure pip and certifi update handling for the certificate issue. The legacy v1.8.5 release is no longer distributed.

v1.9.0 配布ページv1.9.0 download page

既存利用者はアプリのvenvごとにpip 26.2.2以上・certifi 2026.10.19以上へ更新してください。依存取得前のpip更新はPython公式の安全な手順に従ってください。

Existing users should update pip to 26.2.2+ and certifi to 2026.10.19+ in each app venv. Follow official secure pip update guidance before downloading dependencies.

Mymews

人が確認したRSS / Atomを集め、ローカルAIで朝刊を作る個人用ニュースリーダー。

A personal local news reader that turns approved RSS / Atom feeds into a morning edition with optional local AI.

利用条件を人が確認して登録したSource / Feedだけを取得対象にし、記事をSQLiteへ保存して一覧・カテゴリ・属性フィルターで閲覧できます。AIは初期状態で無効で、設定したローカルGGUFモデルを使う場合だけ分類・短文要約・評価を行い、少数の記事から朝刊を生成します。

Only sources and feeds whose usage terms have been reviewed by a person are eligible for collection. Articles are stored in SQLite and can be browsed with category and attribute filters. AI starts disabled; when a configured local GGUF model is enabled, it can classify, summarize, score, and build a small morning edition.

Source Policyの履歴を保持し、取得・保存・AI・表示の各段階で現在の許可条件を確認します。外部AI、画像取得、元記事本文の自動取得は行わず、Web UIは127.0.0.1のローカル環境で動作します。

Source Policy history is retained and current permissions are checked across collection, storage, AI, and display. It does not use external AI, fetch images, or automatically retrieve full article bodies, and its web UI runs locally on 127.0.0.1.

  • Python
  • FastAPI
  • SQLite
  • RSS / Atom
  • Local AI

開発中・ローカル運用(未公開)

In development / local use (not published)

mewz

ローカルで動く行動・記憶管理エージェント。

A local agent that keeps track of actions and memory.

自然文の指示をローカルLLMで解釈し、TODO・予定・メモ・会話ログ・行動ログを扱うエージェントです。イベントバスとコントローラで入力と処理を分け、読む処理と書く処理の責務を分離しています。

A local LLM interprets plain-language input, then tools handle todos, schedules, memos, conversation logs and activity logs. An event bus and controller keep input separate from processing, and reading is kept apart from writing.

  • Python
  • SQLite
  • Local LLM
  • Whisper
  • Event bus

ローカルアーカイブ(未公開)

Local archive (not published)

mewmo

暗号化した保管庫を正本にするローカルメモアプリ。

A local note app whose source of truth is an encrypted vault.

ノートの正本を暗号化して保持し、Markdown・TXT・JSON・ZIPの取り込みとMarkdownでの取り出しに対応します。検索インデックスは正本から再構築でき、暗号化バックアップと読み取り専用の破損検査を備えます。Obsidian互換の保管庫ではありません。

Notes are held in an encrypted vault, with import from Markdown, TXT, JSON and ZIP and export back to Markdown. The search index can be rebuilt from the vault, and it includes encrypted backup plus a read-only integrity check. It is not an Obsidian-compatible vault.

  • Python
  • Encrypted vault
  • Local first

ローカルアーカイブ(未公開)

Local archive (not published)

voice_input

Windows向けのローカル音声入力。

Local speech-to-text input for Windows.

マイク音声をローカルのWhisperで文字起こしし、クリップボードへ残すか、安全確認をしてから前面のアプリへ貼り付けます。音声も文字も外部サービスへ送信しません。

Microphone audio is transcribed by a local Whisper model, then either left on the clipboard or pasted into the foreground app after an explicit confirmation. Neither the audio nor the text leaves the machine.

  • Python
  • faster-whisper
  • Hotkey
  • No upload

ローカルアーカイブ(未公開)

Local archive (not published)

voice_logger

話した内容をその場で文字にして書き溜める記録ツール。

A logger that turns what you say into text as you speak and keeps appending it.

マイク入力から発話している区間だけを取り出し、ローカルの音声認識にかけて、日付ごとのJSONLへ1行ずつ追記します。保存形式はそのJSONL1つだけで、中間ファイルや変換レイヤを持たない構成にしています。

It picks out just the stretches where you are actually speaking, runs them through local speech recognition, and appends them line by line to a JSONL file for the day. That JSONL is the only stored format: there are no intermediate files and no conversion layers.

  • Python
  • PySide6
  • webrtcvad
  • JSONL only

ローカルアーカイブ(未公開)

Local archive (not published)

biolog

家族の健康記録をセルフホストで管理するアプリ。

A self-hosted health record tracker for a family.

体温・血圧・脈拍・体重・体脂肪・食事や行動のログを日次で記録し、可視化します。SQLiteファイル1つで完結し、標準構成では同一PCからの利用だけを想定してlocalhostに限定しています。

Daily records of temperature, blood pressure, pulse, weight, body fat, meals and activity, with charts. Everything lives in a single SQLite file, and the default configuration binds to localhost for same-machine use only.

  • Python
  • FastAPI
  • Streamlit
  • Docker
  • Localhost only

公開一時停止(2026年10月23日~・安全確認/修正中)

Temporarily unavailable (since October 23, 2026; security review and fixes in progress)

公開再開は安全性の確認後に判断します。詳しくは更新履歴をご覧ください。

Publication will be reconsidered after security checks. See Updates for details.

biolog_mobile

ホーム画面に追加して使う、オフライン対応の健康記録PWA。

An offline-capable health record PWA you add to your home screen.

サーバーやDockerを用意せず、公開URLを開いてホーム画面に追加するだけで使えます。記録は端末内に保存し、バックアップとCSV書き出しに対応します。現在はベータとして公開しているものです。

No server or Docker setup: open the published URL and add it to your home screen. Records stay on the device, with backup and CSV export. It is currently published as a beta.

  • JavaScript
  • PWA
  • Offline
  • Beta

GitHubWeb

Auto_BGM

ローカルBGM生成のワークフロー管理ツール。

A workflow tool for generating BGM locally.

プロンプトのキューを1回につき1件だけ処理し、生成・解析・採用までをデスクトップUIから扱います。生成済みの音声を削除・移動・上書きしない設計にしています。

It processes at most one queued prompt per run, and handles generation, analysis and adoption from a desktop UI. By design it never deletes, moves or overwrites audio that has already been generated.

  • Python
  • PySide6
  • Stable Audio
  • Queue based

ローカルアーカイブ(未公開)

Local archive (not published)

midi_maker

最小構成のMIDIエディタとパターン生成ツール。

A minimal MIDI editor with pattern generation.

ピアノロールでノートを手編集し、標準の.midで保存・読込ができます。スケールとリズムの指定から決まった手順でパターンを生成し、ローカルLLMからのテキスト指定は任意の追加機能です。時間はすべてtickで扱います。

Edit notes by hand in a piano roll and save or load standard .mid files. Patterns are generated deterministically from a scale and rhythm specification, with text input via a local LLM as an optional extra. All timing is handled in ticks.

  • Python
  • PySide6
  • mido
  • MIDI I/O

ローカルアーカイブ(未公開)

Local archive (not published)

totalmenulist

レシピ・献立・買い物リストをまとめて扱うデスクトップアプリ。

A desktop app covering recipes, meal plans and shopping lists.

レシピの登録・検索から献立の組み立て、材料を人数分に換算した買い物リストの生成までを1つのアプリで行います。手持ちの食材を入力するとスコアリングで献立を提案する機能もあります。外部サービス不要のローカル完結型です。

One app that goes from registering and searching recipes to building meal plans and generating a shopping list scaled to the number of people. Enter the ingredients you already have and it scores and suggests menus. It runs locally with no external service.

  • Python
  • Tkinter
  • SQLite
  • Offline

ローカルアーカイブ(未公開)

Local archive (not published)

kakeibo_project

レシート読み取りに対応したローカル家計簿。

A local household budget app with receipt reading.

手入力に加えてレシート画像やPDFを読み取って登録でき、店舗名と科目の対応を覚えます。円グラフや月別・科目別の比較、予算と固定費の管理、Excel出力、バックアップと復元に対応します。

Enter spending by hand or read it from receipt images and PDFs, and it learns which category each shop belongs to. Includes pie charts, monthly and per-category comparisons, budget and fixed-cost management, Excel export, and backup and restore.

  • Python
  • Tkinter
  • SQLite
  • OCR

ローカルアーカイブ(未公開)

Local archive (not published)

security

自分のPC1台の内部だけを見る、ローカル完結の監査ツール。

A self-contained audit tool that looks only inside my own PC.

監視の対象は、この端末自身が出している通信と、この端末の上で動いているプロセス・ファイアウォール設定・バックアップ状態だけです。外部のネットワークや他人の端末を覗くものではありません。記録した内容は端末内のSQLiteに残り、読み取り専用の画面で時系列に確認します。検知と記録だけを行い、自動で遮断や修復はしません。判断は人が行う前提です。インターネット接続も管理者権限も不要で、カーネルやドライバには触れません。

It watches only the traffic this machine itself sends, plus the processes, firewall settings and backup state on this same machine. It does not look at other networks or anyone else's devices. What it records stays in a local SQLite file and is reviewed through a read-only timeline. It detects and records only: nothing is blocked or repaired automatically, and every judgement is left to a person. It needs no internet connection and no administrator rights, and it never touches the kernel or drivers.

  • Python
  • FastAPI
  • Streamlit
  • SQLite
  • This PC only
  • Detect only

ローカルアーカイブ(未公開)

Local archive (not published)

english_app

自分の経験を1分の英語スピーチにして練習するWebアプリ。

A web app for rehearsing your own experience as a one-minute English talk.

日本語で書いた経験を英語のスクリプトに変換し、その内容を読み込んで練習ページとして表示します。読み上げにはローカルの音声合成を併用します。

An experience written in Japanese is turned into an English script, which the page then loads as a practice sheet. Playback uses a local text-to-speech engine.

  • HTML / JS
  • Piper TTS
  • Speaking practice

ローカルアーカイブ(未公開)

Local archive (not published)

english_speaking_trainer

「体験を英語で話す装置」を目指した試作。

A prototype aimed at being a device for talking about your own experience in English.

学習アプリらしさを出さず、自然さと1分という短さを優先する方向で設計した英会話練習の試作です。採点やテストは置いていません。単一HTMLの試作段階です。

A speaking-practice prototype designed to avoid feeling like a study app, prioritising natural phrasing and a one-minute length. There is no scoring or testing. It is still a single-HTML prototype.

  • HTML
  • Prototype
  • No scoring

ローカルアーカイブ(未公開・試作)

Local archive (prototype, not published)

USB_checker

USB機器の構成変化と打鍵の異常を見るWindows向けの検知ツール。

A Windows detector for USB configuration changes and typing anomalies.

接続中のUSB機器のインターフェース構成を、承認済みのベースラインと突き合わせて変化を検知します。あわせてキー入力のタイミング統計から自動打鍵の疑いを見ます。検知と記録だけを行い、遮断はしません。承認は必ず利用者が明示的に行い、初回も含めて自動では登録しません。管理者権限もネットワーク通信も使わず、追加の依存パッケージを持たない構成です。キー入力の内容は解釈せず、押下中を超えて保持しません。

It compares the interface layout of connected USB devices against an approved baseline and reports changes, and separately looks at keystroke timing statistics for signs of automated typing. It only detects and records: nothing is blocked. Approvals are always made explicitly by the user, never automatically, not even the first time. It needs no administrator rights, makes no network connections, and has no third-party dependencies. Key input is never interpreted and is not retained beyond the moment a key is held.

  • Python
  • Win32 API
  • Raw Input
  • No dependencies
  • Detect only

ローカルアーカイブ(未公開)

Local archive (not published)

Favorites_Launcher

登録したYouTubeのリンクを整理して、選んだ1件を既定ブラウザで開くランチャー。

A launcher that organises saved YouTube links and opens one in the default browser.

ブラウザのブックマークHTMLをフォルダ階層ごと取り込み、動画IDで重複をまとめます。1本の動画を複数のリストに所属させられる構成で、検索と並べ替え、順番またはシャッフルのキューに対応します。再生機能そのものは持たず、選んだ1件を通常のYouTubeページとして既定ブラウザで開くところまでを担当します。埋め込み再生やAPI連携は意図的に範囲外としました。

It imports bookmark HTML from a browser, folder tree and all, then merges duplicates by video ID. A single video can belong to several lists, with search, sorting, and an ordered or shuffled queue. It does not play anything itself: it opens the chosen video as an ordinary YouTube page in the default browser. Embedded playback and API integration were deliberately left out of scope.

  • Python
  • Tkinter
  • SQLite
  • Local only

ローカルアーカイブ(未公開)

Local archive (not published)

MeishiCraft

日本の名刺をレイアウトして、PNG・PDF・印刷まで出せるWindows向けのデスクトップアプリ。

A Windows desktop app for laying out Japanese business cards and exporting them to PNG, PDF, or print.

91×55mmの標準サイズを縦横どちらでも扱え、表面と裏面を編集できます。文字、画像、QRコード、図形、線を置いて、移動、拡大縮小、重ね順の変更ができ、取り消しとやり直しにも対応します。枠からはみ出した文字は警告で気づけます。位置はミリ単位で保持し、編集画面、PNG、PDF、印刷で同じ描画規則を使うため、画面で見たとおりに出力されます。作った名刺は1つのファイルにまとめて保存し、後から読み直して編集できます。書き出しはPNGが96、150、300 DPI、PDFは実寸で、名刺1枚でもA4用紙10面付けでも出せます。

It handles the standard 91x55mm card in either orientation, with a front and a back. You can place text, images, QR codes, shapes, and lines, then move, resize, and reorder them, with undo and redo. Text that overflows its box is flagged. Positions are kept in millimetres, and the same drawing rules are used on screen, in PNG, in PDF, and when printing, so the output matches what you designed. A card is saved as a single file you can reopen and keep editing. PNG exports at 96, 150, or 300 DPI, and PDF exports at true size, either as one card or ten to an A4 sheet.

  • Python
  • PySide6
  • segno
  • Windows
  • Local only

ローカルアーカイブ(未公開)

Local archive (not published)

QRCodeMaker

入力した内容を、読み取り可能なQRコード画像にするWindows向けアプリ。

A Windows app that turns what you type into a scannable QR code image.

URL、メールアドレス、電話番号、SMS、テキスト、Wi-Fiの接続情報、連絡先カードに対応し、スマートフォンのカメラで読み取れるQRコードをPNGで保存できます。CSVから連絡先をまとめて読み込めば、1人1ページのPDFや、1人1ファイルのPNGを一括で書き出せます。インターネットには接続せず、入力した内容が外部へ送信されることはありません。処理はすべて手元のパソコンの中だけで完結します。

It covers web addresses, email, phone numbers, SMS, plain text, Wi-Fi credentials, and contact cards, saving each as a PNG that a phone camera can read. Load a CSV of contacts and it will produce a PDF with one person per page, or one PNG file per person, in a single run. It never connects to the internet, so nothing you type is sent anywhere: everything happens on your own computer.

  • Python
  • PySide6
  • qrcode
  • Pillow
  • Offline

ローカルアーカイブ(未公開)

Local archive (not published)

Favorites_Launcher_iOS_Local

Windows版 Favorites_Launcher の書き出しを、iPhoneやiPadで開いて編集できる1ファイルのHTMLアプリ。

A single HTML file that opens and edits Favorites_Launcher exports on an iPhone or iPad.

サーバーもインストールも要りません。HTMLファイルを1つiPhoneのファイルアプリへコピーし、タップして開くだけで使えます。Windows版が書き出したブックマークHTML、JSON、CSVを、拡張子と中身から自動で判別して読み込み、一覧表示、検索、タイトルやリンクの編集、リストの作成と振り分けができます。編集した内容は、Windows版が読める形式へ書き戻せます。編集中のデータは画面を開いている間だけメモリに置き、ブラウザの保存領域は使いません。利用者が書き出したファイルを正本とする設計です。表示は端末のライトとダークの設定に追従します。

No server and no installation: copy one HTML file into the Files app on an iPhone and tap it to open. It reads the bookmark HTML, JSON, and CSV that the Windows version exports, working out the format from the file itself, then lets you browse, search, edit titles and links, and create and assign lists. Edits can be written back in a format the Windows version reads. Data being edited lives only in memory while the page is open, with no browser storage used, so the file you export is the record. The display follows the light or dark setting of the device.

  • JavaScript
  • HTML
  • Single file
  • iPhone / iPad
  • Offline

ローカルアーカイブ(未公開)

Local archive (not published)

Shomei_photo_maker

手元の写真を、規格どおりの寸法の証明写真に整えるWindows向けアプリ。

A Windows app that turns a photo you already have into an ID photo at the required size.

JPEGまたはPNGの写真を読み込み、パスポート(日本)35×45mm、履歴書30×40mm、mm単位で指定する独自サイズから規格を選びます。枠は画面中央に固定され、動かすのは写真のほうで、移動・拡大縮小・回転で構図を合わせます。取り消しとやり直しにも対応します。書き出しは300または600 dpiのJPEG・PNG・PDFで、L判やA4への面付け、余白・写真間隔・枚数・カット線も指定できます。顔検出や背景除去などの画像解析は持たず、ネットワーク通信も行いません。出力画像には解像度情報を書き込み、元画像のEXIFやGPS情報は引き継ぎません。規格に適合しているかどうかの判定は行わないため、提出先の規格は利用者が確認する前提です。

Load a JPEG or PNG, then choose a spec: Japanese passport 35x45mm, resume 30x40mm, or a custom size given in millimetres. The frame stays fixed at the centre of the screen and the photo is what moves, scales and rotates into place, with undo and redo. Export at 300 or 600 dpi as JPEG, PNG or PDF, including sheet layouts on L-size or A4 paper with margins, spacing, counts and cut lines. There is no image analysis such as face detection or background removal, and it makes no network connections. Exported images carry their resolution, and the EXIF and GPS data of the original is not passed through. It does not judge whether a photo meets a given standard, so checking the requirements of wherever you submit it is left to you.

  • Python
  • PySide6
  • Pillow
  • Windows
  • Offline

ローカルアーカイブ(未公開)

Local archive (not published)

LocalFrame

Windows上でローカル動作する動画編集ソフトの試作。

A prototype video editor that runs locally on Windows.

1920×1080 / 30fps / 48kHzの単一シーケンスに、映像と音声のトラックを並べて編集します。メディアプールからのドラッグ配置、クリップの移動とトリム、クロスディゾルブ、位置・拡大率・回転・不透明度・音量のキーフレーム、明るさ・コントラスト・彩度・ガンマの基本色調整に対応し、これらの操作は取り消せます。プレビューと書き出しは、確定したレンダー計画を外部のFFmpegへ渡して処理します。プロジェクトは.lframe形式で保存します。動作にはFFmpegとffprobeが別途必要です。試作段階で、動作検証が済んでいない範囲が残っています。

Video and audio tracks are edited on a single 1920x1080 / 30fps / 48kHz sequence. Clips are dragged in from a media pool, moved and trimmed, joined with cross dissolves, animated with keyframes for position, scale, rotation, opacity and volume, and adjusted with basic brightness, contrast, saturation and gamma, all with undo. Preview and export hand a fixed render plan to an external FFmpeg. Projects are saved as .lframe files. FFmpeg and ffprobe have to be installed separately. It is still a prototype, and parts of it have not yet been verified in use.

  • Python
  • PySide6
  • FFmpeg (external)
  • Windows
  • Prototype

ローカルアーカイブ(未公開・試作)

Local archive (prototype, not published)

Unicode Phishing Guard

Unicodeの不可視文字・方向制御文字を使った偽装の疑いをローカルで監査するThunderbird拡張。

A Thunderbird extension that locally audits suspected impersonation using invisible Unicode characters and direction controls.

新着メールの件名、送信者表示名、送信元ドメインと、必要な場合の本文を解析し、ブランド名の偽装が疑われる理由を端末内の監査ログに記録します。自動移動は既定OFFで、有効化した場合だけHIGH・MEDIUMの判定に応じて指定済みの既存フォルダーへ移動します。メールの削除・本文の書き換え・フォルダー作成は行いません。設定上の最低Thunderbirdバージョンは154.0です。

It analyses new mail subjects, sender display names and domains, and body text when needed, recording reasons for suspected brand impersonation in a local audit log. Automatic moves are off by default; when enabled, HIGH and MEDIUM results can be moved to designated existing folders. It does not delete messages, rewrite their bodies, or create folders. The minimum Thunderbird version declared in the manifest is 154.0.

  • JavaScript
  • MailExtension
  • Manifest V3
  • Local audit

ローカルアーカイブ(未公開)

Local archive (not published)

GuardCopy

コピー前にフォルダの差分を確認し、選択したファイルを片方向コピーするWindows 11向けアプリ。

A Windows 11 app for comparing folders before copying selected files in one direction.

コピー元とコピー先を比較し、追加・更新・同一・コピー先のみの分類から、コピーする追加・更新対象を選べます。コピー元は読み取りのみで、コピー先だけにあるファイルは削除しません。SHA-256などで比較後の変更を検出し、コピー内容も検証します。PythonとPySide6で実装されています。

It compares source and destination folders, classifying files as new, changed, identical, or destination only, so you can select new and changed files to copy. The source is read only, and destination-only files are not deleted. SHA-256 and other checks detect changes since comparison, and copied contents are verified. It is built with Python and PySide6.

  • Python
  • PySide6
  • Windows 11
  • One-way copy

ローカルアーカイブ(未公開)

Local archive (not published)