@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/windows-app-web-migration-decision/#article>
    schema:about <https://comcomponent.com/knowledge/web-migration-suitability/>, <https://comcomponent.com/knowledge/split-architecture/> ;
    schema:mentions <https://comcomponent.com/knowledge/browser-sandbox/>, <https://comcomponent.com/knowledge/device-peripheral-integration/>, <https://comcomponent.com/knowledge/local-file-deep-integration/>, <https://comcomponent.com/knowledge/offline-critical-operation/>, <https://comcomponent.com/knowledge/high-speed-keyboard-input/>, <https://comcomponent.com/knowledge/blazor-webassembly/>, <https://comcomponent.com/knowledge/blazor-server/>, <https://comcomponent.com/knowledge/web-serial-api/>, <https://comcomponent.com/knowledge/file-system-access-api/>, <https://comcomponent.com/knowledge/unattended-office-automation/>, <https://comcomponent.com/knowledge/clickonce-msix-auto-update/>, <https://comcomponent.com/knowledge/rewrite-cost-structure/>, <https://comcomponent.com/knowledge/server-operation-cost/>, <https://comcomponent.com/knowledge/electron-blazor-hybrid/>, <https://comcomponent.com/knowledge/pwa/>, <https://comcomponent.com/knowledge/deployment-update-burden/>, <https://comcomponent.com/knowledge/webview2/> .

<https://comcomponent.com/knowledge/web-migration-suitability/> a skos:Concept ;
    skos:prefLabel "WindowsアプリのWeb化適性判断"@ja ;
    skos:definition "Windowsアプリの機能・性質ごとに、Webブラウザで実現するのに向いているか向いていないかを判断すること。装置連携・ローカルファイル処理・オフライン運用・高速入力を持つ機能はWeb化に向かないとされる。"@ja ;
    skos:altLabel "Web化の判断"@ja ;
    skos:altLabel "Web化しない方がいいケース"@ja ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/deployment-update-burden/> ;
    ks:requires <https://comcomponent.com/knowledge/rewrite-cost-structure/> .

<https://comcomponent.com/knowledge/split-architecture/> a skos:Concept ;
    skos:prefLabel "Web・Windows分割構成"@ja ;
    skos:definition "データの閲覧・検索・集計・帳票などをWebに出し、装置連携・ローカルファイル処理・オフライン運用・高速入力はWindowsアプリとして残し、共通のAPIとデータベースでつなぐ構成。"@ja ;
    skos:altLabel "分割構成"@ja ;
    skos:altLabel "ハイブリッド構成"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/device-peripheral-integration/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/local-file-deep-integration/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/offline-critical-operation/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/high-speed-keyboard-input/> .

<https://comcomponent.com/knowledge/browser-sandbox/> a skos:Concept ;
    skos:prefLabel "ブラウザのサンドボックス"@ja ;
    skos:definition "Webページのコードがローカルのファイルや機器へ自由にアクセスできないよう、ブラウザが意図的に制限する隔離実行環境。"@ja ;
    skos:altLabel "ブラウザサンドボックス"@ja .

<https://comcomponent.com/knowledge/device-peripheral-integration/> a skos:Concept ;
    skos:prefLabel "装置・周辺機器との直接通信"@ja ;
    skos:definition "シリアル(RS-232C)接続のはかりやバーコードリーダー、計測器、製造装置などとアプリが直接通信する機能。"@ja ;
    skos:altLabel "ハードウェア連携"@ja .

<https://comcomponent.com/knowledge/local-file-deep-integration/> a skos:Concept ;
    skos:prefLabel "ローカルファイル・他アプリとの深い連携"@ja ;
    skos:definition "共有フォルダーの監視・一括処理や、ExcelとのCOM連携など、端末内のファイルや他アプリケーションとの連携が業務の中核になっている機能。"@ja ;
    skos:altLabel "ファイル一括処理"@ja ;
    skos:altLabel "Excel連携"@ja .

<https://comcomponent.com/knowledge/blazor-webassembly/> a skos:Concept ;
    skos:prefLabel "Blazor WebAssembly"@ja ;
    skos:definition "C#で書いたコードをブラウザのセキュリティサンドボックス内で実行するクライアント側のBlazorホスティングモデル。ファイルシステムへのアクセスや任意のネットワーク接続を開く操作はPlatformNotSupportedExceptionになる。"@ja ;
    skos:altLabel "Blazor WASM" .

<https://comcomponent.com/knowledge/web-serial-api/> a skos:Concept ;
    skos:prefLabel "Web Serial API"@ja ;
    skos:definition "ブラウザからシリアルデバイスと通信できるAPI。Chromium系とデスクトップ版Firefox(151以降)が対応するが、Safariは未対応。"@ja ;
    skos:altLabel "WebSerial" .

<https://comcomponent.com/knowledge/file-system-access-api/> a skos:Concept ;
    skos:prefLabel "File System Access API"@ja ;
    skos:definition "ユーザーが選んだフォルダー単位でのアクセスをブラウザから可能にする実験的・部分的なWeb API群。Chromium系限定でFirefox/Safariでは利用できない。"@ja ;
    skos:altLabel "FileSystemObserver" .

<https://comcomponent.com/knowledge/unattended-office-automation/> a skos:Concept ;
    skos:prefLabel "無人でのOffice自動化"@ja ;
    skos:definition "サービスなど無人・非対話環境からExcel等のOfficeアプリケーションを自動操作すること。Microsoftが不安定化・デッドロックのおそれから非推奨・非サポートとしている。"@ja ;
    skos:altLabel "サーバー側Office自動化"@ja ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/local-file-deep-integration/> .

<https://comcomponent.com/knowledge/blazor-server/> a skos:Concept ;
    skos:prefLabel "Blazor Server"@ja ;
    skos:definition "すべてのUI操作をサーバーとの常時接続越しに処理するBlazorホスティングモデル。接続が切れるとアプリは動作を停止し、オフラインサポートはない。"@ja ;
    ks:incompatibleWith <https://comcomponent.com/knowledge/offline-critical-operation/> .

<https://comcomponent.com/knowledge/offline-critical-operation/> a skos:Concept ;
    skos:prefLabel "止まれないオフライン業務"@ja ;
    skos:definition "工場・倉庫・屋外現場など、ネットワークが不安定でも数分の停止が生産や出荷に影響するため、オフラインでも動作を継続する必要がある業務。"@ja ;
    skos:altLabel "オフライン運用要件"@ja .

<https://comcomponent.com/knowledge/high-speed-keyboard-input/> a skos:Concept ;
    skos:prefLabel "キーボード主体の高速・大量入力"@ja ;
    skos:definition "伝票入力や検品・出荷登録のように、1日中キーボード中心で大量のデータを打ち込む業務。"@ja ;
    skos:altLabel "高速入力業務"@ja .

<https://comcomponent.com/knowledge/clickonce-msix-auto-update/> a skos:Concept ;
    skos:prefLabel "ClickOnce/MSIXの自動更新配布"@ja ;
    skos:definition "自動更新の仕組みを持つWindowsアプリの配布方式。切り替えれば、Windowsアプリのままでも各端末を回ってのインストール作業をほぼ不要にできる。"@ja ;
    skos:altLabel "自動更新配布方式"@ja ;
    ks:recommendedFor <https://comcomponent.com/knowledge/deployment-update-burden/> .

<https://comcomponent.com/knowledge/deployment-update-burden/> a skos:Concept ;
    skos:prefLabel "配布・更新の手間"@ja ;
    skos:definition "バージョンアップのたびに全端末を回ってインストールしなければならないという、Windowsアプリ配布の負担。"@ja ;
    skos:altLabel "配布作業の負担"@ja .

<https://comcomponent.com/knowledge/rewrite-cost-structure/> a skos:Concept ;
    skos:prefLabel "Web化の作り直しコスト構造"@ja ;
    skos:definition "画面資産を持っていけず全画面を設計し直す初期開発費に加え、完成後もサーバー運用という継続的な月額運用費が発生するWeb化のコスト構造。"@ja ;
    skos:altLabel "作り直しの見積もり"@ja ;
    ks:requires <https://comcomponent.com/knowledge/server-operation-cost/> .

<https://comcomponent.com/knowledge/server-operation-cost/> a skos:Concept ;
    skos:prefLabel "サーバー運用の継続コスト"@ja ;
    skos:definition "Web化後に新たに発生する、サーバーまたはクラウドの構築・監視・バックアップ・証明書とセキュリティ更新という継続的な運用の仕事。"@ja ;
    skos:altLabel "サーバー運用費"@ja .

<https://comcomponent.com/knowledge/electron-blazor-hybrid/> a skos:Concept ;
    skos:prefLabel "Electron/Blazor Hybrid"@ja ;
    skos:definition "画面をWeb技術で書きながらブラウザのサンドボックス制約を受けずにファイルや装置へアクセスできる、配布・更新が必要なデスクトップアプリ形態。ElectronやBlazor Hybrid(WebView2)が該当する。"@ja ;
    skos:altLabel "ハイブリッド型デスクトップアプリ"@ja .

<https://comcomponent.com/knowledge/webview2/> a skos:Concept ;
    skos:prefLabel "Microsoft Edge WebView2"@ja ;
    skos:definition "Chromiumベースのランタイムを使ってWindowsアプリにWeb描画エンジンを埋め込む仕組み。WebBrowserコントロールの完全な差し替え部品ではない。"@ja ;
    skos:altLabel "WebView2" .

<https://comcomponent.com/knowledge/pwa/> a skos:Concept ;
    skos:prefLabel "PWA"@ja ;
    skos:definition "タスクバーへのピン留めなどインストールしたような使い勝手になっても、中身はブラウザ上のWebアプリのままで、ローカル資源へのアクセス制約も通常のWebアプリと同じ形態。"@ja ;
    skos:altLabel "Progressive Web App" ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/device-peripheral-integration/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/browser-sandbox/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/device-peripheral-integration/> ;
    schema:description "ブラウザのサンドボックスはローカル資源へのアクセスを意図的に遮断するため、対応ブラウザとユーザー許可のあるWeb Serial/WebUSBのような経路を用意しない限り、装置・周辺機器との直接通信をブラウザから行えない"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/architecture/blazor-for-web-forms-developers/hosting-models> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/browser-sandbox/> ;
    rdf:predicate ks:prevents ;
    rdf:object <https://comcomponent.com/knowledge/local-file-deep-integration/> ;
    schema:description "ブラウザのファイルアクセスはユーザーがその都度選んだファイルに限定されるため、File System Access APIのような対応ブラウザ限定の経路を用意しない限り、フォルダー監視や一括処理、他アプリとのプロセス間連携はブラウザからできない"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/architecture/blazor-for-web-forms-developers/hosting-models> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/blazor-webassembly/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/device-peripheral-integration/> ;
    schema:description "Blazor WebAssemblyはブラウザのセキュリティサンドボックス内で実行され、ファイルシステムアクセスや任意のネットワーク接続を開く操作はPlatformNotSupportedExceptionになる。対応ブラウザとユーザー許可があれば、JS相互運用でWeb Serial/WebUSBを呼び出して周辺機器と通信する経路は使える"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/architecture/blazor-for-web-forms-developers/hosting-models> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/web-serial-api/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/browser-sandbox/> ;
    schema:description "Web Serial APIはブラウザからシリアル通信できる回避策だが、対応ブラウザがChromium系などに限られ制約が残る"@ja ;
    ks:evidence <https://developer.mozilla.org/docs/Web/API/Web_Serial_API> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/web-serial-api/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/device-peripheral-integration/> ;
    schema:description "対応ブラウザの限定や機器接続のたびの許可操作が必要になるため、業務システムの装置連携手段としては割に合わないことが多い"@ja ;
    ks:evidence <https://developer.mozilla.org/docs/Web/API/Web_Serial_API> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/file-system-access-api/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/browser-sandbox/> ;
    schema:description "File System Access APIはユーザーが選んだフォルダー単位でのアクセスを可能にするが、Chromium系限定でFirefox/Safariは非対応"@ja ;
    ks:evidence <https://developer.mozilla.org/docs/Web/API/File_System_API> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/unattended-office-automation/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/local-file-deep-integration/> ;
    schema:description "サービスなど無人・非対話環境からのOffice自動化はMicrosoftが非推奨・非サポートとしているため、Excel連携はユーザーがサインインするデスクトップアプリ側に置くか、Open XML系ライブラリでの読み書きに置き換える"@ja ;
    ks:evidence <https://learn.microsoft.com/office/client-developer/integration/considerations-unattended-automation-office-microsoft-365-for-unattended-rpa> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/blazor-server/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/offline-critical-operation/> ;
    schema:description "Blazor Serverはすべての操作をサーバーとの常時接続越しに処理し、接続が切れるとアプリは動作を停止しオフラインサポートもないため、止まれない業務には向かない"@ja ;
    ks:evidence <https://learn.microsoft.com/aspnet/core/blazor/hosting-models> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/split-architecture/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/device-peripheral-integration/> ;
    schema:description "装置・周辺機器との連携はWindowsアプリとして残し、閲覧・集計はWebへ出す分割構成が現実解として推奨される"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/apps/get-started/windows-developer-faq> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/split-architecture/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/local-file-deep-integration/> ;
    schema:description "ローカルファイルの監視・一括処理はWindowsアプリ側に残し、共通のAPIとデータベースでWeb側とつなぐ構成が推奨される"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/apps/get-started/windows-developer-faq> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/split-architecture/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/offline-critical-operation/> ;
    schema:description "オフラインでも止まれない現場業務はWindowsアプリとして残すことが推奨される"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/apps/get-started/windows-developer-faq> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/split-architecture/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/high-speed-keyboard-input/> ;
    schema:description "高速入力の画面はWindowsアプリとして残すことが推奨される"@ja ;
    ks:evidence <https://learn.microsoft.com/aspnet/core/blazor/hosting-models> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/high-speed-keyboard-input/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/blazor-server/> ;
    schema:description "Blazor Serverはすべてのユーザー操作にネットワーク往復が挟まりUIのレイテンシが高くなるため、入力速度が生産性に直結する画面には向かない"@ja ;
    ks:evidence <https://learn.microsoft.com/aspnet/core/blazor/hosting-models> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/clickonce-msix-auto-update/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/deployment-update-burden/> ;
    schema:description "配布の手間だけが動機なら、Web化ではなくClickOnceやMSIXなど自動更新の仕組みへの切り替えで解決できる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/msix/overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/web-migration-suitability/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/deployment-update-burden/> ;
    schema:description "配布の手間をなくしたいだけが動機ならWeb化は過剰投資である"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/msix/overview> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/web-migration-suitability/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/rewrite-cost-structure/> ;
    schema:description "Web化の可否を判断するには、移植ではなく作り直しに近いという正しいコスト構造を前提に見積もる必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/apps/get-started/windows-developer-faq> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/rewrite-cost-structure/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/server-operation-cost/> ;
    schema:description "Web化の総額算定には、初期開発費だけでなく完成後に新しく発生するサーバー運用費を組み込む必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/aspnet/core/blazor/hosting-models> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/electron-blazor-hybrid/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/browser-sandbox/> ;
    schema:description "ElectronやBlazor Hybrid(WebView2)はデスクトップアプリとして動き、ネイティブ側のホストプロセスを経由してファイルや装置へアクセスできるため、ブラウザのサンドボックス制約を回避できる。レンダラープロセス自体はサンドボックスを有効にしたまま動かすことができ、その場合ローカル操作はpreloadやIPCでネイティブ側へ渡す形になる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/architecture/blazor-for-web-forms-developers/hosting-models> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/electron-blazor-hybrid/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/webview2/> ;
    schema:description "この分類のうちBlazor HybridはWebView2のChromiumベースランタイムで画面を描画する。一方Electronは自前でバンドルしたChromium/Node.jsランタイムを使うため、WebView2を前提としない"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/architecture/blazor-for-web-forms-developers/hosting-models> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/pwa/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/device-peripheral-integration/> ;
    schema:description "PWAはインストールしたような使い勝手になっても中身はブラウザ上のWebアプリのままで、ローカル資源へのアクセス制約も通常のWebアプリと同じである"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/architecture/blazor-for-web-forms-developers/hosting-models> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/pwa/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/offline-critical-operation/> ;
    schema:description "Service Workerやクライアント側にデータを持つ設計でオフライン対応させることも技術的には可能だが、同期・競合解決まで含めると相応の追加投資になる"@ja ;
    ks:evidence <https://learn.microsoft.com/windows/apps/get-started/windows-developer-faq> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .
