メインコンテンツへスキップ
Plug-in 作成 編集

Pythonコード作成ガイド(企画・開発協業)

 

プラグイン開発をスピーディーに進めるためには、企画者の意図をすべて細かく把握しなくても、Pythonコードにその意図を的確に反映させることが重要です。そのための工夫として、プロジェクトのファイル構成を以下の3つのカテゴリに分けることを提案します。

特に「main」と「components」を適切に設計しておくことで、設計書がなくても、Pythonコードと設計だけで開発を進めることが可能になります。これにより、開発の手戻りを減らし、効率的にプロジェクトを進行できます。

 

🚥 基本ルール


  • 現在、Webページ上で利用できるPythonのバージョンは「3.11.2」です。

  • すべてのPythonコードは関数の中に記述してください。コードを直接書いて実行するのではなく、def do():という関数を定義し、その中に処理を記述してください。

  • テストや動作確認を行う際は、定義した do() を呼び出すことで実行してください。

    # General main.py
    a = 1
    b = 1
    value = a + b
    print(value)
    # Functionalized main.py
    def summation(a, b):
      return a + b
    # If you comment out the following three lines, the Python code won't execute immediately. a = 1
    b = 1
    summation(a, b)

     

  • UIに入力されるデータのPythonコードを記述します。例えば、「NODE」データの'X'値のみをドロップリストに表示したい場合、以下のように記述します。

    # components.py
    def getNodeX4CompDropList():
      civil = MidasAPI(Product.CIVIL, "KR")
      nodeEntries = civil.dbRead("NODE")
      nodeXs = []
      for entry_id, entry_values in nodeEntries.items():
        x_value = entry_values.get("X")
        if x_value is not None:
          nodeXs.append(x_value)
      
      return nodeXs # [1, 2, 3, ...] X value of the NODE

    「X座標でフィルタリングする」というのは一例にすぎず、条件は設計基準や材料種別(コンクリート・鋼材など)に置き換えても構いません。重要なのは、UIに入力されるデータの意図を反映したPythonコードが存在していれば、ドロップリストに値を表示する処理は、ほぼ完成したも同然だということです。

  • また、main.pyに記述する関数は、パラメータを受け取る形式で書くのが望ましく、再利用性や柔軟性が高まります。たとえば、ドロップリストで選択した節点のX座標の値を2倍にする処理がある場合、選択されたX値を関数に引数として渡せば、処理が簡潔かつ明確になります。

    以下にその例を示します。

    # main.py
    def main(selectedNodeX):
      result = selectedNodeX * 2
      print(result)
    # Code for the test
    selectedNodeX = 1 # DropList Assumed that selected 1 in (Node X)
    main(selectedNodeX) # output displays as 2

     


📁 Pythonファイルの3つのカテゴリ


main.py

UIから値を取得し、最終的に実行するPythonコードを定義します。

# main.py
from multiple import calc2x
def main(selectedNodeX):
  result = calc2x(selectedNodeX)
  print(result)
# Code for the test
selectedNodeX = 1 # DropList Assumed that selected 1 in (Node X)
main(selectedNodeX) # output displays as 2

 

components.py

Define the values to be filled in the UI components. Returning actual data allows for inferring and directly populating the UI without explanations from the design document.

UIコンポーネントに入力する値を定義します。実際のデータを返すことで、詳細な設計書がなくてもUIを直接推測して入力できます。

# components.py
def getNodeX4CompDropList():
  civil = MidasAPI(Product.CIVIL, "KR")
  nodeEntries = civil.dbRead("NODE")
  
  nodeXs = []
  for entry_id, entry_values in nodeEntries.items():
    x_value = entry_values.get("X")
    if x_value is not None:
      nodeXs.append(x_value)
return nodeXs # [1, 2, 3.2, ...] NODE X values

 

sub_logics.py ← ファイル名は自由に設定可能

main関数を補助するロジックを定義します。すべてのコードをmain関数に記述すると、他の開発者がコードを読みづらくなります。ロジックを役割ごとに分離し、1つまたは複数の補助ファイルに整理することで、保守性と再利用性が向上します。

# multiple.py
def calc2x(value):
  return value * 2

 

🌐 Pythonコードのテストガイド


ライブラリの動作確認は、開発環境内でPythonコードを実行することで即時に可能です。
プラグイン開発環境でコードを動かすと、必要な処理がすぐに確認できるため、試行錯誤がしやすくなります。

1) ウェブページを通じてPythonをテストするための拡張機能をインストール

Pythonコードを保存するだけで即時実行できるようにするため、VS Code に「Live Server」などの拡張機能をインストールしてください。
この拡張機能により、ローカルサーバーが立ち上がり、ブラウザ上で動作確認ができます。
1.png

 

2) engineers-api-python の GitHub リポジトリを取得する

pyscript_tester という名前の新しいディレクトリを作成します。
2.png

 

3) 新しいプロジェクトを作成したい場合は、このpyscript_tester フォルダをコピーして、新しい名前のフォルダとして作成します。

 

3.png

 

4) 作成したフォルダを VS Code で開きます。

4.png

 

5)左側のツリーメニューから index.html をクリックし、画面右下にある「Go Live」をクリックします。

Live Server が正しくインストールされていれば、画面右下に「Go Live」が表示されているはずです。
5.png

 

6) ブラウザが自動で立ち上がり、下図のような画面が表示されれば、テスト環境の構築は成功です。

6.png

  • この基本構成では、pyscript_main.py が中心となる実行ファイルです。

  • 補助的な処理を別ファイルで行いたい場合は、新たにPythonファイルを作成し、そのファイル名をpyscript_config.jsonに追記してください。

7.png

 

0
コンテンツが役に立ちましたか?