イノたまごラボ・あのぶる の「こんなの作ったよ!」

「イノたまごラボ」はひとり同人サークルのようなものです。作るものはソフトウェアからイベントまで、心惹かれたものを細々と。

プログラミングで使う名前を考える(前編・有名案件を見て妄想する)

注: メソッド名は動詞で始めろとか、そういう一般的なところはリーダブルコードその他に任せることにします。
というか、リーダブルコードでも「名前に情報を詰め込む」って言う話で言及されているんだけど、ちょっと想定ケースを絞って考えてみたいと思いますよ。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

一般的なサービス開発だと、ユーザーさんに見せる名前とデータの本質がそこまで離れないので悩む余地も少ないように思うのですが、何がどう転ぶか分からないゲーム開発では気を遣って考えないと後になってしんどいよねーって最近よく思うので、どんなことを気にして名前をつけているかを簡単に整理しようと思います。 と思ったけど、まとめてみたら割と随筆っぽくなってしまいました。 ……まぁ、気を使って考えても、また別の要因で頭を抱えることがあるんですけどね。

さて、説明にあたりさすがに個人ブログでガチ担当案件の事例を持ってくるわけに行かないので、有名どころの設計をなんとなく想像しつつ例にとってみようと思います。当然中の人じゃないので、開発経緯なんかわからないしそもそもそういう設計になってない可能性の方が高いのでその辺ご了承ください。ちなみに勝手にデータを覗くのは大体のゲームで規約違反のはずなので、以下は完全にオープンな情報からの妄想です。念のため。

あと英語が拙いのも許してください…

モチーフに引っ張られてはいけない

…けどさじ加減も大事よ、と言う話を、3つのゲーム(というかIPというか)から考えてみたいと思います。ほとんどこの話。

例1: スプラトゥーン(の新規開発のとき)

大人も子供もみんな大好きスプラトゥーンプレイヤーキャラクターがイカになるまで、紆余曲折あったのはご存知でしょうか。 www.nintendo.co.jp

この事例でとてもよく分かるのは、「外側のモチーフなんか結構コロコロ変わる」ということ。(都度修正対応するデザイナーさんほんとお疲れ様です…)
で、このとき最初に操作キャラクターを管理するクラス名にTofuなんてつけてて、後でそれを直すコストを取れない、とかなってたら最終的に地獄なんですよ。動いてるのはイカなのにTofuってわけわかんねーですよ。これでさらに途中の「ウサギ」ありきの変数名とかあったらもうしっちゃかめっちゃかです。*1

じゃあ具体的にどーすんだって言うと、この場合は皆様ご存知のとおり「イカ=操作キャラクター」なので、PlayerとかPlayerCharacterとかつけるのが一番素直でしょう。ただここでヒト(攻撃)形態をhumanModeイカ(隠れる)形態をsquidModeとか書いてあるとわりと台無しで、これはそれぞれattackModehideModeとしたいところ。

まぁ、スプラトゥーンも今や立派なIPなので、今後「イカ」は「イカ」でいいかもしれないですね。

例2: 艦これの派生ゲームを作るとしたら…?

そしてそうやって一度出来上がったIPから派生する案件における重要オブジェクトってそうそう変わらないよね、と言うお話です

艦これの場合、「艦娘」はどこまで行っても「艦娘」であり、いくらミリタリー繋がりがあっても「戦車娘」には絶対ならないですよね。それ艦これじゃなくてガルパン(GIRLS as PANZER)*2や。だからもう艦娘を表すオブジェクトにFleetGirlとかつけちゃってもそこまで大きく困ったりしないわけです。まぁでも艦これの世界では「艦=艦娘」なので、単純にFleetの方がスマートかな。

というわけで確かにはじめにIPありきだと根本的な部分についてブレる余地はほとんどないのですが、それでも細かい部分、例えば開発初期に「コイン」をモチーフにしていたアイテムが、気づいたら「クリスタル」的なものになっていたり、さらに「アメ」になっていたりする、みたいなのはよくある話だったりします。

そのオブジェクトが表す本質を捉えないと、変更に強い名前をつけるのは難しいです。

例3: 戦車道大作戦の「生徒」ってなんだろう

garupan-app.com

というわけで最後のお題はガルパンスマホゲーム、「戦車道大作戦」から。
アニメに登場したキャラクターを乗員として、好きな組み合わせで好きな戦車に乗せてチームが作れる戦車シミュレーションゲームです。

私の趣味丸出しなのは否定しませんが、説明にちょうどいい例題がありました。

このゲーム、アニメのキャラクターをガチャで引く「生徒ガチャ」というものがあります。
このガチャで獲得できる「生徒」のオブジェクトに、あなたなら実装上どんな名前をつけますか?公式サイトのゲーム紹介を見ながら考えてみてください。

f:id:thatblue:20180220030046j:plain

ちなみに、私ならユーザーさんに直接見える「生徒」の訳であるStudentではなくCrew(乗員)とすると思います。それはなぜか。

  • ガチャで獲得できる「生徒」の役割の本質は戦車の「乗員」である
  • (IP知識が無いとこの判断は難しいのですが)コラボキャラを差し引いても、将来的な可能性としてガチャ実装対象となるキャラクターに、立場的に「生徒」ではないキャラクターが含まれる可能性がある*3
    • 戦車に乗っている描写こそないものの、作中で明確に戦車道家として描写されている西住流・島田流の両家元が実装されたときに「生徒」だとさすがに座りが悪い
    • あと、最終章で本当にガルパンが終わるならそこまで行かないかなーとは思いますが、物語の中でプロリーグの設立や世界大会の開催が示唆されているため、その流れで選手として新しく追加されるキャラクターの一定以上はおそらく学生ではないと思われる

とまぁ、いつもこんな感じに近いことを考えてプログラム上の名前を決めています。

長くなってしまったので、続きは後編へ…

blog.innotamago.com

*1:天下の任天堂がそんなことするとは思えませんが……

*2:本来のガルパンは女の子が戦車に乗るのであって、戦車の擬人化ではないのですが

*3:すでに実装済みの大学選抜メンバー(=大学生)も厳密に言うと「生徒」ではないのですが、「学生」を英訳してもStudentなので一旦考えないことにします