@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/2026/06/09/004-windows-app-contract-development-guide/#article>
    schema:about <https://comcomponent.com/knowledge/contract-software-development/>, <https://comcomponent.com/knowledge/keep-wrap-replace-strategy/> ;
    schema:mentions <https://comcomponent.com/knowledge/com/>, <https://comcomponent.com/knowledge/activex/>, <https://comcomponent.com/knowledge/vb6/>, <https://comcomponent.com/knowledge/mfc/>, <https://comcomponent.com/knowledge/windows-forms/>, <https://comcomponent.com/knowledge/wpf/>, <https://comcomponent.com/knowledge/winui/>, <https://comcomponent.com/knowledge/dotnet-framework/>, <https://comcomponent.com/knowledge/dotnet/>, <https://comcomponent.com/knowledge/msi/>, <https://comcomponent.com/knowledge/msix/>, <https://comcomponent.com/knowledge/clickonce/>, <https://comcomponent.com/knowledge/code-signing-cert/>, <https://comcomponent.com/knowledge/smartscreen/>, <https://comcomponent.com/knowledge/admin-rights/>, <https://comcomponent.com/knowledge/dpapi/>, <https://comcomponent.com/knowledge/crash-dump/>, <https://comcomponent.com/knowledge/crash-time-logging-design/>, <https://comcomponent.com/knowledge/external-device-integration/>, <https://comcomponent.com/knowledge/memory-leak-vs-gc-wait/>, <https://comcomponent.com/knowledge/windows-app-assets/> .

<https://comcomponent.com/knowledge/contract-software-development/> a skos:Concept ;
    skos:prefLabel "Windowsアプリの外注・受託開発"@ja ;
    skos:definition "既存資産の調査・改修・リプレイス、装置連携、配布、保守、障害調査までを含む、Windowsアプリ開発を外部の開発者・開発会社へ委託する業務形態のこと。"@ja ;
    skos:altLabel "受託開発"@ja ;
    skos:altLabel "外注開発"@ja .

<https://comcomponent.com/knowledge/keep-wrap-replace-strategy/> a skos:Concept ;
    skos:prefLabel "残す・包む・置き換える(段階移行方針)"@ja ;
    skos:definition "既存のCOM・ActiveX・DLLなどの資産を全部作り直すのではなく、部品ごとに残す・境界を作って包む・置き換えるのどれにするかを判断する段階的な移行の考え方。"@ja ;
    skos:altLabel "keep-wrap-replace" ;
    skos:altLabel "段階的移行方針"@ja .

<https://comcomponent.com/knowledge/com/> a skos:Concept ;
    skos:prefLabel "COM(コンポーネントオブジェクトモデル)"@ja ;
    skos:definition "公開インターフェース、レジストリ登録、Apartment Modelなどを土台にした、Windowsのバイナリ互換コンポーネントモデル。"@ja ;
    skos:altLabel "Component Object Model" .

<https://comcomponent.com/knowledge/vb6/> a skos:Concept ;
    skos:prefLabel "Visual Basic 6.0(VB6)"@ja ;
    skos:definition "COMコンポーネントを型付きで呼び出せる、レガシーなVisual Basicの開発環境・言語。"@ja ;
    skos:altLabel "VB6" .

<https://comcomponent.com/knowledge/winui/> a skos:Concept ;
    skos:prefLabel "WinUI(Windows App SDK)"@ja ;
    skos:definition "Windows App SDKベースのUIフレームワーク。Windows 11のモダンなUIに沿った外観と、Microsoft Store/MSIXとの親和性を持つ。動作対象はWindows 10 バージョン1809(ビルド17763)以降で、Windows 11専用ではない。"@ja ;
    skos:altLabel "WinUI 3" ;
    skos:altLabel "Windows App SDK" .

<https://comcomponent.com/knowledge/dotnet/> a skos:Concept ;
    skos:prefLabel ".NET(Core以降)"@ja ;
    skos:definition ".NET Frameworkの後継となる、クロスプラットフォーム対応の.NETランタイム(.NET 5以降)。"@ja ;
    skos:altLabel ".NET Core" ;
    skos:altLabel "モダンな.NET"@ja ;
    ks:succeeds <https://comcomponent.com/knowledge/dotnet-framework/> .

<https://comcomponent.com/knowledge/wpf/> a skos:Concept ;
    skos:prefLabel "WPF"@ja ;
    skos:definition "XAMLでUIを宣言的に記述する、Windows専用のデスクトップUIフレームワーク。ベクターベースの描画とデータバインディングを特徴とする。"@ja ;
    skos:altLabel "Windows Presentation Foundation" .

<https://comcomponent.com/knowledge/windows-forms/> a skos:Concept ;
    skos:prefLabel "Windows Forms"@ja ;
    skos:definition "デスクトップGUIアプリケーションを構築するための.NET/.NET FrameworkのUIフレームワーク。"@ja ;
    skos:altLabel "WinForms" .

<https://comcomponent.com/knowledge/msi/> a skos:Concept ;
    skos:prefLabel "MSI(Windows Installer)"@ja ;
    skos:definition "Windowsの標準インストーラーパッケージ形式。ALLUSERSプロパティなどでインストール先の範囲を選べ、machine-wide installが一般的だがユーザー単位のインストールもできる。"@ja ;
    skos:altLabel "Windows Installer" ;
    skos:altLabel "MSI" .

<https://comcomponent.com/knowledge/msix/> a skos:Concept ;
    skos:prefLabel "MSIX"@ja ;
    skos:definition "package identityを持つ、Windowsのモダンなアプリパッケージング形式。"@ja ;
    skos:altLabel "MSIX" .

<https://comcomponent.com/knowledge/clickonce/> a skos:Concept ;
    skos:prefLabel "ClickOnce"@ja ;
    skos:definition ".NETのWindowsデスクトップアプリを、利用者単位で簡単に配り、自動更新まで含めて回すための配布技術。マニフェストを中心に配布・更新・キャッシュ管理をまとめて扱う配布モデル。"@ja ;
    skos:altLabel "ClickOnce配布"@ja .

<https://comcomponent.com/knowledge/code-signing-cert/> a skos:Concept ;
    skos:prefLabel "コード署名証明書"@ja ;
    skos:definition "ソフトウェアの発行元を証明し、改ざんを検出するための証明書。"@ja ;
    skos:altLabel "Authenticode証明書"@ja .

<https://comcomponent.com/knowledge/smartscreen/> a skos:Concept ;
    skos:prefLabel "Windows SmartScreen"@ja ;
    skos:definition "評判の悪いファイルを警告する仕組み。既定ではユーザーが突破できるが、管理ポリシーで突破自体を禁止すると実質的にブロックとして働く。"@ja ;
    skos:altLabel "SmartScreen" .

<https://comcomponent.com/knowledge/dpapi/> a skos:Concept ;
    skos:prefLabel "DPAPI"@ja ;
    skos:definition "実行中のマシン上でアプリの秘密情報を保護するWindowsのデータ保護API。"@ja ;
    skos:altLabel "データ保護API"@ja ;
    ks:mitigates <https://comcomponent.com/knowledge/plaintext-secret-storage-risk/> .

<https://comcomponent.com/knowledge/plaintext-secret-storage-risk/> a skos:Concept ;
    skos:prefLabel "秘密情報の平文保存リスク"@ja ;
    skos:definition "接続文字列やトークンなどの秘密情報を設定ファイルへ平文のまま保存し、読み取られるリスクにさらすこと。"@ja ;
    skos:altLabel "平文保存"@ja .

<https://comcomponent.com/knowledge/crash-dump/> a skos:Concept ;
    skos:prefLabel "クラッシュダンプ"@ja ;
    skos:definition "プロセスのメモリ内容・スタック情報・例外情報などをファイルへ書き出した、クラッシュ調査に使うスナップショットである。"@ja ;
    skos:altLabel ".dmpファイル"@ja ;
    skos:altLabel "ダンプファイル"@ja .

<https://comcomponent.com/knowledge/crash-time-logging-design/> a skos:Concept ;
    skos:prefLabel "クラッシュ時のログ・証跡設計"@ja ;
    skos:definition "落ちるプロセスの中だけに証跡を期待せず、通常ログ・最終クラッシュマーカー・OS/別プロセス側の証跡に役割を分けて残す設計方針。"@ja ;
    skos:altLabel "クラッシュ時ログ設計"@ja .

<https://comcomponent.com/knowledge/external-device-integration/> a skos:Concept ;
    skos:prefLabel "装置連携・外部機器連携"@ja ;
    skos:definition "シリアル通信機器、USB機器、産業用カメラ、PLC、測定器などの外部機器とWindowsアプリを接続し、通信の途切れ方・再接続・状態表示まで含めて設計する開発領域。"@ja ;
    skos:altLabel "外部機器連携"@ja ;
    skos:altLabel "装置連携アプリ"@ja .

<https://comcomponent.com/knowledge/memory-leak-vs-gc-wait/> a skos:Concept ;
    skos:prefLabel "GC待ちとメモリリークの切り分け"@ja ;
    skos:definition ".NETアプリでメモリ使用量が増え続ける現象が、一時的なGC待ちなのか回収されない本当のメモリリークなのかを観測して見分けること。"@ja ;
    skos:altLabel "メモリ増加調査"@ja .

<https://comcomponent.com/knowledge/windows-app-assets/> a skos:Concept ;
    skos:prefLabel "既存Windows装置ソフト資産"@ja ;
    skos:definition "C#/.NET、Win32、COM、WPF/WinFormsなどで書かれた既存のWindows向け装置ソフトウェア資産。"@ja ;
    skos:altLabel "C#/.NET資産"@ja ;
    skos:altLabel "Win32/COM/WPF資産"@ja .

<https://comcomponent.com/knowledge/activex/> a skos:Concept ;
    skos:prefLabel "ActiveX"@ja ;
    skos:definition "実務ではCOMベースのコントロールやその周辺資産をまとめて指す言葉として使われる技術群。特に.ocx形式のUIコントロールやIE/コンテナへ埋め込む部品を含むことが多い。"@ja ;
    skos:altLabel "ActiveXコントロール"@ja ;
    skos:broader <https://comcomponent.com/knowledge/com/> .

<https://comcomponent.com/knowledge/mfc/> a skos:Concept ;
    skos:prefLabel "MFC(Microsoft Foundation Classes)"@ja ;
    skos:definition "C++でWindowsデスクトップアプリやCOMサーバーを作るためのマイクロソフト製クラスライブラリ。"@ja ;
    skos:altLabel "Microsoft Foundation Class Library" .

<https://comcomponent.com/knowledge/dotnet-framework/> a skos:Concept ;
    skos:prefLabel ".NET Framework"@ja ;
    skos:definition "Windowsのコンポーネントとして扱われ、インストールされているOSのライフサイクルに沿ってサポートされるランタイム。System.Messagingの対象範囲。"@ja .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/keep-wrap-replace-strategy/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/com/> ;
    schema:description "COM/ActiveX/OCXが絡む既存資産では、まず用語を押さえたうえで部品ごとに残す・包む・置き換えるのどれにするかを決めるとよいとされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/com/component-object-model--com--portal> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/keep-wrap-replace-strategy/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/vb6/> ;
    schema:description "古いVB6・VBA・COM・ActiveXを含むアプリでは、無理に全部を一度に置き換えるより残す・包む・置き換えるを分けて考える方が安全とされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/com/component-object-model--com--portal> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/winui/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/dotnet/> ;
    schema:description "WinUIはWindows App SDK前提のフレームワークで、C#で実装する場合は.NETが前提になり、配布・更新の設計を早めに固める必要がある。C++/WinRTで実装する場合はこの限りではない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/apps/winui/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/winui/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/wpf/> ;
    schema:description "WinUIは既存のWPF資産の持ち込みが容易ではない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/apps/winui/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/winui/> ;
    rdf:predicate ks:incompatibleWith ;
    rdf:object <https://comcomponent.com/knowledge/windows-forms/> ;
    schema:description "WinUIは既存のWinForms資産の持ち込みが容易ではない"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/apps/winui/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/contract-software-development/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/msi/> ;
    schema:description "配布方式の選定ではMSIが候補の一つになる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/msi/windows-installer-portal> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/contract-software-development/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/msix/> ;
    schema:description "配布方式の選定ではMSIXが候補の一つになる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/msix/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/contract-software-development/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/clickonce/> ;
    schema:description "社内向けの.NET Windowsアプリで標準ユーザーに配り自動更新まで軽く回したい場合、ClickOnceが候補になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/visualstudio/deployment/clickonce-security-and-deployment> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/code-signing-cert/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/smartscreen/> ;
    schema:description "Web配布や社外配布ではSmartScreen警告が出ることがあり、コード署名の扱いを合わせて整理する必要がある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/security/operating-system-security/virus-and-threat-protection/microsoft-defender-smartscreen/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dpapi/> ;
    rdf:predicate ks:mitigates ;
    rdf:object <https://comcomponent.com/knowledge/plaintext-secret-storage-risk/> ;
    schema:description "パスワードやトークンを設定ファイルへ保存する場合は平文保存を避け、DPAPIなどWindowsの仕組みで保護する設計が必要とされる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/dpapi/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/contract-software-development/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/crash-dump/> ;
    schema:description "不具合調査では、ログ、クラッシュダンプ、通信ログ、イベントログ、メモリ使用量などの観測点を整備してから原因を追う"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/contract-software-development/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/crash-time-logging-design/> ;
    schema:description "クラッシュ調査の相談では、落ちた瞬間の証跡をどう残すかが鍵になるため、クラッシュ時のログ・証跡設計を扱う"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/wer/using-wer> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/contract-software-development/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/external-device-integration/> ;
    schema:description "製造・検査・計測などの現場では、シリアル通信機器やPLC・測定器との装置連携アプリの相談がよくある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/devio/serial-communications> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/contract-software-development/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/memory-leak-vs-gc-wait/> ;
    schema:description "長時間稼働後にメモリが増え続ける相談では、単なるGC待ちか本当のメモリリークかを見分ける手順を踏む"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-app-assets/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/com/> ;
    schema:description "既存Windows装置ソフト資産にはCOMベースの部品が含まれることがある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/com/component-object-model--com--portal> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-app-assets/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/activex/> ;
    schema:description "既存Windows装置ソフト資産にはActiveX/OCXコントロールが含まれることがある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/com/component-object-model--com--portal> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-app-assets/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/windows-forms/> ;
    schema:description "既存Windows装置ソフト資産にはWinFormsで作られたものが含まれることがある"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/desktop/winforms/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-app-assets/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/mfc/> ;
    schema:description "VB6、MFC、WinForms、.NET Frameworkのまま止まっている既存Windowsソフト資産の改修・保守が相談されることが多い"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/cpp/mfc/mfc-desktop-applications> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/windows-app-assets/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-framework/> ;
    schema:description "既存Windows装置ソフト資産は.NET Frameworkのまま止まっていることが多く、.NETへ移行するかどうかの判断が必要になる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/framework/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet/> ;
    rdf:predicate ks:succeeds ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-framework/> ;
    schema:description ".NET Frameworkアプリを今後も使うか.NETへ移行するかは、アプリ種別、依存ライブラリ、COM連携、配布方法によって変わる判断事項として扱われる"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/porting/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/contract-software-development/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/windows-app-assets/> ;
    schema:description "受託開発の相談では完全な新規開発よりも既存Windows装置ソフト資産の改修・保守が多く、現状の棚卸しから始める"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/contract-software-development/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/code-signing-cert/> ;
    schema:description "配布・更新・権限の整理では、Web配布や社外配布で問題になるコード署名証明書の扱いも受託開発が検討する事項である"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/security/operating-system-security/virus-and-threat-protection/microsoft-defender-smartscreen/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/contract-software-development/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/dpapi/> ;
    schema:description "保守しやすいWindowsアプリの観点では、パスワードやトークンを平文で保存せずDPAPIなどWindowsの仕組みで保護する設計を受託開発の中で扱う"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/windows/win32/api/dpapi/> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .
