最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

pcode

コンテンツを不明瞭化した実行可能ファイルの作成

説明

pcode(item) は、検索パス上の .m ファイルまたはフォルダー内のコードを難読化し、拡張子が .p の P ファイルを作成します。item.m ファイルである場合、結果のファイルは item.p です。item がフォルダーの場合は、そのフォルダー内のすべてのスクリプトまたは関数のファイルが現在のフォルダーで難読化されます。P ファイルは、.m ファイルへの変更後でも、対応する .m ファイルよりも優先的に実行されます。

メモ

関数 pcode はプログラム ファイルを難読化しますが、暗号化するわけではないため、P ファイルは安全ではありません。知的所有権を保護するためのファイルの P コード化は、推奨されていません。

pcode(item1,item2,...,itemN) は、コンマ区切りリストで指定された各 .m ファイルまたはフォルダーから P ファイルを作成します。

pcode(___,'-inplace') は、入力と同じフォルダー内に P ファイルを作成します。その他すべての入力引数の後に '-inplace' を指定します。

すべて折りたたむ

関数ファイルを P ファイルに変換します。

現在のフォルダーにある myfunc.m という名前のファイルで、3 次多項式の平方根を返す関数を定義します。

function y = myfunc(x)
y = sqrt(x.^3 + x.^2 + x + 1);
end

myfunc.m から P ファイルを作成します。myfunc を呼び出すときに MATLAB® が使用するファイルを決定します。

pcode myfunc
a = myfunc(3);
which myfunc
c:\myMATLABfiles\myfunc.p

sparfun フォルダーから選択したファイルを P ファイルに変換します。

一時フォルダーを作成し、既存のパスを .m ファイルに定義します。

tmp = tempname;
mkdir(tmp)
cd(tmp)
filename = fullfile(matlabroot,'toolbox','matlab','sparfun','spr*.m');

P ファイルを作成します。

pcode(filename)
dir(tmp)
.            ..           sprand.p     sprandn.p    sprandsym.p  sprank.p     

これで一時フォルダーには、エンコードされた P ファイルが保存されます。

クラスの一部である入力ファイルから P ファイルを生成します (同じ手順をパッケージの一部であるファイルに適用できます)。この例では、既存の MATLAB サンプル クラスを使用します。

.m ファイルを含む既存のクラス フォルダーとして classfolder を定義します。

classfolder = fullfile(docroot,'techdoc','matlab_oop', ...
    'examples','@BankAccount')
dir(classfolder)
classfolder =

C:\Program Files\MATLAB\R2019a\help\techdoc\matlab_oop\examples\@BankAccount


.              ..             BankAccount.m  

一時フォルダーを作成します。このフォルダーにはこの時点ではクラス構造体は入っていません。

tmp = tempname;
mkdir(tmp)
cd(tmp)
dir(tmp)
.            .. 

パス classfolder 内のすべての .m ファイルに対して P ファイルを作成します。入力ファイルはクラスの一部であるため、MATLAB では出力ファイルが同じクラスに属するようにフォルダー構造を作成します。

pcode(classfolder)
dir(tmp)
.             ..            @BankAccount 

P ファイルは同じフォルダー構造に置かれます。

dir('@BankAccount')
.              ..             BankAccount.p  

入力ファイルと同じフォルダー内に P ファイルを生成します。

複数の .m ファイルを一時フォルダーにコピーします。

filename = fullfile(matlabroot,'toolbox','matlab','sparfun','spr*.m');
tmp = tempname;
mkdir(tmp)
copyfile(filename,tmp)
dir(tmp)
.            ..           sprand.m     sprandn.m    sprandsym.m  sprank.m 

P ファイルを、元の .m ファイルと同じフォルダー内に作成します。

pcode(tmp,'-inplace')
dir(tmp)
.            sprand.m     sprandn.m    sprandsym.m  sprank.m     
..           sprand.p     sprandn.p    sprandsym.p  sprank.p  

入力引数

すべて折りたたむ

難読化する .m ファイルまたはフォルダー。文字ベクトルまたは string スカラーとして指定します。

  • 入力引数にファイル拡張子がなく、フォルダーの名前もない場合、関数は MATLAB パス上または現在のフォルダー内になければなりません。

  • ワイルドカード文字 * を使用すると、pcode は、.m 拡張子のないすべてのファイルを無視します。

  • 関数 pcode はライブ スクリプトやライブ関数 (.mlx) をサポートしていません。

  • item がパッケージ フォルダーまたはクラス フォルダーに含まれている場合は、pcode は同じパッケージまたはクラス構造体を作成し、結果の P ファイルを収納します。

.m ファイルまたはフォルダーのリスト。文字ベクトルまたは string スカラーのコンマ区切りリストとして指定します。このリストには、ファイルとフォルダーを混在させて含めることができます。

詳細

すべて折りたたむ

リリースの互換性

pcode アルゴリズムは MATLAB Version R2007b で設計し直されました。R2007b より前のバージョンで生成された P ファイルを R2015b 以降で実行することはできません。R2007b 以降で生成されたファイルは R2007a 以前では実行できません。

関連ファイルの P コード化

プログラムだけでなく、プログラムが依存している関数およびスクリプトを難読化する場合があります。プログラムの実行に必要なファイルを判別するには、関数 matlab.codetools.requiredFilesAndProducts を使用します。

コードの難読化

P ファイルは難読化されていて、MATLAB コードの実行のみの形式です。P ファイルを MATLAB エディターまたはライブ エディターで開くことはできません。

R2006a より前に導入