お米 is ライス

C#やらUnityやらを勉強していて、これはメモっといたほうがええやろ、ということを書くつもりです

鬼怒川温泉で地元のお姉さんに昔話を聞いてきた話

『出会い』編

バフンッ!
何も馬糞を踏んだというわけではない。
いくらウマのゲームが巷で流行っていようと馬糞がそう簡単に道に落ちているはずはない。
路肩のブロックをタイヤが踏みつけ、破裂した音である。
「ボ、ボ、ボールでも踏んだのかな……?」と淡い希望を胸に見なかったことにしようとしたが、「パンクしたね」という同乗者の言葉でそれは絶望へと変わった。
ゴルゴルゴルという異音に耳を塞ぎながら500mほど進んだ場所で路肩に停車。同乗者がてきぱきと状況の確認、三角表示板の設置などを行ってくれた(自分はあたふたとしていた)。
奥鬼怒から日光へと向かう道中、鬼怒川温泉で少し観光をして小さな駐車場から国道121号へと出ようとした瞬間のことであった。

停車した後、まず先にレンタカー屋のサポートセンターに連絡をした。
レンタカー屋の事故補償に全突っ張していたのでこういう時にある程度気楽になれるのは幸いだった。
サポセンによるとレッカー車で近くのタイヤ交換できる店まで運び、そこからは通常通り帰ればよいとのことだった。
ただし、レッカー車が近場にいないため到着まで90分程度は待つ必要があるらしい。
仕方がないので車から降り、歩道の端で待機することになった。巻き込み事故の危険があるため路肩に停まった車の中で待つのはご法度なのだ。
車から離れるわけにもいかず暇を持て余したので、同乗者に教えを乞うてシンボリルドルフの育成することにした。とりあえず差し・中距離型を目指してサポカ編成の吟味をし、育成を開始した。

……のだが、そこで近所のお姉さんの乱入にあった。
路肩に車を停めて複数人でたむろしている若者を見て不審に思ったのだろうか、あるいはただ暇を持て余して話し相手が欲しかったのかもしれない。買い物帰りのようで、洗剤の入ったレジ袋を持っていた。
(以下、お姉さんのセリフが関西弁で描写されるが、これはすべての会話が私の脳内で関西弁に変換して記憶されてしまうことによる。実際には少し訛りの入った共通弁だった。)

お姉さん「どないしたん」
私「パンクしちゃいまして……、ちょっと置かせてもらってます」

すっかりいじけてぺしゃんこになっている左後ろのタイヤを指さしながらそんな会話をした。
パンクで足止めをされているのだと説明をすれば、我々が別に怪しいものではないと納得して立ち去るであろうと思ったのだが、意外なことに会話は続いた。やはり暇を持て余していたようだ。

『思い出の東京』編

お姉さん「あんたら品川から来たんか?私も昔東京に住んどってなあ」(レンタカーが品川ナンバーだった)
私「どのあたりですか?」
お姉さん「上野のほうなんよ」
渋谷方面に住んでいる私(反対側やんけ……)
お姉さん「昭和40年ごろやったわね」

今から55年前、古事記に載っているレベルの昔である。
そのころに20歳だとして、御年75歳ぐらいだろうか?

お姉さん「今でも東京のほうに買い物行ったりするんよ、稲荷町っていう浅草から2つ目の駅でなあ。あんたも知ってるやろ?」
私「いやあ……」
知らない。というかどうでもいい。東京の人間が東京に存在する駅をすべて知っていると思ったら大間違いだ。そもそも私は近鉄橿原線の駅しか知らない。

早くシンボリルドルフの育成をしたい(あまり長居させるのも申し訳ない)と思い、どうにか穏便にお帰りいただけないものかと思案したところ名案を思い付いた。
私「お姉さん、そういえばどこへ行くところだったんですか?荷物持っていらっしゃいますけど」
本来の目的を思い出させれば「せやったせやった」と立ち去るのではないか、そう思ったのである。
お姉さん「買い物行ってきて帰るとこやねん」
私「おうちはどのあたりなんですか?」(帰ってゆっくりしてください)
お姉さん「え、ここやけど」(ここなんかい!)
そう、お姉さんの家は我々が立ち往生をしていたまさに真ん前の家だったのである。だったら今すぐGo Homeしろよ!なんてことは別に思ってはいない。
私「あっ、すいません。車邪魔だったらちょっとずらしますけど」
お姉さん「いやいや、ええよええよ」
家の前で迷惑だからとわざと長話をしてきたわけでもなさそうである。少しでもそう思ったのはやはり私も京都で何かしらの影響を受けていたのだろうか?
親切なお姉さんのお話はなおも続く。

『上滝』編

お姉さん「あんたら温泉に来たんやろ?このへんの温泉は全部上滝から引いてきてんねんで」
鬼怒川の上流のほうを指さしながらそんなことを教えてくれた。
私「へえ、その上滝というのは?」
お姉さん「土地も全部上滝のもんでなあ、このへんの人間はみんな月1万で上滝から土地借りとるんよ」
微妙に話がかみ合っていない。
結局上滝についての説明を得られなかったので私は”上滝”という名字の土豪がいるものだと理解していたのだが、後になって調べてみるとどうやら上滝というのは鬼怒川を少し上ったところにある土地の名前であった。そこの認識が不確かだったのでまず上滝の説明を求めたのだが。

お姉さん「昔は自分らで耕したら自分らのもんになってたのに、後から来たから土地代払わんなあかんねん」
と、少し恨みがましそうに繰り返し主張される。
まあ土地というのはそういうもんだろうと思うが、それにしても「自分らのもんになる」というのは墾田永年私財法の話でもしているのだろうか?

お姉さん「温泉のお湯もな、上滝から引いてきてて……」
さっき聞いた話である。
お姉さん「でも今はどこの旅館も自分とこで掘って引いてきてんねん」
いや上滝から引いてきてるんちゃんかい!

『町長』編

お姉さん「そういえばそこに”そらまめ”って書いてある喫茶店あるやろ?」
私「ああ、さっき私の同乗者が食事をしに入っていきました」
お姉さん「あそこのマスターは昔町長さんやってん」
私「ほう、町長ですか。この町の?」
お姉さん「せやねん、町長さんやってんけど、合併で日光市になったときに町長じゃなくなってん」

聞けばこの辺りはもともと藤原町という町だったのだが、日光市に合併吸収されてしまったらしい。
調べたところ2006年に合併したということだから、噂に聞く平成の大合併というやつだろう。

お姉さん「もともと日光より藤原町のほうが人多かってんけど、一軒の差で日光市になってもうてなあ」
どちらの市町村名を引き継ぐのかで住民投票が行われたのだろう。一軒というのが投票数なのか人口数なのかも尋ねたのだが結局わからなかった。
ちなみに《合併の是非を問う住民投票(藤原町)》は「賛成(75.3%)」「反対(24.7%)」だったそうである。(詳細情報(市区町村変遷情報)

市町村合併によって町長を引退した後、喫茶店そらまめを開いたのだというのだ。
これはなかなかに面白い話を聞けた。地元の人間でなければまず知りえない情報だろう。知ってどうするという話ではあるが、私はこの手の話が大好物だった。
(実はお姉さんの昔話も個人的にはかなり魅力的だった)

そんな町長ではあるが、さらにこんな話も聞くことができた。
お姉さん「あそこに旅館あるやろ?」
私「ああ、あのグリーンパレスと書いてある旅館ですか」
お姉さん「町長さんはあそこの会長さんやってん」
私「ほう」
お姉さん「あそことあそこの旅館も町長さんとこのやねん」
私「はぇ~~、なるほどなるほど」
藤原町の町長であったという人物はこのあたり一帯にいくつも旅館を持つ一大オーナーだったというのだ。
お姉さん「5人兄弟やってな、会長さん、常務さん、専務さん、それから……」
家族経営というやつである。

後にそらまめで食事をしてきた友人に聞いてみたところ、確かに店長は地元客に「町長」と呼ばれていたらしい。
それにしても町長に店長に会長にと、ゲシュタルト崩壊しそうな勢いだった。

『自分語りアゲイン』編

”隙あらば自分語り”というのは何もネット上だけの話ではないようだ。
町長の話を感心しながら聞いていると、お姉さんは再び自分の過去について話始めた。

お姉さん「昔東京におったって言ったけど、その前は北海道におってん」
私「へえ、北海道のどのあたりですか?」
お姉さん「網走やねん」
私「網走ですか。刑務所しか知らないですけど、炭鉱とかもあるんでしたっけ?」
お姉さん「炭鉱は夕張やん。網走は漁業やっとったんよ」
なぜか網走は北海道の真ん中あたりにあると思っていた。てんで地理はダメなのである。

お姉さん「弟がマグロ漁船に乗っとってなあ」
私「ははあ、何か月も帰ってこないっていうあの?」
お姉さん「そうそう。でも給料はええねん」
弟さんはフィリピン?(はっきりとは覚えていないが、東南アジアの国名だった気がする)あたりまで漁に出ていたらしい。

お姉さんの話はさらに時を遡って、とうとう親の代の話になっていった。
お姉さん「母親は秋田の男鹿半島出身でなあ」
推定75歳のお姉さんのさらに母君であるから、昭和一桁あるいは大正生まれというところだろうか。
お姉さん「そのあと北京に行ってん」
私「北京って中国の北京ですか?そのあたりの時代だとちょうど戦争の時期なんじゃ」
お姉さん「せやねん。苦労したらしいわあ」
戦前生まれは偉大である。

戊辰戦争』編

その後はしばらく上滝の話と町長の話を繰り返し聞いていたのだが(無限ループって怖くね?)、ふと気が付くと別の話題になっていた。
お姉さん「戊辰戦争ってあるやろ?あれはこのへんで戦ったらしいねん」
私「ああ、そういえば会津街道って看板をこのあたりで見た気が」(会津がどの位置にあるのかはわかっていない)
お姉さん「いっぱい人が死んだらしくてなあ、あそこにお地蔵さんあるやろ?」
指を差したのは車を停めた場所のはす向かい。確かに突き出した巨石の上に地蔵が祀られている。
f:id:spi_8823:20210415234837p:plain:w200
お姉さん「馬頭って言ってな、戊辰戦争で死んだ人祀ってんねん。あそこの家の人がよう手入れしてるわ」
私「へ~~、ほ~~、なるほどなあ~」
住宅の眼前に巨大な岩が残っているのに少し違和感はあったのだが、まさかそんな由来があろうとは。(石碑ではなく天然の巨岩なので、戊辰戦争以前から祀ってる磐座なんでは?とも思う)
これを聞いた私はさながらフィールドワークに勤しむ民族学者の気分である。

『別れ』編

もう少し民族学者の気分を味わっていたかったのだが、このあたりでレッカーの担当者から電話がかかってきた。もう少しで到着するそうだ。そういえばパンクした車を運びに来てもらうのを待っていたのだった。
車を近くの修理店まで運んでもらい、私はそこへ向かってタイヤを入れ替えた車を受け取るという手はずになっている。とうとうお姉さんとの別れの時が来た。
レッカー車の到着に90分かかるという話で、その連絡を受けてしばらくしてからなのでざっと一時間は話していたことになる。町長のくだりを5回は聞いたんじゃないだろうか。
お姉さんに礼を言い、レッカー車が来る旨を伝える。
修理した車を受け取ったあとは同乗者を拾いに再びこちらへ戻ってくるという話をすると、道端で待つのも可哀そうだからということでそらまめの店長に事情を説明してくれ、喫茶店の中で待たせてもらえることになった。
これは本当に思いもかけないことで嬉しく、ありがたかった。こうして思い返しても少しウルッと来てしまうくらいだ。
人間とはかくあるべし。見ず知らずの人間に無償の善意を提供できることほど尊いことはないだろう。「砂漠のような」と形容されがちな無機質な都会にあっても、このように高貴な精神性は忘れないでいたいものである。
同じ話を何度もしゃべるのと、こちらの質問に答えてくれないのだけは勘弁してほしいが。

まもなくレッカー車が到着した。パンクした車がドナドナされるのを見届け、修理店に向かうためお姉さんに別れを告げる。
少し名残惜しくもあったが、それよりも長時間の世間話から解放されるという喜びのほうが大きかった。知らない人とこんなに話したのは初めてではないだろうか。コミュ力が5くらいは上がった気がする。


以上が、鬼怒川温泉で出会った少し不思議なお姉さんとの出来事である。
旅先でのトラブルがこんな経験に繋がろうとは、人生何があるかわからないものだ。

謎のメモ

PostEffectにステンシルバッファ使おうとするとなんかうまくいかなかった
AmbientOcclusionをアタッチするとうまくいく
なんか知らんがImageEffectHelper.CheckShaderAndCreateMaterialでマテリアルを作ってたらうまくいくみたい?
つまりリソースとしてマテリアル作るのではなくスクリプトでマテリアルを作ってたらうまくいく?

それかシェーダをShader.Findで見つけてたらとかかな

いずれにせよ謎

(追記)
ポストエフェクトでのステンシルバッファの使用、カメラに2つ以上ポストエフェクトかけてる時に最後にかかってるポストエフェクトでだけステンシルバッファが使えるような気がする
最後のやつ以外はエフェクトかからなかったりステンシルテストが無視された状態(Comp Neverでも全ピクセル通る)になる?
わからんが、内部的にどのバッファ使ってるかとかで変なバグがあったりする気がする

【日本巫女史】総論 第一章 第一節 巫女の種類とその名称

初めに

日本巫女史とは、1930年に刊行された日本の巫女に関する様々な民俗学的事項をまとめた書籍です。

すでに著作権は切れており、幸いにも篤志の手によってインターネット上に内容が公開されています。

著者は中山太郎
詳細は省きますが、民俗学の大家である柳田國男の門下生です。

この日本巫女史、非常に内容が素晴らしいというのはよく聞ききますが、
暴力的にすら思える分量にしり込みしてこれまできちんと読めたことがありません。

また何度目かの挑戦をしたいと思うんですが、どうせまた中途半端になるのは目に見えているので、
内容をまとめることで栞代わりにしようと思います。

とはいえ、全部を全部まとめるとそれはそれで大変なので、
一部のみ、簡単にまとめることとします。

というわけで、やっていきます。


総論 第一章 第一節 巫女の種類とその名称

この節では巫女の分類を行っている。

まず大きな分類として、「神和系の神子」と「口寄系の巫女」に分類される。

「神和系の神子」は神社などに属し、一定の支給を受けて奉仕する公的な存在、

「口寄系の巫女」は地方に土着し、都度報酬を得て呪術を行うような存在。

この2つは役割や呼称によってさらに細かく分類される

神和系の神子

まず「神和系の神子」に属する名称について。

「神子」とは読んで字のごとく、「神の子」というような意味を持った名称。

ミコとはそもそも「神そのもの」を指すような言葉であったのが、
時代が変わり、神と人との仲立ちをするような存在になったのがこの呼称である。

斎宮

皇族の女性が代々任命され、伊勢神宮天照大神に奉斎するのが斎宮

「斎院」

斎宮と同じように皇族の女性が代々任命され、京都の賀茂社に奉斎する女性のことを言う。

「阿礼乎止売」

斎院の別名であり、”アレ”とは産出を言葉だと考えられる。

「御巫」

”カムコ”、すなわち神の子を意味する語。

「巫覡」

「神を和むる」という意味で、神社に奉仕する巫女を通称した言葉。

他に「キネ」「姉子」「古曾」「物忌」「斎子」など、神社ごと、役割ごとに様々な呼称がある。

口寄系の巫女

次に「口寄系の巫女」に属する名称について。
巫女の呼称というのは、

一、呪術の作法からくるもの。
二、呪術の器具からくるもの。
三、巫女の風俗からくるもの。

というようにいくつかある。

「市子」「インヂコ」「イチイ」「イチジョウ」

語源は諸説あり、
一つ目は、「斎子」が転訛した語であるとする説。
二つ目に、口寄系の巫女が市場に出て呪術を行ったことからくるという説。

著者はこれに加えて、琉球語で呪詛する人を表す”イチジャマ”という語に注目し、
”イチ”という語が呪詛の意味を持つとして、それに関連する語である説を唱えている。

「イタコ」

紀州熊野で神子を”イタ”と呼んだ記録があり、それに関連する語と推測されてる。
アイヌ語の転訛説もある。

「座下し」

「七くらおろし」という呪術に由来する言葉。
クラは回数を意味している。

「県語り」

京に対する田舎という意味での「県」。
田舎にいる巫女という意味。

「笹帚き」

巫女が呪術を行うときに、両手に笹の枝をもって自分の顔を帚くという作法に由来する呼称。

「大弓」

弓を左手に持ち、右手に持った竹の棒で弦を叩きながら呪術を行うことから、
使用している器具に由来する呼称。

「梓巫女」

梓で作った弓を呪術の器具として使用することに由来する呼称。

「口寄せ」

生口、死口、神口を呪術で引き寄せるということに由来する呼称。
詳細は後述とのことだが、生者や死者、神の言葉を代わりに口にするという意味かと。

「飯綱」

飯綱権現を主神とする巫女の一派があったことからこの呼称が生まれたと考えられる。

「コンガラサマ」

巫女がぐるぐると人家を周るという風俗に由来する呼称。

「刀自話」

「刀自」は老女の意味。
老女が巫女を営んでいたことからくる呼称。

「ユタ」

琉球に島々における巫女の呼称。
預言者という意味であると言われている。

口寄系の巫女の呼称は他にもさまざまあるが省略。

【Unity・CG・Shader】通信環境が悪くてノイズが入って乱れまくってる映像風のポストエフェクトシェーダー

概要

オペレーターズサイドのプレイ動画見てて作りたくなったので

サンプル

f:id:spi_8823:20200813005620g:plain

ソースコード

for free
説明はコメントを参照
値を適当にすると適当に調整できるよ
疑似乱数関数はこのあたりから

Shader "Hidden/Noise"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
    }
    SubShader
    {
        // No culling or depth
        Cull Off ZWrite Off ZTest Always

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0;
                float4 vertex : SV_POSITION;
            };

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = v.uv;
                return o;
            }

            //疑似乱数生成関数
            float rand(float3 co)
            {
                return frac(sin( dot(co.xyz ,float3(12.9898,78.233,45.5432) )) * 43758.5453);
            }

            sampler2D _MainTex;

            static const float division = 768;
            static const float blackinterval = 6;
            static const int blackheight = 1;
            static const float noisewidth = 0.01;

            fixed4 frag (v2f i) : SV_Target
            {
                //画面Y座標を分割
                int divisionindex = i.uv.y * division;

                //一定間隔で横に区切ったブロックを作る
                int noiseindex = divisionindex / blackinterval;
                
                //ブロックごとに横にずらす座標を決める前処理
                //時間による乱数のシード値(timeに互いに素っぽい数をかけたのを複数用意するといい感じになる)
                float3 timenoise = float3(0, int(_Time.x * 61), int(_Time.x * 83));
                //ときどき大きくずらす(時間のシード値が変更されるたびに5%の確率でノイズが10倍になる)
                float noiserate = rand(timenoise) < 0.05 ? 10 : 1;
                
                //横にずらす大きさを乱数で決める(0~1)(時間的にも位置的にもランダムになるように位置によるシード値と時間によるシード値を別次元で与える)
                float xnoise = rand(float3(noiseindex, 0, 0) + timenoise);
                xnoise = xnoise * xnoise - 0.5;             //ずれを2乗して0.5引く(2乗しないと乱れすぎる気がした)
                xnoise = xnoise * noisewidth * noiserate;   //ずれにスケールをかける
                xnoise = xnoise * (_SinTime.w / 2 + 1.1);   //時間的にずれに波があるようにする(いい感じになる気がする)
                xnoise = xnoise + (abs((int(_Time.x * 2000) % int(division / blackinterval)) - noiseindex) < 5 ? 0.005 : 0);    //ラスタースキャンっぽいノイズ
                
                float2 uv = i.uv + float2(xnoise, 0);

                //ぼやけさせる
                fixed4 col1 = tex2D(_MainTex, uv);
                fixed4 col2 = tex2D(_MainTex, uv + float2(0.005, 0));
                fixed4 col3 = tex2D(_MainTex, uv + float2(-0.005, 0));
                fixed4 col4 = tex2D(_MainTex, uv + float2(0, 0.005));
                fixed4 col5 = tex2D(_MainTex, uv + float2(0,-0.005));
                fixed4 col = (col1 * 4 + col2 + col3 + col4 + col5) / 8;
                
                col.rgb = divisionindex % blackinterval < blackheight ? float4(0, 0, 0, 1) : col.rgb;
                return col;
            }
            ENDCG
        }
    }
}

Blazorでコンポーネントの継承をする

ロジックの継承

ロジックの継承は@inheritsディレクティブで行う
メンバ変数やら関数やらが継承される

//MyBaseComponent.razor
@code
{
    //継承元
    public string MyValue;
}
//MyInheritsComponent.razor
@inherits MyBaseComponent
@code
{
    public string Text;
    protected override void OnInitialized()
    {
        Text = MyValue;
    }
}
<p>@Text</p>

見た目の継承

@inheritsディレクティブでは見た目(HTMLとかで記述した部分)は継承されない
ただ、「このコンポーネントのこの部分だけ書き換えたページを作りたい!」みたいなことがある
そういう場合は元ページでLayoutComponentBaseを継承し、書き換えるべき箇所(というか書き加えるべき箇所)に@Bodyプロパティを呼び出しておく
新しいページでは@layoutディレクティブで元ページを指定しておき、好きにHTMLなりを記述する
多分これは継承とは言わなくて、「レイアウトコンポーネントの利用」みたいな感じになるのだと思う

//MyBaseLayoutComponent.cs
<p>hogehoge</p>
@Body
<p>fugafuga</p>
//MyInheritsLayoutComponent.cs
@layout MyBaseLayoutComponent
<p>this is Body of MyBaseLayoutComponent!!</p>

こうすると、結果時にはこんな感じの見た目になる

<p>hogehoge</p>
<p>this is Body of MyBaseLayoutComponent!!</p>
<p>fugafuga</p>

どっちも継承

ロジックと見た目を同時に継承することもできる
inheritsディレクティブとlayoutディレクティブをべっこに指定するだけ
考えてみりゃそうなんだが、こういうやり方もあるよというメモ

//MyBaseComponent.razor
@inherits LayoutComponentBase
@code
{
    //継承元
    public string MyValue;
}
<p>hogehoge</p>
@Body
<p>fugafuga</p>
//MyInheritsComponent.razor
@inherits MyBaseComponent
@layout MyBaseComponent
@code
{
    public string Text;
    protected override void OnInitialized()
    {
        Text = MyValue;
    }
}
<p>inherits !!!</p>

【Blazor】WebAssembly版のWEBページを公開する

Blazorちゃん、ようやくWeb Assembly版が正式リリースされましたね!!(遅い)
というわけで、ASP.NET CoreでホストしないBlazorちゃんを公開する方法をメモ

プロジェクト作成

適当に作ってくれ。
ASP.NET Coreでホストしない」を想定してるので「ASP.NET Core hosted」のチェックは外す。

プロジェクトの発行

プロジェクトのディレクトリまで行ってdotnetコマンドを以下のように実行する。

dotnet publish -o hoge

するとhogeディレクトリにビルドしたものが出力される。
web.configファイルとwwwrootディレクトリがあるが、wwwrootに入ってるものが本体で、この中にindex.htmlとかも出力されている。

公開

ASP.NET Core hostedではない場合、Blazorちゃんは単体で動くようになっている。
したがって、wwwroot以下に作成されたファイルをWEBサーバーのhtmlドキュメントのルートディレクトリに置けばそれだけで動く。

rsync wwwroot/ /var/www/html/

ページを見に行く

これでちゃんとhttpd的なものが動いていればlocalhost:80とかでBlazorページを見に行くことができる。