2025年1月10日
018-1.SPIKEプライムPython入門-第8回「クラスの使い方(その2)」
この連載では「レゴ エデュケーションSPIKEプライム(以下、SPIKE)」を使ったPython(SPIKEアプリ)によるプログラミングの方法を紹介します。 Python(パイソン)はプログラミング言語の一つです。Pythonは教育や人工知能の研究など様々な分野で使われていて、人気があります。 Pythonの主な特徴はオブジェクト指向を採用していることです。オブジェクト指向というのはプログラムの機能をオブジェクトという単位で切り分けて扱う手法のことです。オブジェクト指向は複雑なプログラムを作る場合に効果を発揮します。(文/松原拓也)
◆ クラス内に関数を作る

今回は「クラス」の使い方の続きです。前回はクラスの変数を扱いましたが、今回はクラスの関数について紹介します。
第4回で登場したベースロボットをもう一度使います。

クラスの機能の1つとして、クラスの中に関数を定義することができます。
これは「KeisanClass」というクラスの中に「tashizan」関数を定義した例です。 このようなクラス内の関数を「メソッド」と呼びますが、ややこしくなるので、この言葉は使いません。tashizan関数は2つの引数があり、その2つの値を足した値を戻り値として返します。このプログラムでは「1+2」の計算を行っています。

プログラムを書く時のルールとして、クラス内部の「def」は字下げして書きます。そして、関数には必ず「self」の引数を書きます。selfは自分自身を示すためのオブジェクトです。クラスを使うと、複数のオブジェクトが存在してしまい、自分を特定する必要があるためです。
「__init__」はオブジェクトを作成した時に最初に一度だけ実行される関数です。ここでは、何もすることがないので、「pass」と書いています。

プログラムを実行した時の様子を図にしてみました。 「keisan」というオブジェクトを作成した場合、「keisan.tashizan(~」と書くと、その関数を使うことができます。今まで使ってきた関数と違って、オブジェクトの中に関数があります。

実行結果です。
実行すると、「1+2」の計算を行います。ライトマトリクスに「3」と表示されました。成功です。
◆ ロボットをジグザグに走らせる

先ほどのプログラムを応用して、ロボットを動かしてみます。
ここでは図のようなルートで、ジグザグにロボットを走らせてみたいと思います。

これは、第3回の時のグリッパーのプログラムです。この移動に関するプログラムを1つのクラスにまとめます。
ロボットを「その場せん回」させる処理は「turn」という関数が行っているので、これをそのままクラスに移動させます。 ロボットを前進させる処理はmove関数一行だけです。これを「forward」という関数に変えてから、クラスに移動させます。

プログラムを書き直した結果です。
「MoveClass」というクラスにまとまりました。
プログラムの最後の6行がロボットの動きです。以前よりも、プログラムが読みやすいです。
・オブジェクト作成。
・10cm前進。
・90度せん回。
・10cm前進。
・-90度せん回。
・10cm前進。
これでジグザグにロボットを走らせることができます。

プログラムを実行した時の様子を図にしてみました。

プログラムの実行結果です。
このようにジグザグに走ります。うまく動かすことができました。
現時点だとクラスにするメリットはあまりないのですが、今後、プログラムが複雑になっていくと、クラスである効果が発揮されます。皆さんもクラスを活用してみましょう。
今回作成したプログラム(SPIKEアプリ用)
当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。