コンパイルビルド

'アプリをネイティブバイナリへコンパイルし、ライセンスゲートをすべてのモジュールへ自動で組み込みます — 平文の Python は一切出荷されず、見つけて削除できるような単一のチェック箇所も存在しません。'

簡易版は、復号すれば読み取れる Python バイトコードを出荷します。magiclock build はさらに一歩進み、ソースツリー内のすべてのモジュールにライセンスゲートのチェックを自動で挿入し、そのゲートをコンパイル後のネイティブコードへ直接織り込み、バンドルするモデルを暗号化し、ベンダーの公開鍵を埋め込んだうえでコンパイルします — そのため、読み取れる平文の Python も、見つけて patch できる単一のチェック箇所も存在しません。

マークするものは何もありません

デコレータはなく、コードに注釈を加える必要もありません — ソースコードはまったく変更しません。magiclock build app.pyapp.py から到達可能なすべての .py モジュールを走査し、コンパイル前に各モジュールへゲートチェック(python_protect ケーパビリティの確認)を 1 つずつ挿入します。エントリモジュールには magiclock.air.bootstrap() の呼び出しも自動で挿入されるため、自分で書く必要はありません。

python
# あなたのソースコード。あなた自身は何も変更しません:
def export_report(data: str) -> bytes:
    return render_pdf(data)
shell
magiclock build app.py   # ツリー内のすべてのモジュール(このファイルも含む)が自動でゲートされます

ゲートチェックは各モジュールにつき一度だけ実行され、そのプロセスで最初にインポートされたタイミングで動きます — これは「呼び出しごと」ではなく「モジュールごと」のチェックポイントです(長時間稼働するプロセスにおけるこの挙動の意味や、有効期限・失効とのトレードオフについてはセキュリティモデルを参照してください)。

ビルドする

shell
magiclock build app.py                        # -> dist/app.<...>.so   (single compiled module)
magiclock build app.py --standalone            # a self-contained app directory instead
magiclock build app.py --no-compile            # scan + inject + embed only — skip compiling (no C toolchain needed)
magiclock build app.py --model weights.onnx    # also encrypt a model into the build (repeatable)
フラグデフォルト意味
-o, --output-dirdistビルド出力の書き出し先。
--source-rootエントリーファイル走査・変換対象のプロジェクトルート(app.py がプロジェクトの最上位にない場合に使用)。
--module単一ファイルのネイティブ拡張としてコンパイル(デフォルトのターゲット)。
--standalone単一モジュールの代わりに、自己完結型のアプリディレクトリとしてコンパイル。--module とは排他的。
--no-compileoff走査・ゲートの注入・リソースの埋め込みのみを行い、実際のネイティブコンパイルはスキップ — 変換内容を確認したいときや、C ツールチェーンのないマシンで便利。
--keep-tmpoffクリーンアップせずに、変換用の中間ディレクトリを保持。
--model PATHnoneモデルを暗号化してビルドにバンドル。複数回指定可能。
--model-lock-passphraseoffバンドルしたモデルに、第二要素としてパスフレーズを追加(--model を 1 つ以上指定している必要あり)。
--model-trial / --model-expires-in / --model-expires-atnoneバンドルしたモデルの有効期限 — コードの暗号化の有効期限フラグと同じ意味で、互いに排他的。

出荷されるもの

コンパイル後の .so/.pyd/スタンドアロンディレクトリは、実行するマシン上で MagicLock のインストールも、アカウントも、ネットワークも一切不要です — 復号もライセンス確認も、両方とも完全にオフラインで行われます(セキュリティモデルを参照)。

デフォルトでは、コンパイルされたバイナリはノードロックされます。つまり、ビルドを行ったマシンでのみ復号・実行できます(信頼の起点はそのマシンのフィンガープリントです)。同じビルドを複数のマシン — 2 台目のワークステーションやデプロイサーバーなど — で動かす必要がある場合は、そのマシンもアカウントの下で有効化してからそこでビルドしてください。コンパイル版は現時点では、コードの暗号化モデル・リソースの暗号化が提供しているようなポータブル(--no-bind-machine)による解錠には対応していません。

次に読むべきもの

  • セキュリティモデル — コンパイル版が、簡易版では完全には排除しきれない「チェック箇所を見つけて patch するだけ」というバイパスに耐えられる理由。
  • アカウントと有効化 — 追加のビルド/デプロイ用マシンの有効化について。