I didn't start out as an engineer. I was running the business, and ended up building the systems myself.
WORKS
事業の数字から直すべきものを決め、現場のやり方を変えずに作り、人が回せる形にして渡して残す。Find what's worth fixing in the numbers,build it without changing how people already work,and hand it over so the team can keep it running on their own.
Deciding comes from running a business, building from the shop floor, handing over from teaching. I carry all three myself. Whether it's a solo contract, a team build, or a practice set up for an organization, the order stays the same.
01
事業の数字から直すべきものを決め、Find what's worth fixing in the numbers,
勤怠を自動化してほしい、という依頼から始まってはいない。マンション管理事業者にコンサルとして入り、まず会計を見た。人件費が6割で、その中身を追うと勤務時間の申告に水増しが見つかった。自己申告と手書きの給与計算では突き合わせる手段がなく、起きていても気づけない。人件費を語る土台が無いので、正確な記録が最初の一手になった。声の大きさではなく、原価の構造から順番を決めている。This did not start with a request to automate attendance. I came into a property management company as a consultant and looked at the books first. Labor was 60%, and following it down, hours were being misreported. Self-reported attendance and handwritten payroll left nothing to check them against, so it went unnoticed. With no ground to discuss labor cost on, accurate records became the first move. The order is set by the cost structure, not by who complains loudest.
現場のやり方を変えずに作り、build it without changing how people already work,
現場は Excel の帳票で回っていた。入居契約書を従業員が毎回コピーして書き換えていて、春の入退去シーズンに負荷が集中していた。繰り返しの転記をなくすため、氏名や部屋番号を入れれば同じ帳票が埋まって PDF まで出る経路を作った。共有フォルダの Excel を開いて保存する従来の経路も残してあり、様式もファイル形式もそのままで、保存した時点で PDF になる。出た書類はどちらも同じ一覧から探せる。使われ続けるかどうかは、覚え直しを強いたかどうかで決まる。The office ran on Excel forms. Staff copied and rewrote the same tenancy paperwork every time, and the load piled up in the spring move-in season. To take out that repeated transcription, I built a route where a name and a room number fill the same form and produce the PDF. The old route stayed as it was: open the Excel file in the shared folder and save it, same layout, same file format, and the PDF is there. Documents from either route are searchable in one list. Whether a system keeps being used comes down to whether anyone was made to relearn their work.
人が回せる形にして渡して残す。and hand it over so the team can keep it running on their own.
ここだけ相手が個人ではなくチームと会社になる。自分の開発は型を決めて標準化していて、同じものを組織にも入れられる。ただし全部は配らない。型にするのは、人の判断を省かせない、セッションを超えて残す、担当者が替わっても揃う、この三つに当たるものだけにする。相手の規模に合わせて粒度を落とし、最低限を整えて渡す。1コマンドで取り込める単位なので、導入そのものに時間を使わせない。Here the counterpart is a team and a company rather than one person. My own development is standardized around a set of forms, and the same set goes into an organization. Not all of it, though. Something becomes a standard only when it keeps a human decision from being skipped, has to survive across sessions, or has to come out the same when the person changes. I scale it to the size of the team and hand over the minimum that works, in units a repository pulls in with one command, so nobody spends time on the rollout itself.
NFC カードをかざすだけで打刻が完結し、Google スプレッドシートへ自動集計。Python 標準ライブラリのみで構成し、Raspberry Pi 2 や旧 PC でも依存ゼロで動く。Automated attendance tracking by tapping NFC cards, logging directly to Google Sheets. Built using only the Python standard library with zero dependencies, running seamlessly even on Raspberry Pi 2 or old PCs.
既存の Excel 帳票運用はそのままに、Web フォーム生成・共有フォルダの PDF 自動変換・全文検索を後付け。clone して使う汎用モジュール群 + FastAPI/React リファレンス実装。Retrofit web forms, shared folder PDF conversion, and full-text search without breaking existing Excel workflows. Provides cloneable modules with a FastAPI/React reference implementation.
給餌棚の開閉を自動検知し、LINE で家族へ定時通知する家庭向け IoT。Pico W → FastAPI → PostgreSQL 構成で、体重管理や設定変更まで LINE で完結。Home IoT system detecting feeding cabinet opening/closing and sending scheduled LINE notifications to family members. Powered by Pico W → FastAPI → PostgreSQL, with weight tracking and configuration manageable via LINE.
1人で固めた開発の型を、チームのリポジトリへ1コマンドで取り込める配布キット。裁可の記録場所や手順ごと、作業フロー・駆動文書・保証台帳を選択して組み込める。A distribution kit that imports a solo-hardened dev process into team repos in one command. Packages workflows, driving docs, and assurance ledgers along with audit procedures.
開発者ポートフォリオ向けに、ビルド時自動同期で知識更新を不要にした受付チャットボット。Zenn 記事の取り込みや Contact への誘導は、設定のオンオフで切り替えられる。Reception chatbot widget for developer portfolios with zero-maintenance build-time knowledge synchronization. Features easy toggling for Zenn article ingestion and contact routing.
帳票 PDF の文脈検索と DB 集計を統合し、自然言語で横断照会できる AI 基盤。Azure で帳票を構造化し、LangGraph が質問の性質に応じて SQL と RAG へ自動で振り分ける。Hybrid AI search unifying SQL aggregation and RAG document lookup for business forms. Structures PDFs via Azure and routes queries to SQL or RAG engines using LangGraph.
WinForms の密結合を解体し、.NET 10 Web API + React へ段階的移行。LangGraph を独立追加し、自然言語で在庫・売上を照会できる AI エージェントを統合。Gradual migration from tightly coupled WinForms to .NET 10 Web API + React. Integrates an independent LangGraph AI agent for querying inventory and sales using natural language.
AutoPostBack・ViewState を解体し、.NET 10 Web API + React へ段階的移行。SignalR を追加し、WebForms では不可能だったリアルタイム打刻監視を実装。Step-by-step modernization of legacy WebForms to .NET 10 Web API + React by eliminating AutoPostBack and ViewState. Adds SignalR for real-time attendance monitoring.
手元の git リポジトリと Issue を静的 HTML にし、自分だけが読めるコードブラウザとして Cloudflare で配信する。スマホで読んだ箇所をそのままエージェントへ渡せる。Turns local git repos and their GitHub issues into static HTML, a private code browser behind Cloudflare Access. Read it on your phone and hand what you find straight to an agent.
エージェントで開発を回すチームのエンジニア評価ラダー。5軸5段階の判定文で sdlc-kit の成果物を名指しし、在籍者の評価から採用選考までを1本の物差しに乗せる。An engineer ladder for teams developing with AI agents. Uses a 5-axis, 5-level criteria tied to sdlc-kit artifacts to unify internal evaluation and hiring on a single scale.
はてブ・Zenn・GitHub Trending から記事を選び、毎日 Telegram へ届ける配信バッチ。Claude Haiku の選別と GitHub Actions 実行でサーバーを置かず、完全自動で運用。A daily batch that curates tech articles from Hatena, Zenn, and GitHub Trending to Telegram. Runs serverless on GitHub Actions using Claude Haiku for lightweight selection.
給与所得がありながら副業で事業所得がある人のための帳簿。入力は金額と勘定科目だけで、複式簿記・家事按分・給与との合算は裏側で導出し、確定申告書へ転記できる集計まで出力する。Bookkeeping for a salaried worker with side-business income. Entry takes only an amount and an account; double-entry, household apportionment, and the salary merge are derived behind the scenes, down to figures ready to transcribe onto a tax return.
静的バックテストで選んだ戦略は、相場環境が変わると一斉に成績を落とす。相場を9セル(トレンド強度×ボラティリティ)に分類し、セルごとに順張り/逆張り/ノーポジを切り替える動的レジーム切替を、分類→判定→検証まで通して実装。Dynamic regime switching backtester that classifies market conditions into 9 cells (trend strength x volatility) and adaptively toggles trend-following, mean-reversion, or flat positions.
bt-dynamic で検証した戦略を、同一コード・同一設定のまま実弾に接続する実行層。発注ゲートやキルスイッチ等の安全設計を備え、systemd timer による無人運転まで実装。Execution layer connecting strategies validated in bt-dynamic to live trading with identical logic. Features safety gates and kill switches, running unattended via systemd timers.
機械的な進捗管理ではなく、新人の手応えをメンターと共有する研修支援ツール。Vue + Go を go:embed で単一バイナリに固め、SQLite のみでインフラ依存ゼロ。Mentorship-focused training support tool for sharing newcomer feedback instead of mechanical progress tracking. Vue + Go bundled into a single binary via go:embed, requiring zero infrastructure dependencies with SQLite.
冒頭の定義文が除去された Wikipedia 記事の同定ベンチマーク。数式 / GBDT / LLM 再判定の 4 手法 × 5 シードで MRR を実測。Identification benchmark for Wikipedia articles with redacted lead definitions. Evaluates MRR across 4 methods (Math / GBDT / LLM re-ranking) x 5 seeds.
このサイトと、制作の経緯を書いた Zenn(技術記事の投稿サイト)の記事をもとに AI が答えますAI answers from this site and my articles on Zenn (a tech blogging platform) about how each project was built