antist.ai
シナリオ一覧

図面セット · L0–L3

デスクトップソフトを作る

デスクトップソフトは、ウェブページが決して得られないものを得ます。ファイルシステム、システム音声、GPU、常駐処理。その代わり、見たこともないマシンに、自分が書いたのではない警告を越えてプログラムを届けることになります。この図面セットは、デスクトップソフトの形と、本気度の段階ごとに加わるものを示します。

設計思想

デスクトップソフトは、他人のマシンに何年も住むプログラムです。ファイルとシステムを預かる以上、信頼を得て、守り続けなければなりません。

  1. 自分の問題を一つ解く

    優れたデスクトップツールの多くは、作者自身の毎日の不満を解くために始まります。本物の問題は毎日本物のテストケースをくれます。

  2. マシンを尊重する

    アイドルならアイドルに。隠れた CPU 使用も、裏でのダウンロードも、約束した場所以外への書き込みもなし。ファンが回ればユーザーは気づきます。

  3. 配布も製品の一部

    失敗するインストーラー、怖い警告、届かない更新。これらは製品の周りの雑用ではなく、製品のバグです。

自分の問題を解いているなら、まずスクリプト、次にそれを包む小さなウィンドウ。インストーラー、署名、自動更新に投資するのは、他人が動かす必要が出てからです。

図番L0

スクリプト

使う人自分だけ
月額$0

①なぜ上がるか

毎日ぶつかる不満があり、プログラムでそれを消せるか知りたい段階です。ユーザーは自分だけなので、ターミナルで十分です。

②アーキテクチャ

手動かログイン時に動かすスクリプトが一つ。決まったフォルダでファイルを読み書きし、何をしたか表示します。ウィンドウもインストーラーもなし。

Δ この段階で追加

  • + 一つの問題を解くスクリプト
  • + ファイル用の決まったフォルダ

地図上の形: スクリプトまたはコマンドラインツール

③ツール

UI フレームワークの見た目ではなく、難しい部分(音声、ファイル、画像)のライブラリが最も良い言語を選びます。UI は後で足せますが、中核はごまかせません。

④コードとテスト

  • 日常から実際の入力を少し保存し、変更のたびにそれで再実行する。
  • スクリプトの動作をファイルに記録し、問題が起きたあとで読めるようにする。
図番L1

実ユーザー

使う人自分のマシンで使う他の人
月額$0–10

①なぜ上がるか

他の人もツールを使いたがっていますが、ターミナルは開けないか開きたくありません。相手のマシンは設定も言語も違い、あなたのライブラリは一つも入っていません。

②アーキテクチャ

スクリプトにウィンドウがつき、実行環境と一緒にダブルクリックで入るものにまとめられます。設定は OS 標準のユーザーフォルダへ移り、権限は機能が必要なときだけ求めます。

Δ この段階で追加

  • + グラフィカルなウィンドウ
  • + 実行環境を同梱したインストーラー
  • + OS のユーザーフォルダにある設定
  • + ダウンロード可能なリリースページ

地図上の形: ネイティブ UI ツールキット(Qt、WPF、SwiftUI) · デスクトップの殻に入れたウェブ UI(Tauri、Electron)

③ツール

中核が何を必要とするかで UI の方式を選びます。音声・低遅延・省メモリならネイティブ、画面こそが製品ならウェブの殻。開発時の実行ではなくパッケージ版をテストします。壊れ方が違います。

④コードとテスト

  • コードを一度も見たことのないクリーンなマシンか仮想マシンに、パッケージ版をインストールする。
  • 英語以外のシステム言語、空白や非 ASCII 文字を含むユーザー名でテストする。
  • アイドル時のメモリと CPU を確認する。常駐ツールは静かさで評価されます。
図番L2

お金とデータ

使う人支払った人、ファイルを預ける人
月額$10–50

①なぜ上がるか

ソフトを販売するか、録音、文書、アカウントを扱うようになりました。署名のないビルドはセキュリティ警告で売上を失い、ユーザーのファイルを失うクラッシュは信頼を失います。

②アーキテクチャ

ビルドは CI で署名し、証明書はリポジトリの外に置きます。小さなオンラインサービスがライセンス確認と更新フィードを担い、オフラインでも猶予期間は動き続けます。クラッシュ報告は同意があるときだけ、ファイル内容を含めずに送ります。

Δ この段階で追加

  • + CI でのコード署名
  • + ライセンスと更新のサービス
  • + 同意制で個人データなしのクラッシュ報告
  • + 未保存作業の自動復旧

地図上の形: デスクトップアプリ + オンラインサービス

③ツール

この段階で最も価値あるファイルは署名証明書です。リポジトリにもログにも入れません。サーバーが落ちても、支払ったユーザーをライセンス確認で締め出してはいけません。

その他の選択肢 · 本サイト未検証

④コードとテスト

  • ファイルはアトミックに書く。一時ファイルに保存してから名前を変え、クラッシュで書きかけの文書を残さない。
  • ネットワークを切ってテストする。ライセンス確認は穏やかに劣化すべきです。
  • 送信前に、クラッシュ報告からファイルパス、ユーザー名、文書内容を取り除く。
図番L3

スケール

使う人多くのマシンと複数の OS
月額$50–500+

①なぜ上がるか

数千のインストールが Windows、macOS、場合によっては Linux で、Intel と ARM の両方で異なるバージョンを動かしています。悪い更新は多くのマシンを同時に壊し、その一部は企業のものです。

②アーキテクチャ

すべてのリリースは CI が OS とチップごとにビルドして署名します。更新はチャンネル経由で、ベータから安定版の一部へと広げ、悪いバージョンはフィードから取り下げて配信を止められます。

Δ この段階で追加

  • + OS とチップをまたぐビルド行列
  • + ベータと段階的な安定版チャンネル
  • + フィードからのロールバック
  • + 企業配布向けのサイレントインストール

地図上の形: デスクトップアプリ + オンラインサービス · デスクトップの殻に入れたウェブ UI(Tauri、Electron)

③ツール

ビルドと署名はすべて自動化します。この段階では、手作業のリリース手順はいつか必ず飛ばされます。

④コードとテスト

  • 出荷するすべての OS とチップの組み合わせでテストを回す。
  • まずベータチャンネルに出し、クラッシュ率を見てから安定版を広げる。
  • 前のバージョンもダウンロードできるようにし、ユーザーが自分で戻せるようにする。

アーキテクチャ全景

取り得るすべての形。その大半は「まだ作るべきでないもの」を知るためにある。

スクリプトまたはコマンドラインツール

自分の問題。ユーザーは自分だけ

$0 · 最小

△ 他の人も使いたがるが、ターミナルを開けない

ネイティブ UI ツールキット(Qt、WPF、SwiftUI)

深いシステムアクセス、低遅延、省メモリ(Subtitle-Windows の形)

$0(ツールキットのライセンスに注意) · 中

△ 一つのチームで複数の OS に同じアプリを出す必要がある

デスクトップの殻に入れたウェブ UI(Tauri、Electron)

一つのウェブコードでクロスプラットフォーム。UI 中心のアプリ

$0 · 低〜中

△ メモリ使用量や起動時間が不満になる、または殻が公開しないシステム API が必要

デスクトップアプリ + オンラインサービス

ライセンス、同期、アカウント、クラウド処理

$5–100/月 + 署名証明書 · 中〜高

△ 数千のインストールがバージョンをまたぐ。段階的な更新チャンネルが必要

本当に必要な概念

各概念に平易な一文とたとえ話をひとつずつ。ツールモジュールをクリックしても同じ解説が出る。

コード署名
証明書が誰が作ったかを証明します。署名のないプログラムは怖い警告が出るか、完全にブロックされます。
≈ 差出人が書かれた封書と、玄関に置かれた差出人不明の小包。
インストーラーとパッケージ
プログラム、実行環境、ライブラリをまとめ、開発ツールのないマシンで動くようにします。
≈ ネジも工具も全部入った組み立て家具を送る。
自動更新
プログラムが新しいバージョンを確認して自分を置き換え、二度とサイトを訪れないユーザーにも修正を届けます。
≈ 読者が売店に戻るのを期待せず、雑誌を定期購読にする。
OS のプライバシー権限
マイク、画面収録、ファイルアクセスは、OS を通じたユーザーの明示的な同意がますます必要になっています。
≈ 住人に確認してから部屋に通す、建物の受付。