音速きなこおはぎ

技術ブログです。

ぜいたくな悩み

たまには暗い部分もブログに認めてみる。それが何かの助けになるかもしれないと思ったから。

自己紹介から入る。私はソシャゲの運営を行うエンジニアだ。今の会社は入社から5年が経ち(転職の多いこの業界では古参社員と言って差し支えない)、その間いろいろなリーダークラスの仕事を務め、一定の信頼を得てきた。

報酬も十分な額を貰っており――プログラマ的な水準で言えば決して高くはないかもしれないが、倹約家だし、独身なので――まったく不満がない。

つまり、地位も報酬も十分満足できるものを持っている。

しかし、こんな私にも悩みがあって、それが「やれることがない」という悩みだ。


入社当時の私はパッションに溢れていた。何か一つでも改善できることがあれば職種も役職も関係なく食って掛かり、プレイヤーのためになることならなんでもする所存だった。

運営は楽しい。だが、5年も勤めると、一通りの仕事もチャレンジもやり尽くし、新しい経験を積む機会はもはや雀の涙ほどしか残っていない状態になる。

それならばと新しい仕事を創出しようにも、徐々に衰退していくこのフェーズで大きく何かに打って出ることは非常に難しい。

しかも私のような古参がタスクを持つより、どんどん入ってくる新人エンジニアに、(彼らにとってはまだ)新しい経験を積ませてやる方がよほど有意義である。

私自身の視野もこの5年で大きく広がった。烏滸がましいことだが、以前は見通せなかった金の流れ、人の動き、業界の未来が見通せるようになった。

自分の経験というより、業界(それはもしかするとソシャゲ業界ではないかもしれないが)のために何かできることはないかと考えるようになった。しかし、その実現に打って出るための糸口はまだ見つからない。

かといってホイホイ起業できるほど実家が太いわけでもない。

仕事に生きがいを見出す仕事人間の私が、やり甲斐を見いだせる仕事をいくら探しても、どうにも存在しないのだ。

何も世の中に爪痕を残さず、ただ平穏無事に暮らすだけなら、死んでいるのと同じだ。

これが「やれることがない」の意味するところである。


ホンマにやることないんか? 本気で探したか? というのは一旦置いておいて、このような自己実現の困難さから来るメンタル的な問題について何か知らないか ChatGPT 先生に伺ったところ、"Existential crisis" - 日本語では「実存的危機」かもよと教えてもらった。

en.wikipedia.org

日本語記事はないようだった。

心理学や 心理療法において、実存的危機とは、人生に意味がないという印象や、自分の個人的アイデンティティに対する混乱を特徴とする内的葛藤のことである。 (DeepL 翻訳)

医学的な部分もあるから、詳しいことに言及すると不適切かもしれないので立ち入らないが、確かになんとなく思い当たる節はあるなと思った。

特に、「あのときああしていれば、違う道を今歩んでいたかもしれない」といった思いは、最近になって抱くようになったものだ。

それに、なんだか話に聞く「定年後の元・仕事人間」みたいだなと思った。まだ30手前なんですが……

ともかく、他にもいろいろ調べた内容をまとめると「この悩みは病気というより、成長の過程で経験する葛藤なんだよ」的な感じになりそうだった。

つまり、今すぐ医者にかかって治せという話ではなく、どうしようもないほど自分で苦しんでなんとかしろとのことだった。なるほどな……。


誰かの助けになるような記事を目指したはずが、とりとめがない上に解決策とも呼べない解決策を書いてしまった。悲しいがこれが私の限界だ。

一応、親しい人がいれば悩みを相談してみるのはよい考えだと思われる。しかし、相談したところで仕事は生えてこないので、私の場合はどうしようもなさそうである。

何か仕事を、またあの頃の燃え盛るパッションをぶつけられるような生き甲斐を見出したい。何かチャンスはないものか……?

事態が落ち着いたらこんなことで悩んでたのかと笑える黒歴史になりそうな記事になってしまいましたが、今はそうなる日が来ることを願って…

普通の日の普通になった人

毒にも薬にもならない話です。

小腹が空いたと感じた私はいつものように、近くの薬局へ水とお菓子、それと日用品(紙コップが切れそうなので紙コップと、ボサボサになってきた歯ブラシ)を買い求めようと立ち上がりました。しかし今は穏やかな日曜の午後、心を無にして昼寝するにはぴったりの春の陽気でした。動き回る気力がどこまでも削がれてゆきます。

逡巡しているうちに、今日は投票日であることと、そろそろ実家へ仕送りしたい時期であることをついでに思い出しました。怠惰な人間というものはタスクがあればあるほど動きが鈍くなります。私はいよいよ面倒になって今日はダイエットという大義名分のもと空腹を我慢してでも引きこもろうとしました。

が、結局は善良な小市民としての意識が後押しし(ということにして)、重い腰を上げました。

薬局だけなら歩いて向かうのですが、今日は投票所と近くのATMを周るため、自転車を使って参ります。荷物が増えるので、薬局は最後です。

まず向かったのは投票でした。候補者の情報をネットで調べようとしましたが、候補者の名前が羅列されているばかりでよくわからなかったので、現地でポスターを見てフィーリングで決めることにしました。

一人だけ選挙カーで連呼しててうるさかった記憶があったのでその人以外にするのは決めていましたが、ポスターも相当な数があるのでまともに選ぶのは面倒です。結局議員を何期だか勤めていると書いてあった普通そうな人に投票しました。何期も勤めているということでなんとなく安定感を感じました。実際のところは知らないですが。

今の街のあり方に不満があるわけでもなし、現状維持で何も構わないと思っているので、気分次第では投票をサボるつもりでしたが、投票したくない人以外に投票するのは、投票したくない人の得票率を相対的に下げることなので、これは意義のあることです。帰り道でそんなことを考えて、重い腰を上げた自分を褒めそやすことにしました。

続いて振込もいつも通り済ませました。

最後に薬局に向かいました。いつも通り買い物をします。店内は自分が見てきた中でも歴代トップレベルに混んでいました。それだけ日曜の午後に自分が外に出ることがレアなんだと思います。

でもいくら人がいようとやることは変わりません。いつも通り買い物を済ませていく中で、ふとこんなことを考えました。人間は前例踏襲で生きていく生き物なんだろうな、と。

読者の方に説明すると、私は常識を疑うのがたぶん好きな部類の人間です。みんなが当たり前だと思っていることに対して、いや実は発想を転換するとこうなんじゃないか? ここを改めればもっと便利に楽しくなるんじゃないか? と提案するのが私の得意分野であり、生きがいでもあります。

しかし多くの人間はそうではありません。常識に疑いを持たず、何も変わらない日常を過ごすことを是とします。私はそんな人のことがどうにも気に入らず、空気の読めない行動を繰り返す問題児でもありました。最近は丸くなってきましたが。

そこで薬局の中で一つの仮説にたどり着きました。人間は常識に対していちいち疑いを持っていたら、かんたんに意志力を使い果たしてしまうのではないかと。常識を疑わないのは、日常で余計な意志力を消費しないための生存戦略なのだろうと。

その証拠の一つが投票です。無難で普通な人間に投票するのは最も頭を使わずに済む行為です。今日の私がまさにそれを体現していました。ついでに、普通の人に投票する自分自身もまた、普通の人であるという安心感を得られるという作用もあります。

この仮説が正しければ、私ももはや常識を疑うことをやめた人間の一員です。そう考えると、アイデンティティが一つ失われたようで少し悲しくなりました。

そんなことを考えながら買い物を済ませました。水、お菓子、紙コップ、バスマジックリン。お会計を済ませたので、それらを袋に詰めて帰ります。は、バスマジックリン

お会計を済ませてから初めて気づきました、自分が歯ブラシではなくバスマジックリンを購入したことに。あまりに頭を使わなさすぎて、より頻度高く購入しているバスマジックリンを無意識に購入していたことに。

ショックでしたが、まあ使うものではあるので、買い直すのも面倒だしそのまま歩いて帰りました。頭を使わずに生きていることを図らずもまた体現してしまったなと思って萎えましたが、あまりに綺麗に体現してしまったのでちょっと愉快でもありました。

さてもうすぐ家に着くというところで、一台のスポーティーで高級そうな自転車が走っているのを見ました。この人はきっと自分とは対照的なほどアクティブなんだろうなと思いました。自分はそうではないから、さっさと帰って休もう。は、自転車?

そうです、私は自転車で家を出たはずです。それなのになぜいま歩いているのか? どこで間違ったかを慌てて思い出します。ATM前に置いてきた? いや、薬局に自転車に乗って入った覚えがあります。薬局に置いてきたんだ。

普段薬局には歩いて向かいますから、どうもその癖で店を出てそのまま歩いて帰ってきたようです。頭を使わずに生きていることを図らずもまたまた体現してしまったなと思って今度こそひどく萎えました。

ほとんど家の前でしたが、引き返して薬局へと戻り、自転車に乗って帰ってきました。

結局、頭を使わなかったおかげで徒労が増えてしまいました。あまりに滑稽だったので、こうしてブログに書き連ねています。冷静になって振り返ると、買うものを間違えたのと自転車に乗り忘れたのはただのボケのような気がしてきました。まあ、そういうこともあるさ。

でも今度はブログを書くのに頭を使いすぎて後悔しているので、もう寝ることにします。おやすみなさい。幸い、今は穏やかな日曜の午後。心を無にして昼寝するにはぴったりの春の陽気です。

7日間ブログ連続投稿を振り返って

振り返り記事です。実はブログ開設したときにブログを毎日投稿するという目標を掲げていて、無事一旦の目標である7日間投稿に到達したので、思いついた順に適当に振り返りを書いていきます。

先に述べておくと、たった7日ですが、それでもまあまあ大変だったのでこれからはペースを緩めると思います。

動機は不純

そもそもなんで連続投稿なんか始めたかというと、平凡な生活を抜け出してインターネットの人になりたいというよくわからない欲求からでした。また、そのための手段として、私は日本語力に謎の自信があったため、ブログという手段を選択しました。

私の日本語力をもってすれば、世間はきっと放っておかないだろうという不純な動機です。

過去 Qiita / Zenn に投稿してバズった技術記事の記憶から、バズるかどうかは結局インフルエンサーにツイートしてもらえるかどうか次第でしかないのも心得ていたので、なんとなく想定しているインフルエンサーの方のお眼鏡にかなうような文章も意識しました。

なおかつ、そこかしこで自分の記事を宣伝し、少なくともそこにいる方には読んでもらえるように働きかけました。

純粋な自己満足でブログをするほうが最終的には自分のためになるだろうと思うのでおすすめしません。

出力先がすべてブログになる

特に平日は仕事終わりの数時間を使って記事を書いていたため、頭の中がブログで埋め尽くされます。ブログ以外の場所に自分の考えを出力する余地はまったくありません。

どうしてもブログ記事、に限らず何らかのアウトプットを沢山投稿したいなら、毎日縛りではなくトータル何日という目標を立てるべきでしょう。私はたった7日だからいいものの、一ヶ月とか100日になると、その間一回も病気しない保証はまったくありませんので。

普通に考えて毎日というのは万人におすすめできるペースではないので、おすすめしません。

拡散がツイッター依存であるリスク

今回バズった方の記事はいずれも有名な方にツイッターで紹介してもらえたのがきっかけでした。自分自身はまったくインフルエンサーでも何でもないので当然の帰結です。

しかし、その拡散のツールがツイッター依存なのは、やはりリスクと言わざるを得ないでしょう。ツイッターなき後の世界なんて想像もしたくないですね。

また、ツールの問題を抜きにしてもインフルエンサーへの依存度合いが非常に高いのも問題かもしれません。これを解消する手段は今のところ思いつきません。

このように、バズりを狙うのはリスクがあまりに高すぎるためおすすめしません。

技術記事は Qiita / Zenn の方がいい

ブックマークのしやすさという観点から、技術記事は Qiita / Zenn の方が優位だと感じました。私自身そう感じるのですが、技術記事を見返したいとき使うのはツイッターのブックマークではなく Qiita / Zenn のブックマークでありたいです。なお、はてなブックマークは使っている人がおそらく比較的少ないので考慮に入れませんでした。

私自身これからは Qiita / Zenn に投稿するようにします。ブログへの投稿はおすすめしません。

バズるとアドレナリンが出すぎてヤバい

ご存知の通り思った以上にえらいバズったわけですが、こうなると閲覧数とかブクマがぐんぐん伸びて変なアドレナリンがドッパドッパ出ます。何時間エゴサしても止まらないです。

いわゆるクソリプの類以上にこの現象が非常に厄介だと感じました。おおよそ冷静ではいられませんから、調子に乗って変な行動をしかねないです。しかも、このバズりが収まったときに、いつまでも続くと錯覚していたこの勢いがなくなってかえって鬱になるかもしれません。

私はギリギリのところで踏みとどまることができましたが、バズるとこのように人間の情緒に問題を起こすため、おすすめしません。

そうは言ってもアウトプットする奴は偉い

動機は不純でしたが実際予想以上に目標を達成してしまったし、口だけ大きくて何も形にできていなかった自分とは大きな違いがあるなとは思いました。

なにか形にしさえすれば誰かの目に留まる可能性は発生しますから、結局アウトプットする奴は偉いです。

努力すると日々が充実するので偉い

なにもせずただぼやっと日々を過ごすと一日が終わるのは異常に早いものです。これは大人になるにつれ新しい刺激が少なくなっていくからだとも言われます。

新たな刺激を持ち込み、日々を充実させるには相応の行動が必要です。私はこの7日間がそれまでの7日間より倍くらい長く感じられ、充実していたように感じます。なんだかんだで楽しかったです。

向いてることを武器にしよう

私は日本語力に自信があったのでブログを手段に選びましたが、向いてるものは十人十色です。トークがうまいやつもいるだろうし、背中で語る方が輝く人もいるでしょう。私はそのどちらでもなかったので、今こうして文章を書いています。

自分には何が向いているか見定めましょう。

あとは運

あとは運ですね。私は当初7日の記事のうちどれか一つでもリツイートされたらとか、読者が一人ついたらいいくらいの気持ちで賽を投げまくりました。すべてが一発で思い通りにいくわけはなく、投げてればいつかは当たるやろくらいの気持ちでいるのが一番大事ですね。

本当はこれを言うために今日の記事を書くつもりだったんですが、とんでもない大当たりをしてしまい、全部思い通りになってる奴みたいになってあまり説得力がなくなってしまいましたね……

おしまい

ゲームしてたら時間がなくなってて急いで書いたためまとまりのない文章になってしまいました。

今後はペースを緩めて今まで通りゲームレビューとか思想強めの記事を書いていきたいと思います。今後とも読んでくださる方は是非読んでくださると嬉しいです。反応めっちゃ見てます。

あと、ソシャゲの記事の反応を見て思ったことがいろいろとあったので、コメント返しではないですがそんな雰囲気の記事も書くかもしれません。

おしまいです。

生活力5の限界生存戦略

前と前の前の記事がえらい buzz ちゃったのでハードルを下げるためにうんち記事を投下します。

筆者プロフィール

小学生の頃の通知表で唯一家庭科の「生活の技能」だけC(他はぜんぶB, A)をつけられた男。

洗濯

干すのが面倒なので、全部コインランドリーの洗濯乾燥機に突っ込みます。洗濯機は高いしいつか壊れるので、労力の分も込みで計算するとコインランドリー代も全然安いものです。

衣服

カテゴリごとに2着あれば片方が汚れてもギリ生きていけるので安心ですね。唯一下着だけは汚いので多めに用意しておきましょう。

料理

洗い物が面倒なのでしません。コンビニ弁当なら食べたら捨てるだけでいいので楽ちんですね。

自炊しようと思っていた時期もありましたが、洗い物が嫌すぎて放置してたら虫が湧いたのでもう二度としません。

歯磨き

面倒すぎてサボってたら3本くらい虫歯で根こそぎいかれたのでちゃんとしましょう。コップは紙コップを使えば洗う手間がなくて楽ちんです。

ゴミ捨て

ペットボトルを捨てるのがどうしても面倒な時は燃えるゴミに混ぜるときもあります。そんなときもある。

ペットボトルを捨てるのが嫌すぎてサボってたので最近までペットボトルで足の踏み場がなかったです。

掃除

年単位でやらないとさすがにヤバいことになると最近ようやく気づきました。

風呂

アトピーなのでこれだけちゃんと毎日入浴してます。また、残り湯は残さず上がった瞬間に抜いてバスマジックリンで洗い落としてます。

就寝

倒すとベッドにもなる座椅子を使っています。おかげで机と寝床の距離が0メートルです。

また、冬は寝袋にくるまっています。これまた便利です。

公共料金

面倒だけど、口座振替設定はしておこう。ちなみに電気が一番最初に止まって、次にガスで水が最後の順番でした。

税金

払わないと差し押さえになるので、「あー警告度に応じて封筒の色が変わるんだ、おもしろー」とか思ってないで必ず払ってください。過去の自分へ。

まとめ

お金および使い捨てで解決できるところは積極的に使っていくことで、生活力5でもギリギリ死なないレベルの生活を送ることができます。参考にしてみてください。

うそ、絶対参考にしないでください。

ソシャゲ運営を8年やって感じた、良いところと悪いところ

ポエムです。筆者はプランナーおよびプログラマーとして、いわゆるソシャゲの運営を8年ほど務めてきました。過去を振り返って、ぶっちゃけ話をつらつらと書いていきます。

現実はこんなに若くないけど

TL; DR

  • 「運営」の良いところは何よりも「失敗できること」。ゲームづくりは試行回数が命。
  • 一方、「ソシャゲ」に目を向けると、今後はゆるく滅びていくしかないだろうなあと思ってしまう。法外な課金体系についても思うところがないといえば嘘になる。
  • AI の出現やらでビジネスモデルもクリエイティブも大きく変化が予想される中で、今までの成功論からは離れて、もっと危機感を抱いて次の時代を作らなければ生き残れないだろう。

おことわり

内容はすべて筆者の個人的意見であり、責任はすべて筆者に帰属し、所属する組織団体の意向とは一切関係がありません。

それと、一部経営層への批判と捉えられる文章があるかもしれませんが、それらは全部嘘です。

追記)あとこの記事はすべて自分の主観に基づいており、すべてのソシャゲ運営に共通するものではなく、当然現場によって異なることをおことわりしておきます。

自分語り

イメージしやすいように具体的なエピソードから語っていきます。

略歴

8年前、某IPタイトルにアルバイト契約のプランナーとして入社し、その後、プログラマーに転向。現在の会社に就職し、いまが5年目です。

前職で1タイトル+弊社で計3タイトルの計4タイトルを渡り歩きました。弊社で担当したのはいずれもサービス期間10年超えの長寿タイトルです。

運営に携わったゲームの特徴

いずれも数人から十数人の小規模チームで細々と運営しています。

10年以上運営しているタイトルとあって、「まだ生きてたの!?」とよく驚かれます。はい生きてます。

基本的にユーザーはリリース当初から遊んでいる人ばかりです。10年ということは、当時20, 30代でも今は……察してください。そういう人が今でもタイトルごとに数千から数万人います。

この層のユーザーさんは Twitter などのインターネット上では可視化されづらいものです。だから「なんで(自分の遊んでいる新し目のゲーム)は終了してこいつは生きてるんだ?」と不思議がられるのでしょう。すみません、生きてます。

新しめのゲームと比較して見た目もゲーム性も劣りがちですが、ゲームが面白いでもガチャ中毒になってるでもなく、何より「そこで出会った仲間がいるから」継続している方が多いです。つまり、生活の一部であり、替えのきかない居場所なんです。

大切な居場所であるからこそ、文句をいいつつも続けるし、そう簡単にサービス終了されては困ると思うわけです。は○ブとかツイ○ターの現状と同じです。

要するに「太い客の居場所の役割があるのでそう簡単には終われない」、それが長寿ソシャゲです。

ちなみに新規顧客はほぼいません。これはあなた方の直感と一致するでしょう。理由は、新規を取りに行くための労力が、既存の客へのサービスを蔑ろにするリスクと見合わないためです。結局、居場所を守るのが第一なのです。

運営って何やってんの

デザイナー、プランナー、プログラマーでやることがそれぞれ異なりますが、一番理解しやすいのはアート領域でしょう。ガチャで出すための新しいキャラを描いたりします。

他に、UIをデザインするデザイナーさんもいます。わかりやすく、心地よいゲームを作るのに非常に大事な役目なのですが、アートと比べて日の目を浴びることが少ないのが難点です。しかも、悪いUIはめっちゃ文句言われるのに、良いUIは何も言われないという減点式。

みーんなイラスト描きたがるのでただでさえ成り手が少ないのに、大変な役回りです。でも、優秀なUIデザイナーさんと仕事すると本当に捗るので、とても助かっています。

「好きなUIは?」と聞かれて「ペルソナのやつ!」と答えるとにわか扱いされるので注意しましょう。詳しく知りたい方は、こちらの歌衣メイカさんの動画をどうぞ。

www.youtube.com

プログラマーの仕事は少しわかりづらいですね。

ユーザーに見える部分では、納期の短い順に、細かなバグフィックス、UX改修、既存形式のイベントやガチャに対する拡張、新規の遊び/イベントの実装、となるでしょうか。もちろん障害が起きたら真っ先に深夜に叩き起こされます。つらい。

一方で、ユーザーに見えない部分の仕事として、一般的な Web サービスと同じようなサーバーの安定稼働のための改修もやりますし、ゲーム特有のものとしてプランナーやアートのデータ作成/納品業務の効率化なども大事な仕事としてあります。

エンジニアで完結しない効率化の仕事は、プランナー経験やアートへの興味が活きて、個人的には非常にやり甲斐を感じます。画像一括減色ツールを実装し、キャラ画質向上・ツール費用削減・工数削減を同時に達成した話なんかは一晩中語れますよ。

一番難しいのはプランナーですね。ぶっちゃけ「その他」です。

ユーザーに見える部分では、バトルのデータやキャラの調整はもちろん仕事としてありますが、他にも細かい業務がたくさんあります。外注資料作成、版元監修対応、事業計画策定、などなど、などなど……。

新規の遊びを作るための企画資料作成、プレゼン、プロトタイプ作成(会社によってはデザイナーがやるかも)、仕様作成、タスク管理(会社によってはPM)、といったものも含まれます。

要するに、みなさんに遊びを提供するために、みんなが大変です。

お金周りの話

さすがにこの辺はぼかしますが、終わらないということは儲けてるということです。逆に言うと、あなたが「なぜ終わったんだ」と感じるそのゲームは、儲けてないから終わったのです。

ブラウザゲームだと、Ga○e-i にも計上されないし余計可視化されないですね。つか、アプリゲームでも G○me-i なんか参考にしちゃダメですけど。

新しいタイトルと比べて運用コストが低いのは間違いなくプラスに働いています。ショバ代やら税金やらで引かれる売上を100万積むより、コストを100万削減する方が、誇張抜きで数倍効果が大きいです。この点でも、Game-○ の売上なんか見ても何も経営判断の参考にならないのがわかりますね。

Gam○-i そのものに罪はなく、誤った解釈に持ち込む方々の方が問題なのですが。

逆に言うと、新規顧客がほぼいない中で、既存顧客に対していかに売上を維持するかと、同じ売上でも利益をなるべく出すためにコスト削減をするという圧力は非常に強いです。しかも遊びとは直接的に関係ないところなので、しんどい部分に数えられるでしょう。利益を出すことがタイトルの寿命を延ばし、ひいてはユーザーの喜びにつながっているんだと信じられるかどうかが鍵になってきます。

自分のスタンス

お金の話が先になってしまいましたが、自分自身は「面白くなければ死あるのみ」「わざわざ遊んでくれるユーザーにつまらないものを出すのは恥」「ユーザーが運営をそのくらい厳しく見ているのは当然」というくらいの過激派です。でした。

しかし、運営を長くやるにつれ、先の居場所の話だったり、じゃあ居場所を保ち続けるにはどのような売り方をしなきゃないとかいろいろと考え、だんだん丸くなってしまいましたね。それでも、自分が遊びを作るときは「自分が頑張ればタダでより面白いものができる」の精神でド深夜までバランス調整したりもしました。今となってはいい思い出。(書いてから気づきましたがこれ残業代が出るのでタダじゃないですね、すみません)

申し遅れましたが、私はプログラマーでありながら、プランナーっぽいこともかなりやってきました。月間イベント的なものを企画からリリースまで担当したことさえありました。自分の担当ではないときも、プランナーに対してかなり食ってかかっていました。これも面白くないものを出したくないという意識の延長線上です。

ソシャゲ業界について

個人的な話から少し広げて、次は業界についてのぶっちゃけ話です。といっても公に公表されてる情報に基づいたものですが。

まず全体の傾向として、ソシャゲ業界は既に超レッドオーシャンです。(資料: 【最新版】業界人は知っておきたい日本国内のスマホゲーム市場規模と推移(2011〜2022)

数年と数十億円をかけて開発したタイトルが鳴かず飛ばずで数ヶ月でサービス終了の憂き目に遭うことはもはや珍しいことではありません。

某娘のように当たる時はデカく当たるのですが、それによって市場が広がっているわけではありません。既存顧客の食い合いになっています。そうして市場は淘汰が進んで、新規で当たるゲームを出せるのは、某娘の開発元や、中華資本や、コンシューマー系企業といった元々体力がある企業に限られてきていますし、その中でさえ、当たらないときは当たらない厳しい状況です。

もはやガチャゲーは打ち出の小槌ではないのです。いや、「もはや」どころか、運営に携わり始めた8年前ですら感じていたことですが。

どうしてこうなった

こんな厳しい状況になった原因を読み解くのは案外難しいものです。オカルト的に言えば「ガチャなんていう阿漕な商売をやったツケが回ってきたんだよ!」となるでしょうし自分も一定そう思ってる部分はあるのですが、理屈としては弱い。

よりもっともらしいのは「開発費の高騰はゲーム業界の宿命である」というものです。

みなさんもご存知の通り、スマートフォンの性能は10年前から遥かに進化しました。それに合わせてゲームもリッチになり、作るのもどんどん大変になってきます。原○とかすごいですよね。しかもユーザーの目も肥えて、少しでも手を抜くと歯牙にも掛けてくれません。こうなるとゲーム会社が撃てる弾の数はどんどん少なくなっていきます。

でもこの現象、今のコンシューマー業界でも似たようなことが起きていると思いませんか? いわゆる「AAAタイトル」と呼ばれるものです。リアルと見紛うほどの美麗なグラフィック、オープンワールドは当たり前、そんな状況でAAAスタジオの一作あたりの開発費は高騰する一方です。

ユーザーとしてはゲームが進化してくれるのは嬉しいことですが、開発費が高騰し、ゲームを出せる本数が減るということは、新しいゲームの可能性が閉ざされていくということです。これは非常に問題です。

しかしそこでどうしても「守り」に入ってしまう。既存のソシャゲを遊んでくれる人をターゲットにして、既存のゲームと似たゲームを出したほうが、収益は読めるので事業的には優れています。しかも少しお金を多めにかければ、競合他社を蹴落とすことはたやすいでしょう。……本当にそうでしょうか?

限界はまもなくやってきます。どこかでリセットが入るのでしょう。

「ライバルは YouTube

他にも存在する問題として、開発費以外の広告費も実は爆発的に増加しています。これはまた別の理由を考えねばならず、推察するに「娯楽が溢れ、可処分時間の取り合いがどんどん激しくなっている」ことが原因だと考えています。

今や無料でゲームが遊べるのは当たり前。その無料ゲームを一度手に取ってもらうことすら難しいほどに、時間というのは貴重な財産となりつつあります。いわゆる、「タイパ」ですね。

激しい可処分時間の取り合いはゲームだけにとどまらず、YouTube, TikTok, その他SNS, 等々あらゆる娯楽が巻き込まれています。そうした熾烈な奪い合いを制するために、莫大な広告費の殴り合いが繰り広げられています。これも、ソシャゲの開発費を押し上げる要因の一つです。

結局、面白いことが重要

またオカルト話をしていいなら、「ソシャゲ業界は金儲けに走りすぎて、ユーザーからの信頼を勝ち取ることを怠った」という指摘ができるかと思います。

ぶっちゃけ我々が運営してるタイトルも、今は安定し穏やかな気持ちで、いかに面白いものを届けるかを考えていますが、リリース当初は今よりはるかに過激に売上第一!といった雰囲気だったと聞きます。ひとたびそのような印象をユーザーに植え付ければ、信頼を取り返すのはほぼ不可能です。さりとてマネタイズの方式を今から変えるわけにもいかず(そうしたらサ終まっしぐら)、もやもやを抱えて仕事しているのは、否定できません。

その割には、世間の「ガチャ」というものの拒否感が時代を追うごとに薄くなっているのは不思議な話ですが…。

また、私はインディーゲームの界隈もよくウォッチしているのですが、特に海外を中心に、もはや広告はユーザーの心に響かず、ただ Steam の評価が重要であるという風潮になっている、らしいです。一部のゲーマーだけかもしれないですが。

そうなってほしいという願望混じりですが、開発費/広告費競争ではなく、いかに面白いか、いかに新しいか、いかに信頼を勝ち取り市場を広げるか、という方向にどこかで風向きが変わってくれる、のではないかと思っています。

結局、面白いことが重要。そうであってほしい。

ソシャゲ業界はレッドオーシャン

その他

その他なんか思いついたところを適当に書いていきます。

サ終したあとオフライン版作ってくれないの?

オフライン版を作らない理由はいくつか思い当たります。

あなたのデータがオフラインにあると思ってるの?

まず、あなたのデータの大半はサーバーに保存されています。何万人というユーザーについて一人ひとり、あなたのデータをオフラインに保存させるのは非常に困難です。間違って他人のデータを落とせてしまったら大事件です。法に触れる可能性すらあるかもしれません。

プログラムの作りも、サーバーではなくクライアントだけで取得が完結するように作らねばならず、大工事が必要になります。既に「儲けていない」ゲームにそんな体力があるはずもありません。プログラマもタダじゃないので。

一方で、手抜きしていいならあなたのデータを一切閲覧できない状態のアプリを配布することも考えられます。「図鑑」だけが手元にあるような状態ですね。これも一つの「オフライン版」ですが、どうでしょう?

(終了後、スムーズにオフライン版になるようにリリース前からプログラマーが工夫していれば別かもしれません。もしそのようなゲームがあれば全力で讃えてください。)

権利問題

キャラの画像やモデルのデータが、運営だけが権利を持っているとは限りません。様々なステークホルダーが絡んでおり、確認するのは大変です。特に、何年も前のアセットだと、外注先が既に解散している、なんてこともあるかもしれません。そうしたらお手上げです。

やる気と需要問題

でも結局はやる気と需要に行き着くと思います。プロデューサーがめっちゃやる気があれば、儲けにならなくてもオフライン版を出すでしょう。しかし、プロデューサーよりさらに上の経営陣の判断との兼ね合いもあって、そうする意思決定は非常に稀です。

それに、声の大きいユーザーばかりがオフライン版を望んでおり、大半はさほど必要としてないかもしれません。難しい話ですが。

オフライン版以外の形

しかし、最近では、こういった問題を避けつつ、アートブックや資料集を終了後に出すという形が散見されますね。これは非常に賢いやり方だと思います。運営もプログラムの大改修という異常な工数をかけることなく、資料をまとめるだけでいい。ぶっちゃけめちゃくちゃ「コスパがいい」。

結局顧客が本当に必要だったものは「形が残ること」だったんだろうと思います。ユーザーは形に残せて嬉しく、運営は簡単に売上が出せて嬉しい、win-win の関係になるので非常に望ましいことです。

しかし、先に述べた権利問題や、後述する販売元との関係などにより、資料やグッズすら出したくても出せなかったりするので、やっぱり難しいのですが…。

運営のことをいたわってほしい

「運営」が蔑称として使われるのは同業者として心苦しいものがあります。

ソシャゲ黎明期ならいざ知らず、今のソシャゲの運営というのは、現実と理想の板挟みになりながらも、ユーザーに楽しく遊んでもらうことを考えて仕事しているはずです。

コンビニや居酒屋の店員のことを考えてください。多少袋の詰め方が汚くても、配膳の仕方が雑でも、真面目に仕事している様子が窺えるなら、いたずらに強く当たったりしませんし、むしろカスハラ扱いされると思います。それは顔の見えない運営に対しても同じです。運営も人なんです。

もちろん運営側の努力も必要かと思います。昔から同じ方法論を取り続け、「今どき」なユーザーコミュニケーションを怠っている面はあると思います。(この点、某FFXIVプロデューサーが神なんですよね、結局)

運営側とユーザー側の双方が歩み寄って、つらいことを減らして、楽しいことをもっと増やせるといいのにな、と思います。

ちなみに、「顔も見えない」について「顔くらい出せよ」と思われるかもですが、版元があるタイトルだと開発プロデューサーが表に顔を出すことが不可能だったりもして、これもまた面倒な問題なんです。

開発元(大抵聞いたこともないような会社)と販売元(大抵とても有名な会社)の区別くらいはつけていただけると、我々としてはとても助かります。ゲームは開発が責任を負うが、IPとしてのグッズ展開は販売元が行うなどの複雑な関係があります。グッズは基本開発元が出したくても出せないっす。

販売元に不満をぶつけている様子を、表立って対応できない開発元が心苦しく見ているなんて状況もしばしばあり…。ご理解いただけると。

技術的な話

技術ブログなので技術の話をすると、10年も運用したコードは技術的負債が溜まりに溜まって到底返せないものになっています。施策のリリースが最優先なのでテストはないし、技術スタックは古いし、消していいコードと触れてはいけないコードの区別がまったくつきません。リリース当初からずっと携わっているメンバーがいればある程度マシですが、そうでなければお手上げです。

途中から運営に参加すると、ユーザーの方が歴が長いのも大変なところです。自分の改修が自分の知らない仕様で爆発するのにビクビクしながら仕事する日々です。もちろんテストはありません。

一応擁護するなら、ゲームはそもそもそのくらい複雑な代物であるとは言えるかもしれませんが…。

しかしながら、運営が続いているということはお金を確かに生み出しているということなので、誰も使わないサービスをいじるよりは面白みがあります。少なくとも私はそう感じています。

そんな日々の中で得た教訓を少しだけ書いておきます。

プランナーとのやりとりが重要

プランナーが持ってくる仕様は、いかにそれっぽく書いていても穴だらけバグだらけです。それらを指摘し、穴を単に塞ぐだけでなく、冗長な仕様を削ったりまとめたり、少ない機能でよりプランナーの表現の幅を広げてやったりすることが、ゲームのプログラマーに最も求められる能力です。

職場によってはプランナーに意見する立場になく、ただプランナーの穴だらけの仕様を適用し、ツギハギだらけの if 文まみれになってしまうかもしれません。そうなったらご愁傷様です…。

なるべくプランナーと対等に、場合によってはプランナーの仕事を食っていけるほどに綿密なやりとりを出来るのが重要です。

さらにやりとりが上達すると、プランナーの持ってきた仕様から「書いてないけどどうせ後でこういうことやりたがるよな?」と未来予知して、しれっと実装しておくと、「そんなこともあろうかと」が出来てかっこいいです。私も何回かやりました。

考古学をサボらない

一見してクソコードでも、仕様を満たすためには実は必要な複雑性だった、というケースは少なくありません。

むしろ、一見してクソコードだからと、自分勝手に仕様を建て増しする方が悪であると言えます。クソコードを笑うものがクソコードを書く状態。

あなたが後年の人に笑われたくないのなら、クソコードに真摯に向き合って、その意図を紐解き、そして出来ることなら解読した内容をドキュメントにまとめ(どうせドキュメントはまだ誰も作っていないでしょうから)、後世の人に貶されるのではなく感謝される仕事を目指したいですね。

ソシャゲ運営を8年やって感じた、良いところと悪いところ

はい、ようやく本題に入ります。ソシャゲ運営で感じた良いところと悪いところは何か。

運営の最も良いところはズバリ「失敗できること」ですね。ピンと来ない方もいるかもですが、「運営」の反対…つまり「新規開発」においては、ユーザーの反応が一切得られない状態で何年も開発を続けなければなりません。しかも、何年も費やしてやっとリリースできたところで、それが売れるかは未知数。失敗は許されません。

それとは対照的に、もう何年も安定して運営しているタイトルというのは、先程も述べた通り、ずっと遊んでいる人が大半で、ちょっとやそっとのことじゃユーザー数が増減したりしません。(増えもしないのがポイント)

失敗しても大きな怪我を負うことは少なく、いくらでも挽回できます。

ゲームづくりはとても不確実な作業です。面白いと思って世に出したものが当たる確率は3%もありません(適当)。

よって大事なのは一回に魂を込めることではなく、何度も失敗を重ね、何度も遊んでくれる人の意見に耳を傾けることです。

ユーザーの反応を見るのはとても楽しいです。私自身めっっちゃエゴサします。私のタイトルはどれも Twitter やってる人は少ないので、感想を見つけると砂漠のオアシスにたどり着いた気分になります。めっっちゃ嬉しいです。文句をつけられることもありますが、そういったものも全部真に受けるまではしなくともそこそこ聴いています。

しかも、作るものにもよりますが、数年かけて仕込むのは稀で、数ヶ月程度で仕込んでリリースするのが当たり前です。このサイクルの速さによって、素早く次の改善に活かすことができるのが、運営の楽しさの一つです。

ただ最近はゲームのリッチ化にともなって、どんな施策であれ仕込みに半年はかかるというタイトルも少なくなく、ユーザーからすると「このくらいすぐに直せよ」と思うことが中々直らないことがあるかもしれません。私は古いタイトルの運営なので、大変そうだなと思って眺めていますが。

素早いフィードバックがあるというのは教育にもたいへんよろしく、私自身、完全未経験で入社し、その後様々な施策とその反応を見て学ぶことは多かったです。大変貴重な経験をさせていただいたと感じています。

他に細かく良いところを挙げるとするならば、職場で大真面目な顔で「このキャラにしては技の火力が低いな…」とか「このイラストすごくxxxだね!!」みたいな、おおよそ不真面目としか思えないワードが飛び交うのも楽しいところです。

一方悪いところを挙げるとするならば、ソシャゲ業界自体への不安があげられるでしょう。今運営しているタイトルは非常に安定していますが、それも永久に続くわけではありません。いつかは終わりがやってきて、新天地を目指さなければなりません。

そうなった頃にはもう、「ソシャゲ業界」は残っていないかもしれません。終わる運命だったと言ってしまえばそれまでですが、すべてをただ消失させるのはあまりにももったいないです。

私自身ガチャは大嫌いですが、しかしソシャゲ業界はコンシューマーとは別のユーザー層を開拓し、また作る側にも様々な職を与えました。イラストレーターだけでなく、3DモデラーFlash クリエイター(実は弊社のゲームは Flash がJS上でご存命です)、UI デザイナー、シナリオライター、などなど、などなど…。

しかもただ業界が行き詰まりになるだけでなく、AI とかいう黒船もやってきています。このカオスの時代にどうバトンタッチするか。これは中々答えの出ない問題です。

これからどうなっていくんでしょうね?

何にせよ私はゲームを作り続ける

大それたことを申しましたが、ぶっちゃけ私はソシャゲ業界にこだわりはなく、ただゲームを作り続けられればいいと思っているので、その場その場で最善を尽くすだけかと思います。そのときに今の運営の経験が活きればいいな、程度。業界がどうなろうと知ったこっちゃないです。

が、ソシャゲ業界全体の意識としては、「危機感」を持たなければ今後やっていけないだろうな、とは思います。しかも、開発費競争から降りて、不確実な世界に足を踏み出さねばなりません。その勇気をどれだけの企業が持てるか。

しかし終わりは新たな始まりでもあり、もしその勇気をもった企業が現れれば、誰も見たことのないさらに面白いゲームと文化が花開くかもしれません。

私は人間の可能性には期待しているので、楽しみにしつつ日々精進していきたいと思います。

以上です!

Go の goroutine / channel は全然簡単じゃないので errgroup を使おう

技術記事です。今日は Go の golang.org/x/sync/errgroup についてです。

TL; DR

  • Go が並行処理を得意とするのは事実だけど、とはいえ正しく使うのは難しい(特に channel)。
  • errgroup なら「並行でダウンロードする」のような頻出パターンをとても簡単かつ安全に使えるので、まずはこれで美味しいところだけ頂いてしまおう。
  • 重い処理を並行にすればあなたのプログラムはカジュアルに数倍速くなる。
  • 多分 errgroup だけで現実の要件の85%くらいはカバーできるはず。
  • channel も含めてちゃんと使いこなしたいと思ったら、Go 言語による並行処理 がおすすめです。

errgroup とは

ドキュメントはここを参照してください。説明を読むよりコード例で見たほうが早いと思うのでこちらをどうぞ。

package main

import (
    "fmt"
    "net/http"

    "golang.org/x/sync/errgroup"
)

func main() {
    eg := errgroup.Group{} // STEP 1. グループを作る
    urls := []string{
        "http://www.golang.org/",
        "http://www.google.com/",
        "http://www.そんなものはない.hoge/",
    }
    for _, url := range urls {
        u := url // 注1
        eg.Go(func() error { // STEP 2. goroutine をどんどん起動する
            // GET する。
            // 前の GET の終了を待たずにどんどん並行で起動する。
            resp, err := http.Get(u)
            if err == nil {
                resp.Body.Close()
            }
            return err
        })
    }
    // STEP 3. すべての GET が終わるのを待つ
    if err := eg.Wait(); err != nil {
        log.Fatal(err)
    }
}

pkg.go.dev の Example をまんま引用しただけですが、少し解説を加えます。

STEP 1. グループを作る

errgroup.Group を作ります。特別な初期化等は必要ありません。

STEP 2. goroutine をどんどん起動する

関数を渡して goroutine を起動します。関数の終了を待たずに並行で goroutine (軽量スレッド) をどんどん起動しているので、単純に一個一個処理を行うより素早く完了できるというわけです。

u := url について

for 文でループして取り出している値(ここでは url)は、goroutine にそのまま渡すとバグるので、ここで u という別の変数にコピーして goroutine で使います。

余談ですが、この挙動は厄介な問題として認識されており、Go 1.21 あたりで「一旦代入する」手間をかけずとも意図通り動くように修正される計画があります。早く来てほしいー。(issue)

STEP 3. すべての GET が終わるのを待つ

最後に eg.Wait ですべての goroutine の終了を待ちます。すべての関数が成功だったら eg.Waitnil を返しますが、もしエラーを返した関数があれば(ここでは "http://www.そんなものはない.hoge/" の GET が該当するだろう)、eg.Wait はそれを返します。

複数エラーを返した関数があれば、それらのうち最初の一つだけを返します。もしすべてのエラーを知る必要があるなら、multierrgroup などを使うことを検討してください(あんまないと思うけど)。

errgroup の基本の使い方はこれだけです。多分これだけで現実の要件の85%くらいはカバーできると思います(適当)。どんどん並行処理を使ってあなたのプログラムをカジュアルに数倍速にしちゃいましょう。

errgroup の嬉しいところ

Go の並行処理は N:M モデルと言われ、他の言語のようにOSのスレッドやプロセスを起動するのではなく軽量な goroutine を起動するため、何個起動しても大丈夫という点が非常に嬉しいですね。大量のファイルへの並行書き込みなども、基本的には数を気にせずバンバン起動してしまってよいです。goroutine は湯水の如く使いましょう!

また、標準の sync.WaitGroup と比べても、「エラーを受け取る」「関数を渡す」という二点のおかげでより扱いやすくなっているので、実質的な上位互換です。WaitGroup より知名度が低いのだけが難点ですが、今日からはぜひ errgroup を使っていただきたいと思います。

Go の優れた言語機能の上に立脚しつつ、扱いやすくまとめられているのを指して、「美味しいところだけ頂こう」というわけです。

Context について

上記のコード例では、goroutine を起動したら起動しっぱなしで、途中キャンセルできません。どれか一つの処理でエラーが起きたら、他の処理を進める意味はないのでキャンセルしたいという場面は多いでしょう。

そんな要求にも errgroup は対応しています。グループを作る際に errgroup.WithContext でコンテキストを仕込み、各 goroutine で context によるキャンセルに対応すれば良い……のですが、この記事では割愛してこちらの記事に譲ります。なぜなら難しいから(´・ω・`)

しかしいつかは context から逃げられない日が来ると思うので、簡単にポイントだけかいつまんで置いておきます。

  • context はあくまでイディオムであり言語機能ではない。
  • context を渡すと、渡した先の関数が勝手にキャンセルに対応するわけではない。
  • あくまで context があると「context を通じてキャンセルされたかどうかを知ることができるよ」というだけなので、それを知って正しくキャンセルする処理を実装する必要がある。

その他 Go の並行処理機能について

goroutine も channel も、あとついでに sync や atomic や context も Go らしさを形成する非常に重要な機能なのですが、いきなり直接扱うのは困難です。

errgroup でカバーできない要件に遭遇したら、是非 Go 言語による並行処理という名著を読んで勉強していただきたいです。

www.oreilly.co.jp

Go 言語による並行処理は良本。

一通り習得したら、必要に応じて mattn さんのブログ記事など読みに行くとよいと思います。自分はそうしています。

mattn.kaoriya.net

それと errgroup 自身のコードを読むのも勉強になるかもしれません。実はけっこうシンプルなんですよ。pkg.go.dev でシンボル名をクリックするとソースにアクセスできます。

おしまい

Go の並行処理は簡単安全と言われており、たしかに事実だし私も同意するのですが、並行処理がそもそも難しいおかげでやっぱりいきなりだと難しいと思います。そんなときはまず errgroup を使いましょう。他は必要になったら勉強すればいいかと。

フリーゲームレビュー「E-999」 - この世で最も優しい〇〇の壁【PC】

unityroom.com

すごいゲームだった。間違いなく新しい体験だった。

開始5秒で魅力を理解できるし1周10分程度なので、まだ遊んでない人は 今すぐ 遊んできてほしい。頼む。

あとタグが「テキストエディタ」なのでエディタに拘りがある人も全員遊んでほしい。

以下、ネタバレ全開でお送りします。

...

...

...

...

...

...

...

...

...

...

...

...

この世で最も優しい、第四の壁を越えるゲーム

「第四の壁」を打ち破る、つまりメタ要素があるゲームは枚挙にいとまがない。OneShot, Undertale, DDLC, Inscryption, などなど...。

それらは基本プレイヤーを「脅かす」機能を果たすことが多い。ゲームの中の出来事と安心しきっていたプレイヤーの現実に侵食し、常識と安寧を破壊することができるからだ。

しかし、E-999 は違う。最初こそ驚くかもしれないが、少女と思しき人物の物腰は柔らかく、こちらを脅迫するような姿勢は見られない。

「手紙」というモチーフも絶妙で、脅かされるというよりむしろ、第四の壁越しに少女と心を通わすことがこのゲームのメインとなっている。その心を通わす過程が、現実に侵食してきているからこそ妙な生っぽさを帯びる。

彼女はわれわれの受け答えをしっかり「読んで」くれているし、想いの込められた文章とあいまって、こちらの感情を揺さぶってくるのも忘れてはいけない。

彼女と交流する手段が手紙による文通という非常に情報量の限られた手段であることにも注目したい。われわれは扉の向こうで起こっている事実を一切観測することができない。与えられるのはテキストだけ。それによって、断片的な情報が想像力をかき立ててくれるし、手紙の主が「信頼できない語り手」の役割を果たすこともできる。ラストの展開もなかなかえぐかった…。許せねえよADMIN…。

このゲームはきっとゲーム制作者ほど驚きをもって迎え入れられるだろう。こんな「手段」があったのかと。

間違いなく、新たな体験を切り拓いたゲーム

同時に、ゲーム制作者であるほど、もっとああしたらよかったのに~といった妄想が次々浮かんでくるだろう。筆者がパッと考えただけでも、少なくともコマンドのくだりはもっと自由度を増やしたいし、END3はもっと別の条件にするだろうし、いっそ相手が本当にAIで応答を考えてくれたらどうだろうか、などと夢想する。

しかし、こういったアイデアのいずれも、E-999 の編み出した新たな体験、表現手法、インターフェース、の偉大さの前には所詮二番煎じだ。E-999 の最も偉大な点は、何度も述べるようだが、脅かすでもなく優しさをもって第四の壁を破るという新たな表現なのだから。

だからこそ「新たな体験を切り拓いた」と称えたい。

おしまい

ゲームの作り込みがすごいとかでもなく、使っている技術、アセットはシンプルで、ただただ「発想の勝利」。脱帽しました。

一週間でこんな偉大なゲームが出てくるとはまだまだ世の中捨てたもんじゃないですね。

当ブログでは今後も引き続きインディーゲーム中心に好きなゲームのレビューを書いていくつもりなので、次回もお楽しみに。ではまた。