# ライセンス管理 このページでは、`qbpp-license` コマンドラインユーティリティを使用した QUBO++ ライセンスの管理方法を説明します。 ライセンスシステムは **QUBO++ (C++)** と **PyQBPP (Python)** で共通です。 ## ライセンスの種類 QUBO++ では、変数数の上限と有効期間が異なる複数のライセンスタイプが用意されています。 | ライセンスタイプ | キー必要 | 有効期間 | CPU 変数数 | GPU 変数数 | |---|---|---|---:|---:| | Trial | 必要 | 30日間 (更新可) | 10,000 | 10,000 | | Standard | 必要 | 契約期間 | 2,147,483,647 | 10,000 | | Professional | 必要 | 契約期間 | 2,147,483,647 | 2,147,483,647 | | Fallback | N/A | 常時 | 100 | 100 | - **Trial License**: 無料・セルフサービス。`qbpp-license -s` で印字されるサインアップコードを使い、[QUBO++ User Portal](https://qubo-plus.github.io/portal/) で登録してください。登録完了後、Trial ライセンスキーが画面に表示されます。 - **Standard License**: 本番利用向け。大規模な CPU 最適化をサポートします。 - **Professional License**: GPU アクセラレーション(ABS3 Solver、Exhaustive Solver)を使用した本番利用向けです。 - **Fallback Mode**: 有効なライセンスが設定されていないかキャッシュが期限切れでネットワーク不通の場合、QUBO++ は100変数の制限で動作します。 ## Trial ライセンスの取得 1. Linux マシンに QUBO++ をインストールします。 2. `qbpp-license -s` を実行すると、端末に本日の8文字サインアップコードと portal URL が表示されます : ```bash QUBO++ Trial Sign-up Code: XXXXXXXX Use this code at the QUBO++ User Portal to register for a Trial license: https://qubo-plus.github.io/portal/ ``` 3. [QUBO++ User Portal](https://qubo-plus.github.io/portal/) を開き、サインアップフォームに 2. のコードを入力します。 4. メール検証後、Trial ライセンスキー (`T-PREFIX-XXXXXX-XXXXXX-XXXXXX`、PREFIX はメールローカル部から導出) が portal 上に表示されます。 5. マシンで、4.で取得した Trial ライセンスキーをアクティベートしてください : ```bash qbpp-license -k T-PREFIX-XXXXXX-XXXXXX-XXXXXX -a ``` 30日のTrial期間はサインアップ時から開始します — キー発行と同時に期限が確定するため、portal 上ですぐに有効期限を確認できます。期限の1週間前から User Portal で Trial の更新が可能です。更新時は同じライセンスキーがそのまま使われ、有効期限のみが30日延長されます — マシンのアクティベーション情報も保持されるため、再アクティベートは不要です。 ## ライセンスキーの設定とアクティベーション **本節の対象**: 以下のアクティベーションフロー、および [ライセンス状態の確認](#license-status)・[ライセンスのディアクティベーション](#license-deactivate) は、**ノードロックライセンス** (Trial、Standard、Professional の単一マシン用キー) を対象としています。アクティベーションはキーを特定の物理マシンに紐づけます。フローティングライセンスについては、本ページ末尾の [フローティングライセンス](#floating-license) を参照してください。 **Docker・VM・使い捨てコンテナなどの仮想環境では、ノードロックライセンスの動作は保証されません。** マシン指紋が安定せずアクティベートに失敗することがあるほか、コンテナを再ビルドした際にキャッシュされたアクティベーション情報が消失し、サーバ側のアクティベーション枠が宙ぶらりんで残ってしまう恐れがあります。仮想環境で QUBO++ を利用する場合は、**フローティングライセンス**を使用してください。フローティングライセンスはこの用途のために設計されており、マシンごとのアクティベーションを行わずに動作します。 ライセンスキーをお持ちの場合は、以下のいずれかの方法で設定してください。 ### 方法1: qbpp-license でアクティベート(推奨) マシンごとに以下のコマンドを一度実行します: ```bash qbpp-license -k XXXXXX-XXXXXX-XXXXXX-XXXXXX -a ``` ライセンスキーは暗号化されてローカルにキャッシュされます。アクティベーション後、以降の実行では環境変数や -k オプションは不要です — QUBO++ プログラムはキャッシュされたキーを自動的に使用します。 再アクティベーションやキーの変更は、新しいキーでコマンドを再度実行するだけです。 ### 方法2: 環境変数 `QBPP_LICENSE_KEY` 環境変数を設定します。ローカルキャッシュが永続的でない Docker/CI 環境で便利です。 ```bash export QBPP_LICENSE_KEY=XXXXXX-XXXXXX-XXXXXX-XXXXXX ``` その後、アクティベートします : ```bash qbpp-license -a ``` ### 優先順位 複数の方法が使用されている場合、以下の優先順位が適用されます: 1. `-k` **引数** またはコード内の `qbpp::license_key()`(最高優先) 2. `QBPP_LICENSE_KEY` **環境変数** 3. **キャッシュされたキー**(最低優先) > **注意**: 評価目的でも Trial キーが必要です。`qbpp-license -s` でサインアップコードを取得し、User Portal で登録してください。 (license-status)= ## ライセンス状態の確認 変更を加えずに現在のライセンス状態を表示するには: ```bash qbpp-license ``` ライセンスタイプ、有効期限、変数数の上限、アクティベーション使用状況が表示されます。このコマンドはライセンスサーバーに接続して状態を更新します。 (license-deactivate)= ## ライセンスのディアクティベーション ライセンスを別のマシンに移動するには、まず現在のマシンでディアクティベートします: ```bash qbpp-license -d ``` - 各ライセンスキーには許可されたアクティベーション数の上限があります。 - ディアクティベーションによりアクティベーション枠が1つ解放されます。 - 悪用防止のため、連続するディアクティベーション間には **24時間のクールダウン** があります。 ## コマンドリファレンス ``` Usage: qbpp-license [options] Options: -h, --help ヘルプメッセージを表示して終了 -v, --version バージョンを表示して終了 -k, --key KEY ライセンスキーを指定 -a, --activate このマシンでライセンスをアクティベート -d, --deactivate このマシンでライセンスをディアクティベート -s, --signup-code 本日の portal サインアップコードを表示して終了 -t, --time-out SEC サーバー通信のタイムアウトを設定(デフォルト: 20秒) ``` ## 使用例 | コマンド | 説明 | |---|---| | `qbpp-license` | 現在のライセンス状態を表示 | | `qbpp-license -s` | portal 登録用の本日のサインアップコードを表示 | | `qbpp-license -k KEY -a` | 指定したキーでアクティベート | | `qbpp-license -d` | このマシンでライセンスをディアクティベート | | `qbpp-license -t 60` | 60秒のタイムアウトで状態を確認 | | `qbpp-license -k KEY -t 60 -a` | キーと延長タイムアウトでアクティベート | ## ライセンス認証の仕組み - `qbpp-license` コマンド: 常にライセンスサーバーに接続して最新の状態を取得します。ネットワーク状況によっては数秒かかることがあります。 - **QUBO++ プログラム: ローカルキャッシュ**を使用してライセンスを検証し、サーバー通信でブロックしません。サーバーへの接続はキャッシュの更新が必要な場合(例:長期間同期されていない場合)のみ行われます。 - **ライセンスキーの保存**: ライセンスがアクティベートされると、キーは暗号化されてローカルにキャッシュされます。これにより、キーを再設定せずに以降の実行が可能になります。 ## ネットワークとタイムアウト ネットワークが遅い場合やファイアウォール/プロキシの背後にある場合、デフォルトの20秒のタイムアウトでは不十分な場合があります。 タイムアウトを延長するには: ```bash qbpp-license -t 60 -a ``` サーバーに到達できない場合、QUBO++ はキャッシュされたライセンス状態にフォールバックします。キャッシュが存在しない場合、QUBO++ は **Fallback Mode**(100変数制限)で動作します。 ## プログラムは動作するが変数数が制限される - QUBO++ が Fallback Mode で動作している可能性があります。ライセンス状態を確認してください: ```bash qbpp-license ``` - `qbpp-license -k KEY -a` または `QBPP_LICENSE_KEY でライセンスキーが正しく設定されているか確認してください。 - 必要に応じて再アクティベートしてください:`qbpp-license -a` ## ディアクティベーションのクールダウン - 連続するディアクティベーション間には24時間の待機期間があります。 - クールダウン期間が経過してから再試行してください。 (floating-license)= ## フローティングライセンス フローティングライセンスは、組織内の複数のマシン間での共有アクセスを可能にします。マシンに永続的にロックされる代わりに、フローティングライセンスは**リースベース**の仕組みを使用します。 - QUBO++ プログラムの起動時に、ライセンスサーバーからリースを取得します。 - プログラムの実行中、リースは自動的に更新されます。 - プログラムの終了時にリースが解放され、他のマシンがそのスロットを使用できるようになります。 - プログラムがクラッシュしたりネットワークが切断された場合、リースはタイムアウト期間後に自動的に失効します。 - **Docker・VM・使い捨てコンテナなどの仮想環境でも問題なく動作します。** フローティングライセンスはマシン指紋に紐づかないため、コンテナの再ビルドや VM の作り直しでアクティベーション枠が宙ぶらりんになる心配がありません。 使い方はノードロックライセンスと同じです: ```bash qbpp-license -k F-XXXXXX-XXXXXX-XXXXXX-XXXXXX -a ``` フローティングライセンスキーもローカルにキャッシュされるため、以降の実行ではキーの再設定は不要です。