これは ドリコム Advent Calendar 2017 の23日目です。

22日目は、JJ_Hiroiさんによる「Unity 生成済みのアセットバンドルの中身を確認するプロジェクトを作成しました」です。

皆様、お初にお目にかかります。 4月に中途入社しましたクライアントエンジニアのアオイです。

前職はゲーム開発会社で、主にSONY製ハード向けにコンシューマゲームの開発を行っていて
スマートフォンゲームの経験は皆無です。

そんな自分が幸運な事に縁あってドリコムに入社し、スマートフォンゲームプロジェクトに配属になり、前から意識はしていたがより意識する様になった事、双方での違い、学んだ事等を個人的主観と偏見が混ざりますが 【簡単】に書きたいと思います。

(*いやいや、当たり前でしょ。や、その考えは違うよ。な部分も多々あるかと思います。その際は是非教えて頂ければと思います)

 1,そもそもの開発に対する考え方

1つ目は開発する際の違いです。

コンシューマゲームとスマートフォンゲームで根本的に違うところは、開発に一定の終わりがあるか無いかだと思っています。

コンシューマゲームは一応発売したら区切りとなりますが、スマートフォンゲームは寧ろリリースしてからがメインフェーズです。コンシューマにはDLCというシステムがありますが、タイトルによって出すか出さないかはまちまちです。

そして、スマートフォンゲームはプレイを始めるのも一瞬、止めるのも一瞬で、更に基本無料のゲームが殆どですので、常に新しい体験、コンテンツをユーザーに提供し続けなくては長く運用は出来ませんしビジネス的にも成功させる事が出来ません。

その為、常に一手二手先も考えて動いていく必要があります。

また、コンシューマゲームはプログラマーの場合、プロジェクトの中で例として

・UIプログラマー

・サウンドプログラマー

・グラフィックスプログラマー

・ゲームエンジンプログラマー

と役割が細分化され専任化(=属人化)するケースが多いですが、スマートフォンゲームの場合は専任化するプロジェクトはほぼ無いと思います。

またコンシューマはハードのスペック(HDD容量など)は異なりますが、メイン機能(CPU, GPUなど)は共通仕様です。

それに対し、スマートフォンはOS(Android、iOS)、メモリとメイン部分も端末により違う上に、ストレージ、画面サイズ等細かい部分も違うと開発者泣かせの部分が多い為、不具合でも◯◯OSでは発生しないが◯◯OSでは発生する、OS ver.◯ではこの機能が追加され対応しないといけないがOS ver.◯では対応すると問題がある、と言う事も十分あります。ですので、よりエンジニアはハード部分の技術、知識も基本知識として必要だと感じました。

また、通信してデータのやり取りを行うのでサーバーの知識も必要になります。

2,自分の為、相手の為の意識

2つ目は「自分の為、相手の為」の意識です。ここではエンジニア目線での話になります。

前職ではチーム開発も経験しましたし、プログラマーが基本1人(自分だけ)の開発も経験しました。

そこで改めて実感した事は常に自分も、周りの事も考えなければならないと言う事です。

具体的には

・ソースコードの品質(可読性、保守性)

・設計

の部分です。

コンシューマに比べスマートフォンゲームの場合は、既存のソースコードを拡張して機能追加していく機会が多くなります。

その為、可読性、保守性の重要性も高まります。

コメントや1メソッドのボリューム、メソッド、クラス、変数の命名規則など、当たり前に考えなければならない部分を改めて強く意識する様になりました。

設計に関してはある仕様を作っていく際、最初に要求仕様を全て洗い出しそれに対応した設計が出来ているかでコストもクオリティも大きく左右されますし、設計リストであったりクラス図など、可視化する事でゴールをイメージしやすくもなります。

それは自分の為にもなり、自分以外の人が担当する際の助けにもなります。

上記作業が無かったり漏れがあると、気付いた時に足していく事になり、結果ツギハギの可読性も保守性も低いソースコードになってしまいます。

また上記の様なリストがあると、それをテスト観点として使用する事が出来るので、テストの効率性も上がります。

3,誰に何を届けるのか?

3つ目は「誰に何を届けるのか?」です。

誰に、と言うのはここではユーザーの事になります。何を、と言うのはここでは価値(コンテンツ)の事です。

1、でも書きましたが、スマートフォンゲームはプレイを始めるのも止めるのも一瞬です。どんな細かい事でも止めるきっかけになります。

ですのでよりユーザー1人1人へ届ける価値がとても大事になります。

「平均的に何十、何百万とプレイユーザーが居てプレイスタイルも千差万別の中、どうやって価値をしっかり届け長くプレイして貰えるのか」

自分は、これを考えるにあたり必要なことが、当たり前かもしれませんが

【ユーザーの目線を持つ、ユーザーの立場に立つ】

ということに尽きると改めて思いました。

こちらが提供したい価値とユーザーが求める価値は常に一致するとは限りません。

また、価値を企画者のみが理解しているだけではズレが生じ、それが開発が進むに連れて大きくなりクオリティに影響してきます。

なので行う施策で

・ユーザーにどんな遊び方を提供したいのか?

・ユーザーにどんな利益があるのか?

・ゲームを盛り上げユーザーに今後も含めたゲームへの期待感を与えられるか?

を明確にし、企画キックオフ時に職種関係無くチーム全体で明確に共有する事で

・ユーザーが求める価値のイメージがしやすくなる

・ゴールが明確になりスケジュールを把握、設定しやすくなる

・各自のタスクが明確になる

・最終的にリスク、コストを減らす事に繋がる

効果が期待できます。

また、ユーザーが求める価値は変化していくものなので、それを逃さない様、参考となる数値指標を気にかけキャッチアップしていく事も必要です。

<まとめ>

以上が自分が感じ、学んだ事です。

簡単で当たり前な事も多いですが、当たり前を当たり前にやる事の大切さと難しさを感じました。

手間のかかる事もありますが、やるとやらないでは大きな違いがあります。

書いた部分以外の細かい所も含めて、自分の想像より違う部分がありました。

3,に関しても、前職で自分はここまで考えて動けていただろうか?と振り返ると不足してた部分も多々あります。

環境が変わる事で、新しい知識に触れたり新しい体験が多いと言う事は自分にはまだまだ足りない事が多いと言うことですが、その分人としても開発者としても成長出来る余地があると言うことでもあるので、感じた事、学んだ事を忘れずこれからもユーザーへ新しい体験、魅力的な価値を届ける為に頑張っていきたいと思います。

乱文ながら最後まで読んで頂きありがとうございました。