Softex CelwareTech Blog

バニラJS Webアプリ の記事一覧

バニラJS Webアプリ2026-10-01

変化するChatGPTの回答DOMから本文を安定して取得する

ChatGPTの画面構造変更で回答を取得できなくなった事例から、本文の根を読む、IDを祖先から得る、旧セレクターを段階的に残す調査手法を紹介します。

Chrome拡張機能DOMChatGPTセレクター
バニラJS Webアプリ2026-10-01

Chrome拡張の全機能を利用規約の同意まで停止する

多機能なChrome拡張へ後から初回同意ゲートを加える際、Service Workerの同期リスナー登録を保ちつつ各機能を止める設計と注意点を解説します。

Chrome拡張機能Manifest V3Service Worker利用規約
バニラJS Webアプリ2026-10-01

Chrome拡張で添付PDFをダウンロードせずにその場で表示する

添付ダウンロードになるPDFを、ユーザー操作で取得してChrome標準ビューアに表示する方法と、権限・メモリ・閉じる操作の注意点を解説します。

Chrome拡張機能PDFBlobiframeダウンロード
バニラJS Webアプリ2026-09-25

Chrome拡張の不具合報告を事前入力フォームで受け付ける

拡張機能に専用の送信サーバーや追加権限を設けず、環境情報を事前入力したGoogleフォームへ案内して不具合報告を受け付ける方法です。

Chrome拡張機能Googleフォーム不具合報告プライバシー
バニラJS Webアプリ2026-09-25

Chrome拡張からFile System Access APIでローカル保存する

利用者が選んだフォルダーへChrome拡張から保存する際のハンドル保管、権限再確認、待機中の要求管理、Service Workerでの書き込みを整理します。

Chrome拡張機能File System Access APIIndexedDBファイル保存
バニラJS Webアプリ2026-09-25

Chrome拡張のLevelDBログを読み取り専用で調査する

Chrome拡張の保存データをLevelDBログから調べる際、元データを変更せずにコピーを解析し、ブロック分割や断片化を考慮して必要な範囲だけ確認する方法です。

Chrome拡張機能LevelDBデバッグデータ保護
バニラJS Webアプリ2026-09-25

Chrome拡張で対象サイトのデータ取得経路を選ぶ

画面DOM、埋め込みJSON、内部APIなど複数の取得経路を実サイトで比較し、更新や権限、利用者データのリスクを踏まえて選ぶ手順を紹介します。

Chrome拡張機能データ取得DOM調査
バニラJS Webアプリ2026-09-25

Chrome拡張で月次通知と起動時の取りこぼしを扱う

毎月の指定日や月末に通知するChrome拡張で、ワンショットalarm、Service Worker再起動、取りこぼしの補完、重複通知防止を設計する方法を紹介します。

Chrome拡張機能alarms通知Service Worker
バニラJS Webアプリ2026-09-25

Chrome拡張のService Workerと移植処理をNode.jsでテストする

ブラウザーを毎回起動せずにChrome API依存の処理や移植結果を検証するため、実モジュールと小さなAPIモック、全数比較を組み合わせる方法です。

Chrome拡張機能Node.js自動テストモック
バニラJS Webアプリ2026-09-25

Chrome拡張で送信前に確認を挟み結果を記録する

ページの送信操作を調査し、捕捉フェーズで確認を挟み、ネイティブ確認ダイアログの結果を限定的に検出する構成と二重送信を避ける注意点を解説します。

Chrome拡張機能送信確認イベントセキュリティ
バニラJS Webアプリ2026-09-25

Chrome拡張で既存SPAの添付欄にドラッグ&ドロップを追加する

既存サイトのフォームを壊さず、対象の添付欄だけでファイルを受け付けるChrome拡張の設計を解説します。入力欄への反映、件数制限、表示、送信確認までを扱います。

Chrome拡張機能ドラッグ&ドロップFile APISPA
バニラJS Webアプリ2026-09-25

Chrome拡張でSPAの入力モーダルを安全に自動操作する

SPAの登録画面を自動操作するとき、画面状態の確認、日付と時刻の検証、候補選択の待機、確認モーダル処理を組み合わせて誤登録を防ぐ方法を解説します。

Chrome拡張機能SPAモーダル自動入力
バニラJS Webアプリ2026-09-25

Chrome拡張の設定はstorage.localとstorage.sessionで使い分ける

再起動後も残す設定と一時的な状態をstorage.local・storage.sessionに分け、content scriptへの公開範囲や起動時の競合を避ける方法を解説します。

Chrome拡張機能chrome.storageService Worker状態管理
バニラJS Webアプリ2026-09-25

日本語文面から宛名を安全に取り出す

敬称だけを手掛かりに日本語文面から宛名を抽出し、一般的な呼びかけや本文の誤認を拒否して、アカウント名へ安全にフォールバックする方法を解説します。

JavaScript日本語処理文字列解析テスト
バニラJS Webアプリ2026-09-25

依存ライブラリーなしでSVGの折れ線と棒グラフを重ねる

外部グラフライブラリーを使わず、SVGで折れ線と棒を重ねるときの座標系、左右の軸、積み上げ表示、欠損値、ツールチップの設計を紹介します。

JavaScriptSVGグラフデータ可視化
バニラJS Webアプリ2026-09-24

Chrome拡張の画面を実物に近い状態でCDP検証する

chrome.* APIを最小スタブで補い、実物の拡張ページをCDPで待機・クリック・撮影する検証方法と、サイドパネルのタブ別設定を確認する要点をまとめます。

Chrome拡張機能Chrome DevTools ProtocolCDPheadless ChromeE2Eテストサイドパネル
バニラJS Webアプリ2026-09-24

多機能Chrome拡張を機能登録とチャット分業で保守する設計

多数の機能を持つChrome拡張を、機能登録、名前空間、共有ドキュメント、版管理で分割し、複数の開発チャットでも保守しやすくする設計をまとめます。

Chrome拡張機能Manifest V3JavaScript機能分割チーム開発バージョン管理
バニラJS Webアプリ2026-09-24

Chrome拡張の画面マスクをdocument_start CSSでちらつかせない

画面共有やスクリーンショット向けの目隠しを、document_startのCSSと安全側の初期状態で実装し、SPAやShadow DOMにも追従させる考え方を解説します。

Chrome拡張機能content scriptsCSS画面マスクプライバシーShadow DOM
バニラJS Webアプリ2026-09-24

Chrome拡張のクリップボードコピーをオフスクリーン文書へ集約する

タブ移動や待機後でもChrome拡張から確実にコピーできるよう、オフスクリーン文書とService Workerへクリップボード処理を集約する方法を解説します。

Chrome拡張機能Clipboard APIoffscreenService WorkerManifest V3
バニラJS Webアプリ2026-09-24

Chrome拡張のポップアップから入力欄へ確実に文字を挿入する

ポップアップのフォーカス問題、VueやReactの入力イベント、同じclassの別textareaを考慮して、Chrome拡張からページの入力欄へ文字を確実に挿入する方法を解説します。

Chrome拡張機能JavaScript入力欄VueReactcontent script
バニラJS Webアプリ2026-09-03

ローカルLANの2画面同期と座席レイアウトUIを安定させる設計

ローカルLAN内で操作画面と表示専用画面を同期し、座標DB方式の座席レイアウトとCanvasグリッドで、現場向け表示システムを安定させる設計をまとめます。

Vanilla JSSocket.IOローカルLAN座席レイアウトCanvasSQLiteUI設計
バニラJS Webアプリ2026-08-26

Chrome更新でSVGの細線が霞む問題とviewBoxズームの実機検証

Chrome更新後にSVGの1px未満の線が霞む原因、devicePixelRatio基準の線幅下限、viewBoxズーム・パンのクランプ、インストール済みChromeをPuppeteerで検証する方法をまとめます。

SVGVanilla JSChromePuppeteerviewBoxCanvasブラウザ検証
バニラJS Webアプリ2026-07-07

Excelの投稿リストからXの予約投稿を半自動化するブックマークレット

Excelやスプレッドシートで管理している投稿本文・予約日時・画像パスを使って、Xの予約投稿入力を半自動化するブックマークレットの実装例です。

JavaScriptChromeブックマークレットクリップボードDOMXSNS投稿業務効率化
バニラJS Webアプリ2026-06-05

Chromeブックマークレットでココナラ依頼者名を返信欄へ自動入力する

ココナラのメッセージ詳細ページやトークルームで、相手の名前を返信入力欄へ1クリックで差し込むChromeブックマークレットの実装例です。様なし版と様あり版を使い分けます。

JavaScriptChromeブックマークレットDOMVue業務効率化ココナラメッセージ
バニラJS Webアプリ2026-06-04

Chromeブックマークレットでココナラ予約枠を1クリックコピーする

Chromeブックマークレットで、ココナラ予約管理カレンダーの空き枠を定型テキストに変換してクリップボードへコピーする実装例です。%やjavascript:消失など、配布時の落とし穴も整理します。

JavaScriptChromeブックマークレットクリップボードDOM業務効率化ココナラ予約管理
バニラJS Webアプリ2026-06-04

Chromeブックマークレットでココナラ販売金額を1クリック合計する

Chromeブックマークレットで、ココナラ取引管理の取引中ページに表示されている販売金額を合計し、件数と合計額をアラート表示する実装例です。

JavaScriptChromeブックマークレットDOMSet業務効率化ココナラ取引管理
バニラJS Webアプリ2026-06-03

Chromeブックマークレットでココナラ分析グラフの数値をExcel用にコピーする

Chromeのブックマークレットを使い、ココナラの分析ページに表示される日付別の表示数・閲覧数・販売数をTSV形式でクリップボードへコピーする実装例です。

JavaScriptChromeブックマークレットクリップボードTSV業務効率化ココナラ分析
バニラJS Webアプリ2026-06-01

importmapでThree.jsをCDNから読み込むビルドレス3D Web構成

npmやViteを使わず、importmapでThree.jsとOrbitControlsをCDNから読み込む静的3D Webアプリ構成を整理します。

Vanilla JSThree.jsimportmapCDN3D
バニラJS Webアプリ2026-06-01

スキーマ駆動パラメータUIとモードレジストリで分岐を減らす

複数モードを持つWebアプリで、入力項目、検証、計算関数、出力ファイル名をモードレジストリに集約する設計パターンです。

Vanilla JSUI設計状態管理モード切替設計パターン
バニラJS Webアプリ2026-06-01

重い計算UIでスライダー操作中プレビューとデバウンスを両立する

スライダー操作中は軽量プレビュー、操作完了時は本解像度で再計算することで、重い3D計算UIの操作感を保つパターンです。

Vanilla JSデバウンスUI設計3Dパフォーマンス
バニラJS Webアプリ2026-06-01

Three.jsでパラメータ変更時にカメラ位置を保持するパターン

3Dモデル更新時に視点を毎回リセットせず、初回やモード切替だけ自動フィットするためのカメラ制御パターンです。

Vanilla JSThree.js3DビューアOrbitControlsUI設計
バニラJS Webアプリ2026-05-29

円単位の逆算を二分探索で実装する

手数料や消費税の端数処理がある料金計算で、予算内最大額や目標手取り以上の最小額を1円単位で探索する方法です。

バニラJS二分探索料金計算逆算端数処理
バニラJS Webアプリ2026-05-29

技術ブログとWebアプリを相互リンクさせる導線設計

技術ブログで解説した式や考え方をWebアプリで試せるように、記事とアプリを相互リンクさせる導線設計を整理します。

バニラJS公開アプリ導線設計SEOスプライン補間
バニラJS Webアプリ2026-05-29

計算表のセルをクリックして式と代入値を確認できるUI

行列や係数表のセルに、一般式、代入値、計算結果、説明を持たせ、クリックで詳細を確認できるUIパターンです。

バニラJS計算表モーダル学習UIスプライン補間
バニラJS Webアプリ2026-05-29

数式導出をSTEPで見せる学習UIの作り方

数式や計算過程を一度に見せず、概要、条件式、行列、係数、最終式へ順番に追える学習UIとして整理する設計パターンです。

バニラJS学習UI数式スプライン補間Webアプリ
バニラJS Webアプリ2026-05-29

係数行列の条件式を色分けして見せるUI設計

条件式、係数行列、右辺ベクトルの対応関係を色でそろえ、数値計算の構造を追いやすくするUI設計パターンです。

バニラJS行列UI設計色分けスプライン補間
バニラJS Webアプリ2026-05-29

モバイル向け数値入力パッド

スマートフォンで金額を入力しやすくするために、数字、増減、全消去、1字削除ボタンを画面内に置く入力UIパターンです。

バニラJSモバイルUI数値入力料金計算スマホ対応
バニラJS Webアプリ2026-05-29

計算ロジックを純粋関数に分離する設計

見積、税、手数料などの計算処理をUIイベントから切り離し、DOMに依存しない純粋関数として扱う設計パターンです。

バニラJS純粋関数料金計算テストしやすい設計
バニラJS Webアプリ2026-05-29

スマホでは表をカード表示に変換するCSS

PCでは通常テーブル、スマホでは行単位のカード表示に切り替えて、計算結果表の横切れを防ぐCSSパターンです。

バニラJSCSSレスポンシブテーブルスマホ対応
バニラJS Webアプリ2026-05-29

タブごとに入力状態を保持するUI

見積額、予算、手取りなど複数モードを持つ計算ツールで、タブごとに金額や設定を保存・復元するUIパターンです。

バニラJSタブUI状態管理料金計算フォーム
バニラJS Webアプリ2026-04-22

Uint8Arrayを安全にbase64エンコードしてlocalStorageに保存する方法

100KB超のUint8Arrayをbtoapに渡すとスタックオーバーフローが起きます。32KBチャンク分割でエンコードする安全なパターンを解説します。

JavaScriptbase64localStoragesql.jsバイナリ
バニラJS Webアプリ2026-04-17

実績バッジシステムをlocalStorage + Supabase併用で実装する方法

ゲスト時はlocalStorage、ログイン後はSupabaseに同期する実績バッジシステム。トースト通知付き。

バニラJSSupabaseゲーミフィケーションlocalStorageバッジ
バニラJS Webアプリ2026-04-17

重い処理でUIが固まらない!setTimeout(0)でプログレスバー+キャンセル対応

重い計算処理中もUIがフリーズしない非同期ループパターン。setTimeout(0)でプログレス更新とキャンセル対応を両立。

バニラJS非同期UI応答性プログレスバーsetTimeout
バニラJS Webアプリ2026-04-17

Canvasで複数要素を1枚に合成してPNGダウンロードする方法

グリッド+ヒント数字+罫線をCanvasに合成して1枚のPNGとして保存。サーバー不要でクライアント側完結。

バニラJSCanvas画像エクスポートPNGdataURL
バニラJS Webアプリ2026-04-17

複数ページ共通UIをIIFEモジュールに集約する方法(フレームワーク不要)

フレームワークなしで共通UIコードを切り出すIIFEパターン。実測170行以上の重複削減事例付き。

バニラJSIIFEモジュール化DRYリファクタリング
バニラJS Webアプリ2026-04-17

flex-wrap + orderで2段ナビゲーションを作る方法(モバイルは下部タブバー)

overflow:hiddenやscrollに頼らず、flex-wrap + orderで自動2段ナビ。モバイルは下部タブバーに完全切替。

CSSflexboxナビゲーションレスポンシブモバイル対応
バニラJS Webアプリ2026-04-17

ゲームHUD(スコア/タイマー/コンボ)と結果モーダルのCSSパターン

スコア・タイマー・コンボのHUDレイアウト + 背景ブラー付き結果モーダルのゲームUIパターン。

CSSゲームUIHUDモーダルレイアウト
バニラJS Webアプリ2026-04-17

Git Subtree Splitでサブフォルダだけを GitHub/Vercel にデプロイする方法

開発資料を含む親リポジトリから、Web/サブフォルダだけをGitHub main にforce pushする deploy.sh パターン。

GitVercelデプロイsubtreeshell script
バニラJS Webアプリ2026-04-17

モバイル向けタップ入力グリッドでソフトキーボードを回避する方法

モバイルで <input>のキーボード開閉によるUX低下を回避。A-Z/0-9ボタングリッドを画面内に配置するパターン。

バニラJSモバイル対応UXソフトキーボードUI
バニラJS Webアプリ2026-04-17

印刷PDFの用紙向きをコンテンツの縦横比から自動判定する方法

CSS @page + 縦横比計算で、A4縦/横を自動切替する印刷PDF生成パターン。ユーザー操作不要。

バニラJS印刷PDFCSS@page
バニラJS Webアプリ2026-04-17

pointer-events:noneの全画面オーバーレイで音と連動する視覚フィードバック

音声再生と完全同期する全画面フラッシュを実装。pointer-events:none + opacity遷移でUI操作を邪魔しない。

CSSアクセシビリティオーバーレイ視覚フィードバックUI
バニラJS Webアプリ2026-04-17

デザインツール不要!SVGファビコン+PythonでPNG生成する方法

コードだけでファビコンを生成。SVG + Python(struct/zlib)でPillowなしにPNG生成するパターン。

バニラJSSVGPNGファビコンPython
バニラJS Webアプリ2026-04-17

ビルドツール不要でバニラJSに多言語対応(i18n)を実装する方法

静的HTML + バニラJSでビルド不要の軽量i18nを実装。data-i18n属性とlocalStorageで12言語対応も可能。

バニラJSi18n多言語対応localStoragedata属性
バニラJS Webアプリ2026-04-17

Web Audio APIで精密タイミング制御(事前スケジューリングでドリフト根絶)

setTimeoutのドリフトを根絶。AudioContext.currentTimeで全音符を一括事前スケジュールする精密タイミングパターン。

バニラJSWeb Audio APIAudioContextタイミング制御モールス信号