秘密作戦001：Luaで産声をあげよう

# 記事の内容
Luaスクリプトの入門です。こんな感じで書けばLuaを使うことができるというイメージです。

# 対象
他のプログラム言語経験者でLuaを始めようとしている人
※プログラム初心者の方を対象にしたかったのですが、ネットに転がっている参考文献がプログラム経験者向けに書いてあり、そこがクリアできないと中々難しいと思います。

# プログラム言語未経験で１から始めたいという方へ

これから全部勉強してやんよ(*ﾟ∀ﾟ*)ﾑｯﾊｰ という熱い魂のお持ちの方へのメッセージ
<details><summary>コチラ</summary>

この記事は、プログラムの導入ができるだけなので使えるという段階には到達できていません。しっかりとした文書を読みたいという方は、下記の様な正式な英語文書の翻訳がありますが、あまりオススメしません。
【Lua 5.3 リファレンスマニュアル 】
http://milkpot.sakura.ne.jp/lua/lua53_manual_ja.html

プログラム言語をやる際、その文法は基本的には似通っているので、一つをやれば似たようなものなんだなと感じられるようになるかと思います。つまり差分が分かればプログラムが書けてしまいます。Luaでググってみましたが、どれも何かプログラミング言語かじった人向けの記事しか見つけることが出来ず、おそらくはC言語でこういった文法を一度学ぶと、内容が理解できるようになると思います。

@mikekousyakuもC,C#,C++,java,VB等の言語をかじってからluaを書き始めたので、ネットの参考文献のみでスルスル入れていけましたが、全くの未経験者がこれらの参考文献のみでluaが書けるかと言われると、なかなか難しいのかなと思います。

そこで、学習として分かりやすいと思ったC言語の文法説明ページを引用させてもらいます。

【苦しんで覚えるＣ言語】
https://9cguide.appspot.com/

luaでもこういうページと環境がセットになっていたらもっと導入が楽かと思いますが需要あるかな？

上記内容読みながら、下記VirtualCast様が掲載している例文が理解できるようになってくると、Luaが使えるようになると思います。そう考えると、結構VCI界隈はプログラム書ける人が集まってる？

https://virtualcast.jp/wiki/vci/script/luatutorial

</details>

# 記事作成の趣旨
VCI作成するためには、3DモデリングやLuaスクリプトの作成、その橋渡し等様々な要素技術が必要です。完成までの持って行き方は人によって色々あるかと思いますが、@mikekousyaku　の場合、プロジェクトも技術も要素要素に分けてやっていきたい派の人間です。下記の段取りで進めて行きたいと思っています。

【プロジェクト(記事)のススメ方】
➀秘密作戦001:Luaで産声をあげよう:Luaの導入とその他周辺技術習得方法
➁秘密作戦002:年末までの秒タイマーを作ってみよう：VCIで実際年末を秒数でカウントダウンするタイマーを作ってみる
➂秘密作戦003:今回作りたい本当のお題：今回作りたい本当のお題


@mikekousyaku　が➂まで辿りつけるのかというのもアドベントカレンダーのお楽しみということでお付き合いいただければ幸いです。

# 内容目次

　はじめてやった時の下記３点をご紹介

　・Luaスクリプトどうやって勉強した？
　・3Dモデルどうやって勉強した？
　・Unityどうやって導入した？
　
# Luaスクリプトどうやって勉強した？

VirtualCast社様が記事をまとめておられます。

【Luaのチュートリアル (VCIスクリプト)】
https://virtualcast.jp/wiki/vci/script/luatutorial

（・ω・）・・・・・・よくわかんないな。

プログラムの世界ではHello World(こんにちは！世界！）とコンピューターに言わせることが初心者としての産声のような作業のようなのでまずオギャーしてみたい。そうやって少しオンギャーコードを書いてみました。まずは文字だけ、数字だけ、計算だけやってみます。

まずeclipseというツールが必要でした。

【eclipese】
https://www.eclipse.org/ldt/

eclipeseというのは、プログラムを書くためのテキスト編集アプリの名称だと思ってください。同じ様なソフトにVS(ビジュアルスタジオ）等様々なアプリがあります。お好みに合わせてまずはお選びください。

こういったアプリを使う目的は、主に「プログラムのコードミスを減らすこと」です。「プログラムを書く時、細かいルール」が１つ守られていないだけでも、パソコンに嫌われてしまいソッポを向かれてしまい動きません。大事な彼女のご機嫌を損なわないようにルールの間違いを指摘してくれるとっても便利なツールです。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16614/d2cd1e58-edb5-ee17-8039-64c7ada3647d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16614/6318ec67-bb4a-5851-2124-89cb73e0161e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16614/c48d0645-cfec-3bef-9abf-3942d83a47bf.png)


「作者が不明なアプリケーションである」といった旨、windowsが警告してきますが、詳細を開いて起動ボタンを押します。

こんな画面が出てきます。詳これから書くプログラムコードを保存する先を選んで欲しい旨聞かれてきます。（デフォルトでいいと思います。）→launchを押下


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16614/73aa00f5-6b92-0113-bf53-f87432af58ce.png)

※ユーザー名mikekは三毛公爵の略です。ハイソコ、ユーザー名隠してないとか突っ込まない！

起動が終わったら、File→new→LuaProjectを選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16614/bd83f383-e5bf-ccba-3fa5-0520b7d5b21e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16614/c848a754-0f0f-8748-a910-2b974616ce52.png)

プロジェクト名を入れます。新しいソフトウェアの名前といった感です。DQ3でもいいし、FF4でもいいです。
ここではhelloとします。→finish

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16614/9fdfc2ca-837f-551e-7156-2bfae02d8cc0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16614/507e00a5-ba3c-bb48-ec25-02944d731afc.png)

これでコードを書いて実行する準備ができました。VirtualCast様のチュートリアルを参考に、産声をあげてみましょう。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16614/da3b411e-065d-5c3d-9f8f-03373b374cad.png)

```lua:hello.lua
local function main()
print("hello")
print("おんぎゃーーーーーーー")
--[[local function main()とendの間がプログラムの内容になります。]]--
end
main()
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16614/936c2e97-48ee-7c94-bde6-ff7a630b59dc.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16614/2c782796-36dd-8832-0a41-1d6dc82f892d.png)


さて実行してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16614/453da74a-9489-fd54-b378-53d75d141885.png)

見事、産声をあげることができました。ここまでできれば、あとはイジり倒して覚えていく形になります。

バーチャルキャスト公式Wiki VCI 制作ガイド様に、VCI作成にたどり着くための要素が書かれています。
https://virtualcast.jp/wiki/vci/beginner
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16614/08d0bb29-87e6-1157-0b32-3b18dcf1af6b.png)

luaはVCIを動かすためのプログラミング言語なので、今４に組み込むスクリプトについて学習できた形になります。


# 3Dモデルどうやって勉強した？

色々なソフトがあります。3Dの表現の仕方には色々あって用途毎に異なるのですが、最初にその判断をするのはかなり困難です。インターネット上に情報が転がっているメジャーなソフトを強くオススメします。2022年11月26日現在blenderというソフトウェアの情報がgoogleでヒットしやすかったので、そちらで作成しました。

作り方に関しては、Youtube公開されている禅(ワニ）様のページがとてもわかり易く動画で説明されていてよかったです。

https://www.youtube.com/watch?v=Xg4AXYuzEqA

ここからVirtualCast用に自分でアバターを作ってしまうかもしれません。


# Unityどうやって導入した？

2021年のアドベントカレンダーで@sirohige 様がまとめられております。下記の記事の通りに実施するとスムーズに導入できました。unityのバージョンの対応等でうまくいかないことがあったので、ご紹介。

https://qiita.com/sirohige/items/0b0a86cfdc7af18900e6

※2021年の年末に確認した導入方法です。VirtualCast様もアップデートを繰り返しているので、最新の記事を参照されることをオススメします。ここではバージョン等の導入方法で躓くので注意した方がいいよということです。

# お礼
失踪してしまう可能性もあるのでまず最初に書いておきます。

この記事はVCI Advent Calendar 2021の @sirohige 様の記事を参考にVCIに挑戦したものです。導入のきっかけとなりました @sirohige 様はじめ、素敵な企画を後押ししてくださったみゅみゅ氏に感謝致します。

べ・・・別に参加者限定グッズに釣られたわけじゃないんだからね！