初心者を名乗るものは、いつまでも初心者である。
先日、トヨタのFlutter研修のビデオを見ていたら、講師が冒頭でそんなようなことを言っていた。きっとそれは正しい。なので、いったんは、私もそろそろ初心者を冠するのは卒業しようかと思ったのだが、結局、また書いている。
初心者記事を書く理由
だれでも、どんな分野でも、人はまず初心者から始まって、だんだんに成長していく。ほんの数ヶ月で卒業する人もいれば、ちょっと滞って乗り越えていく人もいる。けれどその後に、いつもまた新しい「初心者」が現れる。
私がプログラミング初心者として一番困るのは、たいがいの技術記事が、初心者向けではないことだ。「あたりまえなこと」が省かれている。限られた紙面で要領よく知見を伝達するのに、それは必要なことだろう。この「あたりまえのこと」が省かれている記事をちゃんと読めるようになれば、初級卒業なのかもしれない。だけれど実際問題として、たぶん多くの初心者が、「省かれたあたりまえ」に躓いて、時間が溶ける。
なので私は、省かないで書く、を心がけている。あるいは、省かれていて困ったこと、を書く。そういう記事は、中級、上級者には冗長でムダが多いだろう。だから私はタイトルに初心者と付記し、タグ付けもすることで、はっきりとこれを初級者に届けたいと思っているし、中・上級者にも無駄足を踏ませないようにしているつもりだ。
なぜ flutter x unityか
私がこれまで書いてきた初心者記事はFlutter × ブロックチェーン(停滞中)やFlutter × MySQL8(いったん終了)のように、そもそもあまり記事のない領域だし、それって初心者がやることか、まずはどれか一つしっかりやれよ、と言われたら返す言葉もないのだけれど、これは性分なので仕方がない。今回も、FlutterFlameもあるのに、なんでUnityなんだと言われればそれまでだけど、それをやってみたいと思い、せっかくこういうwidgetがあるのだから、「いつかもっとよくわかるようになったら」などと言っていないで、今、挑戦すればいいんじゃないかと思っている。
flutter_unity_widget 2022.2.0とは何か
公式ページを読んでいこう。
FlutterでUnityを埋め込むためのFlutter unity 3Dウィジェットです。Unityで作ったアプリをFlutterでレンダリングして、フルスクリーンとエンベッダブルモードで楽しむことができます。Android、iPad OS、iOS、Webで動作し、Windowsは完成間近です。現在、unityフォルダには、デフォルトのシーンを使用したものと、Unity ARファンデーションサンプルをベースにした2つのUnityアプリの例があります。
注意:Unity 2019.4.3以降のみサポートします。UnityFrameworkはエミュレータをサポートしていません。注意:Graphics APIは当面OpenGLES3のみをご使用ください(Androidのみ)。 公式ドキュメントのDeepLによる翻訳
この解説がするっと読める人は、この記事を読む必要がないだとろうと思う。ほとんどわからない、でも、とりあえず問題はない。
Notice
レックス・アイザック・ラファエル(Rex Isaac Raphael)のタグを付けてください。使用しているUnityのバージョンに合ったFUW unitypackageを常に使用してください。
このプラグインは、少なくともUnity Engineの使い方を知っていることを前提にしています。もし、unity widgetの表示方法に問題がある場合は、unityプロジェクトのビルド設定を適当に変更してください。
今後、パッケージのバージョンは、適切なテストの後、unityのリリースに合わせて変更される予定です。これはパッケージが他のバージョンと互換性がないことを意味するものではありません、それはただ、unityバージョンで動作するようにテストされたことを意味します。
Windowsはもうすぐです。
^2022.1.0+5 は Flutter 3.0.0 をサポートし、今のところ PlatformViewSurface のみで動作します。この意味は、UnityWidgetにuseAndroidViewSurface: trueを渡す必要があることです。この問題を追跡することができます。現在、AndroidViewのサポートに取り組んでいます。(同)
DeepLの「変な」部分もあえて直していない。気になる方は英語原文に当たってください。
ここで大事なのは第2パラグラフ「少なくともUnity Engineの使い方を知っていることを前提にしています」だろう。ちなみに私は、Unityで球やキューブを装飾して動かしたり、三次元空間内を一人称視点で歩き回ったりすることができるが、ゲームを完成させたことはまだない。そして「問題がある場合は、unityプロジェクトのビルド設定を適当に変更」する能力があるか、といったらあまり自信はない。
このあとの具体的設定で、Flutter3とそれ以前についての言及がある。ネット上の記事や動画は、作成時期によって、Flutter3ではないもの、また、Unityが古いものもある。参照するときは気をつけて読んでください。
Installation
pubspec.yamlへの追記が Flutter3とそれ以前が分けて書かれている。fileへのimportも、他のパッケージと同様だ。
Preview
初心者にはわかりづらいところだが、この動画は何を表しているのか。一つは、Unityでつくったキューブの回転するシーン。もう一つは、Flutterでつくったスピード調整バー(名前がわからない)。つまりFlutterの指定した速度で、Unityの挙動を制御している。単なる「Unityのアニメーションを見られるFlutterアプリ」なわけではない。
具体的なセットアップ方法は次回以降で