このブログ記事では、FlaskとGrasshopper Hopsを使って、簡単な算術演算(除算と乗算)を行うコンポーネントを作成する方法を紹介します。コードはPythonを使ってFlaskアプリケーションを立ち上げ、Grasshopperで利用可能なカスタムコンポーネントを作成します。
Pythonスクリプト
import ghhops_server as hs
from flask import Flask
app = Flask(__name__)
hops = hs.Hops(app)
@hops.component(
"/division", # エンドポイント
name="Division", # コンポーネント名
inputs=[
hs.HopsNumber("A"),
hs.HopsNumber("B")
], # 入力なし
outputs=[hs.HopsNumber("Output")] # 出力(文字列)
)
def division(a,b):
return a / b
@hops.component(
"/multiplication",
name="multiplication",
inputs=[
hs.HopsNumber("A"),
hs.HopsNumber("B")
],
outputs=[hs.HopsNumber("Output")]
)
def multiplication(a,b):
return a * b
# Flaskアプリを実行
if __name__=="__main__":
app.run(debug=True, port=5000)
必要なライブラリ
まずは、必要なライブラリをインポートします。
import ghhops_server as hs
from flask import Flask
ghhops_serverは、Grasshopper Hopsの機能を提供するライブラリです。これを使用すると、Grasshopperから外部のPython関数を呼び出して、演算結果を得ることができます。flaskは、Webアプリケーションを作成するための軽量なPythonフレームワークです。HopsサーバーはFlaskを介して動作するため、Flaskアプリケーションを立ち上げます。
Flaskアプリケーションの作成
次に、Flaskアプリケーションを作成し、Hopsサーバーを関連付けます。
app = Flask(__name__) # Flaskアプリケーションを作成
hops = hs.Hops(app) # Hopsサーバーを作成し、Flaskアプリに関連付け
Flask(__name__)でFlaskのアプリケーションインスタンスを作成します。hs.Hops(app)で、Hopsサーバーを作成し、それをFlaskアプリケーションに関連付けます。
これで、Flaskサーバーが立ち上がり、Grasshopperからアクセス可能なエンドポイントを作成する準備が整いました。
除算コンポーネントの作成
次に、除算を行うHopsコンポーネントを作成します。
@hops.component(
"/division", # エンドポイント
name="Division", # コンポーネント名
inputs=[ # 入力(2つの数値)
hs.HopsNumber("A"),
hs.HopsNumber("B")
],
outputs=[hs.HopsNumber("Output")] # 出力(数値)
)
def division(a, b):
return a / b
@hops.componentデコレータは、この関数をHopsコンポーネントとして登録します。"/division"は、Grasshopperでこのコンポーネントを呼び出すためのURLエンドポイントです。inputsでは、2つの数値(AとB)を受け取ります。HopsNumberは数値型を指定するために使用します。outputsでは、このコンポーネントが返す出力の型を指定します。ここでは、HopsNumberを使って除算の結果である数値を返します。division(a, b)関数内では、引数として渡された2つの数値を除算し、その結果を返します。
乗算コンポーネントの作成
次に、乗算を行うHopsコンポーネントを作成します。
@hops.component(
"/multiplication",
name="multiplication",
inputs=[
hs.HopsNumber("A"),
hs.HopsNumber("B")
],
outputs=[hs.HopsNumber("Output")]
)
def multiplication(a, b):
return a * b
/multiplicationエンドポイントを定義し、multiplicationというコンポーネント名を設定しています。- 入力は2つの数値(
AとB)で、outputsは乗算の結果を数値型で返します。 multiplication(a, b)関数内では、引数として渡された2つの数値を乗算し、その結果を返します。
Flaskアプリケーションの実行
最後に、Flaskアプリケーションを実行します。
if __name__ == "__main__":
app.run(debug=True, port=5000)
app.run(debug=True, port=5000)で、Flaskアプリケーションを起動します。debug=Trueを指定すると、開発中にエラーが発生した際に詳細なエラーメッセージが表示され、デバッグが容易になります。port=5000で、アプリケーションがポート5000で実行されるように設定します。
まとめ
このコードでは、FlaskとGrasshopper Hopsを使って、除算と乗算の機能を持つカスタムコンポーネントを作成しました。/divisionエンドポイントと/multiplicationエンドポイントを作成し、それぞれで除算と乗算を行います。これにより、Grasshopper内からPythonで定義した演算を直接呼び出して結果を得ることができます。
これらのコンポーネントは、GrasshopperでPythonの力を活用するためのシンプルで強力な方法の一例です。FlaskとHopsを組み合わせることで、独自のカスタムコンポーネントをGrasshopper内で利用することが可能になります。