なぜ本当に必要なのか
ライセンスチェックなしでデスクトップアプリを販売するということは、インストーラーのコピーを手に入れた誰もが、二度と支払うことなく永遠に使えてしまうということだ。ライセンスキーのチェックは破られないものである必要はない——ただカジュアルな共有が最も抵抗の少ない道でなくなる程度にハードルを上げつつ、実際に支払ったユーザーにはスムーズなアクティベーション体験を提供すればいい。それこそがほとんどのインディー開発者が本当に超えるべきラインだ:軍事レベルのDRMではなく、キーが何かを意味する本物の仕組み——マシンに紐付き、検証可能で、失効可能——であり、誰も検証しない単なる文字列ではないということ。
自作がなぜ本物のプロジェクトになってしまうのか
誘惑は、手早くチェックをでっち上げることだ:ハードコードした有効キーのリスト、あるいは単純なハッシュ関数を作って出荷する、それで終わり。それは最初の本物の販売が来るまでしか持たない。本物のライセンス管理には、どのキーが存在し、どのマシンでアクティベートされているかを追跡するデータベース、キーがその場で検証され、単に数式でオフライン検証されるだけでないようにアプリがどこからでも呼び出せるAPI、誰かがチャージバックしたり騙したりしたときにキーを失効させる方法、そして購入前に試せるようにするトライアルサポートが必要になる。これらのどれも、アプリ自体の中だけでは実現できない——本気のユーザーはオフラインチェックを簡単にパッチで外してしまう。こう並べてみると、「ライセンスチェックを追加するだけ」は、あなたが今後永遠に構築・ホスト・保守しなければならない小さなバックエンドサービスになってしまう——それも、あなたの本当の製品ではない機能のために。
代替案:バックエンドプロジェクトの代わりに小さなホスト型API
これがまさに SublimeKeys がやっていることだ——ライセンスバックエンドそのものなので、自分で構築する必要がない。アプリが必要とする呼び出し(activate、verify、deactivate、それにトライアル用が2つ)を備えたREST APIと、製品を作成し、販売のたびに手動または自動でキーを発行できるダッシュボードが手に入る。無料プラン(1製品、25キー)があるので、何かにコミットする前にフロー全体をテストできるし、あなたが運用すべきインフラは何もない——ライセンスサーバー、データベース、稼働率、それらすべてはもうあなたではなく、誰か他の人の問題だ。
組み込み方——4ステップ
実際に何が手に入るのか
1時間もかからずに、特定のマシンに紐付いたキー(誰でも共有できる単なる文字列ではない)、必要なときに即座にアクセスを失効させる方法——チャージバック、詐欺、返金——再インストールでリセットできないオプションの7日間トライアル、そして望むなら販売のたびに自動でメール送信されるキーが手に入る。これらのどれも、データベーススキーマを書いたり、何かをホストしたり、稼働率について考えたりする必要はなかった——その部分はすでに処理済みだ。
実際に誰のためのものか
Electronアプリ
一度きりで販売し、自前のライセンスサーバーを持たずに保護したい、あらゆるElectronデスクトップアプリ。
Pythonデスクトップツール
PyInstallerでパッケージ化したユーティリティ、今から販売する社内ツール、GUI付きCLI製品。
.NET / WinFormsアプリ
最新のライセンスオプションより前からある古典的なWindowsソフト——書き直さずに本物のアクティベーションを追加できる。
インディーツール & プラグイン
自前のライセンスバックエンドを構築するのが時間の無駄になる、小規模な有料ユーティリティ、プラグイン、アドオン。
GumroadやKeygenからの移行
既存の顧客を一括インポートし、インストールベースを失うことなく新しいキーを発行する。
About
Patrick Chen —— Sublimearts.io の背後にいるインディー開発者。ReelNox Studio のためにまさにこのライセンスチェックのコードを書いた後、デスクトップソフトを販売する他のすべてのインディー開発者が同じ問題をゼロから解決していることに気づき、SublimeKeys を構築した。
Did you find this helpful?