ライブラリをエクスポートしています

Typhoon HIL Control Centerのライブラリエクスポート機能の説明

輸出手続き

ライブラリはデフォルトで*.tlibファイルに保存されます。これらのライブラリは、親ディレクトリがライブラリ検索パス(「ファイル」→「ライブラリパスの変更」アクション)に追加されている限り、問題なく使用できます(ライブラリコレクションにロードできます)。この方法の欠点は、ライブラリに必要なリソースファイルをライブラリファイルとは別に削除する必要があることです。また、ライブラリのコンテンツは可視であるため、誰でもライブラリの実装を確認できます。

ライブラリを展開するもう一つの方法は、エクスポートされたライブラリを使用することです。ライブラリのエクスポートでは、ライブラリとそのリソースファイルをまとめてパックします(オプションでライブラリコンテンツを暗号化し、最上位のライブラリコンポーネントをロックすることもできます)。また、複数のライブラリが相互に依存する場合に備えて、単一のエクスポートにまとめるオプションもあります。

注:ライブラリに別のユーザー ライブラリのコンポーネントが含まれている場合、そのライブラリは依存関係のリストに自動的に追加され、両方のライブラリがパッケージに含まれます。
注意:エクスポートされた依存ライブラリは、ライブラリ エクスプローラーには表示されません。
注意:複数ファイルのライブラリに他の *.tlib ファイルを含めるには、それらも依存関係リストに追加する必要があります。

ライブラリをエクスポートするには、「ファイル」→「ライブラリのエクスポート」アクションを選択し、ライブラリのエクスポート ダイアログを使用してライブラリのエクスポート オプションをカスタマイズします。

1ライブラリエクスポートメニューアクションとライブラリエクスポートダイアログ

暗号化管理

「リソースファイルを暗号化」にチェックを入れると、 「暗号化の管理」ボタンが有効になります。このボタンをクリックすると、暗号化管理ダイアログが開きます。

2暗号化管理ダイアログ

このダイアログでは、パッケージ化時に暗号化するファイル/ディレクトリを選択できます。チェックされていないファイルとディレクトリは暗号化されずにパッケージ化されます。

注: Cコードファイル(.cおよび.h)は暗号化しないでください。コンパイラが後で復号化できなくなるためです。実装を隠蔽する必要がある場合は、コードをプリコンパイルすることができます( C関数のドキュメントを参照)。

コンポーネントロック管理

「最上位コンポーネントをロック」にチェックを入れると、「コンポーネントロックの管理」ボタンが有効になります。このボタンをクリックすると、「コンポーネントロックの管理」ダイアログが開きます。

3コンポーネントロック管理ダイアログ

このダイアログでは、パッケージ化時にロックするトップレベルコンポーネントを選択できます。チェックマークが付いていないコンポーネントは、現在のロック状態を変更せずにパッケージ化に含まれます。これにより、トップレベルコンポーネントの一部のみをロックし、残りのコンポーネントはアクセス可能な状態のままにすることができます。

リソースアクセス

ライブラリは組み込みの 開ける 関数を使用するか、pandas、jsonなどの外部Pythonライブラリを使用することで実現できます。ライブラリをエクスポートすると、リソースが暗号化される可能性があります。暗号化されたリソースですべての処理が動作するために、ライブラリ開発には2つの要件があります。
  • リソースには、相対パスを使用するか、get_library_resource_dir_path() API 関数から構築された絶対パスを使用してアクセスする必要があります。

    # open( "..\resources\file.txt" )f: file_content = f.read()として修正します
    # 正しいインポートos root_path = mdl.get_library_resource_dir_path(item_handle) file_path = os.path.join(root_path, ".." , "resources" , "file.txt" ) with open(file_path) as f: file_content = f.read()
    # open( "C:\library\resources\file.txt" )f: file_content = f.read()として間違っている
  • リソース アクセスに外部 Python ライブラリを使用する場合は、組み込みのopen関数を使用してライブラリを開き、リソースの復号化を処理するために、ファイル パスではなく、そのファイル オブジェクトをパラメーターとして渡す必要があります。

    import pandas as pd # open( "..\resources\file.csv" ) as f修正: df = pd.parse_csv(f)
    import pandas as pd # 間違いdf = pd.parse_csv( "..\resources\file.csv" )

open関数を使用すると、アクセスされたリソースは必要に応じて復号化され、その場合はメモリ内のファイルのようなオブジェクト (StringIO/BytesIO) が返されます。

with open(...) as ...ステートメントもサポートされています。

開発中は、対応するコンポーネントが定義されている.tlibファイルからの相対パスが計算されます。エクスポート後、リソースアクセスのルートは変更されますが、リソース階層は変更されません。つまり、すべてのアクセスはエクスポート前と同じであり、リソース処理コードに変更を加える必要はありません。

Pythonモジュールのインポート

ライブラリはハンドラー内でPythonモジュールをインポートして使用できます。ローカルのPythonモジュールを使用する場合は、エクスポート時にライブラリリソースとして追加し、その際に暗号化することができます。

メモリ内復号化はサポートされており、エクスポート時にPythonファイルがリソースリストに追加されている限り、シームレスに実行されます。import ...from ... import ... の両方のステートメントがサポートされています。