2024年エンジニア的ふりかえり(KPT)

ダイジェスト

1月: NinjaDAO Conference登壇。ゲーム制作三昧

2月: ベリロン雪像。新しいマイク買ってリモート環境整え。ゲーム制作三昧

3月: ゲーム制作

4月: ゲーム制作

5月: ゲーム制作。ウサギアレルギー発覚

6月: 大規模開発が終わる

7月: ゲーム制作。AIボイスチェンジャーで美少女声配信

8月: フリーランスになる

9月: ゲームの体験版をリリース&コミュニティ運営

10月: フリーランス

11月: 飼っているウサギが死ぬ。死生観に変化。謎に社会科学を勉強し始める

12月: ゲーム制作(中だるみ)

Keep

ゲームプログラミングに触れ SOLID原則を大切にし始めた

ゲーム制作にあたり、UdemyでUnity講座を半年にわたり受講した。

Unityの初級~中級的な使い方や設計指針を学び非常に勉強になった。

その中でも、依存性逆転の原則に関する講座が特に熱く、改めてSOLID原則の大切さを感じることができた。

ゲーム開発文脈で講座を学んでいたが、本業のwebシステムでの開発にもおおいに役に立った。

業務委託先の会社のアドベントカレンダーやLT会などで、ゲームプログラミングにおける依存性逆転の原則について発表し、わりと好評だった。

SOLID原則ってプログラマーになれば一度は通ることになる原則だと思うのだけれど、意識的に使いこなしている人って少ないと思う。

イケイケの会社では、「まあ、当然ですよね?」となる概念ではある。が、世の中にはいろいろな会社がある。そんなもの関係ねーぜ!って言いながら気ままに開発することを特に否定はしない。

そういう思想が正義になる会社だってある。一度出して、その後保守もせずに終了するプロジェクトなんていくらでもある。保守の機会がなければどんなにきっちりした設計だろうとあんま意味がない。設計がきれいだからといってお金を生み出さなければ無意味だ。無秩序なハリボテみたいなソフトウェアを雑に速く出すことに意味があるシーンもあるはずだ。

が、そういうカオスな開発行軍の中であっても、一定の秩序を見出したい。少しでも将来楽になるようになにかしたい。みたいな人にとって、こういう原理原則を学ぶことは意味があるはずだ。

ちなみに受講した講座は下記。

https://www.udemy.com/course/unityrpg/?couponCode=ACCAGE0923

Unityをやらない人にとってはほぼ意味がないが、中級者向けの講座でMMO RPGを作ったりする。

全編英語のため、もし過度の英語アレルギーがあるかたにはおすすめしない。が、日本語字幕があるので、英語が全くわからなくてもまあ分かると思う。

この講座の知識をもとにVLCNP物語の体験版を出した。

もちろん、講座の知識だけで作れるほど甘くはないが、AIと根性さえあれば一定よくあるゲーム、みたいなのは作れるようになった。

性能改善もののタスクをたくさんこなせた

よくあるweb系のシステムでの性能改善を数え切れないほどやった。

N+1なんてのはわりとすぐに対応できるが、テーブル設計レベルの改善はやっていて面白い。

NewRelicやRDSのパフォーマンスインサイトから遅いクエリを特定、SQLの実行計画を見て、インデックスをつけたり、大規模テーブルのmigrationを止めない方法を考えたりなんてのは汎用スキルっぽくてためになった。

また性能改善のために仕様のほうを変更したりなど、やれることはやってきた気がする。

下記あたりの書籍がとても役に立った。

そのうちインデックスの改善だけにとどまらないやつをやりそうな気がする。

いよいよトロの部分に迫ってきた感があり、Web系の仕事も俄然面白くなってきている。

AI系ツールによる生産性・品質向上

ChatGPTの登場でAIがにわかにもてはやされるようになってきた。

例外なく僕も使い倒してきている。主に使っているのは下記。

  • Perplexity
  • GitHub Copilot
  • Coderabbit

SQLに関する作業はPerplexityに任せれば100%解決する。

Unityの問題についてもPerplexityに全任せしている。自分のプロジェクトの場合、ソースコードも全共有して聞けたりするので、ほぼほぼ解決できる。Perplexityは出典を明示するので、適当な回答がほぼこない。MySQLの中身の話なんかも質問するときちんと解説してくれるので、性能改善時に非常に役に立った。

GitHub Copilotも常時使っているツールの一つ。日頃のプログラミングの効率が爆上がりしている。「こんなことやりたいんだよね〜」とコメントを書く→AIが書く→手直しするのループで書きまくっている。アルゴリズム的な補完ももちろん助かるのだが、この関数の使い方ってなんだっけ? みたいな小さな悩みを即座に解決してくれるのもでかい。検索する時間がなくなった。

レビューに関しても助かっている。Coderabbitという、AIがプルリクのレビューをしてくれるサービスがあるのだが、これがとても良い。

というのもゲーム開発は完全個人プロジェクトなので、めちゃくちゃコードが荒れる。自分がわかればいいよね〜みたいな。そういうのを目ざとく見つけて、指摘をしてくれるので品質が上がる。

で、指摘そのものももちろん重要なのだが、指摘する存在がいることが最も重要。「舐めたコードを書くとなんかウサギがゴチャゴチャ言ってくるしな〜」って思うことで品質が自然に上がる。

けっこうマトモな指摘をしてくる

Claude3.5 sonnetなんかも使ってX投稿の自動化もやっていたが、こちらは逆に煩わしくてやめてしまった。ただ、Claude3.5 sonnetの自然言語の自然さは、今後役に立つこともあるかもしれない。

AI導入前と、導入後で明らかに世界が変わっている。ポイント・オブ・ノーリターン。

AIがプログラマーの仕事を奪う的な言説もある。

このたぐいの言説については、「早く奪ってくれ」と本当に思っている。

たとえばWordPressのテンプレート制作みたいなのは、生成AIで随分書けちゃう。デザインからフロントコードを作成し、これを各ページWordPress化してというだけで、ほぼ動くものはできるだろう。3人日ぐらいかかっていた作業が、4時間ぐらいでできるとしたら、クラウドソーシングなどは捗るに違いない。

重要なのはそれを保守する側に回ったとき。既存の言語化されていない現場要件や担当者の頭の中を加味しながら、機能追加や改修をする段階。あるいは、複雑な要求をきちんと言語化し、現実世界にモデリングする力。

こちらは結局今までの開発経験の見せ所なわけで。

決まったことをプログラムする力はAIのほうに軍配があがるが、結局決めを決めることはAIには「まだ」できないので、ほとんど危機感をもっていない。というか最近は、自前でプログラミングするときでも、決まったことが決まった瞬間、「あ、もう完成したかも」とすら思うので、後のひたすらめんどくさい作業フェーズをAIが代替してくれるのなら最高だと思っている。

来年も積極的にAI活用をすることで、生産性を上げていければと思う。

直近はCursorあたりも気になるので使っていく。

トークンインセンティブを用いたゲーム開発

9月に自作ゲームの体験版をリリースした。

粗はあるが、処女作と思えばなかなか良くできたと思う。

作品のできもアレだが、今回はPR方法を工夫してみた。

CNGというFiNANCiEのコミュニティと連携して、作品のPRを行った。

FiNANCiEは、トークンベースのクラファンサービスのようなやつ。

Crypto Ninja Gamesという、Crypto Ninjaを使ったゲームを開発するコミュニティがあるのだが、そのコミュニティの協力を得てPR活動を行った。

ざっくりいうと、体験版をプレイすると、CNGトークンをもらえるキャンペーンをうった。

CNGトークンは1枚200円ぐらいのため、ちょっとしたポイ活としては最適だ。

トークンがインセンティブとなって、ユーザー数はブーストされた。

2週間でのべ100ユーザーにプレイいただき、一人でやるよりは断然多くのユーザーと出会うことができた。

また、地味に大きかったのが、バグ報告や改善要望によるゲームの品質改善である。

リリースして1日目とキャンペーン最終日を比べると、とんでもなく操作が改善されていた。

リリース後に継続して改善すべき要望も12月ぐらいに取り入れることができ、ゲームの面白さは格段にアップしたと思う。

BtoB SaaSなどでもユーザーテストが死ぬほど重要だが、ゲームにおいてもユーザーテストは非常に重要である。が、インディーゲームはよほど有名にならないとユーザーテストに参加してくれるユーザーなど皆無であろう。

そこで効いてくるのが既存のコミュニティにトークンを用いてPRする方法だ。

トークンがインセンティブとなりゲームをやってくれるので、そこで良質なユーザーテストが実施できる。個人でやっていたら到達できない世界だ。

が、これは主観だが、CNGと連携してゲーム開発する、だけだと片手落ちだ。ファンがつかないから。

突発で顔を出して「キャンペーンします〜〜!」ではなかなかファンはついてこない。

DiscordやFiNANCiEなりのチャンネルで日頃から交流と情報発信が必要になる。

今回のキャンペーンを通して、仲間、あるいは好意的に思ってくれている人は確実に増えたと思う。

が、やはり継続的な発信と交流がなければ疎遠になってしまう。

この辺は引き続き楽しんでいく。

政治と社会科学への興味

国民民主の躍進の影響で単純に「政治って変えられるんだ?」という発見があった。

恥ずかしながら世界史や政治・経済も未履修のためこの期にちゃんと民主主義や歴史を学んでみようという気になった。

下記あたりを学ぶことで、どういったものが民主主義的なのか、という理解ができた。

この民主主義の原理原則を知ることで、「XXは一般意志という概念からすると〜」とか引き出しが増えたのが良い。

政治的な話って世代間の言い合いとか貶めあいみたいなのに終始しちゃうと思うのだけど、これって足し算引き算知らないのに算数の話で喧嘩してるみたいな状態だと思っていて。

そこを学んでから入るというのは不毛な議論をしないための第一歩かなと。

また、宗教や文化の話もかなり面白く、これらを俯瞰して見ることで、歴史の見方がだいぶ変わったと思う。

歴史を知っておくことで、防げる厄災ってのがあると思う。もしかして、今やっていることや思想が古代ギリシャ人で失敗してたことだったりすると目も当てられない。

そういうのを歴史的な観点から冷静にお話できるようになると、世界は少し良くなっていくのじゃなかろうか?

逆に、もうそういう細けえのにとらわれず生きようぜって思想もあるのでおすすめ。

こういう昔の中国の思想も、仏教経由で日本人の気質に残っていたりするので世界史ってとんでもねえなと思うなどした。

Problem/Try

フリーランスになるもゲーム制作の生産性上がらず

8月に会社員を辞めて週4業務委託、週1ゲーム制作みたいなスケジュールを始めた。

ゲーム制作にコミットして進捗をあげようとする意図だった。

結果、

  • 作業時間の数値はフリーランス前後で微増にとどまった
  • 逆に毎日細切れでやることがなくなり習慣の力が失われた

前述したが、定期的に進捗をアップしたり、ユーザーの反応を伺ったりすることがゲーム制作にとって重要になる。また、インディーゲームの場合「辞めないこと」が最も重要だと思う。

X曜日だけゲーム制作に完全コミットする、みたいなことをすると、習慣化の力が失われる。

2025年は引き続き週1ゲーム制作デイを設けつつ、他の日も毎日5分でいいから作業もする。

作業をすればはずみがつくため、毎日5分以上作業をするかもしれないし、習慣化にはうってつけだ。

フリーランス前の「作業しないと気持ち悪い」みたいな状態に戻す。

まとめ

2024年はとにかく激動の年だった。会社員を辞めて業務委託になってみたり。業務委託になったことで自分のスキルについてもう一度真剣に考えるきっかけとなった。いつ切られるか分からないという状況が、逆にスキルアップへのモチベを高める結果になった。

一方で、ウサギの茶太郎が突然死したことで、本当に悲しい思いをした。当然のように生きていた人が、ある日突然死ぬこともある。そこを考えると、家族を大事に、今付き合っている人たちと全力で向き合うことが大事なのだなと。仕事仕事で周りを顧みず、適当に生きていると、気づいたらひとりぼっちになり得る。

ゲーム制作やスキルアップももちろん大切なのだが、眼の前の人を大事にしないとえらいことになるのは見えている。

2025年は人との関係性にフォーカスして生きていこうと思う。

コメントを残す

メールアドレスが公開されることはありません。