UG Job Pluginを作成してみた雑感
年内に無事、拙作UG Job Pluginを公開していただいたこともあり、安心して若干ふぬけ気味です(笑)。ほんとは年末の掃除や冬コミ参加も控えているんですけどね(ちなみに一般参加)。なお、公開した3つのプラグインはこちらで紹介・解説してます。
今回実際にUG Job Pluginが公開されたことで、新しく「自分でも作ってみよう!」という方もいると思います。ということで、もしかしたら参考になるかもしれない?実際に作った際の雑感です。
まずLuaという言語、自分は触ったことがありませんでした。今まで触ったのは、JavaとHSP、それにあっという間に挫折したC言語(笑)。あとマニアックなところで、Photoshopの自作プラグイン開発用の言語なんてのもありますが、これは簡単な数式や条件式が書けて、文字数も極端に制限されていたものでした。今回のJob Pluginについても、それに近い簡易的な実行環境なのかな・・と思ったら、これが大間違い。実際にはC言語と組み合わせたり外部ファイルの書き出し・読み込みができたりと、本格的なプログラムが書ける環境でした。
・・話がそれました。そんな自由度の高いUG Job Pluginですが、言語面から見ると、個人的にはかなり開発がしやすいと感じました。少なくとも、他のプログラムやファイルと連携しない、V3環境に閉じた世界であれば。メモリ管理はGCで勝手に面倒見てくれるし、変数の型はよしなに変換してくれるし。第一、扱うデータは基本的にパラメータの数値やノートイベントそのものだったりがほとんどなので、生データをこわごわいじくる場面もない(笑)。唯一、配列の添え字については、多くの言語が0から始まるのに対してLuaでは1から始まるので、違和感というか最初に「あれ?」と思ったのはそれくらいでした。Job Plugin特有のノートイベントなどが格納されるテーブル型の概念も分かりやすかったですね。今まで別の言語で少しでもプログラムを書いたことがある方(もちろん学校とかで習わされる範囲も含めて)なら、多分すんなりと開発に取り組めると思います。
今回、特に以下のサイトで勉強させていただきながらコーディングしました。作成者の方々に、この場をお借りしてお礼申し上げます。
Lua 5.1 リファレンスマニュアル(yuno氏)
関数や型の仕様を確認するときに便利。
http://sugarpot.sakura.ne.jp/yuno/html/lua51_manual_ja.html
良いもの。悪いもの。: Lua基礎文法最速マスター(nox氏)
Luaの言語的特徴が端的に挙げられており、他言語と比較がしやすい。
http://handasse.blogspot.com/2010/02/lua.html
Luaスクリプト機能(YAMAHA社)
ネットワーク機器も取り扱うYAMAHAによる、管理者向けのルータ設定解説。Job PluginにLuaが採用されているのもこの流れ?特に「Lua言語の文法」ページは、Job Pluginで主に使う型や文法が網羅されていて勉強になる。
http://www.rtpro.yamaha.co.jp/RT/docs/lua/
さて、実際に開発する際の環境ですが、こちらはちょっと不自由を感じる場面もあります。まず、更新したプログラムを実行するまでの手間。Job Pluginでは、第三者の悪意ある改変を防ぐため、更新されたJob PluginはそのままではV3上から実行できず、いったん「Job Pluginの管理」から該当のものを削除し、ファイルを選んで追加、そして実行が可能になります。通常のアップデートならこれでいいのですが、開発中は何度も更新しながら動作を確認するので、そのたびに削除→追加→実行をしなければならず、少し大変でした。
また、実行環境で若干動作が怪しいと感じられる場面が何回かありました。これは自分のコーディングミスが原因である可能性が高いので(笑)、あまり気にしないでもらえればと思いますが、もとのデータとは明らかに違うパラメータの数値が取得されてしまうケースがあったので、怪しいと感じたらときどきダイアログに数値を表示させるなどして確認してみてください。
以上2点書いてしまいましたが、どちらも少し意識していれば問題はないレベルなので、まず実際に触って感触を確かめてもらえればな、と思います。
最後に、実際にプログラムを書くときにどんなツールを使うか?もしすでに手馴れた開発環境がある方は、Luaに対応しているかチェックしてみてください。自分はいくつか試した結果、新たに「Notepad++」を導入しました。
NotePad++(本家)
http://notepad-plus-plus.org/
NotePad++ EUC-JP 対応版
http://www.geocities.jp/npp_euc_jp/
というわけで、雑感をつらつらと書いてみましたが、いかがだったでしょうか?作ってみた感想としては、ハードルはかなり低いので、十分アイディアをかたちにしやすい、ということです。自分も今回実際に3つ一気に作ってみましたが、現在の仕様で作れるものと、将来APIが拡張されたら作れるもの、アイディアはまだいくつかあったりします。皆さんもぜひ、UG Job Plugin開発にチャレンジしてみてくださいね。使う人と作る人、大勢になることでどんどん活発化すれば楽しいし、わずかながらですが自分もそれに貢献できればと思います。