


スクリプトエディタの起動方法
ウィンドウメニューから立ち上げる
スクリプトエディタは Window > General Editors > Script Editor から立ち上げることができます。
日本語の場合は ウィンドウ > 一般エディタ > スクリプトエディタ から開きます。

右下の UI から立ち上げる
右下のスクリプトエディタのアイコンからも起動できます。

こちらの方が便利です。
ヒストリペインとインプットペイン
スクリプトエディタは大きく分けて二つのペインとメニューバーで構成されています。個人的には「ペイン」という言葉をあまりつかわないんですが、公式でこの名前になっていますのでペインで説明していきます。

- ヒストリペイン (上段) | maya ⇒ ユーザー
- インプットペイン (下段) | ユーザー ⇒ maya
ヒストリペインの機能
冒頭で「デザイナーでもプログラミングがしやすい環境が整っているのが maya の特徴」とお話ししましたが、その特徴のひとつがこのヒストリペインにあります。
手動作業時のヒストリペインの働き
ヒストリペインは maya の反応が履歴として残る場所です。手動で行った動作の反応も履歴として残ります。
試しにいつものように手動でキューブを作り、スクリプトエディタを確認してみます。

スクリプトエディタに2行ほど追加されるはずです。
重要なのが最初の一行目。
polyCube -w 1 -h 1 -d 1 -sx 1 -sy 1 -sz 1 -ax 0 1 0 -cuv 4 -ch 1;
これは「 MEL 」という言語でキューブを作る際のコードです。追記された上記のコードを MEL スクリプト として実行すると、全く同じキューブが作成されます。

maya プログラミングの最も簡単な流れ
maya でプログラミングができるデザイナーが多い理由はヒストリペインの優秀さにあります。
手動で行った内容がコードとしてヒストリペインに表示され、そのコードを MELコマンドとして流用することも、それをヒントに python による手続き方法を調べることもできるようになっています。

他のソフトウェアに比べ、maya は非常に直観的にコードのヒントを調べることができます。手動で行ったことに対してコードのヒントを常に出力してくれるのは maya 特有の機能です。ただし、全てのものがヒストリペインに表示されるわけではありません。手動で表示されないものに関しては様々な場所から情報を集めていく必要があります。
また、ヒストリペインには他にもプログラミングに必要な情報が山ほど表示されます。ヒストリペインは maya でプログラミングを行う際にかなりの頻度で見ていく場所になります。
- 上段のヒストリペインは maya プログラミングの要
スクリプトエディタの表示機能
スクリプトエディタの機能をいくつか紹介していきます。ただ、覚える必要がある機能は限られています。
このスクリプトエディタでコードを書くのは短文の場合だけで、慣れてある程度長文を書くようになると、テキストエディタやコードエディタと呼ばれる専門のソフトウェアを使用します。
そのため、ここではよく使う機能に絞って紹介していきます。
表示されている文の削除
表示されている文章を全て消したいときにはツールバーにある ✖ 印のついたアイコンから消すことができます。

最もよく使用するのは ① です。手動で消さない限りヒストリペインの文章は消えません。
ヒストリペインの文が消えるタイミング
- maya が終了したとき
- 手動でヒストリペインの文字を消去したとき
先ほどキューブを作成した時にヒストリが追加されたように、手動で作業を進めていたとしてもヒストリは溜まり続けていきます。履歴が増えて見づらいときは上記の方法で消去するようにしてください。
ペインの表示切り替え
各ペインの表示/非表示を切り替えることもできます。

文字の拡大/縮小
各ペインで Ctrl を押しながら中ボタンをスクロールさせることで文字の拡大 / 縮小を行えます。見づらい場合は調整してください。
Echo All Command
ヒストリペインは maya の履歴が残っていく場所、という説明をしましたが、一部の履歴は膨大な量になるため表示されていません。確認可能な履歴をすべて表示するためには、Echo All Command を ON にする必要があります。

ON にすると大量の文章が表示されるようになります。ヒストリペインが見づらくなるため、前述したヒストリペインの文章の消去方法と一緒に覚えるといいと思います。
Echo All Command を ON にしてもそれらしいものが出てこない場合、ヒストリペインではで確認できないもの、ということになります。結構多いです。
簡単な python コードを書いてみる
では、インプットペインを使って超簡単な python コードを書いてみます。
今回は他のサイトや本に倣い、「 Hello world 」という文字をヒストリペインに出力させるコードを書いてみます。

python コードを書く場所は、インプットペインの python タブの中です。
python2 → python 3 互換コード
maya 2022 から python のバージョンが変更され、maya 2020 以前 と maya 2022 以降 ではコードの書き方が違います。
そこで、python2 の maya でも python 3 の maya と同じコードが使えるようにします。

現在 maya 2020 以前の maya を使用されている方は下記のコードをインプットペインの python タブに張り付けてください。
また、今後 maya 2020 以前の maya を使用する可能性がある方も、同様に次のコードを先頭にコピペしておくようにしてください。
from __future__ import print_function
上記のコードは maya 2020 以前 の maya で、maya 2022 以降の書き方ができるようにするための文です。
今のところ下図のような形になります。

※ maya2022 以降のバージョンしか使わない、という方は不要です。
print 関数を使う
では、実際に「Hello world」という文字をヒストリエディタに出力するコードを書きます。といっても1行だけです。
print('Hello world')
Backspace の下のエンターキーで改行 を行ってこれを張り付けてください。
(テンキーのエンターは書いた文字が消えてしまうと思います。)
張り付けたあと、3行ほど改行を加えて空けておいてください。そのほうが実行したときに見やすくなります。

今のところインプットペインに記入しているのは下記のコードです。
from __future__ import print_function
print('Hello world')
プログラムの実行
プログラムを実行するには、テンキーのエンターを押すか、Ctrl + エンターです。
Bckspace 下のエンターのみの押下は改行です。

まず最初にインプットペインに書いた文が記載され、その分に続いて実行結果が出力されます。
きちんと「Hello world」と出力されているのがわかるかと思います。
先ほど改行を加えたのはコード文と実行結果を分けて見やすくするためです。

プログラムを実行するとインプットペインに書いていた文は消えてしまいますが、インプットペインで文字が打てる状態で Ctrl + Z を押すと戻せます。
- Backspace 下のエンターで改行
- テンキーのエンターあるいは Ctrl + エンターでコードの実行
- インプットペインは Ctrl + Z が使える
関数とは
関数というのは、自販機に備え付けられているボタンやお金の投入口 です。

自販機のボタンは、購入手続きを簡易化するためのボタンです。自販機がない場合はスーパーやコンビニに行って飲み物を購入する必要がありますが、自販機があることによって手軽に飲み物を買えます。その代わり、自販機では飲み物しか買えません。
関数はこのボタンを押せばこう動く、ということがあらかじめプログラミングされているもので、我々はボタンを押すだけでその機能を利用する事ができます。今回利用した print 関数は、()内に入れた内容をパソコンに出力させるためのボタン です。それ以外の機能を持っていません。
この関数というボタンの押し方はこう。

Hello world を別の文字に変えてもちゃんと出力されるはずです。
※「 ’ 」(シングルクオーテーション)で囲む ようにしてください。python は「 ' 」 で囲んだものを文字として認識します。
文字列については下記のページで分かりやすく解説されています。
文字列 | Python-izm
(いずれここでも maya python 向けの文字列の記事を書く予定です。)
print 関数以外にも様々な関数が用意されており、同じ書き方をします。
maya プログラミングは基本的にこの関数を利用して maya に指示を出していきます。
- 関数は実行するだけで手続きができる優れもの
- 使い方 | 関数名(内容)
python2 と python3 での print 文の書き方の違い
さきほど python のバージョンが 2 から 3 に変わったという話をしましたが、python2 での書き方も覚えておく必要があります。
なぜなら、今ネット上にある maya のコードはほぼ全て python2 で書かれているものばかり だからです。(2021年7月現在)
会社で使用されているコードも python2 の可能性が高いです。そのままでは maya 2021 以降のバージョンで動かなくなるため、コードを流用する際は python3 に変換する方法を知っておく必要があります。

これまで python2 の maya で上記のコードを書く場合、次のような形で記述していました。
print 'Hello world'
python2 では print は関数ではありませんでした。python3 では print は関数になっています。
そのためこの書き方だと python2 の mayaでは動きますが、python3 の mayaではエラーになります。
python 3 で print を使う場合は次のようになります。
ptint('Hello world')
ただ、このコードだと python 2 の maya でエラーが起きます。
そこで、先ほどのように、
from __future__ import print_function print('Hello world')
1行目の文を入れることで、python2 の maya でも python3 の書き方で書けるようになります。

python2 → python3 へのコードの書き方の違いはこの print 文が一番大きな変更点 です。他は些細なものがほとんどなので、とりあえずはここだけ抑えておくといいと思います。
インプットペインの機能
途中でお話ししましたが、このインプットペインで長文のコードを書くことはおすすめしません。
専用のコードエディタを使用する方が便利です。いつかコードエディタについての記事も書くと思います。
とはいえ短文であったり、一部のコードを試したい場合にはインプットエディタも使いますので、よく使う機能だけご紹介しておきます。
タブの追加
デフォルトで立ち上げたときは MEL と Python の 2 つのタブがあると思いますが、このタブは任意で追加できます。

MEL か Python か聞かれますので、Python コードを書く場合は Python を選択してください。
タブの削除
タブを削除するには Delete Tab で削除します。

maya 2020 からは Tabs というメニューが追加され、そこに Delete Tab が入っています。
また、2020 からタブの名前横の✖ボタンからも削除できるようになっています。

TAB キーのインデント化
Command > Use tabs for indent で TAB キー によるインデントの扱いを変更できます。
ここは完全に好みですが、私はこのチェックを入れるようにしてます。

プログラミングには「インデント」と呼ばれる、スペースキー4つ分の空白があり、特別な意味を持っています。
このチェックを入れておくと、TAB キーで作られる空白4つが1つの塊として扱えるようになります。
インデントを消すときに Delete 4回押すか、1回で済むかの違いだけですが、地味に便利です。
一部分だけ実行する
ドラッグした状態でプログラムを実行すると、ドラッグした部分のみ実行することができます。

このとき、ドラッグされていない部分は実行されません。エラーの原因になることもありますので注意してください。
また、この機能を利用して全文をドラッグした状態で実行すると、インプットペインの文章を消さずにコードを実行することができます。
全文をドラッグするにはショートカットが割り当てられており、 Ctrl + A で全文選択ができます。
まとめ
スクリプトエディタで簡単なプログラムを組んでみました。
今回特に重要だった部分は、ヒストリペインの使い方と、関数の使い方です。
どちらも何度も使っていくものになりますので、優先して身につけましょう。