NEW GAME!!という組織に所属する「桜 ねね」という人物は、ソースコードのインデントにスペースを3つ使うらしい。
しかもこの通称「ねねっち」と呼ばれる人物は、日本語のWindowsをUSキーボードのMacで運用し、ゲームエンジンをフルスクラッチで自炊してしまう凄腕のC++使いである。(名前空間と範囲ベースfor文、const、参照、スマートポインタを使いこなせるほどの知識、float型の必要性が理解できるほどの知見、フルスクラッチの必然性に辿り着けるほどの経験と判断力。エンジニアとしても相当な手練れであることは確かだ)
また、この人物の凄い所は、等幅フォントではなくプロポーショナルフォントでプログラムを書いている所にある。おそらくGoogleとAdobeが共同開発した特殊な日本語フォントを使っている。「源ノ角ゴシック」または「Noto Sans CJK JP」あたりのフォントを使っているはずだ。この「ねねっち」というハッカーは相当なこだわりを持った人物のようである。
インデントがスペース3つのプログラマ「桜ねね」に関する調査報告
目次
インデントのサイズについて
当人のエディタ画面では、確かに3スペース相当のインデントが使われている。インデントの幅を等幅フォントの比率と照合すると、たしかに3文字幅のインデントであることがわかる。
ただ、プロポーショナルフォントの空白幅は平均的なグリフの半分以下の文字幅になることが多いため、実際には6スペース以上の空白文字が使われている可能性が高い。手元の「源ノ角ゴシック Regular」で確認すると、これがちょうど8スペースで一致することがわかった。
もし仮に、源ノ角ゴシックで8スペース分の文字幅が使われているとなれば、Visual Studio側のデフォルトの設定が弄られていることになる。おそらく、明確な意思の元でインデント幅を3スペース相当になるよう調整していた可能性が疑われる。または字下げを二重に行っている可能性も否定できない。
もっとも、源ノ角ゴシック以外のプロポーショナルフォントではまた異なる結果となるため、いずれともにわかに断言のできるものではないのだが。
いずれにしろ、この娘は3スペース相当のインデント幅を好んで愛用し、6スペース以上のインデント・サイズないしタブ・サイズを用いている可能性が極めて高い。とにかく最高にロックな人物だということだけは確かである。
開発環境に関する調査
この者はUSキーボード仕様のMacBook Airを用いているようだ。トラックパッドのデザインから、Mid 2009以前の旧モデルが用いられていることもわかる。
プログラミング環境にVisual StudioベースのDK Studioが用いられていることから、OSにはWindowsが使われていることがわかる。
OSのバージョンについては、デスクトップのテーマにベーシック テーマの配色が用いられている点や、タイトル文字の表示が左揃えになっている点、タイトルバーとメニューバーの比率等を考慮すると、Windows 7以前のバージョンが用いられている可能性が高いと判断できる。
なお、タイトルバーのグラデーションが確認できない点や、ウインドウの閉じるボタンがWindows 8風のデザインになっている事実も加味すると、Microsoft非公式のVisual Styleが適用されている可能性も疑われる。
なお、自作ゲームのテスト環境にはWindows 10が別に用いられているようだ。
この者は開発環境とテスト環境で異なるバージョンのOSを使い分けている可能性が高い。非常に意識の高いエンジニアであることがうかがえる。
両環境の切り替えの速さから、各OSはマルチブートではなく、仮想マシンで運用されている可能性が高い。
内蔵カメラの存在が確認できないことから、フロントカメラの前面にはMacBook本体と同色のマスキングテープが貼られていると推測できる。美意識はもとより、セキュリティリテラシーに対しても相当高い意識を持ち合わせているようである。
ソフトタブに関する調査
この者はインデントに空白文字、つまりソフトタブを用いているようだ。当人のエディタ画面のカーソル位置は、およそ「Line: 40, Column: 2」の行と列に位置していることがわかる。ハードタブの場合ではカーソルがこのような不自然な位置に描画されることはないはずであるから、この者がスペースでインデントを行っている可能性は極めて高い。
ただし「Highlight Current Line」機能との整合性を考慮した場合、カーソル位置は「Line: 40, Column: 1」相当ということになるが、その場合は空白とタブの混在、または可変長による空白インデントを利用している可能性が新たに疑われることになる。
もっともこの者であれば、それもやりかねないであろう。彼女は付箋を本のページの下側に貼り付けるという常識離れした行動を時に見せてくれる。合理性の追求、型破りな発想、常識にとらわれない柔軟な思考を持ち合わせたニュータイプのエンジニアだとも言えそうだ。彼女は我々とは明らかに異なる精神世界でコードを書いているように見受けられる。
ソースコードに関する調査
//
// DestructibleActor.cpp
// Sakura Nene
//
namespace NeneGame
{
void DestructibleActor::Init()
{
NeneActor::Init();
m_currentHealth = maxHealth;
}
// 攻撃を食らった時のダメージ計算
void DestructibleActor::ReceiveDamage(float sourceDamage)
{
// デバフを適用
auto resolvedDamage = sourceDamage;
for (const auto& debuf : m_debufs)
{
resolvedDamage = debuf->ApplyToDamage(resolvedDamage);
}
m_currentHealth -= resolvedDamage;
if (m_currentHealth <= 0.f)
{
m_currentHealth = 0.f;
DestroyMe();
}
}
// 破壊せよ!
void DestructibleActor::DestroyMe()
{
// 死亡モーションがあれば再生
// TODO: 死亡モーションを作る!
if (m_pDeathMotion)
{
PlayMotion(m_pDeathMotion);
}
}
}
auto
キーワードの利用から分かるように、当人は「C++」という極めて難易度の高いプログラミング言語でゲーム開発を行っているようだ。また「範囲ベースfor文(range-based for loop)」が使われていることから、C++11以降の規格に対応した先進的な開発環境が使われていることもわかる。これらの選択に技術者としての高いセンスと素質が感じ取れる。
const auto&
の記述からは、「定数」「型推論」「参照」の利用が確認できる。これらは中級者でも扱いの難しい機能や概念であり、この者のレベルは初学者のそれを優に超えていることがわかる。&
を型側に寄せるスタイルの利用にはセマンティクスに対する高い意識が垣間見える。
またdebuf->ApplyToDamage
という記述から「ポインタ」を使いこなしていることも見て取れる。なおdebuf
をポインタではなくあえて参照で受け取っていることから、debufの型には「スマートポインタ」が使われている可能性が高い。現代的な作法を的確に用いることのできる優れたC++erであることがうかがえる。
64bitのマシンでdouble
型ではなく、あえてfloat
型を活用している所を見ると、マシン語レベルの処理にも相当気を使っていることがわかる(一般的な環境ではdouble型のほうが高速になる事が多い。処理効率とメモリ効率のバランスを意識した結果か、はたまたGPU側の単精度浮動小数点数演算性能を引き出す意図も考えられる)。0.f
を明示的に記述していることから、float型は意図的に用いられていることがわかる。またイニシャライザを独自定義していることから、この者はコンストラクタの不都合を熟知し、また厳格かつ移植性の高いクラス設計が行える優れたプログラマであることも窺える。
癖のないコードや、m_
によるメンバ変数の明示、的確な命名、ゼロ化、TODO:
等の特殊タグを使いこなしている所を見ると、開発スキルに関しても相当なものを有していることがわかる。
メンバ関数(DestructibleActor::ReceiveDamage
)の定義が字下げの後に行われていることから、クラスの宣言は何かしらの名前空間内で行われている可能性が高い。名前空間の適切な利用と、モジュール化の重要性を心得た、優秀なエンジニアであることもわかる。
まだ中学生だというのに、なかなか頼もしい娘である。
なお、真偽のほどは定かではないが、この娘は過去に企業スパイの身でゲームキューブの開発にも携わっており、また旧ソ連製の人工衛星を保有し、NSAの追跡すら掻い潜る特A級のハッカーだという噂もある。
自作ゲームについて
当人が開発したNENE QUEST(ネネクエスト)自体は、Windows上で開発されている自作ゲームであるが、Mac OS X/macOS上での起動もできるようである。仮にMac OS側でエミュレータやユニティモードが用いられていないと仮定すれば、NENE QUESTはマルチプラットフォームに対応したユニバーサルアプリである可能性が疑われる。そのレベルのプロダクトをフルスクラッチで開発するとなると、相当な知識と能力が求められることになる。この者の常識離れした行動とその決断にはいささか驚きの念を禁じ得ない。
ゲームエンジンについて
この者はNeneEngine(ネネエンジン)というゲームエンジンを自作しているようだ。既存のエンジンに頼らず、フルスクラッチで同等の処理を実現している。既存のエンジンの機能性と汎用性に乏しい愚劣な設計では満足できないという強いこだわりと貪欲さ、そして低レイヤーの処理に対する深い知識と経験を身につけようとする向上心と探究心の高さが感じ取れる。この技術者としての有り余る情熱と有能さに至極感銘を受けずにはいられない。
プログラミングについて
この者はプログラミング能力についても秀でた才能と能力を発揮している。とりわけ0.f
リテラルの利用には深い驚きと感嘆を覚えずにはいられない。通常、0f
または0.0f
と書く所を、この娘は0.f
という簡潔かつ明確な記述を用いている。小数点の記号を効果的に扱うことで、浮動小数点リテラルの使用を視覚的明瞭に表現している。それでいて0.0f
ほどくどい表現にはなっていない。結果的に可読性と判読性のバランスがうまく取れた優れた記法となっている。ショートコーディングの加減もしっかりと心得ているようである。まるでセンスの塊を感じさせる巧みな表現技法とその論理的思考力に、もはや感泣の念を抑え隠すことすらままならない。
桜ねねに関する所感
以上のことから、この者の能力は一般的な初学者のそれをはるかに超えたものであると断言できる。これほどのスキルを半年程度の期間で身に付けたとなれば、この者の潜在的な能力は計り知れないほど大きく、また限りない可能性に満ちている、そう言わざるを得ないだろう。この者にはもはや驚きを超えて狂気すら覚える。この桜ねねという人物は相当な志を持って今日を生きているのだろうか。一体なにが彼女をこれほどまでにさせるのか、もはや私には想像も及ばない。