#60 「開発者インタビュー プログラマ編その1」
こんにちは。プログラマの寺沼です。
前回・前々回に引き続き、インタビューをお送りします。 今回のお相手は、プログラマーの堀内くんです。 堀内くんは、『リトル・リコレクター』のプログラムを、インゲーム・アウトゲームかかわらず、全体的に担当してくれています。

プログラマ 堀内くん
今回インタビューを受ける人。『リトル・リコレクター』ではプログラム全般を担当。
アクションからUI、最適化まで、あらゆるタスクをこなす仕事人だ!
——それでは始めていきます。よろしくお願いします。
よろしくお願いします。
——堀内くんはプログラマーですが、いつ頃からゲーム業界を目指そうと思ったのですか?何かきっかけなどがあれば教えてください。
これといった明確なきっかけがあったわけではないんです。 中学の頃にゲームをたくさんプレイしていました。対戦ゲームをやっていると自分の実力が分かりますが、自分はそれほど強くなかったんです。 一方で、マインクラフトなどでゲームの「もどき」を作ったりもしていました。練習して強くなるよりも、自分で作る方が面白いのではないかと思うようになったんです。
——なるほど。ゲームのプレイヤーとしてではなく、クリエイター側の方が向いているのではないかという意識の変化があったのですね。
あとは、PCを日常的に触っていたというのもあります。
——PCに初めて触れたのはいつ頃でしたか?
生まれた時には既に、家にPCが置いてありました。 触る機会はあまり多くなかったのですが、本格的に触り始めたのは小学校4年生の頃からです。
——パソコンを触り始めた頃は、どのようなことをしていたのですか?
本当にネットサーフィンばかりしていました。 基礎から入ったわけではなく、普通はローマ字入力を覚えてからタイピングできるようになりますが、私の場合はいきなり検索を頑張って行うような感じでした。
——練習のようなプロセスを踏まずに進めたのですね。
そうですね。やっているうちに自然と打てるようになりました。少し特殊な覚え方かもしれません。
——もともとやりたい目的が先にあって、ネットサーフィンで調べたいことがあったという感じでしょうか。
いえ、特別な目的があったわけではなく、 当時は「おもしろフラッシュ」などが流行っていた時代で、友達から教えてもらい、そういうものを見ていました。懐かしいですね。
——なるほど。どちらかというと、新しいおもちゃを手に入れたという感覚に近かった訳ですね。 初めて書いたプログラムはどのようなものでしたか?
本当にプログラムの「プ」の字も分からない頃に、なぜかいきなり難しいものに挑戦しようとして、マインクラフトでJavaをいじり始めました。 「何これ、全然分からない」となりながらEclipseを入れたんです。当時はIDE(統合開発環境)のことも分からず、「Eclipseって何?」「IDEって何?」という状態で、書き方すら分からないところから見よう見まねでコードを打ち込んでいました。
——何かを参考にコードを書いていたのですか?
海外の解説動画などを参考にしていましたね。
——なるほど。話を聞いていると、プログラマーになったきっかけとしてマインクラフトの影響が大きかったのですね。
それは大きいかもしれないですね。 プログラミングへの入り方が少し特殊だったなと、自分でも思っています。
——体系化された学びから入ったわけではないということですね。
そうですね。
——本格的に情報系の勉強を始めたのはいつ頃でしたか?
情報系の高校に入って、そこからC言語を触り始めました。 高校に入る前にも、競技プログラミング(競プロ)に興味を持って、C++の環境を構築してみたり、C++を少し触ったりしていました。 当時はクラスも関数もよく分かっておらず、「こう書けばこう動くんだ」という程度の理解でしたね。
——初めてゲームを作ったのは、いつ頃でしたか?
高校の卒業制作の時ですね。 Unityでシューティングゲームを作りました。 卒業制作は何を作ってもよかったのですが、その時点ですでにゲームの専門学校に行くことを決めていたので、試しにゲームを作ってみようと思ったんです。
——複数人でゲームを作ったのは?
専門学校に入ってからが初めてですね。
——その時、大変だったことはありますか?
複数人での開発だと、やはりコミュニケーションが一番のネックでした。 お互いの言いたいことが上手く伝わらない時に、どうすれば分かりやすく説明できるか、かみ砕いて伝える工夫をしていました。
——学生時代のゲーム制作と、就職して仕事としてゲームを作り始めてからで、何か違いを感じる部分はありますか?
意外と根本的な部分はそこまで変わらないなと感じました。もちろん、開発手法やタスク管理のやり方など、組織としての違いはあります。 実際のコードの書き方や技術的な側面に関しては、学生時代とあまり変わらない部分も多いです。
——『リトル・リコレクター』の開発について伺いたいです。 ゲームのコア部分をほぼ統括されていると思いますが、開発で特に楽しかった部分はありますか?
プレイヤーの挙動(アクション)を作っている時が、一番楽しかったです。
——もともとアクション部分を作るのがお好きなんですね。
そうですね、好きです。学生の頃からプレイヤーの挙動をずっと触っていたので、アクション要素の開発はやはり楽しいですね。
——開発で大変だった部分や、苦手だと感じた部分はありますか?
UI(ユーザーインターフェース)ですね。これまでカチッとしたUIの実装をしたことがなかったので。 これまで自分が担当してこなかった領域なので、ノウハウがなくて苦労しました。 それと、最適化にはかなり苦しみました。 プログラムの書き方が悪いとパフォーマンスが落ちて重くなってしまうので、そこは常に意識して書いていました。
——少し開発の話に偏ってしまったので、普段のプライベートの過ごし方なども聞いてみたいですね。 休みの日は何をしていますか?
本当にありきたりですよ。 動画を見るか、ゲームをするか、あるいはプログラムを書くかですね。
——差し支えない範囲で、どのようなものを書いているか教えていただけますか?
簡単なツールを作ってみたり、あるいは『クソゲー』レベルのものを作ってみたり、低レイヤーの部分を触ってみたりしています。 練習目的のものもありますし、「これを実装してみたい」と思ったアイデアをコードに起こしてみる、といった感じですね。 勉強というよりは、趣味の遊びに近い感覚ですね。
——低レイヤーの部分を触ることもあるのですね。 低レイヤーに興味を持ったきっかけはありましたか?
学校でOpenGLのラッパーライブラリを触る授業があったんです。 最初は少し面倒だなと感じていたのですが、学習を進めるうちに色々なことができるようになって面白くなっていきました。 知識が増えることで、表現できる幅が広がっていくのが楽しかったです。 また、自作のグラフィックスライブラリを作っている先輩が身近にいて、それを見て『格好いいな、自分でも作れたら絶対に楽しいだろうな』と思ったのが、低レイヤーのプログラミングを始めたきっかけです。
——プログラミングの楽しさと同時に、『これができたら格好いい』という憧れもあったのですね。
あとは、高い技術力を身につけるためには、あえて難しい道(いばらの道)を進むべきだという思いもありました。
——非常にストイックですね。
——開発ツールや開発環境へのこだわりはありますか? TUI(テキストユーザーインターフェース)やコンソールで操作するツールを好んで使っている印象があります。それは昔からですか?
最初からそうだったわけではないです。 最初は『とりあえず触って覚えよう』という気持ちからでした。 「コマンドラインで操作するのって格好いいな」という、少し中二病的な憧れもありました(笑)。
——先ほどの「趣味でプログラムを書く」のと同じで、ツールをいじること自体が好きなのですね。 最近使って面白かったツールや、おすすめのツールはありますか?
今のところ定着しているのは、やはり『yazi』(ターミナル向けファイルマネージャー)でしょうか。ずっと使っています。 画面が見やすいし、凄く軽快に動きますね。 あとは、Gitのクライアントツールですね。普段からCUIのGitツール(lazygitなど)を使っています。
——『リトル・リコレクター』のコードを書く際はRiderを使っていますよね。 Riderは以前から使っていたのですか?
以前も使っていましたが、ライセンスの関係で一時的に使わなくなったりしていました。 学生時代は基本的にVisual Studioをメインで使っていましたね。
——今またRiderを使っているということは、使い心地が良いということですね。
そうですね。非常に使いやすいです。それと、かなり細かい話になりますが、ヒープアロケーション(メモリ確保)を視覚化できるプラグインがあって、どこでメモリ割り当てが発生しているかが一目で分かるのが非常に便利です。
——パフォーマンスチューニングを行う上で、それは非常に有用な機能ですね。 後で何というプラグインか教えてください。(笑)
今回は堀内くんへのインタビューでした。 インタビューを通して、堀内くんが技術を楽しんでいることがうかがえて、面白かったです。
次回のインタビューでは、寺沼へのインタビューを行います。よろしくお願いします。