見出し画像

Finale Luaのススメ ~VS Codeで開発編~

はじめに

なんだかんだで第3弾となる「Finale Luaのススメ」ですが、今回でとりあえず一区切りとなります。

今回の内容は、「VS CodeでのLuaスクリプトの作成・デバッグ環境の構築」です。これに関してははっきり言って情報がないどころではなく、自分で試行錯誤して何とか再現性がある手順を見つけたものです。
これは間違いなくPC買い替えなどの際に忘れると思ったので、備忘録として残す目的で「Finale Luaのススメ」を認めている、というのもあります。

VS Codeで開発すると何がおトクか

個人的には前回の記事で紹介したJW Luaがお手軽でおススメです。では、VS Codeだと何がオイシイの?というところです。

対象:プログラム経験者、複雑なスクリプトを書く人向け
利点:自分なりに見やすくカスタマイズすることができる、デバッグができる
欠点:プログラミングになじみのない方には敷居が高い、別ソフトを利用するため画面の切り替えが手間

前回のnoteより

エディタのカスタマイズができる

「自分なりに見やすくカスタマイズできる」とはどういうことか、ですが(これはプログラミングをやる方にはおなじみですが)最近のエディタは拡張機能が充実しており、自分好みの機能を追加できます。

左がJW Luaで右がVS Codeです。JW Luaにもある程度見やすさを考慮されていますが、これが固定です。変更できません。
VS Codeは、これはあくまで私の環境ですが性質ごとの色分けのほか変数の検索、タイプミスやかっこ漏れ、endの漏れなどの検知も行ってくれたりするので、長いコードを記述するときは非常に助かります。

左がJW Lua 右がVS Code

デバッグができる

もう一つの利点「デバッグ」ですが、例えばコードを実行したときにうまく自分の想定通りに動かなかったとします。
その時、どうしますか?まずプログラムミスなのか、問題なく動いていて結果として想定外の動きになったのかの切り分けをしなければなりません。
そのために、まず「ミスの箇所を探す」必要があるのですが、その際に参考にするのが「変数の値」だと思います。JW Luaの場合はそれらをprint関数で出力することになりますが、数が多いと面倒です。

デバッグ中のVS Codeの画面

右の画面がコードです。行数の左に「ブレークポイント」と呼ばれる「コードの処理を一旦止める場所」を設定して、止まった時の変数の様子を左の画面に一覧で表示されます。
JW Luaでは確認が難しい、複数の変数や配列の様子などが一目でわかりますね。

VS Codeのインストール・設定

それではここから、細かい手順に進みたいと思います。

VS Codeのインストール

VS Codeのインストールについては色々なサイト様に情報があると思いますので、特にここでは細かく書きません。あっさり行きます。

以下、MicrosoftのVS Codeページからインストーラをダウンロードします。Windowsの一番大きいボタンでOKです。

Visual Studio Codeのインストーラダウンロード画面

ダウンロードしたexeファイルを実行してインストール。そのまま何も考えず次へ次へでもOK。天下のMicrosoft様なので。(というかバージョンが変わるとインストーラのメニューが変わる場合があるので、詳細に書くと更新がめんどくさい)
ちなみに自分はWebの開発なんかもVS Codeでやったりするので、コンテキストメニューに「Codeで開く」を追加しました。

VS Codeの日本語化

VS Codeを開いたら、左のアイコンメニューから一番下(Extensions)をクリック⇒テキストボックスに「japanese」と入力して「Japanese Language Pack for Visual Studio Code」の「install」ボタンをクリックします。

MS純正の拡張パックをインストール

インストールが完了すると、右下にポップアップが上がってきますので、「Change Language and Restart」をクリックしてVS Codeを再起動すると無事日本語化されます。

VS Code右下の通知画面

デバッグ用拡張機能のインストール

Finale Luaの開発環境については、Finale Luaの以下ページに構築手順が書いてあります。

RGP Lua Development Environment(英語)
https://www.finalelua.com/docs/rgp-lua/development-environment

が、この方法ではうまいこと動かなかったので、私は以下の方法で開発環境を構築しました。Windowsの方はぜひ試していただき、動かなかったら教えてください。

まず手順1。Finale Luaのサイトでは以下のように「Lua(language server)とLua MobDebug adapterを入れる」とありますが、「Lua MobDebug adapter」ではうまく動かなかったので、代わりに「Lua Debugger」を入れます。(Lua-language-serverは入れます。変更不要です)

Install the extensions Lua (language server) and Lua MobDebug adapter.

RGP Lua Development Environmentより

それぞれ、以下リンクから「Install」ボタンを押すと(起動を許可するかを聞かれますが)VS Codeが起動し拡張機能のマーケットプレイスが開きますので、Vs Code上で「Install」をクリックしてインストールしてください。

作業フォルダーの準備

作業フォルダーを決め、Luaスクリプトを保存

続いて、作業フォルダーを決めましょう。とりあえず例として、デスクトップにフォルダーを作成してテキストファイルを新規作成、「test.lua」と保存します。

作業フォルダーの場所は基本どこでもいいですが、なるべく「パスの中に2バイト文字(日本語)名のフォルダーがある場所は指定しないほうがいい」です。私は、それをやってブレークポイントが動きませんでした。

以下Lua DebuggerのGitHubから、「dkjson.lua」と「vscode-debuggee.lua」という2つのファイルをダウンロードし、作業フォルダーの中に保存します。

dkjson.lua
https://github.com/devcat-studio/VSCodeLuaDebug/blob/master/debuggee/dkjson.lua

vscode-debuggee.lua
https://github.com/devcat-studio/VSCodeLuaDebug/blob/master/debuggee/vscode-debuggee.lua

ちなみにダウンロードは、画面上部のダウンロードボタンから行えます。(下記画像参照)

VS Codeで作業フォルダーを開く

VS Codeを開き、左上の「エクスプローラー」アイコンから「フォルダーを開く」をクリックするか、ハンバーガーメニューをクリック、(ウィンドウを最大化している場合は不要)「ファイル」⇒「フォルダーを開く」をクリックします。

「エクスプローラー」アイコンをクリックして「フォルダーを開く」をクリックします・
「ファイル」⇒「フォルダーを開く」でもOK

ダイアログから、作業フォルダーにしたいフォルダーを選びます。下の画面は「はい、作成者を信頼します」をクリックします。

そうすると、左ペイン(画面の左側)に今選択したフォルダーの中身がツリー上に表示されます。以下は、「Test」というフォルダー内に「test.lua」と先ほど保存した2つのファイルが入っている、という状態です。

VS Codeのデバッグ設定

launch.jsonの作成・修正

続いて左側のアイコンから「実行とデバッグ」をクリックし、「launch.jsonファイルを作成します。」をクリックし、launh.jsonファイルを作成します。

ここは元(Finale Luaのページ)の手順5にあたる手順ですが、先ほどインストールした拡張機能を変えたので、こちらも変えなくてはなりません。
「Lua Debugger」をクリックすると、自動的にlaunch.jsonファイルが生成されます。

続いて左側「エクスプローラー」アイコンをクリックしてフォルダーを開き、新しくできた「.vscode」フォルダーの中にある「launch.json」をクリックするとファイルが開き、右側のコードエディター部分に内容が表示されます。

ここで、launch.jsonに以下修正を加えます。

  • 10行目「"request": "attach",」の「launch」を「attach」に変更します。

  • 13行目「"executable"」、14行目「"arguments"」、18行目「"env"」の前に「//」(スラッシュ2つ)を入れコメントアウトします。(その行が緑色になればOKです)

  • 忘れずに保存します。

デバッグ用の初期設定

VS Codeで[Ctrl]+[,](コントロールキーとカンマキー)のショートカットを押すと設定画面が表示されます。検索用のテキストボックスに「allowBreakpointsEverywhere」と入力し、ヒットした項目のチェックを入れます。(「任意のファイルにブレークポイントを設定することができます」という項目)

ここまでで初期設定は完了です。

Luaファイルを作ってデバッグしてみる

Luaファイルの作り方

Luaファイルは、拡張子を「.lua」にしてあげればいいだけです。
元のフォルダー(この場合「Test」フォルダー)に直接「新規作成」⇒「テキストファイル」で作成してもいいですし、「エクスプローラー」アイコンからフォルダーを開いて、右クリック⇒「新しいファイル」でも、画像のようにフォルダ名の右のアイコンからファイルを作成しても構いません。

ファイルを開くのは、VS Codeにluaファイルが関連付けられていれば(Windowsの)エクスプローラーからファイルをダブルクリックすればVS Codeで開けますし、VS Code上で開いたフォルダーからファイルをクリックすれば開けます。まあウィンドウの切り替えが面倒なので、VS Codeから開きましょう。

デバッグのための追加コード入力

デバッグ用に、(便宜上ファイルの一番上がいいと思います)以下コードを記述&保存します。デバッグが不要になったら削除して問題ありません。

local json = require 'dkjson'
local debuggee = require 'vscode-debuggee'
local startResult, breakerType = debuggee.start(json)
print('debuggee start ->', startResult, breakerType)

Finaleの「RGP Lua」にLuaファイルを登録

Finaleを開き、作成したLuaファイルを「RGP Lua」に登録します。
この時、忘れずに「Enable Debugging」にチェックを入れます。何やらメッセージが出るので「はい」でOKです。
登録後はFinaleの再起動も忘れずに。

Luaファイルの実行・デバッグ

Luaファイルの実行自体は簡単です。RGP Luaに登録された時点でFinaleの「プラグイン」メニューに現れますので、クリックして実行するだけです。
(Finale再起動後に反映されています)

RGP Luaが保存されているフォルダー名を開くと中に表示されているはずです

デバッグ方法ですが、まずVS Codeで「実行とデバッグ」アイコンをクリックし、上のリストボックスが「launch-lua」になっていることを確認して「再生」(緑の三角)ボタンをクリックします。

「launch-lua」になっていることを確認し再生ボタンをクリック

以下ポップアップが表示されれば成功です。されない場合はエラーメッセージが色々出るので原因を究明、修正していきましょう。

この状態が、FinaleでLuaファイルを実行されるのを待機している状態です。
続いてFinale側でデバッグしたいLuaファイルを前述の方法で実行すると、デバッグが開始されます。
※ここでもエラーが出る場合があります。心してかかってください。

各画面の説明は、以下簡単に記載します。

①セッションを操作します。ステップを進める/戻すなど。一番右の切断(または停止ボタン)でアクティブなセッションを切断します。
初期設定ではluaファイルの実行が終了しても自動的にセッションは切断されません。必ず手動で切断してください。

②ブレーク中の変数の状態などを表示します。
ブレーク中でないと表示されません。ファイルの実行後は削除されます。

③デバッグコンソールです。以下コードに記載した情報が出力されます。ちなみに、下ペインが表示されない場合は[Ctrl]+[J]のショートカットキーで表示/非表示を切り替えられます。

debuggee.print(log,[出力したい情報])

おわりに

というわけで、長くなってしまいましたが、これで開発環境は整ったと思います。これからみんなでガシガシFinale Luaスクリプトを書いていきましょう!(一人じゃさみしいので…)

今後については未定です。私の時間が空いた際に色々まとめて作ったコードを公開するなどするかもしれません。ご要望あればコメントなどいただければ検討します。

この記事が気に入ったらサポートをしてみませんか?