記事
· 9 hr 前 7m read

IRISでのPython入門

img

Pythonとその機能についてよく理解できたところで、IRIS内でPythonをどのように活用できるのか見ていきましょう。

言語タグ

言語タグは、ObjectScriptクラスに直接Pythonコードを書くことができるIRIS機能です。

これは、迅速にプロトタイピングしたいときや、別のPythonスクリプトを作成せずにPythonの機能を使用する場合に役立ちます。

使用方法

言語タグを使用するには、Language = python 属性を持つクラスメソッドを定義する必要があります。 以下に例を示します。

Class Article.LanguageTagExample Extends %RegisteredObject
{

ClassMethod Run() [ Language = python ]
{
        import requests

        response = requests.get("https://2eb86668f7ab407989787c97ec6b24ba.api.mockbin.io/")

        my_dict = response.json()

        for key, value in my_dict.items():
            print(f"{key}: {value}") # print message: Hello World
}

}

言語タグを使用する際のメリットとデメリットは何ですか?

メリット

  • 簡素化:別のPythonファイルを作成する必要なしにObjectScriptクラスに直接Pythonコードを書くことができます。
  • 迅速なプロトタイピング:迅速なプロトタイピングや、Pythonの短いコードをテストするのに最適です。
  • 統合:PythonコードをObjectScriptコードと簡単に統合できます

デメリット

  • 混合コード:PythonとObjectScriptコードを混合すると、読みづらく保守しにくくなります。
  • デバッグ:言語タグで書かれたPythonコードはリモートでデバッグできません。これは複雑なアプリケーションには制約となることがあります。
  • トレースバック:Pythonトレースバックは表示されず、ObjectScriptエラーメッセージのみが表示されます。これはデバッグをより難しくしています。

まとめ

言語タグは、ObjectScriptクラスに直接Pythonコードを書くことができる強力な機能です。 しかし、制限があり、適切に使用することが大切です。 より大規模なプロジェクトや、Pythonコードをデバッグする必要がある場合は、別のPythonスクリプトを作成し、ObjectScriptにインポートすることをおすすめです。

Pythonモジュールのインポート(pypiモジュール)

Pythonとその機能についてよく理解できたところで、ObjectscriptにPythonをインポートする方法について見ていきましょう。

最初に、組み込みモジュールや requestsnumpy などのPyPIからのサードパーティモジュールでのみ行います。

使用方法

ここでも同じことを行いますが、PyPIからのrequestsモジュールのみを使用します。

Class Article.RequestsExample Extends %RegisteredObject
{

ClassMethod Run() As %Status
{
    set builtins = ##class(%SYS.Python).Import("builtins")
    Set requests = ##class(%SYS.Python).Import("requests")

    Set response = requests.get("https://2eb86668f7ab407989787c97ec6b24ba.api.mockbin.io/")
    Set myDict = response.json()

    for i=0:1:builtins.len(myDict)-1 {
        set key = builtins.list(myDict.keys())."__getitem__"(i)
        set value = builtins.list(myDict.values())."__getitem__"(i)
        write key, ": ", value, !
    }
}

}

実行しましょう。

iris session iris -U IRISAPP '##class(Article.RequestsExample).Run()'

出力が表示されます。

message: Hello World

メリット

  • Pythonへのアクセス:PyPIにあるPythonライブラリを使用できます。これにより、ライブラリとツールの膨大なエコシステムにアクセスできます。
  • 1つの種類のコード:ObjectScriptコードのみで記述するため、読みやすく、保守しやすくなります。
  • デバッグ:ObjectScriptのコードとしてそのままデバッグできます。というのも、実際にObjectScriptであるためです :)

デメリット

  • Pythonについての十分な知識:Pythonライブラリを効率的に使用するには、Pythonについての十分な知識が必要です。
  • Pythonコードを書いてはいない:Pythonコードを書いているのではなく、Pythonを呼び出すObjectScriptコードを書いています。そうすることで、Pythonのシンタックスシュガーを回避します。

まとめ

まとめると、PythonモジュールをObjectScriptにインポートすることで、Pythonライブラリの膨大なエコシステムを活用してアプリケーション機能を大幅に向上させます。 しかし、Pythonに精通している必要があるなど、トレードオフがあることを理解することが不可欠です。

Pythonモジュールのインポート(カスタムモジュール)

引き続き同じ例を見ていきますが、今回はカスタムのPythonモジュールを作成してObjectScriptにインポートしましょう。

今回はできるだけpythonを使用し、Pythonコードを呼び出すためにObjectscriptのみを使用します。

使用方法

以下のコンテンツが含む my_script.py という名前のカスタムPythonモジュールを作成しましょう。

import requests

def run():
    response = requests.get("https://2eb86668f7ab407989787c97ec6b24ba.api.mockbin.io/")

    my_dict = response.json()

    for key, value in my_dict.items():
        print(f"{key}: {value}") # print message: Hello World

次に、インポートするObjectScriptクラスを作成して、このPythonモジュールを実行します。

Class Article.MyScriptExample Extends %RegisteredObject
{
    ClassMethod Run() As %Status
    {
        set sys = ##class(%SYS.Python).Import("sys")
        do sys.path.append("/irisdev/app/src/python/article")  // Adjust the path to your module

        Set myScript = ##class(%SYS.Python).Import("my_script")

        Do myScript.run()

        Quit $$$OK
    }
}

では、実行しましょう。

iris session iris -U IRISAPP '##class(Article.MyScriptExample).Run()'

⚠️ IRISセッションを変更して、コードの最新バージョンで実行していることを確認してください。詳しくは、最初の記事をご覧ください。

出力が表示されます。

message: Hello World

これはカスタムのPythonモジュールをObjectScriptにインポートして、Pythonのコードを実行する方法を具体的に示しています。

メリット

  • モジュール化:Pythonコードをモジュールにまとめることができ、管理と保守が容易になります。
  • Python構文:Pythonの構文と機能を使用して、Pythonコードを書くことができます
  • デバッグ:今回は説明しませんが、次の記事ではIRISでPythonコードをデバッグする方法を見ていきます。

デメリット

  • パスの管理:Pythonモジュールへのパスを管理する必要があります。詳しくは、sys.path についての記事をご覧ください。
  • Pythonの知識:モジュールを書いて保守するには、やはりPythonの十分な知識が必要です。
  • ObjectScriptの知識:Pythonモジュールを呼び出すには、ObjectScriptの使い方を知っている必要があります。

まとめ

まとめると、PythonモジュールをObjectScriptにインポートすることで、Pythonライブラリの膨大なエコシステムを活用してアプリケーション機能を大幅に向上させます。 しかし、Pythonに精通している必要があるなど、トレードオフがあることを理解することが不可欠です。

ディスカッション (0)0
続けるにはログインするか新規登録を行ってください