Sign in

いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業

@itchie-tatsumi.bsky.social
97 followers 79 following 1.1K posts

ゲームでの代表作は格ゲー・RPG。低レイヤーと海外市場が主戦場。EMとしては給与UPとWLB確保の仕組み構築で受賞歴有|国家資格者によるキャリアサポート|1to1技術メンタリング|残業6h/月|Udemy/オライリー見放題等。3年連続でITエンジニアを50人超キャリア採用。休日は旅行とB級スポットとサッカー。たまに勉強会等で登壇もしています。

PostsRepliesMedia
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 15h
ゲームの自動テストは、どこまで任せられるのでしょうか。 ダメージ計算や状態異常は確認できても、実際に遊ぶと「敵が少し早い」「攻撃後の間が足りない」と違和感が残ることがあります。 自動化できるもの、最後は人が触って確かめたいもの。実際に試して感じた境界をnoteにまとめました。 ゲームの自動テストはどこまで任せられるか。自動化できたもの、できなかったもの|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
ゲームの自動テストはどこまで任せられるか。自動化できたもの、できなかったもの|itchie@辰巳電子工業
ゲーム開発では、「ゲームは自動テストが難しい」という話をよく聞きます。 私も以前、敵の行動や攻撃タイミングを、できるだけ自動テストで確認しようとしたことがあります。 たとえば、 攻撃できる条件を満たしたら攻撃するか ダメージ計算の結果が正しいか 攻撃を受けた側のHPが想定通り減るか 本来入ってはいけない状態へ遷移しないか といった内容です。 こうしたテストは実際...
011
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 07/10/2026
ゲーム開発では、「少し前のビルドでは動いていたのに、いつの間にか特定の場面でクラッシュする」ということがあります。さらに厄介なのは、その間に大量のコミットが積まれている場合です。 仮に1000コミット前のバージョンは正常だったとします。そこから1コミットずつチェックアウトして再現確認するのは大変です。 こういうときに使えるのが git bisect です。正常な地点をgood、問題が起きる地点をbadとして、その間を二分探索します。 2¹⁰=1024なので、安定してgood / badを判定でき、理想的に半分ずつ絞れれば、1000コミット程度でも確認は約10回です。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 06/10/2026
3Dのゲームを遊んでいて、キャラクターは地面に立っているのに、足元だけ少し浮いて見えたことがある人も多いと思います。よく見ると、体ではなく影が接触点から離れている場合があります。 シャドウマッピングでは、ライト側から見た深度と描画する面の深度を比べて、影かどうかを判定します。ただ、この比較には精度誤差などがあるため、本来は明るい面が自分自身の影だと判定され、表面に斑点や縞が出ることがあります。これが「シャドウアクネ」です。 代表的な対策の一つが、深度比較に少し余裕を持たせるバイアスです。ただし、大きくしすぎると今度は物体のすぐ近くが影にならず、接触しているはずの場所と影の間に隙間ができます。
110
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 06/10/2026
若手を育成していると、コーディング以前に、既存コードや仕様を読み「どこを触ればよいか」をつかむまでに時間がかかることがあります。 Cloudflareが10月5日に公開したインターンプログラムの振り返りには、ここにAIが入ると何が変わるのかのヒントがあります。 同社は2026年に最大1111人のインターン採用を目標に掲げ、10月5日時点で48チーム・9拠点、750件のインターンシップを実施しています。 AIは未知のコードベースの理解、要件と実装の比較、プロトタイプ、定型作業などに使われ、多くのインターンが新しいプロジェクトの全体像をつかむ初期段階を「週単位から日単位」に進められたとしています。
blog.cloudflare.com
One year later: the power of 1.1.1.1 interns
A year after announcing our goal to hire 1,111 interns, more than 750 early-career builders have shipped real products across 48 teams at Cloudflare. From Birthday Week launches to post-quantum securi...
111
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 06/10/2026
ゲーム開発では、UIを閉じても通信コールバックや非同期ロードまで消えるわけではありません。 昔、消したはずのUIを通信処理が後から触って悩んだことがありました。 Addressablesも含め、UI・通信・リソースの「寿命」をどうそろえるか。ロードより見落としやすい解放処理についてnoteにまとめました。 ゲーム開発のリソース解放は「後片付け」ではない。UI・通信・Addressablesの寿命をそろえる|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
ゲーム開発のリソース解放は「後片付け」ではない。UI・通信・Addressablesの寿命をそろえる|itchie@辰巳電子工業
ゲーム開発をしていると、どうしても「目に見える実装」に目が行きます。 キャラクターが動く。UIが表示される。シーンが切り替わる。ロードした画像が画面に出る。 実際に動くものがあると進捗も分かりやすいですし、単純に動くと嬉しいので、私もついそちらに意識が向きます。 ところが、あとから悩むことが多いのは、 「いつ作るか」 よりも、 「いつ、誰が、どの順番で使うのをやめるか」 だったりしま...
000
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 06/10/2026
高校生ワイ「ドラクエ4の発売まだかなあ そんなに時間かかるのかなあ」 ゲームプログラマーワイ「1年で格ゲー作るの大変や!!格ゲーに年号付けた奴誰や!」
010
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 05/10/2026
開発現場でコードレビューをすると、AI支援で作られたPRで、ぱっと見綺麗で読みやすいのに、仕様を追うと「ここは違う」となることがあります。AIの能力が低い、という話ではありません。構文や命名が自然でも、仕様の背景が十分に渡っていなければ、もっともらしい間違いが発生します。しかも見た目が自然だと、人間側も疑わないこともあります。 厄介なのは「なぜこの分岐があるのか」「なぜ不要な処理を残しているのか」といった理由です。過去の障害対応での泥臭い回避策など、文章に残っていない経緯はAI以前から危険でした。AIでは、その理由を知らないまま、不要に見える処理をきれいに書き換えてしまうことがあります。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 05/10/2026
アクションゲームを作っていると、動く床からジャンプした瞬間に「床の速度をどこまで残すか」で、操作感がかなり変わります。床に乗っている間、一緒に動かす処理と、床を離れた後にその速度をどこまで引き継ぐかは別の話です。横へ動く床なら、速度を引き継ぐと進行方向へ流れながら跳びます。引き継がなければ、その場から跳んだような動きになります。飛びすぎるなら、横方向だけ一部残すといった調整もできます。 さらに悩ましいのが下降中の床です。下向きの速度までジャンプ初速へ反映する作りでは、いつもと同じ操作なのにジャンプが低くなったり、条件によってはすぐ床へ再接触したりします。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 05/10/2026
技にキャンセルを入れたら、それまで調整していた硬直の意味がほとんどなくなり、想定以上に強い攻撃になったことがあります。 入力をいつ受け付けるか。ヒット時だけか、空振りでも可能か。先行入力をどう扱うか。 一瞬の「技がつながる」の裏で何を決めているのか、noteに整理しました。 ゲームのキャンセル処理はなぜ難しいのか。入力受付・硬直・ヒット条件まで考える|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
ゲームのキャンセル処理はなぜ難しいのか。入力受付・硬直・ヒット条件まで考える|itchie@辰巳電子工業
キャンセル処理は、プレイヤーから見ると「攻撃の途中から次の行動へすぐ移れる」という便利な仕組みです。 格闘ゲームなら通常技から必殺技へつなぐ。アクションゲームなら攻撃後の硬直を回避でキャンセルする。ハンティングアクションゲームでは、一つの攻撃から複数の派生技へ移れることもあります。 操作している時間は一瞬です。 ただ、作る側になると、その一瞬のために決めなければならないことがかなり増えます。...
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 05/10/2026
ゲーム開発に生成AIを入れるというと、画像やコードを生成させる話をよく目にしますが、10月2日にカプコンさんが紹介したREXは、ゲームエンジン側そのものをAI時代に合わせて変えていく話でした。 REXは新しいエンジンを一から作るのではなく、今のRE ENGINEに新しい基盤を段階的に加えていく計画です。たとえばデータを共通のルールで扱うRE、ログと通信を見直すRE、ゲームの動きを作るRE、実行基盤のREなどがあります。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 05/10/2026
PS5のような家庭用ゲーム機は、PCのように発売後にCPUやGPUを交換して性能を上げることはできません。それでも、同じ本体のまま、数年後により高い画質を実現できることがあります。今回、通常のPS5向けに発表されたAIアップスケーリング技術「QSSR」は、その分かりやすい例です。 PS5 ProのPSSRをそのまま移したわけではありません。QSSRでは、効率化したニューラルネットワーク構造と、PS5向けに最適化した実装を使い、『Marvel’s Wolverine』『Ghost of Yōtei』から導入されました。
110
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 04/10/2026
PSやセガサターンに憧れて転職したのに、実際に自分が得意だったのは、アセンブラで1クロック、1ビットを削るような低レイヤーの開発でした。 その経験が、後にガラケーや初期スマホの時代で役立ちました。 やりたい仕事と向いている仕事は、必ずしも同じではありません。後からつながった自分のキャリアをnoteに書きました。 自分の希望と適性は一致しない。それでもキャリアはつながっていく|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
自分の希望と適性は一致しない。それでもキャリアはつながっていく|itchie@辰巳電子工業
私がゲーム業界に入ったころは、PSやセガサターンなどの次世代機が大きな話題になっていました。 それまでのゲーム開発では、限られたCPUやメモリの中でどう動かすかを考え、アセンブラで処理を細かく詰めるような仕事も珍しくありませんでした。 私自身もそうした開発を経験していましたが、当時はむしろ、もっと潤沢なリソースを使ってリッチなゲームを作ってみたいと思っていました。 アセンブラで1クロックを削...
000
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 04/10/2026
若手エンジニアの成長を見ていると、以前より見積もりの工程や工数が増えてくることがあります。 見積もりを出してもらったら、以前より工程も工数も増えていました。これは、仕事が増えたのではなく、今まで見えていなかった仕事が見えるようになった可能性があります。 たとえば以前は「実装3日」とだけ書いていた作業でも、実際には仕様確認、既存コードの調査、影響範囲の確認、実装、テスト、不具合修正、レビュー対応まで発生します。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 03/10/2026
Python 3.15のリリースマネージャが10月1日、正式版の延期と追加のrc3を予告しました。翌2日に3.15.0rc3が公開され、正式版は10月9日予定になっています。 理由は、lazy import関連のrelease blockersが直前にいくつか見つかったためです。修正を3.15.0へ含めたうえで、十分にテストする時間を取るための延期です。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 03/10/2026
自分で会社を始めて、最初に感覚が変わったと実感したことの一つが「仕事が増えるほど安心できるわけではない」ということでした。受注が決まれば売上は増える予定です。でも、その日に銀行口座へお金が入るわけではありません。 たとえば900万円の開発案件を受注し、3か月開発して検収後に一括で入金される契約だったとします。その間も毎月300万円の人件費や外注費が出ていけば、900万円が入る前に先に現金が必要です。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 03/10/2026
格ゲーを作っていた頃、共通化してきれいにしたはずの処理が、終盤のバランス調整で「このキャラだけ特殊」「この技だけ別処理」と分岐だらけになりました。RPGでも同じでした。 抽象化は、まとめれば良いわけではありません。 どこを共通化し、どこに冗長性を残すか。実体験から整理しました。 #ゲーム開発 #プログラミング ゲーム開発の抽象化はどこまでやるか。終盤の例外仕様で共通処理が苦しくなる理由|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
ゲーム開発の抽象化はどこまでやるか。終盤の例外仕様で共通処理が苦しくなる理由|itchie@辰巳電子工業
格ゲーを開発していた頃、似た処理を共通化してコードを整理していたことがあります。 開発の途中までは、かなりきれいになります。同じような処理を一つにまとめられるので、修正箇所も減ります。 ところが、開発終盤になると事情が変わりました。 「このキャラだけ投げ処理が特殊」 「この技だけ硬直時間の扱いが違う」 「この状態のときだけ通常とは別の判定にしたい」 バランス調整を進めるほど、こうした仕様が...
000
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 03/10/2026
障害が起きたとき、コードを直せるだけではなくて、 「直前に何が変わった?」 「このログなら、まずこっちでは?」 「ここを直すと別の機能に影響しそう」 と、調べる順番を組み立てられる人がいます。 レビューでも同じです。動くかどうかだけではなく、仕様変更が入ったときに危なそうな場所や、運用で困りそうなところまで見る。こういう仕事は、実装した行数にはほとんど出ません。 40代以降のエンジニアを見ていると、実装速度とは別のところで価値を出している人が結構います。 若手のコードを見る。障害を切り分ける。顧客に技術的な話を説明する。設計段階で「これ、後で困らない?」と気づくなど。
111
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 02/10/2026
ガチャが独立抽選なら、回数を重ねても次の1回の当選率は変わらない。ここまでは一般論です。ただし天井や途中で確率が上がる仕組みまで入ると、全体を「毎回1%の独立抽選」としては扱えません。 各回の当選率が常に1%なら、100回という区間で1回以上当たる確率は約63.4%。100回すべて外れる確率も約36.6%あります。100回目だけを見れば当選率は変わらず1%です。当選回数の期待値が1回分でも、「100回で1回は出る」という保証ではありません。 そこで一定回数で対象を確定させる天井(ハードピティ)や、途中から確率を上げるソフトピティ、抽選とは別にポイントを貯めて交換する方式などが使われます。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 02/10/2026
同じ仕様書を読んでも、プログラマーによって実装は変わります。 「弾が当たったらダメージ」「接地中ならジャンプ」だけでは、何を正とするかまでは決まりません。 見た目、当たり判定、オンライン同期。ズレを減らすには、仕様書を長くするより前提条件を揃えることです。 ゲーム開発で起きる認識差を、具体例付きでnoteにまとめました。 仕様書を詳しくしてもズレはなくならない。プログラマーごとに実装が変わる理由|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
仕様書を詳しくしてもズレはなくならない。プログラマーごとに実装が変わる理由|itchie@辰巳電子工業
ゲーム開発では、同じ仕様書を渡しても、プログラマーによって実装が少しずつ変わることがあります。 仕様そのものを勝手に変えているわけではありません。 仕様書に書かれていない実装上の判断が、それだけ多いからです。 たとえば仕様書に、 「弾が敵に当たったらダメージを与える」 と書いてあったとします。 一見すると十分に見えますが、実装するときには、まだ決まっていないことがかなり残っています。 ...
010
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 02/10/2026
ゲームで敵に囲まれることがありますが、敵全員が好きなタイミングで攻撃してくるとは限りません。クールダウンや位置取り、攻撃モーションの都合もありますが、複数の敵が同時に攻撃しすぎないよう、戦闘全体で「攻撃してよい敵」を制御する作りもあります。 その一例が、攻撃トークン(Attack Token)やAttack Slotです。 攻撃したい敵が枠を要求し、取れた敵に攻撃開始を許可する。攻撃モーションが終わったときだけでなく、怯みやターゲット喪失などで攻撃が中断した場合に、枠を返す実装もあります。
122
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 01/10/2026
ゲーム開発終盤、「これ、前に直したバグでは?」ということがよくあります。 コードを見ると確かに修正されています。 原因は、その後に変更されたデータやパラメータです。特定のステージ、敵、速度だけで再発する厄介なタイプです。 バグ修正で再現条件をどこまで残すか、noteに書きました。 ゲームのバグ修正で「直したはず」が戻る。コードだけ見ても再発を止められない理由|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
ゲームのバグ修正で「直したはず」が戻る。コードだけ見ても再発を止められない理由|itchie@辰巳電子工業
ゲーム開発の終盤で、しょっちゅう起きることがあります。 「これ、前に直したバグじゃなかったっけ?」 コードを確認すると、修正はちゃんと残っている。マージで消えたわけでもない。それなのに、以前とよく似た不具合がまた出ています。 私もゲーム開発で何度か経験しました。 ありがちな原因の一つが、コードではなくデータやパラメータでした。 プログラム側では落ちないように修正している。ただ、その後にプ...
020
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 01/10/2026
「本当に削除しますか?」を増やせば安全、とは限りません。何度も出てくる確認ダイアログは、だんだん読まなくなります。「削除→OK」が指に染みる、警告への反応が弱くなるなど、いわゆる馴化に近い状態です。 だったら、戻せる操作は最初から戻せるようにしておきましょう。 削除した直後に「元に戻す」を出す、いったんゴミ箱に入れる、実行を少し遅らせるなど。Undoを用意する方法はいくつもあります。 ゲーム開発でも、エディタのCtrl+Zはまさにこれです。オブジェクトを動かすたびに「本当に移動しますか?」なんて聞かれたら仕事になりません。間違えても一手戻せるから、気軽に触れるんですね。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 01/10/2026
「恥バグ」の話がありますが、私としてはリメイクで「直せるものなら直してほしい」という気持ちがありますね。四半世紀以上前のバグがYouTubeにあげられていたりして、いつまで経っても許されない気がしていますw
000
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 01/10/2026
60fpsで動いていたゲームが、一瞬処理落ちすることがあります。重い描画も大量の敵も出ていない。原因はいろいろありますが、ロック待ちがフレームに影響するケースもあります。 その一つが「優先度逆転」です。 たとえば、ゲームの重要な処理が必要なロックを、バックグラウンド側の低優先度スレッドが持っていたとします。高優先度側は解放を待つことになりますが、これだけなら単なる待ちです。 そこへ中優先度のワーカースレッドが次々に走る。すると低優先度側がなかなかCPUをもらえず、ロックの解放がさらに遅れます。結果、高優先度側まで止まる。これが優先度逆転です。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 01/10/2026
「恥バグ」の話がありますが、私としてはリメイクで「直せるものなら直してほしい」という気持ちがありますね。四半世紀以上前のバグがYouTubeにあげられていたりして、いつまで経っても許されない気がしていますw
011
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 30/09/2026
同じC#でも、Unityのゲーム開発と.NETの業務システムでは「良いコード」の基準がかなり変わります。 UpdateとFixedUpdate、Profiler、GCを見るゲーム開発。DB、トランザクション、認可、ログを見る業務システム。 同じ言語なのに、守るものが違う。 この違いをnoteにまとめました。 C#を覚えたあとに知りたい。ゲーム開発と業務システムで変わる「良いコード」の基準|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
C#を覚えたあとに知りたい。ゲーム開発と業務システムで変わる「良いコード」の基準|itchie@辰巳電子工業
C#の面白いところは、Unityのゲーム開発でも、.NETの業務システムでも使われるところだと思います。 自分も最初は、同じC#なら考え方も近いのかなと思っていました。 もちろん、クラスも書きますし、interfaceも使います。LINQやasync/awaitなど、C#として共通して使える機能もたくさんあります。 ただ、実際に作るものへ目を向けると、かなり違います。 ゲームで横スクロール...
000
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 30/09/2026
炎上プロジェクトはこれまで何度か経験してきましたが、だいたい「質問が長い」という傾向があります。「Aの場合はBという認識ですが、Cから呼ばれた場合はDで、ただしEフラグがOFFの場合は従来通りFという理解でよいですか?」みたいな質問が増えてきます。 しかも、その前に「先週の障害対応では○○さんからこう伺っています」「チケット#1234にはこう書いてあります」と引用が付き、スクショまで付いてきます。 聞く側も面倒だと思います。本当なら「これ、Bでいいですか?」で済ませたいはずです。でも、それで聞いたら後から「そのケースは別です」「このシーンだけ違います」と言われたりします。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 30/09/2026
ゲームでもらった10連券。もらう側としては、期限なしが一番うれしいです。これは当然だと思います。それでも配布アイテムに期限が付くのは、単に「早く使ってほしい」からとは限りません。 無期限の券は、使われるまでゲーム内に残ります。すぐ使う人もいれば、半年後まで取っておく人もいる。これが何度も積み重なると「昔配った券が今どれくらい残っていて、いつ使われるのか」が読みにくくなります。 周年イベントを作るときも、過去の配布が大量に残っていれば、その存在を前提に報酬やガチャを考える必要が出てきます。期限ではなく、使えるガチャを固定する方法もあります。
120
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 29/09/2026
モックでは何度やっても成功するのに、本物のAPIにつないだ途端に壊れることは多いですね。 遅延、タイムアウト、レスポンスの順番逆転、null、再送。さらに厄介なのが「処理は成功したのに、失敗したように見える」ケースです。 正常系だけでは見つけにくい不具合と、少し性格の悪いモックの作り方についてnoteに書きました。 モックでは通るのに実環境で壊れる。Web APIテストで見落としやすいこと|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
モックでは通るのに実環境で壊れる。Web APIテストで見落としやすいこと|itchie@辰巳電子工業
たとえば、Webアプリの画面を作っているとします。 ユーザー情報APIを呼ぶ。購入履歴を取得する。ポイントを表示する。 モックでは何度やっても成功する。画面もきれいに表示される。エラーもない。 ところが、本物のAPIにつないだ途端、たまに表示がおかしくなる。 毎回ではありません。リロードすると直る。開発環境ではなかなか再現しない。 こういう不具合は厄介です。 モックが間違っていたとは限...
001
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 29/09/2026
ゲームの不具合調査で厄介なのは、「再現するが、そこに至るまでが長い」ケースです。例えば、「プレイ開始から3分17秒で、キャラクターが壁にめり込んで操作不能になる」。60fpsなら約1万2千フレームあります。 ログを全部読む前に、まずリプレイから再現に不要な操作を削ります。前半を丸ごと消したら再現しなくなった。これでは削りすぎです。区間を分けて、消しても同じ不具合が出る塊を探す。削れなくなったら、さらに細かく分ける。 これを繰り返すと、「ダッシュして、被弾した直後に壁へ接触したとき」くらいまで入力を縮められることがあります。実際には、操作の順番やフレーム間隔まで条件として残ることもあります。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 29/09/2026
ゲームで爆発や銃声を増やしていったら、味方NPCの「後ろから来るぞ!」みたいな警告ボイスが聞こえなくなることがありました。一番ありがちなのは、爆発音にセリフが埋もれているケースです。ただ、そもそもセリフが鳴っていないこともあります。 ゲームでは、同時に鳴らせる音の数に上限を設けることがあります。仮に64ボイスとして、銃声20、着弾20、爆発8、足音10……と重なれば、戦闘中は意外と簡単に上限へ近づきます。 ここで出てくるのが「Voice Stealing」です。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 28/09/2026
ラグで一番腹が立つのは、敵がワープすることではありません。壁に隠れて「よし、助かった」と思った後に撃たれることです。自分の画面では、もう完全に壁の裏。でも撃った側では、まだこちらが見えていた状態ですね。 オンラインFPSでは、相手の動きを少し過去の位置から補間して表示することがあります。命中判定でも、撃った側の時間まで巻き戻して「その瞬間、本当に当たっていたか」を見る方式、いわゆるラグ補償があります。 なので、 撃った側「普通に当てました」 撃たれた側「いや、もう隠れていました」 となります。 どちらも嘘ではありません。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 28/09/2026
ゲーム開発を始めたい人に「何から作ればいいですか」と聞かれることがあります。 私は、キャラが動く、ジャンプできる、敵に当たるとやられる、ゴールでクリア。それくらいの小さなゲームをまず1本作るのを勧めています。 最初から大作を狙うより、一度「完成」を経験する。その話をnoteに書きました。 ゲーム開発初心者は何から作る?最初の1本で入れたい最低限の機能|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
ゲーム開発初心者は何から作る?最初の1本で入れたい最低限の機能|itchie@辰巳電子工業
ゲーム開発を始めたい人から、「最初は何を作ればいいですか」と聞かれることがあります。 プログラム自体が初めて、という人ばかりではありません。Webや業務システムなら何年も作っている。C#やC++も書けるし、Gitも普通に使える。でもゲームだけは作ったことがない。そういう人も結構います。 そういう場合でも、最初から大きなものを作ろうとはしない方がいいと伝えています。 キャラクターが動く。ジャン...
000
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 27/09/2026
ログを増やせば、不具合の原因に近づける。そう思っていたのに、ログを増やした途端に再現しなくなることがあります。 観測そのものがタイミングを変える「プローブ効果」や、リングバッファ、異常時だけ詳細化する設計まで。 ゲーム開発と組込みに共通する、低レイヤーならではのログ設計の難しさをnoteにまとめました。 ログを増やしたら不具合が消えた。低レイヤー開発でログ設計が難しい理由|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
ログを増やしたら不具合が消えた。低レイヤー開発でログ設計が難しい理由|itchie@辰巳電子工業
ゲーム開発で低レイヤー寄りの仕事をしていると、「ログを出す」という行為そのものに、けっこう設計力が必要だと感じることがあります。 若い頃は、正直なところ「困ったらログをぶっこめばいい」と思っていた時期もありました。 変数の値が分からなければ出す。 状態遷移が怪しければ全部出す。 通信が怪しければ送受信内容を出す。 情報が多いほど調査しやすくなるように思えます。 ところが実際には、そう単純で...
001
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 27/09/2026
研修でチャットアプリなどを作ってもらっているとたまにありますが、テキスト入力フォームの文字数制限や、エディタの文字削除を実装していると、画面では「が」と一文字に見えるのに、一文字分を消したつもりが結合濁点だけ残ることがあります。 絵文字でも起こります。「👩‍👩‍👧‍👦」は、複数の人物絵文字をZWJ(U+200D)という見えない文字でつないだシーケンスです。コードポイントやコードユニット単位で削除すると途中で切れ、3人や2人の家族のように一部だけ残ったり、絵文字が分離したりすることがあります(下手したら家族が順に減るように見えます)。 人間には一文字に見えても、プログラム上の区切り方は一つではありません。
110
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 27/09/2026
アクションゲームや格闘ゲームでは、AとBを同時に押したつもりなのに、Aの技だけが出ることがあります。「同時に押したのに」と思いますが、人間の感覚での同時と、ゲームが同時押しとして認める範囲は必ずしも同じではありません。 実際には、AとBの押下タイミングに差が出ることがあります。ただし、単純な「誤差」ではありません。格ゲーや音ゲーのように数フレームが結果を左右するゲームでは、1フレームの違いにも意味があります。 そのうえで、同時押しを厳密な一瞬だけで判定すると操作が難しくなるため、タイトルによっては判定に一定の幅を持たせます。もちろん、広げすぎれば今度は暴発・意図しない技が出やすくなります。
131
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 26/09/2026
夜ステージは、ただ暗くすれば雰囲気が出るわけではありません。敵、段差、進行方向まで一緒に沈むと、夜らしさより先に遊びにくさが出てきます。 GI、Bloom、Shadowをどう使って、暗さの中に必要な情報を残すか。 「何を見せ、何を沈めるか」という視点から、ゲーム開発での夜の作り方をnoteに整理しました。 ゲームの夜ステージはなぜ見づらくなる?視認性を落とさず「夜」を作るライティング|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
ゲームの夜ステージはなぜ見づらくなる?視認性を落とさず「夜」を作るライティング|itchie@辰巳電子工業
ゲーム開発における夜ステージは、結構難しいものです。 かつて自分も「夜なのだから、画面を暗くすれば雰囲気が出る」と考えて調整したことがあります。 ところが見直してみると、確かに夜にはなっているものの、敵が見えない。段差も分かりにくい。進む方向まで感覚的に読みづらい。 雰囲気のある夜ではなく、ただ遊びにくい画面になっていました。 現実の夜をそのまま再現することと、ゲームとして気持ちよく遊べる...
000
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 26/09/2026
1年前は、Gitでコンフリクトが起きるたびに先輩を呼んでいた。今は差分と変更意図を確認し、自分で解消している。プルリクでも、以前は「何か指摘されないかな」と緊張していたのに、今は「ここはこう直した方がいいですか?」と自分から相談できる。それでも本人は「最近あまり成長していない」と言う。 たまに見かける場面ですが、正直、成長は自分では気づきにくいものです。 以前はSQLを書くたびに調べ、ログを見てもどこから確認すればいいか迷っていた。それが今では、特に意識せずできるようになっている。こんな感じで、繰り返した作業を意識せずできるようになることを、心理学では「自動性」と呼ぶそうですね。
110
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 26/09/2026
今回もジャンプネタです。ジャンプしたものの、あと少し届かなかったように見える。それでもキャラクターが崖に手を掛け、そのまま登ってくれるゲームがあります。アサシンクリードシリーズなどが代表例ですね。 見た目だけなら「届いていないのに、なぜ?」となりますが、手が実際に接触した瞬間だけで壁をつかむ判定をしている訳ではありません。 タイトルによって作りは違いますが、一例として、キャラクターの前方や下方向を調べて「この範囲に、つかまれる崖があるか」を判定します。条件を満たしたら、キャラクターを崖につかまる位置へ少し移動させる。こうした位置合わせを「スナップ」と呼ぶことがあります。
121
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 26/09/2026
switch文のbreak忘れ。否定形の変数にさらに「!」が付いた条件式。 ちゃんと読めば分かるのに、なぜか人間は「たぶんこう書いてある」と補完して読んでしまいます。 注意力だけに頼らず、誤読しにくいコードとコンパイラ警告でどう防ぐか。C言語の具体例を使ってnoteに書きました。 C言語で見落としやすい「switchのbreak忘れ」と「否定の否定」|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
C言語で見落としやすい「switchのbreak忘れ」と「否定の否定」|itchie@辰巳電子工業
以前、C言語で「= と == の取り違え」が話題になっていました。 それと同じくらい自分がやってしまうのが、「思い込みで読めてしまうコード」です。 書いてあるコードをそのまま読んでいるつもりなのに、頭の中では「たぶんこう書いてある」と勝手に補完してしまう。 典型的なのが、switch の break 忘れです。 switch (type) { case TYPE_A: Proces...
000
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 24/09/2026
ジャンプボタンを軽く押すと低く、長く押すと高く跳ぶ。昔から当たり前のように使われている操作で、感覚的には理解できますが、空中でボタンを離しただけで軌道が変わるのは、現実の物理として考えると不思議ものです。ジャンプ開始時の上向き速度と重力を固定しただけなら、一度跳んだ後の軌道はほぼ決まります。途中でボタンを離しただけでは、小ジャンプにはなりません。 そこでゲーム側で、ボタンを早く離した時に上昇を途中で打ち切るような処理を入れます。
101
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 24/09/2026
若いころは、画面いっぱいにエラーやスタックトレースが出ると、それだけでうんざりしていました。私が上から一行ずつ読んでいる横で、先輩は必要なところだけ拾って、さっさと原因候補を絞っていくように見えました。何を見ているのか、先輩に聞いてみました。と書くと、すんなり教えてもらえたようですが、実は先輩自身もなかなか言語化できなかったんですね。 エラーの内容を確認して、落ちた関数や行番号を見る。C/C++ならデバッガのコールスタックから、自分たちのコードに入った位置を追うこともありました。当然、言語や環境によって読み方は違っていました。
120
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 24/09/2026
JavaにはGCがあるのに、なぜメモリリークが起きるのか。 以前、ランキング集計の一時データをstatic Mapに残したままにしてしまい、ヒープダンプから参照元を追って原因を見つけました。 GC Root、Path to GC Roots、WeakHashMapの注意点まで、実際の調べ方と一緒にnoteに整理しました。 Javaのメモリリークはなぜ起きる?GCが回ってもstatic Mapの参照が残る理由と調べ方|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
Javaのメモリリークはなぜ起きる?GCが回ってもstatic Mapの参照が残る理由と調べ方|itchie@辰巳電子工業
以前、Javaでメモリリークを起こしたことがあります。 原因になったのは、ゲームのランキング集計で一時的に使っていたデータでした。 集計処理が終われば、そのデータも不要になります。ところが実際にはメモリ上に残り続けていました。 アセンブラなどを扱っていた頃なら、メモリの確保と解放はかなり意識します。一方、JavaにはGC(Garbage Collection)があります。 「使わなくなった...
000
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 23/09/2026
ゲームでダッシュやブーストを使った瞬間、「急に速くなった」と感じることがあります。でも、実際の移動速度だけが速度感を作っているわけではありません。分かりやすいのがソニックです。シリーズではブースト時の疾走感を音でも表現しており、作品によっては画角やカメラ設定も調整されています。モンハンのようなアクションゲームでも、カメラの動きや振動、画面効果などが攻撃や移動の勢いを感じさせる要素になります。 方法はタイトルによって違いますが、FOVを変えたり、カメラの動きや画面効果、風切り音などを組み合わせたりして、実際の移動速度とは別に速度感を演出することがあります。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 23/09/2026
画面にボタンや文字が並ぶと、かなり完成したように見えます。でも実際はそこからが長いです。 画面幅、長文、通信遅延、エラー表示、フォーム入力。ゲームUIでも同じです。 「見た目ができた」と「快適に使える」は別工数。フロントエンドで最後まで残る仕事をnoteに整理しました。 「画面ができた後」 が長い。フロントエンド開発で最後まで残る仕事|itchie@辰巳電子工業 @itchie_tatsumi note.com/itchie_tatsu...
note.com
「画面ができた後」 が長い。フロントエンド開発で最後まで残る仕事|itchie@辰巳電子工業
ボタンが表示される。文字も出る。入力フォームから送信できる。 画面だけを見ると、かなり完成したように見えます。 ところが実際の開発では、ここから意外と長い。 画面幅を狭くするとレイアウトが崩れる。想定より長い文章が入るとボタンから文字がはみ出す。特定のブラウザだけ少し表示が変わる。通信が遅いと読み込み中の表示から戻ってこない。 エラーになったときの文章も必要です。 入力を間違えたとき、ど...
000
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 23/09/2026
新バージョンのオンラインゲームを公開するとき、100万人に一斉に出してから不具合が見つかると、影響も100万人規模になりかねません。 そこで、いきなり全員には出さず、まず一部だけに新バージョンを適用して様子を見る方法があります。 仮に最初は1%。エラー率や応答時間などを確認し、問題がなければ10%→50%→100%と広げていく。異常が出たら、その段階で止めたり旧版へ戻したりできます。この数字はあくまで説明例で、実際の割合や進め方はサービスによって変わります。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 23/09/2026
ゲームを60fpsで動かしているのに、物理で動くキャラをカメラで追うと、なぜかガクつく事があります。FPSは安定しているので、最初は描画負荷を疑いますが、原因の一つは「描画と物理が別の時計で動いている」事です。 「処理落ちと思ってプロファイラを睨んだ、結局インスペクター側の設定を見直で直って拍子抜けした」ということもありました。 Unityでは描画のUpdateとは別に、物理計算はFixed Timestepで進みます。デフォルト設定なら0.02秒ごと、つまり50Hz。画面が60fpsでも物理状態まで毎秒60回更新されているとは限りません。その差で位置の変化が段階的に見えることがあります。
121
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 23/09/2026
ゲームを60fpsで動かしているのに、物理で動くキャラをカメラで追うと、少しガクガクすることがあります。FPS表示は安定していて、最初は描画負荷を疑いたくなりますが、原因の一つは「描画と物理が別の時計で動いている」ことです。 「処理落ちと思ってプロファイラとにらめっこしたが、結局インスペクター側の設定を見直したら直った」事もありました。 Unityでは描画のUpdateとは別に、物理計算はFixed Timestepで進みます。デフォルト設定なら0.02秒ごと、50Hz。画面が60fpsでも、物理状態まで毎秒60回更新されてるとは限りません。その差で位置の変化が段階的に見える事があります。
100
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 22/09/2026
オンライン対戦で「なんか動きがガタつく」「音が途切れる」と感じることがあります。通信遅延(レイテンシ)の平均値だけを見て「100msだから大丈夫」と判断してしまうかもしれませんが、実はもう一つ重要な指標があります。 パケットの遅延が毎回きっちり100msなのと、50ms→150ms→40ms→160msと揺れるのでは、どちらも平均は100ms。でも、体感まで同じとは限りません。遅れの大きさだけでなく、遅れ方が安定しているかも結構重要です。 こうしたパケットごとの遅延のばらつきは、一般に「ジッタ(Jitter)」と呼ばれます。
110
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業 @itchie-tatsumi.bsky.social · 22/09/2026
RPGで瀕死になると画面が赤く点滅する演出があります。HP30%で警告が出る仕様にして、30%を超えたら消す。この作りだと、回復とダメージが重なってHPが29%→31%→29%と動いた時、警告も出たり消えたりしてしまいます。 こういう時は、状態に入る条件と戻る条件を少しずらす方法があります。 たとえばHP30%以下で警告を出したら、30%を超えてもすぐには消さず、35%以上まで回復したら消す。30〜35%の間は、それまでの状態を維持します。数字は説明用です。 こうした考え方を「ヒステリシス(Hysteresis)」と呼びます。
100