のはらたつお nohara tatsuo プロモーションサイト
フリーランス エンジニア ・ 大阪Freelance engineer · Osaka, Japan

止まらない自動化を、
肩の力を抜いて回す
Automation that stays up,
minus the white-knuckle part.

AIを組み込んだWebサービスと媒体を、企画から日々の運用まで一人で回しています。派手な新機能より、「気づいたら壊れてた」をなくす設計が得意です。 I build and run AI-driven web services and media, from idea to daily operations, on my own. Less about shipping features, more about making sure "it broke and nobody noticed" never happens.

  • 大阪・フルリモート可Osaka · remote OK
  • 30以上のサイトを運用中30+ sites in operation
  • ご相談は30分からStarts with a 30-min chat
  • 返信は1営業日以内Reply within 1 business day
夜のデスクで、たくさんのサイトを一人で見ているイラスト
こんなこと、ありませんか?Sound familiar?

自動化にした。でも、なんだか落ち着かない。You automated it — and somehow you sleep worse.

AIに任せた文章、品質が落ちてない?Is the AI's writing quietly getting worse?

キー切れや安全フィルタで、生成はある日そっと劣化します。空っぽの結果がそのまま公開されていた、なんてことも。An exhausted key, a safety filter — generation degrades without a sound. Sometimes an empty result ships as-is.

自動化は動いてる。でも誰も見てない。The automation runs. Nobody watches it.

外部サイトへのアクセスが暴走してアカウント停止——気づくのは、たいてい手遅れになってから。A crawler runs away, the account gets suspended — and you find out well after it mattered.

その仕組み、あなたしか触れない。Only you can touch that system.

一人でつくった自動化は、引き継ぎ資料がないと「動くブラックボックス」になります。A one-person build with no handover notes becomes a box that works and nobody dares open.

——どれも、わたしがこの2年で実際に踏んで、対策してきたところです。 ——every one of these, I've hit myself these past two years, and built the fix for.

えらぶ理由Why me

「作れます」ではなく、「回り続けます」。Not "I can build it" — "it stays up".

一人で回る、でも閉じないRuns solo, stays open

30以上のサイトを共通パイプラインに寄せ、新規立ち上げは設定ファイル1枚。引き継ぎ資料と点検の仕組みまでセットでお渡しします。30-plus sites on one shared pipeline; a new one is a single config file. Handover docs and a health-check routine come with it.

静かに壊れないIt fails out loud

生成の失敗は握りつぶさず、その場で止めて知らせます。クラウド → 予備 → ローカルLLM → 明示的な停止、と段階を踏む設計。Failures aren't swallowed — they stop the line and tell you. Cloud, then backup, then a local LLM, then an explicit halt.

外部サービスと長く付き合うKeeps third parties happy

連続失敗で即停止、多重起動はロックで防止。相手の規約とレート制限を守るマナーを、最初から組み込みます。Abort on repeated failure, a lock against double runs, and respect for the other side's terms and rate limits — built in from day one.

つくったものThings I've shipped

「作れます」の、実物です。"I can build it" — here's the proof.

コンセプトの発案から設計・実装・公開まで、ぜんぶ一人で。どれも、いま動いています。Concept, design, build, and launch — all solo. Every one of these is live.

KEIBA ONE

明日の全レースから、根拠を比べて1つだけ選ぶ競馬分析。「当てる」より「同じ基準で記録を残す」設計で、見送る判断もします。A racing analysis tool that picks one race out of tomorrow's card, by comparable reasons — built to log decisions on one rubric rather than to "win," and to skip when the read is weak.

静的サイトstatic site構造化評価structured scoring結果検証result tracking
keiba1.com →

LUNEA

生年月日から「今日の一通」が届く星占い。星座への変換は端末内で完結させ、個人情報はサーバーに送りません。A daily horoscope that arrives as "a letter from the stars." The date-to-sign conversion happens on-device; no personal data reaches the server.

生成AIgenerative AIプライバシー設計privacy by design日次生成daily generation
luneai.net →

talk2you

匿名で気持ちを話せるAIの相談室。「やさしく聞く」「一緒に整理する」など、寄り添い方を自分で選べます。An anonymous room to talk things through with an AI. You choose how it responds — gently listening, helping you sort it out, or a quiet push forward.

生成AIgenerative AI匿名anonymous会話の継続conversation state
talk2you.tokyo →

joho-collector

日本語の相談文から、地図データで実体を集めてExcelに。robots.txt遵守・レート制御・連続失敗ガードつきの、行儀のよい収集。Turns a plain-Japanese request into a spreadsheet of real places, gathered from map data. Well-mannered collection: robots.txt-aware, rate-limited, fail-fast.

FlaskOpenStreetMappytest ×22
johocollector.com →

※ KEIBA ONE・LUNEA は動作確認用のデモデータで動いています。※ KEIBA ONE and LUNEA currently run on demo data for evaluation.

受託の現場からFrom client work

お見せできる範囲で、直近のAIプロジェクトから。Recent AI projects, as far as I can show them.

クライアント名と業界は伏せています。中身の話は、面談でいくらでも。Client names and sector left out. Happy to go deep in a call.

Fleet

30以上のサイトを、ひとつの運用系としてThirty-plus sites as one operated system

サイトごとにビルドスクリプトやcronを散らかすと、一人では回せません。ビルドは単一のオーケストレータに集約、定期処理はタスクスケジューラとcron、健全性は毎朝のバッチが自分で点検。サイト固有のコードは最小限になり、新規立ち上げは設定ファイルの追加で済みます。Scatter a build script per site and one person can't keep up. Builds sit behind one orchestrator, scheduled work on Task Scheduler and cron, and a morning batch audits the fleet's health on its own. Site-specific code shrank to almost nothing.

  • ビルド集約unified builds
  • Task Scheduler + cron
  • 毎朝の自己点検daily self-audit
Degrade

無音の劣化を、許さないNo silent degradation

ある生成関数が例外ではなく空文字列を返し、中身の薄い下書きが本番の投稿処理に流れていました。バグの本質は品質ではなく、失敗が失敗として扱われていなかったこと。経路を「主要クラウド → 共有プール → ローカルLLM → 明示的な停止」に組み直し、空を返す代わりに投稿処理を止めるようにしました。One generator returned an empty string instead of raising, and thin drafts flowed into publishing. The bug wasn't quality — it was a failure that didn't register as one. I rebuilt the path as a chain that halts publishing rather than emitting nothing.

  • 多段フォールバックlayered fallback
  • 空応答は停止empty = halt
  • 残量を毎朝監視headroom watched
External

壊れやすい外部サービスを前提に組むBuilt for fragile third parties

依存する配信元・各種API・SSH/FTPは、規約違反やレート超過で予告なく止まります。すべてのクローラに連続失敗での即時停止を最初から組み込み、多重起動は単一インスタンスロックで防止。実行前には同種プロセスの有無を、推測せず実際に確認します。Upstreams go dark without warning when a term or a rate ceiling is crossed. Every crawler ships with a consecutive-failure abort from version one; a single-instance lock stops double runs; and I check for sibling processes before each run rather than assume.

  • 連続失敗で停止fail streak → abort
  • 単一インスタンスロックsingle-instance lock
  • 実プロセス確認verify, don't assume
Propagate

一度検知して、全体へ波及させるDetect once, propagate everywhere

配信元で作品が削除されると、20近いサイトに散らばったアフィリエイトリンクが一斉に無効リンクになります。検知は一か所——日次のチェッカー——に置き、そこからWordPress 9サイト・静的10サイト・検索エンジン本体へ、リンク無効化を自動で波及。反映層はサイト種別ごとに書き込み経路を用意しています。When an item is delisted upstream, links across nearly twenty sites all go dead at once. Detection lives in one daily checker and fans out neutralization to nine WordPress sites, ten static builds, and the search engine — one write path per site type.

  • 日次チェッカーdaily checker
  • WP×9 / static×10
  • 反映を確認confirm each write
道具箱Toolbox

日常的に使っているものWhat I reach for

言語Languages

PythonPHP素のJavaScriptvanilla JS

データData

MySQLMariaDBSQLite

基盤Platform

WordPressFlaskSQLAlchemy

自動化Automation

SeleniumPowerShellVBScriptcron

AI / LLMAI / LLM

AnthropicCohereローカルLLMlocal LLMComfyUIffmpeg

計測 / SEOAnalytics / SEO

GA4Search Console構造化データstructured dataLLMO
進め方How we'd work

小さく始めて、こわくない形で。Start small, keep it low-risk.

30分の相談(無料)A 30-min chat (free)

困っていること、いまの構成を聞かせてください。オンラインで。Tell me what's hurting and how things are set up. Online.

費用なしno charge

小さく試すTry it small

いちばん不安な一箇所から。1〜2週間で動く形にします。Start with the scariest spot. Working version in a week or two.

本運用と引き継ぎOperate & hand over

監視と点検を組み込んで運用へ。資料と一緒にお渡しします。Into operation with monitoring baked in — and the docs to keep it going.

わたしについてAbout

のはらたつおです。大阪で20年以上、Webの受託開発を続けてきました。いまも平日はだいたいコードを書いています。新しいツールもAIも、まず自分で触ってみないと気が済まないたちで、この2年はほとんど生成AIの運用にかかりきりでした。 I'm nohara tatsuo. I've done contract web development in Osaka for 20-plus years, and most weekdays I'm still writing code. I can't leave a new tool — or a new model — alone until I've tried it myself, and these last two years have been almost entirely about running generative AI in production.

わたしの書く手順書やコメントが堅苦しいのは、事故を一件でも減らしたい一心からで、人としては割と話しやすいほうだと思います。まずは気軽に声をかけてください。 If my runbooks and comments read a little stiff, it's only because I want one fewer incident. In person I'm fairly easy to talk to. Just say hello.

現在、新規のご相談を受け付けていますCurrently open to new inquiries

お仕事の話、聞かせてください。Tell me about the work.

業務委託でも、契約社員でも、「ちょっと相談だけ」でも。まずは1通、気軽にどうぞ。1営業日以内にお返事します。Contract, employment, or just "can I pick your brain" — send one email and I'll reply within a business day.

contact@tnohara.com

動くデモjohocollector.com
所在大阪 / フルリモート可
形態業務委託・契約社員・単発相談
Live demojohocollector.com
LocationOsaka, Japan / remote OK
Engagementcontract, employment, or a one-off consult