初めに
こんにちは!
「CYBIRDエンジニア Advent Calendar 2021」6日目担当を担当します、@cy_ssssです。
5日目は@kappysanさんの「【新卒研修】Device Farmerの導入」でした。
私も新卒なので、研修当時のことを思い出して少し懐かしかったです。
研修が終わってから、まだ二ヶ月ちょっとしか経っていないんですけどね!
簡単な自己紹介と本日の内容
私はゲーム系専門学校卒、新卒一年目のエンジニアです。
学生時代から現在の仕事でもUnityを主に使用しており、せっかくなので入社前後の使い方や意識の違いなどに焦点を当てた記事を書いていこうと思います。
初歩的な内容が多くなるかとは思いますが、基本って大事だよね!という精神でよろしくお願いします。
Unity
プロジェクトの共有
・入社前
学生時代ゲーム制作のほとんどをチーム開発で行なっていたのですが、困るのがプロジェクトの共有。
当時は恐ろしいことに「Gitとか便利なものあるらしいけど、よう分からん」と、変更箇所を覚えておいて手動でメインのプロジェクトに変更をかけていました。
スクリプトの変更をコピペするにも自分の作業箇所を忘れていたりするとかなり悲惨ですし、シーンやプレハブに加えた変更なんてなおのこと……今考えると死ぬほど面倒です。
・入社後
初めましてGitHub(及びSourceTree)!
一つのリポジトリでデザインなど他の職種の人とも作業の共有が簡単、スクリプトへの変更にプルリク経由でコメントをもらえる、なんて便利なのか!
とはいえ扱いに慣れていなくて、ブランチの切り方とかコミットのまとめ方とかでたびたび戸惑う日々を送っています。
早くお友達になりたい。
シーンの扱い
・入社前
一場面一シーンが基本、タイトル・ゲーム本編・リザルトなどで分けて行ったり来たりしていました。
規模が小さいのでそれで問題なかった、とも言います。
・入社後
常に存在するシーンに汎用的なものが置かれていて、その上でそれぞれのシーンを読んでいる、複数のシーンを同時に存在させられることにまず驚きました。
スマホアプリには共通UIなどがありますし考えてみると納得なのですが、そんなこと出来たのか!と最初は驚くばかり。
三年使ったくらいでは知らない使い方がいくらでもあるものですね。
スクリプトやオブジェクトの取得
・入社前
Hierarchyにあるものはpublic変数にしてInspectorからアタッチ!
自分についてるコンポーネントはGetComponent<>( )!
探せないものはGameObject.Find( )!
・入社後
これダメなんですね…!
検索系の関数は重いため非推奨とのことで、以前は規模が小さいから問題なかっただけだと思われます……
publicだと外部からのアクセスが容易なため[SerializeField]を活用するように、Zenject(依存性注入)というものも初めて知りまだまだ勉強中です。
ZenjectはGithubに公開されているオープンソースのフレームワークだそうです。
https://github.com/modesttree/Zenject
また、元々Zenjectを管理していた方がAssetStoreに公開している、Extenjectというプラグインもあります。
https://assetstore.unity.com/packages/tools/utilities/extenject-dependency-injection-ioc-157735
こちらの方が最新のUnityへの対応もされているそうなので、ご参考までに。
力押しで検索していた過去は反省しようと思いました。
逆にそんなに変わらなかったこと
コーディング規約、というのはチームで開発する上で重要なものですが、命名規則やインデント・コメントの入れ方など、おおよその内容は学生時代に習ってきた書き方と相違ありませんでした。
「goto句の使用禁止」もありましたが、初めて知る言葉なので少し検索……好きな所に跳べるというと、音楽記号におけるこれ↓のようなものでしょうか。
説明も読んでみましたが確かにコードを追うのが大変になりそうで、使用禁止というのも頷けます。
今まで習ってきた書き方とほとんど変わらないというのは、やりやすくて有り難かったです。
とはいえ、うっかりコメントを書き忘れたりはするんですけどね……
研修時の話
Unityにまつわる話だと、入社後の技術研修内でUnityを使ったゲームの制作やUnity1weekへの参加も行いました。
個人制作経験がほとんどなかった上に最短1週間という開発期間の短さは、Unityの経験があっても難しいものでした。
そんな時助けられたのがこちら↓
研修内で作成した要件定義書の「機能リスト」と「アセットリスト」です。
あらかじめ用意いただいたテンプレートを自分なりに編集したものになります。
最低限欲しいものを最初にリスト化したのですが、書いている中で実現したいゲームの輪郭が見えてきて作業を順序立てしやすかったのが一つ。
その上チェックを付けていくことで作業ペースが把握でき、また素材の準備を忘れずにすごく作業しやすかったので、今後も活用していきたいと思いました。
やることを小分けにリストアップすると作業しやすいことが分かり、普段の業務にも生きています。
最後に
箸休め的な記事でしたがいかがでしたでしょうか?
「CYBIRDエンジニア Advent Calendar 2021」
明日は@kenta_kitagawaさんの「【Laravel】queueとsupervisorについて」です!
お楽しみに♪