早いもので私がエムツーで仕事を開始してまるっと9年。今年で10年目に入りました。流石に10年もあると新しいことをいくつも覚えることになります。今回はこの10年で、私が新しく覚えたことを説明してみたいと思います。


  • C#
WiiU の GBA バーチャルコンソールの制作進行管理が、エムツーでの最初の仕事でした。当時はデバッグ会社から都度エクセルで情報を頂いておりましたが、複数名のプログラマに情報を遅滞なく伝えたり、また修正情報をデバッグ会社に戻したりというのも全て手作業で、かなりの時間を割かれていました。

そこで、そのエクセルの情報を専用のデバッグツールに読み込ませて、情報の確認や新規、修正、再発、管理などのフラグ管理が、メーラーのような3ペインで簡単にチェックできるツールがあれば便利だと思い、そのとき VB から C# に移りつつある状況でもあったことから C# でツールを作り始めました。

取っ付きは Microsoft の統合環境ですから、C / C++ の開発開始とそんなに変わりません。GUI デザイナーに関しては BCC に似ていたので、特に詰まることもなくすんなり理解できました。後から知ったんですが、ノウハウ的には BCC と同じ系譜だったんですね、C# って。そりゃすんなり理解できるはずだわと。

C# は私は参考書は一切読んでないです。C / C++ の理解があれば、C# はその応用です。細かい部分は違ってはいるものの、要は慣れです。それぐらいの違いで後はなんとかなります。大きな違いはポインタは基本使わないのが C# というぐらいでしょうか。参照でだいたいはなんとかなります。慣れると逆にポインタが鬱陶しく感じてきます😓

※ Unity を通して C# を学んでいくというどちらも初心者にはとても良い参考書になっています。どちらかの理解がある程度出来ている人には、内容が冗長に感じる部分も多いです。Unityでゲームを簡単に作ってみたいという人には良さげな本です。

  • LINQ
これは C# の一部の機能なんですが、別項目にしました。C# は、最初のうちはネットで情報を検索しつつツールを作っていけたのですが、ある程度動作し始めて、実際に皆さんに使ってもらい始めると、かなりの大問題が発生します。それはエクセルファイル自体が肥大化していき、その最初の読み込みに数分レベルで待たされるようになってしまったことです。これは厳しい。

そこで調べていくうちに C# には LINQ というデータベースアクセスのような構文が存在することを知ります。そこで処理が重たかった部分を、ループ処理も含めてまるごと LINQ に置き換えたところ、数分が数秒に高速化しました。なるほど、これは便利だと多用し始めて、最後はほぼ体感的に待ち時間ゼロまで高速化出来ました。これが私の C# 初のツール制作になります。

LINQ はその後デリゲート実装も覚えました。このデリゲート記法は個人的には C# の標準記法となっていて、これを使えないとまともにデータの選別とか並び替えとか出来なくて大変です。何度も使っているうちに、そういうものだと覚えてしまいました。そして、デリゲートをさらに簡単に記述するのがラムダ式です。…もうね、名称が日本人には難解なので名前から入ると嫌になります😓 => で機能拡張されるのがラムダ式って乱暴ですが覚えても良いのかもです。

この辺りはここでは細かく説明できませんので、興味があればこれらの単語で検索すると…たぶん本気で嫌になって逃げたくなります😁


  • Unity
折角 C# を覚えたのだからと、個人的に興味を持ったのが Unity です。自分で開発ツールをインストールして、画面描画に関するテストプロジェクトを構築し始めました。するとすぐにアセットという部品をストアから落とせば、簡単に機能を追加出来ることがわかったのです。

これは便利だと思ったのですが、自分がほしい機能のアセットはだいたい有料でした。最初こそ無料のアセットでなんとかしていたのですが、そのうちタガが外れたのか、ドカドカと有料アセットを買い始めます。そして、テストで昔自分が作ったゲームの 3D 版を制作し始めます。

ある程度作ったところで、Unity の罠にも気が付き始めます。それは、迂闊に Unity のバージョンを上げると、途端に今まで作っていたプロジェクトがビルドすら出来なくなることです。ミドルウェアって上位互換保つものだと思っていた自分には衝撃でした。しかも、動かなくなっていた理由が「メソッド名の変更」というしゃーもない内容だったのです。それぐらい自動変換しろよと思いつつ、Unityのバージョンが上がるたびに泣きながら数百以上のエラーを修正していきました。

すると立ちはだかる次の罠。有料だからと言ってもアセットは買った時点の保証でしかありません。Unityのバージョンアップで動かなくなるアセットがちらほら出てきます。そのアセットが基幹部分に関連するモノだったりすると、もうお手上げです。自分で保守メントなど出来るはずもなくお蔵入りです。一番ショックだったのがレーダーアセットでしょうか。3D ゲームで重要な役割のレーダーが使えなくなりました。

ということで、Unity のゲームは9割方は完成していたのですが、その他諸々の理由があって現在は頓挫しています。それでも Unity を覚えたとは言えるので良かったのではないかと。有料アセットは便利ですが、自分でメンテナンスできないブラックボックスになってしまうので、あまり多用しないことをオススメします。自分の初の Unity プロジェクトは既に全くビルドが出来ない状態になっています…

その後和尚からUnityではじめるC# 基礎編という本まで頂いて、再度基礎を勉強し直したのは言うまでもありません。本に沿ってやらされているうちに、Unity実装の基礎を覚えさせられているという、とても怖い有り難い本です。
UnityではじめるC# 基礎編 改訂版
リブロワークス
エムディエヌコーポレーション
2020-12-01
※ 所謂和尚本です。スマホ前提ですが、やってることはPCでも同じです。

  • デプロイする
最初、仕事場で「じゃあこのエラーを修正したらデプロイしますー」ってプログラマから言われた時は「はっ!?」って思いました。初めて聞きました。デプロイなんて言葉。調べたら直訳で「配置」でした。要はビルドしてできた実行ファイルを動作可能な状態に配置することでした。でも、それまで聞いた事もなかったのに、いきなりデプロイするって言われてしばらく面食らっていたことを思い出します。

正直、未だに慣れない言葉です。デプロイって…


  • リファクタリング
これもプログラマから「リファクタリングに2ヶ月かかります」って言われて、「なにその作業?」ってマジでわかりませんでした。なるほど、現在のコードの分かりにくいところや、現在動かなくなっているところを修正していく作業の総称なんですね。最初はリファクタリングと言うことすらたどたどしかったです。今では普通にリファクタリングと言ってますが。

この作業、私も今は時々行っています。可用性維持のためには定期的なリファクタリングは必須です。これを止めた時点でプログラムコードは腐っていく気がします。1年も放置したら臭ってます。コイツ、腐ってやがる、遅すぎたんだ…って言いたくなりますw

※ この本はすいません、私は中身を知りません…知りませんがめっちゃ気になっている本です。開発に携わる人が意識すべきことがたくさん書いてあるってなんなんかなって気になっています…