考えたこととかのメモ
ここでは足りない頭で考えたこととかをメモしておこうと思います. 主に普段の日記に書くにはやや長い内容を書きます.
目次
Twitterで「現代の左翼運動は金持ちのお遊びに見えるといわれるのはなぜだろう」という発言を見た. (2025/10/21)
愚鈍の役割について (2025/10/21)
minecraftのmod制作にAIが利用できるかという話(2025/10/25)
minecraftの攻撃ダメージの話(2025/10/29)
計算物理・化学のプログラミングがゴミという話(2025/11/22)
マウスウォッシュが口内射精みたいだった話(2025/11/24)
ゲームのmod使用について(2025/11/30)
オウム事件が特撮に与えた影響ってデカいのかなあって話(2025/12/05)
もどる
- Twitterで「現代の左翼運動は金持ちのお遊びに見えるといわれるのはなぜだろう」という発言を見た. (2025/10/21)
- しかし, そもそも左翼運動が完全に労働者階級によって担われた例が歴史上どれほどあっただろうか.
- 確かに, 社会主義革命の多くは労働者や農民も関わってはいた. しかし革命の中枢は必ずしもそうではない.
レーニンは中流階級, 毛沢東は地主の子, ゲバラもブルジョア, ポルポトに至っては王族とつながりのある名士の家である.
- この現象はそもそも, マルクス主義が難解であり, 革命家となるためにはある程度の教育を受けている必要があることに起因する.
実際これについては「共産党宣言」でも説明されており, 労働者の革命を支える, 知識を持った革命前衛が必要であるとされている.
つまり革命家であるためには, ある程度の金持ちの家に生まれ, そして十分な教育を受けていることが必要条件となるのである.
- 日本で起きた左翼運動も, 特に60年代から70年代にかけての新左翼運動にはこの側面が非常に強く表れている.
大学進学率が今と比べ非常に低かった当時, アルバイトと勉学に忙殺されるわけでもなくデモだ火炎瓶だ腹腹時計だに没頭できた学生はどのような階級だろうか?
ある程度裕福な家の出身者である. 彼らは現実から目を背け, 妄想の中の労働者のみに語り掛け, 飛行機を乗っ取りホテルに立てこもり, 本来の労働者からの支持を失った.
これを新左翼運動の失敗と断ずるのは簡単だが, むしろこれは革命前衛というシステムそのものに欠陥があるのではないかと考える.
- 左翼運動がお遊びであるかは別として, 少なくとも金持ちのものであったのは事実である, これからもしばらくの間はそうだろう.
少なくとも「労働者による革命」などというお題目は早々に捨て去ってしまい, 「賢い俺たちがお前らワープアを地獄の底から引きずり出してやるからな」くらいの気概でいるのが吉だろう.
- 愚鈍の役割について (2025/10/21)
- 1984という小説がある. まあ有名だし, 名前も聞いたことないという人はいないだろう. この小説には"Ignorance is strength"というフレーズが登場する.
直訳すると「無知は力なり」である.
- 前項で述べた, マルクス主義の難解による左翼運動の独占性との対比にもなっているのであるが, 昨今のネット世論を騒がせている「愛国心」の動き. これについて考える.
- さて, 臆せずに名前を出すが参政党や日本保守党といった日本のネオナチ運動の支持者に共通するカジュアルなゼノフォビア.
昔懐かしぜロ年代の在特会を彷彿とさせるが, 手法はより洗練されている. ただここではその洗練ではなく, ゼノフォビアのほうに着目していきたい.
- ネオナチ政党の間に共有されているのは, 理論ではなく「お気持ち」である. これは前項の左翼運動との最大の違いだろう.
つまり, 革命前衛を必要とした左翼運動と違い, 「お気持ち」さえ共有していれば誰でも「愛国者」であり, 誰でも「革命家」である.
- では, なぜこのような運動が最近になっていきなり浮上したのだろう. 言葉は悪いが, 「バカ」に厳しい世の中になったからだと私は考える.
- かつて, 愚鈍な人間は今ほど肩身が狭かったわけではない. 彼らを救ったのは宗教であった. 宗教は「愚鈍」を「敬虔」と言い換えた.
神に純粋な祈りをささげるのであれば, 愚鈍であることは大した問題ではなかった. 場合によっては「愚直」として賞賛すらされた.
- 無神論の国や世俗国家でもそれは例外ではなかった. 例えばソビエト連邦では建前上, 宗教が否定された. では愚鈍な人が生きづらかったかというと, そうではない.
スタハノフ運動のような大衆動員によって, 愚鈍には「勤勉」という別名が付与された. バカでもバカなりに手を動かせば, それは評価されるということである.
もちろんそれは建前であったかもしれないが, 愚鈍を生きづらさから解放してくれるという意味では宗教と大きな差はなかった.
- では現代日本はどうだろうか. 日本人が無宗教であるというのは否定されて久しいが, 宗教に心の底から救いを求めている日本人は多くないだろう.
その一方でワーキングプアをはじめとした社会問題が濃い霧のように立ち込めていて, 勤勉に救済を求めるのも難しい. 技術は高度化し,
求められる情報処理能力だけはますます大きくなっていく. 愚鈍のレトリックが消失し, 愚鈍は「愚鈍」として評価される社会である.
- このとき, 「敬虔」や「勤勉」に救済を得ていた愚鈍はどういった行動をとるか. 換言の衣を脱がされた以上, ちっぽけなプライドを守るには今持っているものを誇るしかない.
そして誰しも生まれた時点で国から与えられるものがある. 国籍である. 何を失っても, 国籍だけは手元にある. 努力する体力すら失われた愚鈍にとって, プライドを守る最後の砦である.
- ネオナチ政党はこういった層をうまく取り込んだといえるだろう. かつては宗教やワーカホリックが役割を与えていた層に, 今度は「愛国者」という役割を与えた.
「愛国者」は, 国籍が愚鈍が共通して持つ属性の中で最大公約数的であるという点でクリティカルである. 例えば「絵が描ける」「特定地域に住む」「きのこの山を好む」はクリティカルではない.
なぜなら絵が描けない愚鈍も, 特定地域に縁がない愚鈍も, たけのこの里を好む愚鈍もいるからである. しかし国籍は誰もが持っている, いわば最大公約数の属性である.
同値類的にまとまった集団は連帯感を共有するため強く, そして国籍のプライドは人々の同値関係の中で最も規模の大きい集団を生成できる.
- ここで少し話はそれるが, こういった愚鈍をターゲットにした政党はネオナチ政党が初めてというわけではない. れいわ新選組も発想としては非常に近いと考えている.
しかし彼らは明らかにネオナチと比べて伸びが悪い. それは彼らが「生」という, 商集合が単一の要素しかないような同値関係を主張したからである.
例えば「自分は太陽系に住んでいるなあ」と実感することは日常でそうそうない. なぜなら太陽系の外から来た人に会うことはないからである(もしこのページの読者で太陽系外から来たという人がいたらごめんなさい).
しかし, 例えばガラス張りの部屋に閉じ込められていて, 外を人が歩いていたら, 自分はガラス張りの部屋に閉じ込められていると大いに実感するだろう. 何が言いたいかというと,
人は自分の属する集合と属さない集合の両方を観測したときに, 初めて自分が集合に属していると実感する. 「生きているだけで尊い」は, したがってスローガンとして適切ではない.
なぜなら生きていない人間を観測することはめったにないからである. 自分が今「生きている人間」の構成員だと実感するタイミングは, 日常生活を送るうえでほとんどないだろう.
国籍はそうではない. 外国籍の人と会話することは今や全く珍しくない. 外国籍の人間を認識することで, かえって自分の国籍が意識され, 属性として有効になるのである.
- 愚鈍にこのような「愛国者」の役割を与える隙を作ってしまったこと, これは右派・左派問わず論壇全体で大いに反省すべき事案だろう. これは予期しえたことだったからである.
- 無知は力なり. 社会に役割を奪われた愚鈍たちの復讐が始まる.
- minecraftのmod制作に生成AIが利用できるかという話(2025/10/25)
- minecraftのmodの開発にAI(ChatGPT)を利用してみて, どれくらい使えるかを少し検証してみたという話.
本来ならQiitaかzennにでも書くべき話なのかもしれないが, そんな技術的に込み入った話でもないのでここに書く.
- まず軽く前提知識の話. Minecraftのmod開発はJava(まれにKotlin)で行われる. Minecraft Forgeと呼ばれる有志開発のAPI群があり,
Forgeのクラスをimportして処理を行うのが基本である(最近ではFabricやNeoForgeなどの異なるAPIも存在する).
- 勉強の項目で触れた通り, 筆者の使用言語はC++であり, Javaの知識はあまりない.
ただしC++とJavaは似た文法を持っているので頑張ればある程度読める, のレベルである.
- ゼロからmodを作るのはかなり面倒なので, 筆者はよくMCreatorと呼ばれるフリーのノーコード開発ソフトで大枠を作り,
このソフトで手が届かない部分をVScodeでシコシコ編集するという開発体制をとっているが, 実装したい処理がどのクラスのどのメソッドに関連しているのかというのは,
これはある程度技術的な蓄積が必要な部分で, まだ初学者の私は苦労することが多い. Forgeの公式ドキュメントやStackOverflowと格闘する日々である.
- 本題に入る. 今回どのような処理の実装をChatGPTにやらせるかというと「コマンド権限の変更」処理である.
- コマンドとはminecraftにおける「チート機能」のことで, サーバーでは管理者以外は使用不能になっているのが基本であり, またシングルプレイでもサバイバルモードではオフになっているのがデフォである.
このチート機能の権限を書き換えるような処理を実装してみようというのが今回の目標である. はっきり言って技術者倫理に反した荒らしみたいな処理であるが, ホラー系のmodやPVPのmodでは割とありがちである.
おそらく上級者の方ならサッと書けてしまう処理だろうが, Forge初心者とAIでこの処理が書けるだろうかという話である. なお筆者はまだForge初心者であるため, 用語や解説に不正確な点が多数あるだろうがご容赦願いたい.
- より具体的な要件・処理内容は次のようになる. まずMinecraftのバージョンとしては1.20.1, Forgeのバージョンは1.20.1の47.4.0である. 実現したい処理としては,「コマンド権限が0のプレーヤーが特定のワードをチャット欄に打ち込むと,
コマンド権限レベル2以上を取得する」という流れである. コマンド権限とはチートを使用できる権限のことで, Java Editionにおいてコマンド権限レベル2とは基本的なチート操作がほぼすべて可能であることを意味する.
- 特定のワード(今回は管理者権限の要求ということで"givemeauth"とした)がチャット欄に打ち込まれたことを検知する処理は面倒なうえに本質的でもないのでMCreatorで組み, 検知後の処理を実装した.
- そもそもプレーヤーごとのコマンド権限がどこに格納されているのか知る必要があったため, 「Minecraft forgeにおいてコマンド権限はPlayerクラスにメンバ変数として格納されていますか?また格納されている場合はどの変数に格納されていますか?」
という質問を行った. 返答は結構長かったのでまとめると,
- サーバーにおけるプレーヤーの実装はPlayerクラスではなく, そのサブクラスであるServerPlayerに実装されている.
- ただしServerPlayerクラスは直接のメンバ変数としてコマンド権限を格納していない.
- 実際にコマンド権限を取得する際に行っている処理は, まず親クラスであるEntityクラスのメソッドであるcreateCommandSourceStackを呼び出す.
このメソッドはServerPlayerクラス(もっと言えば親クラスであるEntityクラス)のオブジェクトからCommandSourceStackクラスのオブジェクトを生成するメソッドである.
- このCommandSourceStackクラスのメンバ変数として, 権限レベルであるpermissionLevelが変数として格納されている.
- この変数はprivateなので, アクセスする際にはServerPlayerのメソッドgetPermissionLevelを利用している.
- このメソッドはServerPlayerからメソッドgetGameProfileを用いて生成されるオブジェクトGameProfileを引数に取る.
- このメソッドが外部のjsonファイルから権限情報を読み込み, 判定を行っている.
であった.
- この情報の正誤は実装時に検証するとして, 続いて「Minecraft Forge 1.20.1でプレイヤーのコマンド権限を動的に変更したいと考えております. 適切なメソッドを教えてください.」
という質問を行った. 3つほど方法が提案されたが, 実際に実装に用いた手法の提案は以下のような内容であった.
- PlayerListクラスにはコマンド権限の付与・剥奪処理を行うaddOp/removeOpメソッドが定義されている.
- PlayerListオブジェクトはServerPlayerのメソッドgetPlayerListによって生成される.
- またServerPlayerのメソッドgetGameProfileから対応するPlayerのGameProfileオブジェクトを生成する.
- addOpメソッドを用いて権限を再設定する. ただしこのメソッドは引数としてOpEntry型をとるので, このオブジェクトをnewで生成してaddOpメソッドを適用する.
- importするクラスはcom.mojang.authlib.GameProfile, net.minecraft.server.level.ServerPlayer, net.minecraft.server.players.PlayerList, net.minecraft.server.players.OpEntryである.
であった.
- さて, 実際にはこの実装はうまくいかない. そもそもForge 1.20.1のPlayerListクラスにaddOp/removeOpメソッドは存在しない. おそらく過去のバージョンの情報を学習してしまったものと考えられる.
さらにOpEntryクラスも存在しない. これを指摘すると「お前が十分に探してないだけじゃないの~?(意訳)」などとごね始めたが, とりあえず存在しないことを認識させたので
「今までの議論をもとに, Minecraft Forge 1.20.1でプレイヤーのコマンド権限を動的に変更するメソッドを再度提案してください.」とお願いしたところ, OperatorEntryなるクラスが実在するものとして実装コードを提案してきたので,
これ以上は困難と判断し, ここからは自力で実装することにした.
- ここまでだとチャッピー君はいい加減なことばっかし言ってるように見えるが, 少なくとも前半のコマンド権限の構造については(多少不正確なところはあれど)大きく間違ったことは言っていない.
したがってForge開発においては, クラスの構造を把握する用途なら有用であるといえるだろう. しかし実装にはまだ少し難があるように感じた.
- さて, 肝心の実装である. 確かにPlayerListクラスにaddOp/removeOpメソッドは存在しないが, 代わりにop/deopメソッドが存在する.
これはGameProfile型のオブジェクトを引数にとり, 対応するServerPlayerにコマンド権限を付与するメソッドである. したがって実装の流れとしては以下のようになる.
- com.mojang.authlib.GameProfile, net.minecraft.server.level.ServerPlayer, net.minecraft.server.players.PlayerListをimportし,
voidを返り値(つまり何も返さない)としてsetPlayerPermissionLevel(ServerPlayer player) という名前でメソッドを定義する(この名前はわかりやすければなんでもいい).
- PlayerList型のオブジェクトをplayerのメンバ変数であるserverのメソッドgetPlayerListで生成する.
- GameProfile型のオブジェクトをplayerのメソッドgetGameProfileで生成する.
- 生成したPlayerList型オブジェクトのopメソッドにGameProfileオブジェクトを渡し, コマンド権限を付与する.
- 最後にこのsetPlayerPermissionLevelを文字列認識後の処理に組み込む. MCreatorのコード生成は常にPlayer型でプレーヤーの情報を扱うので,
この関数にオブジェクトを渡す際はServerPlayer型にキャストする.
これで実際にコマンド権限が変更されるか確認したところ, チートオフのワールドでもgivemeauthと打ち込むことでコマンドが解禁されることが確認された.
マルチプレイでの挙動は未検証である. これは筆者にminecraftをともにプレイする友人がいないことに起因する.
- 結論として, minecraftのmodを完全に生成AIがコーディング(いわゆるバイブコーディング)するのはまだ厳しいだろうと感じた. しかしクラスの構造や関係を把握するのにはかなり有用であったので,
「Javaは最低限わかるけどForgeの知識はない」レベルの層には役に立つのではないかと感じた.
- minecraftの攻撃ダメージの話(2025/10/29)
- はい, 寝る前にジャムおじさんのお話聞こうね. 今回はminecraftにおいて, 1回の攻撃でどれだけ大きなダメージを与えられるかという話である.
- 小学生のころ, 誰しも一度はダイヤの剣にめっちゃ強いエンチャントをつけてエンダードラゴンを殴ったりしたものだろう. これをまじめに検証しようという話である.
- なお1.21以降ではメイスが, また本項執筆時点ではスピアというスピード依存武器の追加が発表されているが, ひとまずJava版1.20.1での検証としたい. またそもそもminecraftには思い通りにダメージを与える/damageコマンドがあるが, 野暮ったいので禁止カードとする.
なお検証にはこちらのmodを使用している.
- まず最も簡単に思いつくものとして, ネザライトの剣にエンチャントで鋭さ5を付与してみる. 一撃で与えられるダメージは11ダメージ. クリティカルを当ててもその約1.5倍の15ダメージとなった.
普通のプレイにはこれで申し分ないだろう.
- ではここからはコマンドを使う. コマンドを使って付与できる最大のレベルは255である(昔は32767だった気がするがいつごろからか255になっていた). 鋭さ255のネザライトの剣で殴ってみよう.
- ダメージは通常時で136, クリティカルで140となった. エンダードラゴンなら2発, ウィザーなら3発, ウォーデンなら4発である. ぶっ壊れ性能といっていいだろう. こんなものがお出しされたらゲームバランスは崩壊である.
- なお純粋な攻撃力なら斧のほうが強いが, ここまでくると剣も斧も大差はない.
- マインクラフトには攻撃力を上昇させる手段がもう一つある. 攻撃力上昇のポーションである. これを最大値の255までつけて前述のネザライトの剣255で殴ったところ,
ダメージは通常で904, クリティカルで1292ダメージとなった. バニラのモブはすべてワンパンである.
- さて, minecraftの公式wikiを見てみよう. ダメージの項にはダメージの計算機が載せられている. この計算機で先ほどの条件を計算すると,
極端な条件では若干ずれるが, 大体正しい値が出る.
- 実はminecraftで一撃で与えられる「近接攻撃の」ダメージの値には上限がある. 細かい話は多分色々調べれば出てくるが, 近接攻撃で与えられる最大のダメージは3072ダメージ(ハート1536個分)である.
何らかの方法(mod等)で数値上はこれ以上の攻撃力をもつ武器を作ったとしても, 3072ダメージを超えるダメージは与えられない. 正確には近接攻撃が2048ダメージで, それにクリティカル倍率1.5倍をのっけたのが3072ダメージである.
- ところが「近接攻撃の」と強調した通り, 近接攻撃に限らなければさらに大きなダメージを与えることは可能である. なんでそんなことする必要があるんですかという疑問はさておき, その方法を見てみる. minecraftには直接殴る以外にもいくつかダメージを与える方法がある.
例えば矢を撃ったり, ベッドを爆発させたり, ポーション効果でダメージを与えたり. 重要なのはこれらの攻撃のダメージ計算には先述のダメージ上限は適用されないということである.
- 例としてコマンドで「即時ダメージのスプラッシュポーション」をレベル28で作成する. こちらのポーションによるダメージを測定したところ, 与ダメージ量は驚異の1,610,612,736ダメージ(2^30+2^29ダメージ)となった.
即時ダメージのポーションのレベルからの計算式は公式wikiにない(探せばあるかも)ためこれは推測でしかないが, 即時ダメージレベル1,2はしょーもないことを考えると, おそらく指数関数的にダメージ量が増加していると考えられる.
なおポーション効果は(即時ダメージに限らず)レベルが32の剰余で計算されるが, 即時ダメージに関しては29~31ではダメージが0であった. おそらく28の16億ダメージ以上は0となるように設定されているのだろう.
- じゃあ16億ダメージがminecraftで与えられる最大ダメージですねということで話を終えてもいいのだが, ここは救世おまんこである. もう少し考察してみよう.
- 16億ダメージでポーション効果が打ち切られている理由を考えてみる. Javaの符号付きint型整数は32bitで定義されているので最大値はおなじみの21億である. ダメージ値がint型で実装されている場合, これ以上先に進むとオーバーフローしてしまうため打ち切られていると考えるのが自然である.
- ところが, 話はそんなに簡単ではない. Forgeのダメージに関する実装を見てみると, どうやらminecraftにおいてダメージ量はintではなくfloatで扱われている. まあ小数ダメージもあったりするので当たり前といえば当たり前である.
- 実際, 例えばLivingEntityクラスのhurtメソッドはダメージ量の引値としてfloat型をとっている. つまり理屈上は32bitの浮動小数点数の最大値である3.4E+38がダメージの最大値となる.
- 実はバニラのminecraftおいてこの量のダメージが与えられるイベントは存在していて, 皆さんも一度は使ったことがあるだろう. /killコマンドである.
- KillCommandのクラスを見てみると, 実装であるKillメソッドが存在するが, このメソッドの実装を辿ってみると極めて単純で, 要は受け取ったエンティティにfloat.MAX_VALUEをダメージ値として渡している.
つまりどうでも淫夢ではあるが, /killコマンドの実態はエンティティに3.4E+38ダメージを与えることだったのである. なおLivingAttackEventはcancelableなので,
この仕様を利用(悪用?)すれば/killコマンドを使っても死なないエンティティを作ることができる. 実際前に作ったことがある.
- さて, float型なのに16億で切られている理由として考えられるのは精度の問題だろう. 浮動小数点演算は絶対値が極端に大きい値や小さい値では精度が悪化する. 単精度浮動小数点で表記できる数は, 10進法表記で1の位までの精度を要求した場合,
一般の実装では100万程度まで保証され, それ以上になると小さな位は大雑把になる. つまり件の16億ダメージは浮動小数点ではもうだいぶ大雑把な値となっている. 2進数表記で意外ときれいな値になったのも小さい桁が切り捨てられていたからなのだろう.
- よし, お話終わり. 寝て良いよ.
- 計算物理・化学のプログラミングがゴミという話(2025/11/22)
- 表題の通り, 終わっている. 何が終わっているかというと可読性が終わっている.
- Fortran90/95とかいうジジイ言語で義務教育を終えた研究者が書くのでもう本当にひどい.
- さて, 本題に入る前にいまだにFortranにこだわる方々の言い分を聞いてみよう. 曰く「FortranのほうがC/C++より最適化が優れている」そうである.
確かにFortranの最適化が強いのは事実である. しかし実験が示すように, その差はわずかである.
それでいてFortranは機能性が低く, C/C++と比べ同じ処理を書くのに時間がかかる. それならC++でさらっと書いてシミュレーションを回せ! というかさらに言えば,
実行速度の差でプログラミング言語を比較するのは, コンパイラや環境に大きく依存するのでナンセンスである. MSVCをIntel Compilerにするだけで実行速度がガラッと早くなるのなんてザラなので.
てか「実行速度ガー」とのたまう計算屋ほどデータ構造やアルゴリズムの話されるとその辺はマシンパワーで何とかするからみたいなことを言いだすのは何なんですかね...?
こっちのほうがはるかに重要だと思うのですが...
- さて, 非常にしつこいFortranユーザーを事実上論破させていただいたところで, C言語の話に移る. C言語の可読性が終わりがちなのは前々から指摘されていて, それを少しでも改善するためにC++ではクラスや標準ライブラリみたいな機能が導入された.
オブジェクト指向でもプログラムが書けるようになった.
- ところが誰もこういった機能を使わないのである! だっれも! 誰一人! いまだに爺くせえ配列を使い, 加齢臭漂うポインタ渡しがまかり通り, 挙句malloc/freeする始末.
- 2025年にもなって手作業でメモリ確保するんじゃない! バグの原因になるだろ! std::vectorみたいな安全なコンテナを使え! そんなんだからPythonとかいう難解プログラミング言語にデカい面をされるんだ!
- あと手続き型で全部を書こうとするのをやめましょう(OOTN). これは思想の違いかもしれないが, 粒子を取り扱うのならその粒子をオブジェクトとして扱い,
メンバ変数として各粒子の位置座標, 運動量を格納し, メンバ関数で粒子ごとの物理量(運動エネルギーなど)を取り出すのがまともだろう.
忘れがちだが, オブジェクト指向というのはそもそもシミュレーションのプログラムを作りやすくするために導入された概念で,
その証拠にはじめてオブジェクト指向を導入した言語の名前は「Simula」である.
- stdの機能は参考書等でもっと積極的に取り上げるべきだろう. 例えば正規分布に従う乱数を生成したい場合, Box-Muller法で一様分布を正規分布に変換する方法が紹介されることが多いが,
こんなものは一様分布しか生成できなかったFortran・古いCの古い仕様を引きずっているだけである. stdにはC++11から乱数ライブラリ< random >が追加された.
このライブラリに含まれるnormal_distributionクラスを使えば正規分布に従う乱数列の生成なんて一発である(このクラスの実装は処理系定義だが, Box-Muller法またはその改良版が用いられることが多いようである).
一様乱数であるmt19937も通常の用途で疑似乱数として使うには十分な周期である(ただし暗号として用いるのは不適当である可能性が指摘されている).
- C99に準拠した計算プログラムはいわばまさに「すべてがひらがなで書かれた文章」に近い. 確かに読むのに必要な知識は少ない. ポインタがわかっていれば(ひらがなにしてはハードル高いな...)ある程度読めるだろう.
しかし可読性という面では, 適切に漢字を用いた文章にはるかに劣る.
- 我々はプログラマーではない. それはその通りである. しかしC++の機能を適切に用いないのであれば, 早晩にも計算プログラムの「秘伝のタレ」化は避けられないだろう.
- マウスウォッシュが口内射精みたいだった話(2025/11/24)
- はい, 寝る前にジャムおじさんのお話聞こうね. 今2025年11月24日午前3時前, そろそろ寝ようかとしてたところだったんです.
- で, 寝る前に歯を磨いて, 私はそのあとマウスウォッシュをするのが日課になってるんですね.
- ところが今日, 歯を磨いた後マウスウォッシュを忘れてそのままコップを洗ってしまった. これはいけない.
- というのもうちのマウスウォッシュ, よくある蓋がコップになってる形式じゃなくて, シャンプーとかボディーソープみたいに蓋が蛇口状になってて,
プッシュしてコップにひりだしてウォッシュする形式なんです.
- とはいえマウスウォッシュのためだけにもう一回コップを使って, また洗うというのもばかばかしい.
- しかし矢木に電流走る――!じゃあもういっそ直接口に出してしまおうと, 蛇口が口にくっつかないように気を付けて,
直接ぴゅ~っ❤っとマウスウォッシュを出してみたんですよ.
- そしたらマウスウォッシュの独特の苦み, これが口の中いっぱいに広がって, しかもなんか勢いも射精っぽい出方するんですよね.
ほぼ口内射精だよこんなのとその時思いました.
- 私は同性愛者ではありませんが, なるほどフェラフェラからのおくちぴゅ~❤はこんな気分なのだと思い, 口をゆすぎました.
- よし, お話終わり. 寝ていいよ.
- ゲームのmod使用について(2025/11/30)
- Twitterで「ゲームのmod使用は文化か?」という学級会が行われていた. これについて少し私見を述べようと思う.
- そもそも適不適を議論するのに「文化であるか?」という問いの立て方をするのはよろしくないだろう. 我々は他所の文化を尊重するという教育を受けていたものであるが,
それは「不快・不適当と感じるものからは文化という呼称を剥奪してから攻撃せよ」という指令ではなく, あくまで他人様の生き方を一つのスタイルとして認知せよという意味である.
したがって, あるスタイルが適当か否かを判断するのに「文化であるか否か」を議論の軸にしてはならない. 極端な話, 食人や児童婚も少なくとも「文化」であり,
それをスタートラインとして最低限認めたうえで, 現代社会においてどの程度適当であるかの議論が始まるのである.
- そのうえで, 上記の議論については「ゲームのmod使用はどの程度まで適切として認められるか」という呼称を用いたいと思う.
- 私のスタンスとしては「個人利用の範囲ではどのようなものであれ認められるべきであり, それ以外の他人様に迷惑がかかりうる範囲は運営判断. 使用の公言は著作者の態度次第」である.
- 個人利用の範囲ではいかなるものも認められるべきというのは, これは当然だろう. 我々は対価を払い購入している以上, いかなる方法で遊ぼうが文句を言われる筋合いはない.
例えば将棋セットを買ってきて, それでオリジナルの駒を追加した将棋をしようが, オセロ盤として使おうが, チェス盤として使おうが, それは自由なのと同じ理屈である.
- 個人利用において議論の余地があるとすれば, 「modを作る際にはリバースエンジニアリングじみたことをしますよね. それは規約違反ではないですか」という部分である. 確かに,
PCゲームであれコンシューマーゲームであれ, ほとんどの場合リバースエンジニアリングを禁止・制限する条項が利用規約として入っていることは事実である.
ただし, 私はそもそもこのような規約が不合理であると考えている.
- 例えば机を買ってきたとして, この机がどうも傾いていて挙動がおかしい. そのため机を解体し, 正しくなるように組みなおした.
これは何も疚しいことはしていない. 手元に持っているものは何であれ, 基本的にはそれをどういじろうが, それで罰せられることはない. あるとすればせいぜい車(道路運送車両法)か無線機(電波法), あるいは家(建築基準法)であるが,
これらは事故ったり公共の電波送受信を阻害したり倒壊したりして不特定多数に迷惑がかかるために規制されているのであって, ここでの議論に含めるのは不適当である.
- つまるところ, ゲームソフトはダメで, 机はいいのか, 棚はいいのかというところである. 私が不合理だと考えている理由はここにある.
- また「ゲーム制作者への敬意ガー」などという敬意警察もちらほら見受けられたが, 仮に(私はそうは思っていないが)modの制作・使用が敬意に欠けるものだとしても, 制作者の見えない範囲でやるのであれば,
制作者がmodの使用を数千キロ離れていても感知できる超能力者でもない限りは, 何も問題はないはずである. もちろんお前の敬意の定義がmodの不使用であるのならばそれを貫いてもいいが,
それはお前の勝手な思想であり, 私はお前を尊重してmodを導入しろとは言わないが, お前も私を尊重して何も口出しすべきではない.
- しかし, マルチプレイなど「他人様に迷惑がかかりうる範囲」になってくると話は変わってくる. 将棋にMAP兵器の駒を追加するのは, まあ相手が仲のいい友人程度なら問題ないかもしれないが,
それで将棋の公式戦に出るとなると, 話は変わってくる.
- この場合, 不特定多数に迷惑がかかる可能性があるので, 必ずしも「机や棚」には該当せず, むしろ「車や家」に該当することになる. したがってこのような場合の適不適の判断は権利者にゆだねられることになるだろう.
- さて, 「公言」の話である. どうやら今回の学級会の火種はここにあるようである. これはゲーム次第というところではないだろうか. 「制作者がmodの使用を数千キロ離れていても感知できる超能力者でもない限りは」と先ほど書いたが,
インターネットでmodの使用を公言すれば数千キロ離れていても権利者の耳に入り, 権利者の思想によっては気分を害する, 最悪の場合にはゲーム開発の中止などにつながるおそれもあるだろう.
- じゃあ常に公言すべきではないかというと, 一方でminecraftのように公式がmodの存在を認知し, modの機能が後々公式に実装されるといったケースも少なくない. modを入れたゲームが実況等で有名になり,
作品自体の売り上げに貢献するといったケースもある. したがって公言の是非は権利者の態度次第であり, ここで一般に議論できる問題ではないだろう.
- したがって再度強調すると, 私のスタンスは「個人利用の範囲ではどのようなものであれ認められるべきであり, それ以外の他人様に迷惑がかかりうる範囲は運営判断. 使用の公言は著作者の態度次第」である.
- オウム事件が特撮に与えた影響ってデカいのかなあって話(2025/12/05)
- あんまり特撮詳しくないのだが, 少し思ったので書く.
- 昭和特撮といえば「ショッカー」「デストロン」みたいないかにもナチの残党っぽい勢力か, あるいは「ゴルゴム」みたいな巨大秘密結社が, 当時ちょっと流行を過ぎたくらいのテロ作戦で破壊活動を行うみたいなお約束的流れが,
イメージとして強い.
- そういった世界観がまだ強かった時代の特撮にとって「合法的手段での権力獲得も模索しつつ破壊活動を行った」本物のテロ組織であるオウム真理教は,
悪の組織の形式としてかなりの衝撃だったんじゃないかと思う.
- 直後の96年の特撮では「激走戦隊カーレンジャー」「超光戦士シャンゼリオン」のような, それまでの形式を脱そうという試みがみられた. 特に後者の敵組織ダークザイドは, 合法的な手段による政治的権力の奪取に成功し,
全体主義的な体制を構築するにまで至る敵幹部すら現れた. まだ真理党の記憶が生々しい時期にこれをやったのは中々である.
- 敵対組織が「合法的な立場で公然に存在し, そこそこの権力を有する」という設定はその後ちょくちょく出てくる. わかりやすいところだと「仮面ライダーファイズ」(2003年)のスマートブレイン社, 「仮面ライダー鎧武」(2013年)のユグドラシル・コーポレーションなど.
「仮面ライダーカブト」(2006年)のカッシスワーム戦後のZECTとかも該当するかもしれない.
- こういった設定が生まれたのはやはり, オウム真理教事件により身近な悪意というものが世間的に注目され始め, それが特撮にも反映されるようになったのかなと思ったわけである.
- おわり.
もどる