𡈽方 雅之@プロセス思考

88.4K posts

𡈽方 雅之@プロセス思考 banner
𡈽方 雅之@プロセス思考

𡈽方 雅之@プロセス思考

@hijk0909

開成→東大(副業で ENIXのゲームプログラマー(ドラクエ5 AI 等)) → NEC(SE・プロマネ・全社業革リーダ) → 50歳で脱サラ起業、現在 (株)カレントカラー代表取締役、『プロセス思考』伝道師。リンク先で業務改善・事業改革・組織変革のお役立ち情報を無料公開中。 ゲーム・アニメ・音楽・科学・哲学が好き♪

東京都 Katılım Ocak 2010
2.6K Takip Edilen19.6K Takipçiler
Sabitlenmiş Tweet
𡈽方 雅之@プロセス思考
【プロセス思考】を身に着ければ、仕事でも生活でも、ミスが減り、スピードが上がり、無駄がなくなり、目的に向かって着実に前進できるようになります。一億総プロセス思考で、ニッポンを元気にしよう! ●拙書→ amazon.co.jp/dp/4344926129/ ●YouTubeチャンネル→ youtube.com/channel/UCY46M…
𡈽方 雅之@プロセス思考 tweet media
日本語
22
118
1.4K
0
𡈽方 雅之@プロセス思考
WinDirStat で 1TBのハードディスクの中身を可視化。やっぱ動画ファイルを繰り返しバックアップしているのが地味に無駄。
𡈽方 雅之@プロセス思考 tweet media
日本語
0
0
0
31
𡈽方 雅之@プロセス思考
バックアップ、後回しになりがち ちょっと時間が空いたので、OneDrive上の業務情報を手元の大容量HDDにバックアップなう。この作業、起業以来続けているが、必要かなぁ。過去のアーカイブを圧縮したり、圧縮前情報を削除したりを、自動化していないので、まぁまぁ手間暇かかる。とはいえ、自動化するほど頻繁にも行わない。 実のところ OneDriveが壊れたとして、前月のバックアップなんて役に立たない。それに、OneDrive の信頼性に比べたら、手元の古いHDDが壊れる可能性のほうが高い。最も古いアーカイブは、法律上の保管義務期限の7年前に達している。 バックアップの頻度や保管について、運用を見直す時期かも知れない。
日本語
1
0
5
89
𡈽方 雅之@プロセス思考
ゲーム開発では、「この基本設計に乗せられる限界まで、様々な発想を実装しきった」と納得できたら、仕様を凍結して仕上げてリリースしている。……私自身の人生も、最期は、こんな感じでリリースしたい。
日本語
0
0
5
140
𡈽方 雅之@プロセス思考
@kobefs 「0→1は大きい」……これは本当にそう思います。素晴らしいです。金額の多寡なんて関係ない。実際に自分のフトコロにお金が入ってくる経路を自力で開拓できる人だけが、生き残れる時代だと思います。
日本語
0
0
1
10
𡈽方 雅之@プロセス思考
AI をエージェントとして使いこなす人もいれば AI のエージェントとしてコピペに勤しむ人もいる
日本語
1
0
8
184
𡈽方 雅之@プロセス思考
「DXとは?」 ・Digitization(デジタイゼーション)  アナログ情報を デジタル情報にすること ・Digitalization(デジタライゼーション)  デジタル技術を用いて、手作業を減らし  プロセスの効率性を向上させること ・DX(デジタルトランスフォーメーション)  デジタル技術を用いて、企業の風土や  ビジネス、サービス、プロセスを変革すること 単なるITツールの活用を、DX とは呼ばない むしろ 無秩序に ITツールを導入していくと 部分最適や属人性が進んでしまう DX を推進するには、組織全体で 業務プロセスを標準化する 「プロセス思考」が不可欠です! 【プロセス思考の道具箱】 関連資料:「DX概論」(pdf) current-color.co.jp/lib/CC_%E6%95%…
𡈽方 雅之@プロセス思考 tweet media
日本語
0
0
2
88
𡈽方 雅之@プロセス思考
迷ったら、立ち止まる なぜ迷っているのかを、考える 何がしたかったのかを、思い出す いつまでに、何を達成したいのかを 思い描く 目標=達成基準+期限 を 言葉にする すると、迷いは消える
𡈽方 雅之@プロセス思考 tweet media
日本語
0
0
2
80
ISO00TEN
ISO00TEN@NOUTARIN_10·
@hijk0909 C言語出身のjs使いです。わかりみ!
日本語
1
0
2
925
𡈽方 雅之@プロセス思考
ゲームプログラマーだけかも。「GC機能を持つ高級言語で、厳密にメモリ管理」という苦労話に共感して頂けるのは。
𡈽方 雅之@プロセス思考@hijk0909

JavaScript も 結局 C言語 いまBABYLON.jsで開発中のゲームは、100体以上のキャラクターを60fpsで長時間動かすので、GC を極限まで減らさねばならない。毎フレーム動かす処理では、暗黙的なオブジェクト生成も見つけて潰す必要がある。 また、グローバル定数を壊して、影響が出るはずの無い他のキャラクターの速度や色が変わるというバグを、何度か起こしてしまった。これも防がねばならない。 いろいろ考えて導き出した答えが、コレ: 「プリミティブ以外、イコールは使用禁止」 もう、これで行こう。例外は「明示的に対象オブジェクトへの参照を保持したいケース」「関数の引数として構造体を渡すケース」。これ以外は「イコールを見つけたら、あやしい」と思うことにする。 クラスの construct時に、プロパティであれテンポラリ変数であれ、メモリを使うものは全てプリアロケーションし、毎フレームの処理では一切、動的なメモリ確保は行わない。 ……あぁ、これは、マシン語やC言語でゲームを作る時には当然だった感覚だったな。思い出した。 「プリミティブ以外、イコールは使用禁止」 (効果1)参照共有の事故を完全に防ぐ Vector3 / Color3 / Quaternion / Matrix / Array など、JavaScript の参照型は、「イコールで渡した瞬間に共有」になり、定数破壊事故の根源となる。規約で禁止すれば、事故はゼロ。 (効果2)暗黙的な new を完全に排除 ベクトルの add(), subtract(), scale() など多くのメソッドはイコールでの代入時に内部で new を行う。これを ~InPlace()系関数、~ToRef()系関数、.set()関数、.copyFrom()関数 など「既にメモリ確保されているものを更新する関数」に置き換える。結果、見た目からもイコールが消える。これで GC を完全に抑制できる。 (効果3)プリアロケーションが徹底される 「イコール禁止」を実現するには、その前提として「constructorで全ワーク変数を確保」「update()内で一切newしない」が徹底されることになる。見た目で判断できるので、コードレビューが圧倒的に楽になる。 それでも残るイコールは、プリミティブか、ライフサイクルが厳密に管理されている他キャラクターのインスタンスへの参照を保持する場合だけになるはず。実際、この方針でプログラムを書き換えて、100体以上のキャラクターで20万程度のArrayが発生した状態で2時間以上回したがHeapは全く増えずフルGCも一度も掛からなかった。よしよし。

日本語
10
62
357
59.1K
𡈽方 雅之@プロセス思考
@kero1209 「リアルタイムの描画」と「ガベージコレクション」は、やっぱり本質的に相性が悪いのだなぁと感じられる歴史の証人コメントだと思いました!
日本語
0
0
0
219
kero
kero@kero1209·
@hijk0909 リアルタイムのシミュレータの描画部分をJavaで作っててメモリ管理をgcに極力させない様な事してました。まだjava 1.0βから1.0ぐらいでGCも洗練されてなかった。
日本語
1
0
1
986
knowri
knowri@jack_frost_will·
@hijk0909 web寄りの仕事で使ってたElasticsearch(Java製自前で運用)も昔はヒープを掃除してあげないとパンクしてたのでわかりみ
日本語
1
0
1
448
𡈽方 雅之@プロセス思考
検索エンジンと人工知能のせいで、仮説を持たずに正解を得たがる人が急増した。検証しないので、目の前で急激にバカになっていく。……アナタは大丈夫?
日本語
1
0
12
231
𡈽方 雅之@プロセス思考
@bugfire01 ご返信ありがとうございます!とても難しい問題です。「あぐらをかけるなら、あぐらをかくべきである」(GCの恩恵に預かるべきである)と改めて感じました。運用条件によって、ここまでコーディングスタイルが変わるのだと、私も、とっても勉強になりました!
日本語
0
0
2
351
bugfire2009
bugfire2009@bugfire01·
@hijk0909 GC自動の言語でも、GCさせたらあかん! C#でメモリ管理あぐらかいてたので、 とても、勉強になりました。
日本語
1
0
4
454
𡈽方 雅之@プロセス思考
私はレースゲームとしての『グランツーリスモ』の哲学が好き。リアルレースシミュレータとの副題はあったが、後発の「より物理的にリアルな」競合のレースゲームに対して、「私はリアルさよりも極上のレース体験を優先している」と言い切った哲学が好き。
日本語
0
1
8
208
𡈽方 雅之@プロセス思考
私が40年の仕事人生で得た、最も役立つ経験とは、「コレくらい苦労しないと、成功しない」という感覚。……その基準に達していないのに成功してしまったら、「何か漏れているかも知れない」「偶然かも知れない」と、自動的に反省モードに入る。
日本語
0
0
12
164
レンスラ様
レンスラ様@rennsura_OA·
@hijk0909 逆にあえて減らさずに悪い処理でやってみました。美しい 虹色のおもちゃや蝶々もこんな感じになるのだろうか…
レンスラ様 tweet mediaレンスラ様 tweet mediaレンスラ様 tweet media
日本語
1
0
1
34
𡈽方 雅之@プロセス思考
JavaScript も 結局 C言語 いまBABYLON.jsで開発中のゲームは、100体以上のキャラクターを60fpsで長時間動かすので、GC を極限まで減らさねばならない。毎フレーム動かす処理では、暗黙的なオブジェクト生成も見つけて潰す必要がある。 また、グローバル定数を壊して、影響が出るはずの無い他のキャラクターの速度や色が変わるというバグを、何度か起こしてしまった。これも防がねばならない。 いろいろ考えて導き出した答えが、コレ: 「プリミティブ以外、イコールは使用禁止」 もう、これで行こう。例外は「明示的に対象オブジェクトへの参照を保持したいケース」「関数の引数として構造体を渡すケース」。これ以外は「イコールを見つけたら、あやしい」と思うことにする。 クラスの construct時に、プロパティであれテンポラリ変数であれ、メモリを使うものは全てプリアロケーションし、毎フレームの処理では一切、動的なメモリ確保は行わない。 ……あぁ、これは、マシン語やC言語でゲームを作る時には当然だった感覚だったな。思い出した。 「プリミティブ以外、イコールは使用禁止」 (効果1)参照共有の事故を完全に防ぐ Vector3 / Color3 / Quaternion / Matrix / Array など、JavaScript の参照型は、「イコールで渡した瞬間に共有」になり、定数破壊事故の根源となる。規約で禁止すれば、事故はゼロ。 (効果2)暗黙的な new を完全に排除 ベクトルの add(), subtract(), scale() など多くのメソッドはイコールでの代入時に内部で new を行う。これを ~InPlace()系関数、~ToRef()系関数、.set()関数、.copyFrom()関数 など「既にメモリ確保されているものを更新する関数」に置き換える。結果、見た目からもイコールが消える。これで GC を完全に抑制できる。 (効果3)プリアロケーションが徹底される 「イコール禁止」を実現するには、その前提として「constructorで全ワーク変数を確保」「update()内で一切newしない」が徹底されることになる。見た目で判断できるので、コードレビューが圧倒的に楽になる。 それでも残るイコールは、プリミティブか、ライフサイクルが厳密に管理されている他キャラクターのインスタンスへの参照を保持する場合だけになるはず。実際、この方針でプログラムを書き換えて、100体以上のキャラクターで20万程度のArrayが発生した状態で2時間以上回したがHeapは全く増えずフルGCも一度も掛からなかった。よしよし。
日本語
2
36
177
74.4K
𡈽方 雅之@プロセス思考
@itchie_tatsumi 最近初めて3Dゲームを作ってみたのですが、仰る通り、「リアルに寄せること」と「ゲームとして成り立つこと」とは別なんだと思い知りました。妥協点を探す作業の連続でした。
日本語
1
0
2
223
いっちー|ゲームプログラマー・プロデューサー出身のSS事業責任者&EM @辰巳電子工業
ゲームにおいて物理演算は現実を再現しているように見えますが、実際はかなり違います。やっているのは「現実の再現」ではなく「破綻しない近似」です。現実は連続ですが、ゲームはフレーム単位で処理されます。言い換えると「瞬間移動の連続」です。そのため高速に動く物体は、1フレームの間に壁をすり抜けることがあります(いわゆるトンネル現象)。 さらに計算は無制限にできるわけではありません。CPUリソースはグラフィックやAIとも共有されており、物理演算は限られたミリ秒の中でやりくりしています。この制約の中で、誤差を許容しながら安定させています。 また、現実通りに計算すると逆に不安定になります。無限に跳ね続けたり、振動して崩れたりするため、エネルギーを減衰させるなどの調整が入ります。 加えて重要なのは「体験」です。例えば当たり判定を少し広げるのは、空振りによる理不尽な結果を防ぎ、ストレスを取り除くためです。 つまり物理演算は、現実の再現ではなく「制約の中で破綻せず、自然に感じられる挙動を作る技術」と言えます。 #エンジニア #ゲームプログラマー
日本語
5
22
93
8.6K
jima
jima@jima0111·
@hijk0909 javaで子プロセスの上げ下げ繰り返すと、メモリーリークして半年後くらいに落ちたりするんですが、対策してないの多いですね。 java使ってる初物はここから調べてダメ出ししてました。 一週間くらいいじめないと見つからない。 初めて見たのは2000年頃。
日本語
1
0
1
346