syghの新フラグメント置き場

プログラミングTipsやコード断片の保管場所です。お絵描きもときどき載せます。

無投票は罰金刑にしたほうがよいのではなかろうか

横浜市長選挙、ひとまず無能で嘘つきの林にNOを突きつける結果になったことに安堵しました。新市長の山中氏が実際に公約を守れるのか、横浜をより良くすることができるのかどうかはこれから注視していく必要がありますが。
しかし、特に病気などの理由を抱えていないのに投票に行かないなんて信じられん。投票率は良くてもせいぜい4割とか5割らしいが、半数以上が重要な権利を放棄していることになる。選挙権すなわち投票行為は憲法で保障された権利でもあるけれど、社会人としての義務でもあると思います。仕事が忙しい? そんなん言い訳にはならん。期日前投票だってある。そもそもあんたらが選挙に行って意思表明しないから既得権益ばかり潤って政治が腐り、巡り巡ってクソみたいな仕事に日々忙殺される羽目になるんじゃないの? 原因と結果が逆でしょ。自民公明系に投票するヤツはムカつくが、それ以上に選挙に行かないヤツはもっとムカつきますわ。投票できるのにしない連中はその自治体に住む権利などありません。政治の清浄化に邪魔なのでとっとと出て行ってください。ロクに選挙に行きもしないのに政治の批判をする資格があると思うなよ。まあ選挙に行かない連中は普段から政治のことなんか全然考えもしない、他力本願の成り行き任せなんでしょうけど。

特段の事由がないのに投票に行かなかったら罰金刑、もしくは住民税2倍の刑に処するのがよいかと。無投票2回目で4倍、3回目で8倍……と指数関数的に増やしていけばよかろう。
オーストラリアなど、海外では罰金を科している国もあります。

義務教育でもっと徹底的に政治経済について叩き込む必要があると思うんですわ。英語とかプログラミングとか、そんなもんやりたければ各自家庭で好きにすればいい。生きる力というのは、搾取されないようにするための知恵と知性と思考力と判断力を養うということです。無学・無教養の人間は搾取される側にまわることになります。マスゴミに扇動される白痴が増えると先の大戦の二の舞です。76年経っても日本人はシビリアンコントロールの重要性について何も学んでないのか。

もののけ姫

金曜ロードショーで『もののけ姫』を久々に観たんですが、面白かったですね。ナウシカの焼き増しのような印象も受けますが、「破壊と再生」というテーマが分かりやすい形で提示されていたのではないかと思います。あとジブリには珍しく、おっぱいがいっぱいで目の保養になりました。主役や主要なキャラクターのセリフばかりがクローズアップされがちですが、大人になってから観ると、当時劇場で観たときよりも、脇役のセリフのほうが深く響くものですね。全身包帯の老人とか。

https://www.ghibli.jp/gallery/mononoke013.jpg

それにしても、エボシ御前は欲を出さなければ、無用な犠牲を出すこともなかったのに。完全な悪人というわけではありませんが、共存・共生よりも征服・支配がモットーなんでしょう。反省とか後悔はしてなさそうなところがまた怖い。同じ過ちを繰り返しそうなタイプです。明確な描写はありませんでしたが、逃げ遅れて「ドロドロ」に巻き込まれたタタラ場の人達は全員死んでいるのでは?

https://www.ghibli.jp/gallery/mononoke045.jpg

画像出典:スタジオジブリ公式サイト
www.ghibli.jp

しかし、最期のスタッフロールで「電通」の2文字を見た途端にしらけてしまいました。日本で最も邪悪・陰湿・強欲な利権企業のうちの一つが電通ですが、その魔手はありとあらゆるところに及んでいます。こんな反社同然の会社なんてつぶれてしまえばいいのに。労働基準法違反とかそんな生易しいレベルじゃあない。人権の侵害、社会秩序の破壊、犯した罪は数知れず。

戦略・戦術シミュレーションゲームの切なさ

DMM(FANZA)でエロゲーが夏季セールになっていたので、今は亡きelfの『シャングリラ』を買ってプレイしてみました。シリーズには1と2があり、いずれも1991年/1993年発売のオリジナル版(PC-98)ではなく、2005年にリメイクされたWindows版がベースになっています。1、2、1&2マルチパックの3種類がありますが、ダウンロード版のマルチパックは単純にプレイライセンスキーをまとめて購入できるだけで、違いは無いようです。ゲームのダウンロード&インストールも個別です。

「シャングリラ」(Shangri-la, Shangrila) とは、ジェームズ・ヒルトンの小説『失われた地平線』に登場する架空の地名がもとになった、「理想郷」を意味する英単語ですが、このゲームのタイトルは『SHANGRLIA』。おそらくスペルミスなどではなく、意図的に変えたのだと思われます。

このゲーム、エロゲーのくせにエロやストーリーはおまけで、戦略(戦術)シミュレーションパートのほうがよくできています。ユニットは剣士・戦士・魔法使い、槍・大砲・弓矢、騎馬・忍者・火竜、鷲の10種類4グループがありますが、各ユニットには性能や出撃コスト、相性などの違いがあり、最初の部隊配置が最も重要です。
オリジナル版ではほぼ真上から見下ろすバードビューでしたが、Windows移植版は斜め視点のクォータービューになり、高さの概念も追加されています。グラフィックも解像度は640×480 (VGA) と小さめですが、なかなかキレイです。サウンドも耳に残るメロディーで良質ですね。ボイスも全キャラクター追加されていますが、戦闘中はほとんどボイスなしです*1。各面クリア後のご褒美エロCGはフルカラーで今風に彩色し直されていますが、どうにもありきたりなエロゲー塗りとモザイクで、線画も改悪されており、昔のタイルパターン職人芸を駆使した16色時代のドット絵のほうが良かったと思います。女の子の体つきや瞳の描き方など、好みはあると思いますが、デッサンも色使いも、昔の絵師さん(好実昭博)やグラフィッカーのほうがレベルが高いですね。野々村病院もそうですが、旧グラフィックも収録して切り替えできるようにしてくれればいいのに……仮に課金ダウンロードコンテンツだったとしても自分はお金を払いますよ?

ちなみにアリスソフト闘神都市などのオリジナル移植版を無償公開してくれています。太っ腹ですね。ゲーム的には今プレイするとつらい部分もありますが、グラフィックは逆に一周回って新鮮に感じられてオシャレな感じです。80年代や90年代の絵柄が大好きな人にはたまらないでしょう。ボイスは無くてもファミコン世代は想像で十分補えます。

とりあえずシャングリラ1はノーマルモードをクリアしたので、次は2をプレイしてみたいと思います。しかし、DMM GAME PLAYERが起動のたびに毎回UAC (管理者特権) を必要とするのがうっとうしいですね。アップデートの際に管理者特権を要求するならばまだ分かるんですが、なんでDMM GAME PLAYERのコンソールとゲームを起動するだけなのに管理者特権が必要なのか。しかも "%ProgramFiles(x86)%\DMMGamePlayer\rt\bin" を見る限り、なんかJava 8のランタイムを使ってるっぽい。Steamもディレクトリ設計とかメチャクチャなんですが、DMMのほうはそれ以上にお粗末です。

戦略・戦術シミュレーションゲーム自体あんまりプレイしないジャンルなんですが、そんな自分でもFCのガチャポン戦士4 (1991) とかSFCSDガンダムX (1992) とか大将軍列伝 (1995) とかバハムートラグーン (1996) とかはよくプレイしてました。それにしてもSDガンダム多いな。当時コミックボンボン派だったんですよ。バハムートラグーンは今は亡きスクウェア時代の名作で、ジャンルとしてはシミュレーションRPGに分類されますが、SFC末期の作品だけあって、FF6に匹敵・凌駕するレベルの美麗なグラフィックや迫力のサウンドが楽しめます。ストーリーについてはいまだに物議をかもすこともあるくらいですが、ぜひともプレイしてもらいたい。このゲームをプレイしたこともないのに、よく知りもしないで批判する輩がネット上にはいますが、そういう知ったかぶりのエアプレイヤーどものノイズは一切無視してください。

古典的な戦術シミュレーションゲームのルールは将棋やチェスのようなボードゲームに似ていて、自軍のターン(フェイズ)で好きなユニット(駒)を選んで移動して相手の陣地を攻めていき、ユニット同士が接触すると戦闘に突入します。最終的に相手ユニットを全滅させるか最重要拠点を占領すれば勝利なんですが、一定のターン数耐えて拠点を守りきれば勝利となるマップもあったりします。ユニットごとの射程や相性、地形効果、回復やユニット生産が可能な中間拠点、マップ兵器といった要素を加味して進軍することが攻略の要となってきます。

ユニットのグラフィックはマップ画面でも戦闘画面でも頭身の低いデフォルメされたキャラクターが使われることが多く、特にSDガンダム系は敵も味方も妙に可愛いんですよね。攻撃モーションとか、ダメージを受けたときのリアクションとか、どのキャラクターもちょこちょこ動くのでめちゃくちゃ萌えます。表情のない戦艦ユニットですら可愛い。容量が限られていたからこそ映えるのがSDだったのかもしれません。ガチャポン戦士4では、1つのユニットは4体のキャラクター(モビルスーツ)で構成されている小隊で、各キャラクターはダメージを受けてHPがゼロになると爆発(死亡)して消えてしまいます。ユニット内に一体でも残っていれば拠点で補給・回復することができますが、すべてのキャラクターが失われるとマップからユニットが消失します。アムロ・レイカミーユ・ビダンなど、ネームドパイロットの機体はロストすると拠点で復活させることはできず、次のマップでは復活するものの、レベル(経験値)がリセットされた状態になるので、いかにして自ユニットを消失せず相手のユニットを削るかが勝敗のカギとなってきます。

こういったゲームは対人戦ではケンカになることも多く、それを嫌ってどちらかというと一人でCPU戦(キャンペーンモード)をプレイすることが多かったんですが、敵ユニットが最後の1体だけになっても、CPUが一生懸命思考して戦っている姿を見るとなんだか切なくなります。ソーラレイとかコロニーレーザーのようなマップ兵器を手に入れると、射線上の敵ユニットをなすすべなく焼き払うなど、一方的に蹂躙することもできますが、こういう無差別殺戮のできるマップ兵器は嫌いでした。SDガンダムではデフォルメされた絵のせいでコミカルに見えますが、やっていることは残酷そのものです。現実世界で戦争をやりたがる人間というのは、敵味方問わず前線で戦っている兵士の顔が想像できないんでしょう。大義名分を笠に着て、一般市民を大量虐殺できる兵器をためらうことなく使える人間も狂っています。異常なことが異常でなくなるのが戦争なんです。

*1:唯一聴けるのが、地雷を踏んだときのボイスなんですが、敵のボイスも実装されています。敵ながら悲痛さが伝わってきて、なんだか可哀想になってきます。

国境をまたいだクソ五輪は中止しないのに県境をまたいだ国民の移動を禁止するのはどういう了見だ?

国民をバカにするのも大概にしたまえ。もうダブルスタンダード利権優先クソ政府や無能知事の言うことなんかみんな聞かなくていいよ。去年からさんざん我慢してきた人、実家に帰省したい人は今のうちに旅行・帰省したほうがいいと思います。

あとアスリートの連中は全員死んで欲しいと思いました。なんでこの状況下でおめーらだけ好き勝手やれてるんだよ。しょせんこいつらは全員バッハと同じ穴のムジナか。

あと電通は要らない会社です。存在自体が害悪。反社同然です。悪質性が大々的に報じられた後も改善しようとしない邪悪なブラック企業で未だ働いている人間は全員洗脳されているのか? 旧日本軍といったい何が違うというんだ?

MSVC (ユニバーサルCRT) のswprintfのバグ

Visual C++のC Runtime (CRT) ライブラリは、バージョン2015 (14.0) 以降、新しい設計のUniversal CRT (UCRT) を採用するようになり、C/C++標準ライブラリが再実装されました。
その際、かなりの数のバグが混入したのですが*1*2、いまだに修正されていないバグもいくつかあります。

例えば、以下のリファレンスでは、swprintf()WEOFを出力しようとした場合、戻り値はエラーコード-1を返すことが明記されており、サンプルコードでも例示されているのですが、UCRTでは間違った値を返します。

#include <stdio.h>

int main(void)
{
    wchar_t buf[100];
    int len = swprintf(buf, 100, L"%s", L"Hello world");
    printf("wrote %d characters\n", len);
    len = swprintf(buf, 100, L"%s", L"Hello\xffff world");
    // swprintf fails because string contains WEOF (\xffff)
    printf("wrote %d characters\n", len);
}

VC2013までは、11-1が正しく出力されるのですが、VC2015以降では1112が出力されます。
swprintf()系はvswprintf()系を使って実装されており、当然のごとくvswprintf()にも同じバグがあります。

これはWindows 10 21H1の最新版UCRT (ucrtbase.dll, 10.0.19041.789) でも修正されていません。

ちなみにWEOFは "%ProgramFiles(x86)%\Windows Kits\10\Include\10.0.*.0\ucrt\corecrt_wstdio.h" にて以下のように定義されています。

#define WEOF ((wint_t)(0xFFFF))

UCRTは、Windows 10では標準システムコンポーネント扱いとなっており、UCRTを動的リンクしたアプリケーションは、システムディレクトリにインストールされているDLLのほうを必ずロードするようになっています。Windows 8.xおよびそれ以前のバージョンでは、アプリケーションに同梱されているプライベートDLL(ローカルDLL)があればそちらを優先的にロードするようになっています。

UCRTのソースコードWindows SDKに付属しています。インターフェイスはCですが、内部実装はC++です。
swprintf()の定義を追っていけば、どのファイルに実装があるか分かりますが、どうも "%ProgramFiles(x86)%\Windows Kits\10\Source\10.0.*.0\ucrt\stdio\output.cpp" 内のcommon_vsprintf()の内部、processor_type::process()にバグがありそうです。processor_typeはテンプレートoutput_processorの特殊化ですが、その実装は "%ProgramFiles(x86)%\Windows Kits\10\Source\10.0.*.0\ucrt\inc\corecrt_internal_stdio_output.h" にあります。

余談ですが、C形式のAPIの内部実装にC++を使用することはよくあります。AndroidのBionic libcも、昔はすべてCとアセンブラで実装されていましたが、Android 4.xあたりで再設計されて部分的にC++で実装されるようになりました*3*4*5。なお、WindowsAndroidも、システム開発にRust言語の活用を始めているらしいので、将来的にCランタイムライブラリもRustで実装されることになるかもしれないですね。少なくともRustコードは教養として読めるようになっておいたほうがよさそうです。

クソ五輪は登場人物全員がクズです

もう気持ち悪すぎる。クソ五輪はゴミクズどころか吐き気を催す『邪悪』な餓鬼畜生どもが巣くう魔窟でした。類は友を呼ぶ。もともと大嘘つきのアベが自らの邪な欲望を満たすために、アンダーコントロールだなどと吹聴して無理やり招致した東京クソ五輪202Xは、最初から最後まで呪われる運命にあったわけです。AKIRAの予言は正しかった。

過去の暴行罪・障害罪を武勇伝のように自慢する極悪な低能マイナーミュージシャンくずれとその邪悪な血を引くサイコパス一族が地球にいたこと自体初めて知りましたが、このson of a bitchを採用した関係者はコイツの素性を知っていたんだろう? 海外のメディアから指摘されて初めて反応するとか、恥ずかしいと思わないのか? 過去に類をみないくらい最悪な形で全世界に醜聞をさらしたこのクズ野郎は、末代まで呪われることだろうし、またそうあるべきだ。ただの因果応報なので同情する余地は1ミリも残っていない。

本当に、本当にもう関係者全員首を吊って火あぶりにされて最大限苦しんでから死んでください。コイツらは社会に害悪しかもたらさない*1。全員死んでも誰も悲しみません。もはや五輪憲章がどうのこうのとかいうレベルじゃねーよ。暴行罪・傷害罪・侮辱罪で逮捕・投獄されるべきだった人間が、なんで大手を振って表を出歩けていたんだ?

そもそも「イジメ」とかいう生やさしい言葉で誤魔化すからダメなんだよ。「虐待」ですら甘い。れっきとした暴行罪・傷害罪・人権侵害でしょうが。そういう中途半端で生ぬるいことやってるからどこの学校も教育委員会も事なかれ主義で身内の犯罪をもみ消そうとするんだろうが。

ところで、普段はMIDI音楽しか流さない近所のスーパーで、なぜか昔のクソ五輪(2004年)のNHKテーマソングが流れていました。ヴォエエエエエエッ。吐き気がした。そういえばこいつら思想が右傾化してね? NHKは気色悪い右翼アーティストばっかり採用するよな。

*1:最低野郎のことをウジ虫とののしってはいけません。ウジ虫は分解者としての役割を持っており、自然界には必要不可欠の存在です。そんな彼らと比較するのはウジ虫に対して失礼です。