本当に信頼できる相手にしか、本物の魔法は見せてはならない―無数の解釈を許す、あの日の想い出:うらら迷路帖 第07話 「祝詞と魔女、時々覚悟」

Posted on

日本人読者の皆様におかれましては、「現代文の試験」の洗礼を受けたことかと思います。小説として商業出版されている日本語の文章の一部が、まるでまとめサイトのスレ抜粋みたいに切り貼りされた状態で印刷されてて、Togetterで赤字にするようなノリで傍線部が引かれてて、「これはどういう意味か4択の中から答えろ」ってクイズが始まるとか、そんなやつです。アレですよ、アレ。

あの「問題」が成り立つ裏には、1つの暗黙の了解、「公理」が流れています。つまり、「物語の読み方と解釈には一意性と正解があり、それがわからないお前はカスであり、知的動物ではなく、人間が食料としても何ら道徳的問題がない」ということです。

今日は、その了解が成り立たないか、あるいは成り立たなくてもよいことにした瞬間に突然面白くなる、魔女の女の子と、もっともっと小さな女の子の、魔法の秘密の物語についてお話しましょう。

物語の流れはおおよそコミックス版と同じですが、物語の主題が1つに整理されて、効果的な映像演出などが加わってより抒情的になってる(とわたしは思う)アニメ版をベースとします。

あらすじ

小さいころから、ほしいものは何でも簡単に手に入った。

「アンシャンテ、お嬢さん!」

そんなあたしが、唯一手に入れられなかったもの。

世界で一番憎らしくて、世界で一番大好きな人。

小梅の回想

主要キャラの1人、「小梅」の、今よりずっと昔、彼女がもっと幼かった頃のお話です。

小梅は巨大財閥「雪見家」の1人娘。親におねだりすれば、何でも簡単に手に入る。

そんな何一つ不自由ない暮らしをする彼女の元に、ある日「マリ・キスピルクエット」というフランスからの留学生がやってきます。

初めて出会った異国の少女。そして、魔女。

そんな彼女は、さっそく小梅をフランス語の「梅=プリュネ」から取って「プー」と呼び、そして、いきなり、おでこに、ちゅ!

「今のは呪いのキスよ!魔女流の、あいさつなの!」

「ななな、な、なにそれ!『呪い』って、わたし、どうなっちゃうの!?」

「あたしと、とっても仲良くなれちゃうのっ!」

「!?」

自由奔放ですね。そんなマリが繰り出すたくさんの「魔法」に、小梅は驚きます。

「マリって…何者なの…?」

「言ったでしょ、魔女だ、って。
 こう見えても、300歳よ!魔女は長生きなの!」

「すごい!…30歳くらいかと思ってた…」

「失礼ね!! こう見えてもまだ18歳よ!!

「なんでそんな嘘ついたの…!?」

小さな小梅は、突然やってきた「魔女」に、興味津々です。

「ねぇ、どうしたら魔女になれるの…?」

「うふふ!わたしは魔力を得るために、人魚をフライにして食べたのよ」

そんなマリとの日々が、小梅は楽しくてしょうがないご様子。

マリは悪戯好きで、いじわるで、嘘つきで、天下無敵。

物知りで、お茶目。可愛くて、お洒落。

ちいさなわたしは、マリの全部に夢中になった。

そんな不思議な力を小梅に見せてくれるマリですが、小梅のパパやママは全く信じていません。

「マリってすごいんだよ!魔術が使えるの!」

「マリは手品が上手なんだなぁ」

「ほ、ほんとだもん!」

「小梅をからかってるのよ」

「マリは本物の魔女だよっ!」

マリのすごいすごい「本物の魔法」を一切信じてくれないことに、小梅はいら立ちます。でも、マリは気にしていない様子。

「もう、頭に来ちゃう。お父さまも、お母さまも、信じてくれないの」

「いいのよ、そういうもんだし」

「えぇ!?」

「それより、あたしは勉強しないと。そのために、この国に来たんだもの」

「お勉強って、何の?」

「東洋の魔術よ」

マリは何のためにこの国に来たのか。それは勉強。では、それは何のため?

「わたしは箒で世界中を旅して、魔術を学んで、世界で一番の魔女になるの。それが、あたしの夢なのよ」

「世界で、一番の魔女…」

「でも、これは秘密事項よ!魔女はミステリアスじゃなきゃお洒落じゃないもの!
 口封じのおまじないよ!」

「世界で一番の魔女になる」という彼女の夢をかなえるため。それが目的ですから、魔法がインチキだと他人に思われたところで、彼女は一切意に介しません。

一方の小梅は、それでもやっぱり、マリが本物の魔女だと信じてもらえないことがどうしてもご不満です。あんなにすごいのに!

そこで小梅は、マリが昼寝している間に、彼女の箒を盗んで、屋敷の一番高い窓から飛び立つことで、みんなに魔術を見せて信じてもらおうと画策します。

みんなに魔術を見せれば信じてもらえるよ、マリは本物の魔女だって。

(窓の前に立つ小梅)

マリの箒があれば、飛べるはず…。

(屋敷の一番たかい窓から下を見下ろし、思わず震える)

「マリのためだもん!絶対飛べる…」

そう口に出し、小梅は顔を横に振る。

かくして覚悟を決め、箒にまたがって飛び降りる小梅。

…しかし、あれれー!?

本物の魔法の箒のはずなのに、まったく飛べません。このままでは、地面に激突してしまいます!

「マリー!助けてー!」

ぱちん!と指がはじける音がすると、箒は空を飛ぶようになり、小梅は難を逃れます。

そこに現れたのは、もちろんマリでした。

「意外と勇気があるじゃない。
 でも、ちょっとオイタが過ぎるわね、プー」

そのマリは、まったく仕方がないわね、と言わんばかりの、ちょっぴりあきれたような、でも優しい、そんな顔をしていました。

そうして「勇気」を認めてもらった小梅は、「本物の魔法の箒」に2人でまたがり、夕焼け空を散歩します。

「すごい!やっぱり飛べたね!」

「あったりまえでしょ!魔女だもの。
 …でも、魔術は本当に信頼できる人にしか見せちゃダメなの。
 だから、内緒にしておいて。じゃないと、色々厄介だから」

「なんで?すごく、かっこいいのに」

「それがわかんないなら、プーはまだまだ『プチプチプリュネ』ってことよ」

そんな楽しい毎日に、突然終わりが訪れます。

それからしばらくして、マリの言葉の意味が分かったの。

冬。原因不明で医者も匙を投げる疫病が、町で蔓延してしまいます。新聞の1面も、感染者が急増したことを危機感を持って伝えています。なお、この作品は2017年放映ですので、そこんとこはよろしく。

雪見家の主とその妻に、メイドが震える声で報告します。

「あの…奥様…。町で噂になっているんです。
 病を呼び寄せたのは、雪見家に居候している魔女じゃないか、って」

「何を、バカバカしい」

「ですが、雪見家の信用にかかわります!
 小梅お嬢様にも、悪影響があるかもしれません…」

マリはその様子を、陰からこっそり、これまでで一番真剣なまなざしで見つめます。

「わたしたちは、君のことを疑ったりはしない。だけど、このまま町に留まるのは君のためにも…」

「ええ、分かっています、旦那様。プリュネのためにも、フランスへ帰ります」

「…すまない…」

「そんな顔をなさらないで。厄介者扱いには、慣れっこですわ」

達観したような笑顔で帰国を決めたマリ。

ですが!

小梅はもちろん!

そんなの嫌に決まっています!

「やだ やだ やだ やだ!
 なんで!?
 マリは悪い事してないのに!
 マリが帰るなら、小梅も一緒に仏蘭西に行く!
 マリの弟子になって、魔女になる!!
 …お願いだから、小梅も連れてって…!」

「あのねぇ、魔女になるってそんなに簡単じゃないのよ?
 プーみたいな泣き虫は、弟子にだってなれないわ」

「なれるもん!魔女になって、マリをいじめる人の事を全員呪ってやる!」

「うっふふふ!なっかなかいい事言うじゃない!1ちょっとは素質、あるかもね」

「…ほんと!?」

「そうね…じゃあ…」

あの「箒」を、小梅に渡すマリ。

「この国で一番の魔女になること。
 それができたら、あたしの弟子にしてあげる。
 …これは呪いのキスよ。小さな魔女に、試練と困難を。
 元気でね、マドモアゼル・プリュネ。」

そして意地悪で素敵な魔女は、フランスへと帰っていきましたとさ。

今ならわかるの。マリはきっと、魔女になんかなるなって、言いたかったんだって。

だから、「この国で一番」なんて無理難題を吹っ掛けたのよ。

だけど、思い通りにあきらめてなんか、やらないわ!

だから、わたしは迷路町に来たの!

マリとの出会いと別れ、そしてマリとの約束が、小梅が「うらら」と呼ばれる占い師、しかもその中での最高位である「一番占」になるために、何不自由のない自分の家を離れ、「迷路町」で厳しい修行の道を歩むようになった、決定的なきっかけだったのでした。

「秘密にしてたのに…」

「別に隠さなくていいじゃない?」

「それじゃお洒落じゃないもん!」

そうだよね、マリが言ってたとおり、魔女はミステリアスじゃなきゃあ、いけないもんね!

魔女の秘密を根掘り葉掘り

削れる台詞が中々無くて、長くなってしまいました。演技も映像も、この回のために書き下ろされた曲「異国の魔女」「雪見家のお屋敷」「いたずらな魔法」「空のお散歩」「プリュネの想い出」(5曲もある!)も、どれもよいので、ぜひ実際に見て・聞いてみてくださいね。

ここからはこのエピソードを「解釈」していきます。

マリは誰にも心を開いていない、ただ一人小梅を除いては

このエピソードは、メタに言えば、まぁよくある、各キャラクターの自己紹介やキャラ付け、バックグラウンドの紹介のための、いわゆる「キャラ個別回」というやつになります。このエピソードを入れることでキャラクターの行動に説得力を持たせたり、キャラに深みを与えて、視聴者に小梅のことを好きになってもらおう、みたいな。そのためのエピソードです。

ですが、ですが!

この話は意図してか偶然か、そんな「お約束の枠組み」を超えた、それ単体で非常に面白いお話になってしまっています。

そうなってしまっている鍵を確認しましょう。

それは、もちろん。

小梅が箒で無謀にも空を飛ぼうとし、マリがその勇気を認めてくれた時の、この言葉です。

…でも、魔術は本当に信頼できる人にしか見せちゃダメなの。
だから、内緒にしておいて。じゃないと、色々厄介だから

このセリフから、マリのすごいすごい魔法を、どうして小梅以外、だれも信じてないのかの理由がはっきりと明らかになります。

そう。

そもそも単に、本物の魔法を、小梅以外の誰にも、見せていないから、です。

見せてないんだから、信じるわけないじゃないですか。とっても簡単な話ですよね?

そして、彼女はいくらこの国で社交的に、笑顔を振りまきながら、非常にうまくふるまっているように見えても、実は、小梅以外、だれも心からは信頼なんかしていないし、逆に小梅のことだけは心から信頼している事もわかります。

では、小梅が今まで見ていたものは?

ここで止めてはもったいない。さらに問いをつづけましょう。

マリは本物の魔法を、小梅以外には見せていない。

マリは本物の魔法を、小梅だけには見せている。

では、その小梅に、本物の魔法を見せるようになったのは、いつからでしょうか?

言い換えれば、小梅がこのシーンに至るまでに見ていたものは、本物の魔法だったのでしょうか

それとも、実はここまでのものは全部、ただの手品だったのでしょうか

すべての解釈を楽しんでしまえ

さて、日本の現代文の試験であれば、きっと「傍線部Ⅲ『魔術は本当に信頼できる人にしか見せちゃダメなの』とあるが、マリが小梅を『本当に信頼できる』と判断したのはいつか、50文字程度で説明せよ」といったクイズが始まり、そのクイズの出題者の解釈をくみ取って答えられるかどうかで、この世界の「うらら」、つまり「大学生」という「学者のたまご」にするかどうかの選抜を行うのでしょう。

ですが、今回は大学入試ではありませんから、その問いを立てるのはともかく、その正解を1つに決めるのをやめましょう

その代わりに、マリが小梅と出会ってからこのセリフが発される瞬間のすべて、それのどれもが正解でありうるとしてみましょう

すると、それぞれの解釈はどれもそれぞれに「美味しい」事に気づきます。これに気づいちゃったら、人間が求めて限りない、「唯一無二の絶対の真実」なんか、どうでもよくなっちゃいますよ?

可能性1:勇気ある行動を見て、信頼するようになった

比較的素直な解釈の1つです。「意外と勇気があるじゃない。」という言葉通り、この小梅の勇気ある行動を見て、「ふむ、こいつなら信頼できるな」と小梅のことをマリは認めて箒に乗せてくれた、とする解釈です。素直ですね。

この可能性をとると、小梅がこの瞬間までマリの使う本物の魔法だと思っていた数々の行為は、実は全部ただの手品だったことになります。漫画版には、この解釈を採用すると意味が文字通りになる、「マリが来てから毎日手品みたいに不思議で楽しくて」という独白もあります(二巻 p.87)。本物の魔法に見えるシーンはいくつかありますけれど、このお話は5歳の頃のお話を、10年以上後に回顧したものです。いくらかの「記憶の美化」だって、あるのかもしれません。別の言い方をすれば、今回の彼女は、「信頼できない語り手」なのかもしれません。2人で空を飛んだ時の、「すごい!やっぱり飛べたね!」という小梅のセリフが、今まで実際に人間を載せて空を飛んだ事はないことを暗示しているのも、傍証と言えるかもしれません2

さて、そうなると、小梅と仲良くなろうとしていたのも、「留学先の子供を懐柔しとけば親の機嫌も同時に取れるし、雪見家とご令嬢経由でコネが作れれば、この先いろいろ好都合よね~」という程度の話であって、いままでのは全部ただの「ご機嫌取り」、「仲良しごっこ」、「処世術」でしかなく、小梅のことなんか、な~んとも思ってなかった、極論すれば、「留学先の大財閥のご子息」という「ラベルの貼られた人間」「社会的ロール」を通してでしか認知していなかった、という極端な解釈だってできます。

この可能性を採用してエピソードを見返してみてください。完全に違って見えるはずです。

可能性2:最初から信頼していた(少なくとも、ある程度は)

可能性1はいくらなんでも無理があるんじゃない?留学先の子供をあしらって機嫌を取るにしてもサービスしすぎじゃない?そこまでドライでは、流石になかったんじゃないの?

そういう意見も、もちろん妥当だと思います。

さて、マリは魔女ですよね。魔女は、この作品において「西洋のうらら(占い師)」とも呼ばれる存在です。ですから、小梅と出会った瞬間に、直感的に、呪術的に、あるいは「運命」や「星の巡り」のようなものを感じて、「この子は信用できるわね」と判断して、最初から完全に、あるいは「ある程度」は信用していた、そういう可能性もありましょう。

途中で「世界で一番の魔女になるのが夢なの」「でもこれは秘密事項よ」と夢を語るシーンに関しては、こちらのほうが素直に読むことができます。

この場合、今まで小梅が見てきた「魔法」は全部ほんもので、小梅以外からは見えないよう、人払いの魔法陣や、結界なんかを張って他の人からは隠していたのでしょう。しかし、それでも一部の『魔法』は「そこまでは見せられない(信頼できない)」ということで、やっぱり手品か何かだったのかもしれません。

そして、その「信頼度」も、ずっと同じだったわけではなく、この物語を通じて、上がったり下がったりしていたことでしょう。

この「最初はどれほど信用していたのか」「この時点ではどれほど信用していたのか」はいくらでも可能性が考えられますので、色々レベルを変えて見返してみてください。その「すべて」でエピソードの印象はそれぞれ変わって見えるはずです。

可能性3:描かれてないだけで、小梅が覚えていない何かがあった(そうだ、二次創作しよう!)

このエピソードは、繰り返しますが、小梅の回想です。ですから、当たり前ですが、小梅が覚えていることしか(基本的には)登場しません。ですが、もちろんマリにはマリの意思があり、記憶があります。

ですから、「マリが小梅を信頼するようになった」のは、「実は小梅が記憶していない、この小梅の物語には出てこない、マリにとっては特別に感じられた、別のエピソードがあったからだ」、と解釈することだって可能です。ええ、一番現代文の教師が嫌いそうな解釈ですけどね。

この解釈を採用してもアニメ本編の解釈には直接の影響はありません(だって描かれてないんだから)が、二次創作してみるのにはぴったりな解釈・題材だと思います。

ぜひみなさんがその「エピソード」を紡いだら、ぜひわたしに教えてください。わたしも形にできたら、ひっそり公開しようかと思います。

もちろん、物語も魔法の1つ!、ということで、本当に信頼できる人にしか見せないのもアリかと思います。UGC 全盛で忘れ去られてる気がしますが、二次創作に限らず、べつに作ったものをみんなに公開しないといけないわけじゃ、無いんですよ?

うーん、小梅とマリの間に、何があったんでしょうね。とっても気になります。今日は寝れるかな?

アニメ版と漫画版、それぞれのアートワーク

本題とは一切関係ないのですが、この話は先述したとおり、おおむね原作漫画をなぞったうえで一部演出やセリフをカットしたり追加したものです3。 その中でも、とくにビジュアルや演出が光ったアニメ化になっていると感じました。

なかでもわたしのお気に入りは、最後に小梅が「困難と試練」を授けられるシーンです。

原作漫画はこんな感じです:

フランスへ帰る準備をするマリを止めようとするシーンになっています。

これが、アニメ版では別れ際に、雪が降り積もる中でのシーンに変わっています4

これがまたとても抒情的で、印象的な、小梅が大きくなっても忘れられないのも納得してしまう、そんな、幼い日の回想の〆にふさわしいシーンに仕上がっていると思います。

一方、漫画版だって負けてません。扉絵の次の1枚は、イラストレーターとしての「はりかも」の実力が存分に発揮された、想像を掻き立てられる、とてもすてきな一枚だと思います。単行本だと白黒なのが、本当にもったいない。

一応画集にはカラー版もあったり(セリフとの相乗効果はこれでは見れませんが…)

マリと小梅の毎日はきっとこんな感じだったんだろうな、とあれこれ想像させてくれる、落ち着いてるけど、にぎやか。言葉で表現すれば、そんな絵でしょうか。

一方で、アニメ版の冒頭に追加されているこのカットは、光の使い方も含めて、「あぁ、小梅にとってマリはそれほど特別な存在なのだな」と、初見ではなく、改めて見返した時にはじめて意味がわかる、とても印象的な一枚になっています。

いやしかし、ほんと、ここの光の使い方は本当に…とってもきれい。

アニメはいつ見ても面白いし発見がある

「今期何見てる?」もいいけどさ、好きな時に好きなようにアニメ見ようぜ。そして好きに語ろうぜ!流行りなんか気にせず、二次創作しようぜ!

蛇足:すこぶる正しい「5歳児から見た18歳」像

これどこに書くかなやんで思いつかなかったのでここにぶちこむんですが、このエピソードの「5歳から見た18歳」というものが、すこぶる正しく描写されてる感じがして、そこも好きです。そうそう、18歳と30歳の区別は、付かないですよねぇ(笑)。

  1. ここでニッコリ笑顔!…どういう気持ちなのか、君のためにもと言われながら体よく厄介払いされて、どういう気持ちだったのか、想像させてくれる、いい表情です []
  2. この可能性を取る場合、前半で人形を飛ばしているシーンには、うっすらと、美化されていくうちに消えてしまった「仕掛け糸」が見えてきますかね? []
  3. あと、どこに書くか迷いましたが、実は小梅が箒に乗って空を飛ぼうとした理由が決定的に違います。 []
  4. 個人的には、小梅が駄々をこねている最中のマリの表情が追加されているのもポイント高いです。どんな気持ちなのか想像させられるいい表情です []

俺もココアだ―「ご注文はうさぎですか?? Wonderful party!」

Posted on

今日一週クリアしたんですが、エンディングの日はちょうどクリスマスの朝だったので、スケッチするように感想をさっと書き留めておきたいと思います。

ネット上ではこの画像で(一部で)有名なゲームです:

ですが、このゲームは実はココアさん「だけになる」わけではないです。いわゆる「個別ルート」に入って以降は、あなたはチノちゃん、リゼちゃん、千夜ちゃん、シャロちゃんのそれぞれに「なります」。いいか、なるんだよ

原作と同様、物語に大きな起伏があるわけではありません。異世界チートもないし生死を分ける戦いもないです。

前半では、あなたはココアさんとなってチノちゃんの誕生日を最高のものにすべくバイトとチラシ配りを一生懸命がんばって誕生日パーティを開き、
後半では、(チノちゃんルートでは)あなたはチノちゃんとなって、誕生日のお返しとして、たのしいクリスマスパーティを開くべく、人付き合いの苦手な彼女なりに奔走する。

それだけです。あえて悪く言うと、淡々としてます。人によっては退屈だと思うかもしれないくらい。

ですが、それでいい。

「グッドエンド」と呼ばれているものも、いわゆる普通の美少女ゲームと比べたらなんてことないです。「日常のささやかな一コマ」の範疇に収まってしまうかもしれません。でもそれでいいんです。なんでそれでいいのかわかりませんが、それでいい。

物語は、ココアさんがチノちゃんの誕生日(12月4日)が数週間後に近づいていることを知るところから始まります。

そしてココアお姉ちゃんは決心します。今年のチノちゃんの誕生日を、最高のものにしよう、と。

そのために、バイトを頑張って、あとコスプレしてチラシ配りをして、ラビットハウスの知名度をあげて喜んでもらおう、と。

…かなり発想が飛躍しています(たぶんシステムが決まってからシナリオが逆算されたんだと思う)。が、物語の中で「あれ?なんでチラシ配りしてたんだっけ??」ってココアさんも忘れる描写があるのでOKです。これを書いてて、わたしもなんでチノちゃんの誕生日のためにチラシ配りしてたのか忘れました。俺もココアだ

バイトのパートは正直難しいです。たくさんのオーダーにワーキングメモリが押しつぶされそうになります。でも、それもチノちゃんの誕生日を最高のものにするためです。バイトがうまくいってラビットハウスの知名度が上がるとなぜかうれしいのです。

チノちゃんの誕生日までに特定のキャラクターとの親密度をあげるか、ラビットハウスの知名度を最大にあげないと、(チノちゃんは喜んではくれるのですが)そこで物語は終わります。ここで「もっとチノちゃんに喜んでもらえる、最高の誕生日にできたはずなのに」という、悔しさにも似た感情が発生します。チノちゃんにモテなくて悔しいんじゃない、チノちゃんの誕生日を最高のものにしてあげられなかったことが悔しいんだ。これでは俺はお姉ちゃん失格だ。

チノちゃんの誕生日を最高のものにすることができたら、そのお返しとしてのクリスマスパーティを準備する、第二の物語が続きます。
この時は、(チノちゃんルートの時は)わたしはチノちゃんになります。

システム自体はいわゆる普通のギャルゲーで、三択したときに正解だと「友情度」が上がってエンディングが分かれるやつです。

でもそんなのはどうでもいい。チノちゃんになれば、自ずと選ぶべき選択肢はわかります。少なくともそんな気持ちになります。ほんとです。

あんなに素敵な誕生日を用意してくれたココアさんにお返しがしたい。でもわたしは、みんなでわいわいするパーティなんて開いたことないし、そもそもクリスマスといえばもっと慎ましく過ごすものだと思ってた。でも、そんなクリスマスじゃ、きっとみんな退屈しちゃう…どうしよう…。

チノちゃんは人に頼るのが苦手です。ですから、相談するのもいちいち憚ってしまう。ココアさんは相談してねと重ね重ね言ってくれるけれど、ココアさんにお返ししたいのだから、ココアさんには頼れません。最終手段です。

ラビットハウスはクリスマスももちろん営業があります。だから、一日貸し切って、なんてこともできません。仕事の後にパーティを開くしかない。そこがまたリアルなんです。

そんな彼女が出した「クリスマスパーティ」の答えは何か?これはもちろん遊んで確かめてほしいのですが、ココアさんのようなみんなを巻き込んだ盛大なものでは決してない、彼女なりのささやかな、でも一生懸命な素敵な答えです。


パジャマパーティーたのしそう

前半パートでは、毎週末集まってパジャマパーティがあります。これがまた楽しい。

そしてわいわい遊んだ後は、ココアさんとほかの誰かで一緒の布団で寝ます。添い寝しながら楽しく喋って寝る、それだけです。エロゲーは理解できなかったわたしでも、これなら理解できる。「ココアさんになれ」ました。楽しい。

「2人で一緒に寝たら残りの3人はどうしてるんだろう」と思わないではないが、そこは…きっと描かれてない3人の物語があるに違いない。


俯瞰してみると、「モバ美ちゃんPV」と同じく、「美少女 ⇔ 消費するオタク」みたいな構図を極力避けるようなシナリオとシステムになっています。ココアさん「だけ」になるんではなく、後半はほかのキャラクターにもなるので、一切片方向の視点で終わることがありません。ココアさんだけの視点でゲームが最初から最後まで完結していたら、きっとココアさんが実質的に「モテる主人公」になってしまっていたかもしれません。でも、このゲームでは、後半ではココアさんのために奔走することになります。ここがいやな感じが一切しない。

美少女をランダムウォークで生成し続けた

Posted on

make.girls.moeは、ブラウザ上のニューラルネットワークを使って美少女を生成してくれるサービスです。すこし内部に立ち入ると、このネットワークは、162次元の実数ベクトルを受け取って、128×128の「美少女」の画像を返すことに気がつきます。今回は、そのベクトルの「ゼロ点(全要素がゼロ)」からちょっとずつランダムに動かしながら生成し続けた、40人の「美少女」の動画を作りました。

github repo


make.girls.moeで10回ぐらい「美少女ガチャ」を回してみると、いわゆる「絵を描く」という行為とはすこし雰囲気が違うと感じました。

それを言葉で説明するのはまぁ置いておくとして、「機械が美少女を生成する行為」と「人間が絵を描く行為」が違うとして、機械ででしか出来ないことはなんだろうか、と考えてみました。

このニューラルネットワークの上では、「美少女」は162次元のベクトルです。

ベクトルであるということは、ある「美少女」AとBが与えられた時に、それらを使っていろいろな演算が出来るということです。例えば、C = αA + (1-α)Bとすれば、美少女AとBをα:1-αで「混ぜ」た新しい美少女Cができますね1。これはαを変数として見ると美少女AとBの間に直線を引いて、その間にいる無数の「美少女」を「生成」する、あるいは美少女を「連続的に変化させる2」式ですが、直線じゃなくても、色々な曲線を引いて、その間にある美少女を「連続的に変化」させて「生成」することもできるでしょう。

でも、「美少女を混ぜる」ことだったら人間でも出来ます。「ベクトル空間上の美少女」を混ぜるための方法が直線だけではなくたくさんあるのと同じように、例えば「髪は涼風青葉だけど目と口は八神コウ」とか。「数学的に混ぜている」わけではありませんが、描こうと思えば色々な「混ぜ方」で描けそうな気がします。ですから、「人間は出来ないけど、機械なら出来る」という感じはあんまりしません。

じゃあ、こんなのはどうでしょう。遠くはなれた他の点だけでなく、ベクトル空間では、ある点のすぐ近くに、無数の他の点が存在します。美少女の世界で言えば、ある美少女の近くに、無数の、よく似た、しかし相異なる3「美少女」が存在すると言うことになるでしょう。これも、一見人間とよく似ている気がします。以前、犬吠埼樹ちゃんを50人描いた事がありましたが、同じ樹ちゃんではあるものの、描かれた樹ちゃんは間違いなく全員異なる姿をしていました。なんか近い感じがします。

しかし、ランダムウォークはどうでしょうか。ランダムウォークは、ある点のすぐ近くの点に、きまぐれな散歩のようにどんどん移動する運動です。

一次元空間と二次元空間では、ランダムウォークには再帰性があって、「いつかは元居た所に帰ってくる」らしいです。まぁ、「いつか」だから、「一億年後」かもしれないけど。これは、全然意味は違いますが、人間のやっていることに近い感じがします。様々な試行錯誤をして異なる美少女の絵を描きながらも、「樹ちゃん」という目標はあり、そこの近くをぐるぐる行ったり来たりしている。そんな感じがしました。

でも、三次元以上のランダムウォークには、再帰性はないそうなのです。運が良ければ元のところに戻ってくるかもしれないけど、普通はもう二度と戻ってきません。そして、その行き先は、まったくのランダム。これは人間には、たぶん難しい。オリジナルのキャラクターを描くとしても、何回も試行錯誤しながら描いてる最中に「こっちがよさそう」と思いながらなんとなく方向転換をしていくわけで、まったくのランダムな方角へ進みながら、よく似た、でもまったく別の絵を描き続けることは、たぶん難しい。でもコンピュータなら簡単です

というわけで、冒頭の動画では全く同じところから出発した、40人の「美少女」を並べました。


@0枚目

これがmake.girls.moeが定義する「美少女」の「ゼロ点」です。なんとなく「無個性」な感じするかな。そうそう、162次元中、いわゆる「属性」34次元で、残りは「ノイズ」らしいよ。個性は、ノイズ。

それぞれの美少女はすぐに異なる美少女へ「変化」していきますが、そこでとどまることなく、常に変化をし続けていきます。

@36000枚目

@60000枚目

@72000枚目

まぁ、雲みたいな感じかな。じっと眺めていると同じだけど、気がつくと変わってる。


FAQ

有用性は?

知るか。

新規性は?

お前が新しいと思った所があればあるし、なければない。

ところで「新規性のある美少女」は、居るとすればこのニューラルネットワークの中と外、どっちに居ると思いますか。


(→別の紹介

  1. 本当に「混ぜた」ことになっているかはわかりませんが、そもそも「美少女の演算」ってよくわかんないですし []
  2. ネットワークの定義見てないしそもそも比喩的な意味でしかないけど、数学的にもback propergationしないといけないからネットワーク全体を関数として見た時にも連続だよ…ね…? []
  3. 厳密に単射かどうかはわかりません []

#クソポンチ絵forまんがタイムきらら を集合知で描いてる話、あと架空のまんがタイムきらら

Posted on

open-dokidokivisual.com is dead.

         ,, _ 
       /     ` 、 
      /  (_ノL_)  ヽ 
      /   ´・  ・`  l クソポンチ絵は死んだんだ 
     (l     し    l)いくら呼んでも帰っては来ないんだ 
     l    __   l   もうあの時間は終わって、
      > 、 _      ィ     君も人生と向き合う時なんだ
     /      ̄   ヽ    
     / |         iヽ 
    |\|         |/| 
    | ||/\/\/\/| | 

open-dokidokivisual.com

きららのクソポンチ絵で社会貢献!

2020までに”きららシンギュラリティ“達成へ

公式ハッシュタグ

#クソポンチ絵forまんがタイムきらら

あと一応、初期の属人性があった頃のモーメント

昔の

過去→

現在→そして子供たちに残したい未来の「きらら」へ

今期のきららアニメ面白い

今期のきららアニメ、「甘くて白い綿の花」めっちゃ面白くないですか?南北戦争時代のアメリカ南部のプランテーションで働く黒人奴隷のおんなのこ4人が主人公という設定はかなり攻めてるなと感じましたけど、「あぁ、奴隷にだって『日常』はあったんだよな」という当たり前のことを思い出させてくれて、それがまた儚くて、キラキラしてて。学校で学ぶ歴史とはまた少し違った当時のリアルな生活と、その中での「まんがタイムきらら」が織り交ぜられていて、時間を行き来しているような、そんな気持ちになります。

主人公の女の子たちの一人の子が持っている幽霊のぬいぐるみは「うらら」のマツコさんよりも輪を掛けて可愛くないし喋れもしない本当のぬいぐるみなのですが、話数を重ねるにつれ持ち主の子と大事な友情を育んでいることが分かるので、可愛いなと感じるようになってきました。わたしにも見えない友達が居るので、すごく共感します。誰にも見えなくても、大切な友達は大切な友達なんですよね。

コミックス版の煽りは「褐色多めでお送りします!」なだけあって「褐色フェチ」成分が多くてすこしセクシャルな感じはするのですが、まぁそれも「きらら」のいち側面に収まる範囲なので、わたしは許容できています。実のところ、ヌードデッサンの題材にさせてもらっています。リアルとアニメのバランスがいいですし、現実の裸はちょっと苦手なので重宝しています。

ぞいぞいぞい!

今日も一日がんばるぞい!

日曜日は物足りないぞい!

働いたら働いたぶん
本当の自分になれるんだぞい!

同じキャラクタを50回ぐらい描いてみよう

Posted on

お久しぶりです。モバミちゃんの記事を書いた後、すこし精神のバランスを崩してしまって、4月から入ったばかりの大学院を1年休学することにしました。半年ほどずっと一進一退を繰り返していたのですが、近頃やっとそこそこの元気が出てきたので、絵や写真、イラストをつくる姉妹サイト「妖精⊸ロケット」を始めたりしています。来年の3月ぐらいには、またこの事について触れたいです。


さて、絵を(また)描きたくなったので、描いてみることにしました。でも、昔描いていた時はポケモンを描いていたので、人間ははじめてで、まったく自信がありません。

もちろん下手でもよいのですが、あんまりにも下手な絵を描いて、何を描いたのかが伝わらずに、単に「下手だなぁ」って思われて終わるのも、なんかやだな…何を描いたか伝わる程度には上手くなりたいな…みたいな気持ちもあります。

そこで、好きなキャラクターを50回同じ構図で描いて練習してみることにしました。「結城友奈は勇者である」から、犬吠埼樹ちゃんです。

40165251

本当は一番好きなキャラクタは風先輩で、一緒に香川県うどん屋巡りしたいなーと毎晩夢に見るくらいですが、今回は髪が描きやすそうという基準で妹の樹ちゃんにしました。樹ちゃんも好き。

この樹ちゃんの、真正面顔を50回ほど描くことにしました。なんでそんな修行僧みたいな事を…と思うかもしれませんが、それなりに合理的な理由があります:

  • まず、好きなキャラクタだったら50回描いてもきっと苦痛じゃないだろうからです。それに、50回同じキャラを描いて、最初と最後を比較して上手くなってるのを見たら、嬉しくなりそうじゃないですか?
  • 既存のキャラクターなら「答え」がります。もちろん「答え」そっくりに描く必要なんてないのですが、それでも、比較する「お手本」があるのは心強いです。
  • 真正面顔にはとても良い性質があります。それは「左右対称だ」ということです。描く側にはこの性質を満たすように描くのはかなりつらいのですが、描かれた絵の出来の良さを自分の主観を排して調べるには便利な性質です。

実は100回描こうとしたのですが、50回ぐらいで頭打ちになってきて(それ以上描いても苦痛では無さそうだったけれど)もっと色々な絵が描きたくなったのでそこで止めました。


というわけでとりあえず手元にあったスケッチブックにガンガン描いていきます。

scan-001scan-002

ジャバ。

手元に三菱の色鉛筆(12色セット)があったので、それを使って色も塗ってみました。最初肌はどうすればいいのか良くわからなかったので、とりあえず髪と目だけ。樹ちゃんは肌白いし肌塗らなくてもそれっぽくなるのでは?…とも少し思ってたのですが、今見るとやっぱり流石に白すぎますね。

前髪の線や、目の輪郭、肩の線、どれも難しいです。前髪は気がつくと単なるギザギザになって髪っぽくなくなっちゃいます。とはいえ、難しいのもまた楽しい。

いろいろな道具で遊ぶ

昔描いていたときよりは多少財布に余裕があるので、色々な道具を買って遊んで試してみました。「初心者なんだから道具にこだわって形から入らないで描けよ」とか言われそうですが、いろいろな道具を使ってみることも一種の遊びです。正直、全部買っても大した金額にはなりません。

世界堂みたいな画材屋さんに行くと本当に沢山道具が置いてあって見ているだけでも楽しいですよ。

シャープペンシル

普段いつもシャーペンで(式とか)書いているので、最初はシャープペンシルを試していたのですが、細かい線を引こうとするとやっぱり0.5mmは太いかな…と感じたので、昔は誰が使うんだと思っていた0.3mmシャープペンシルに手を出しました。

最初は「オレンズ」っていう、折れにくいように常に芯の回りにアルミの筒が付いているやつを買ってみたのですが、スケッチブックが凹んでしまって使いづらかったです。スケッチブックの紙がへこむと、凹みに挟まった黒鉛が消しゴムで消せなくなりますし、後で色鉛筆で彩色する時に色が乗らなくなったりしてしまいます(それをあえて使う表現ももちろんアリです)。

PILOT S3っていう普通のに変えた所、オレンズに比べて確かに折れやすいのですが、折れるのってだいたい筆圧が強すぎるせいなので、弱く描けば大丈夫です。弱く書けば、紙も凹まなくなります。

ロットリングは大学受験の時にお世話になっていたシャーペンで、製図用です。しっかりと線を引くには良いのですが、全部金属製なだけあって正直重く、イラストだとちょっと難しいかなと感じました。なお、0.35mm用って書いてあるんですが、0.3mmの芯で使えます。

鉛筆

途中から並行でやってたデッサンには鉛筆が必要なので、鉛筆も買いました。いままで鉛筆というと、「100均で売ってるゴミ」か「それ以外」ぐらいの区別しかついてなかったのですが(例えば三菱9800TOMBOW8900の区別は付いていなかった)、文房具売場をよく見ると一本50円ぐらいの鉛筆から150円を越えるものまで色々あることに気がつきます。画材屋算に行くと世界中の鉛筆が置いてあります…。

ためしに何本か安いのから高いのまで買ってみると、描いていて全く違います!文字を書いてるだけだと気が付かないんですが、絵を描くと全然違います。そこに気づけただけでも、なんだか嬉しかったです。

全体的な傾向としては、安い鉛筆は面を塗る時に粉っぽいのが出てきて均一に塗れなくなったり、線を引いていても引っかかりがあったりするのですが、高い鉛筆にはそれがなくて、均一に塗れます。高い鉛筆同士、安い鉛筆同士でも違いがあることは何となく分かるのですが、今のところ「書き味」とか曖昧な言葉ででしか表現できないです。

今のところ、わたしが一番お気に入りなのはステッドラーのLumograph。その辺の文房具屋さんでも置いてある中では、一番高いやつです…。他のと比べると、ちょっと硬めで、そこが好き。

練り消し

練り消し、匂いが付いてるようなやつじゃなくて、デッサン用のやつ一回使ってみたかったんですよ!!

形を変えながら細かい所が消せたり、塗った後に押し付けてグラデーション作ったり、普通の消しゴムより出来ることの幅が広くて、新鮮な感覚が嬉しかったです。

最初に描いた絵(再掲)

scan-001scan-002

25回目ぐらいの絵

img049 img050

あんまり安定しないんですけど、それなりに見れる物が上がってきたような気がする(気がする)

50回目ぐらいの絵

scan-50 scan-57

主線を赤くするとなんだかPOPで可愛いなぁと思ったので主線が赤になりました。なかなか可愛く描けてる気がします。左右の目はほぼ1ミリの誤差もなく同じ大きさに出来るようになりました。ふわっとした感じで色をぬると、どうしてもスキャナで撮った時に白っぽくなってしまう…。

機械学習を使って採点してもらう

さらに、この最後の絵が「客観的」に女の子のイラストに見えるかどうか、機械学習に採点してもらいました。

Illustration2vecは、danbooruのデータを使って、画像からタグの予想をしてくれるので、これを使います。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-11-13-10-42-53

1girl, solo, smile, sketch…バッチリですね!no humansが気になるけど

illutrasion2vecは結構容赦なく採点してくるので、1girlタグが出た時は嬉しかったです。

今日は満開祭り2です

そして今日はこの樹ちゃんの出て来るアニメ「結城友奈は勇者である」のライブイベント満開祭り2ですね。わたしも行きます。人生ではじめてのアニメライブイベントです!リアル竹内くん、居るかなぁ。

まさか続編とはなー。もう「世界の秘密」を視聴者にも、そしてキャラクターたちにも全部明かしちゃったのに、どうやって続編作るのかが楽しみです。

その他、描く時に参考にしたサイト

美少女モバゲーのPVがすごいのでお前ら見なさい

Posted on

お久しぶりです。久々にグッとくるアニメがあって紹介したくなったので書きます。

前期のアニメ「ハッカドール THE あにめ〜しょん」で一人で相当頑張ってた「げそいくお」さんが殆どの部分1を担当した、「美少女モバゲー」というスマホ用美少女ゲームポータルのPVです。そう、PVです。

(サービス終了につき削除されたので、https://www.youtube.com/watch?v=NSaYGRd-i5kから転載)

この手のPVは殆ど見ないのですが、ハッカドール7話の元ネタという事で見てみました。

20160224_9

ちなみに、ハッカドール7話「KUROBAKO」ではこのアニメのテレビ版の制作を”捗らせ”にハッカドール1号が向かうのですが、苦労してなんとか締め切りに合わせた結果、こうなってしまいます…(◞‸◟ )

20160224_10

「困った時は全部おまかせ!モバミちゃん!」

美少女ゲームポータルの「時間軸方向に普遍的な」PV

さて、このPVは美少女ゲームポータルの宣伝用のビデオです。普通に考えると、

  • かわいい美少女が
  • たくさんいるよ!

という所を宣伝する事になります。すると、普通はこうなります:

20160224_01

遊べるゲームの可愛い美少女キャラクターやタイトル名を具体的にたくさん載せてこれでもか!これでもか!お前はこのキャラどうや?あのキャラはどうや?という感じです。ソシャゲーのCMとかエロゲーのOPとかもそういった所があります。エロゲーOPでは名前が、ソシャゲのCMだとさらにCVがついてることが多いですね。

【神撃のバハムート】CM 「その手の中」篇

20160224_2
20160224_3

これはこれで具体的にユーザーに「商品のスペック」を提示できるので、悪くはありません。一方で、こういった表現は露骨な「美少女カタログ」のように見えてきて正直すこし「引く」のが否定できないと2、「オタクの嫁は三ヶ月で変わる」という言葉で代表されるような現代の個々のコンテンツの猛烈な消費速度の下ではすぐ陳腐化してしまう事が避けられません。

では「モバミちゃんPV」はどうか。美少女モバゲーの「たくさんの美少女ゲームで遊べるよ!」というセールスポイントを、主人公であるモバミちゃんが、スマホから飛び出した美少女たちと一緒に元気に遊びまくることで余すこと無く表現しきっているのです!

20160224_4
20160224_5
20160224_6
20160224_7

色々な職業や属性の、「記号化」された美少女たちが入れ替わり立ち代わり出てくることで、華やかさや賑やかさと同時に、時間軸方向の普遍性を獲得しています。言い方を変えると、このPVは2014年に公開されたもので、今公開されているゲームはたぶん当時とは異なるでしょう。もしその当時のラインナップのキャラクタをそのままPVで使っていたら、そのPVは今見ると「古いな」と思えるものになっているかもしれません。でも、この「モバミちゃんPV」では「アイドル」「獣耳さん」「メイド」「ギタリスト」といったもう少し抽象的なレベルに持ち上げることで、今見ても遜色ないPVになっています。

「一緒に遊ぶ」爽やか部活体験!

20160224_11
20160224_12

さらに、このPVの主人公である「モバミちゃん」がその美少女達と同じ格好をして一緒に遊ぶことで、「美少女カタログ」「美少女動物園」のような「消費するオタク⇔消費される美少女」という非対称性な視線を意識させることなく、一緒に仲良く遊ぶさわやかで楽しい映像に仕上がっています。入れ替わり立ち代わり美少女が現れては消える演出も、楽しそうに一緒に遊ぶモバミちゃんと「高鳴るハートがある限り何度も挑戦でしょ!」「今日は わたしも知らないわたし Say Hello!」「なりたい自分になろう」という前向きな歌詞があれば、「カタログ」というよりは「モバミちゃんの部活体験」とでも表現できそうな趣の物語を感じさせてワクワクしてしまいます。

モバミちゃんの笑顔が若干顔に張り付いてる感じに見えるのはすこし気になりますが、とてもいい映像です。いやはや、良いもの見せてもらいました。世の中はどこに凄いアニメが転がってるのか分からないですね。

「動きもすごい躍動感があって爽やか」とか「中盤はコマ送りで見る価値あり」とか他にも言いたいことがあるけど、文章にしても伝わらないから、お前ら今すぐ見なさい

ハッカドール1号もご出演しています

20160224_8

あのアニメ見た後だと「何させられるんだ…何を…」みたいな感想にしかならないね…

  1. 監督・アニメーションキャラクターデザイン・コンテ・演出・作画監督・原画・デザインワーク・デジタルペイント []
  2. わたしが異性愛者の男性ではないからそう感じる可能性は否定できないですが‥ []

「※希望はありません」の誕生を観察してみよう

Posted on
がっこうぐらし!のOPのフレーズ「ここには夢がちゃんとある」の時に起こる弾幕、「※希望はありません」がどういうふうに生まれてきたのか、観察してみました。

ニコニコ動画の弾幕は歌詞の内容を元にした「空耳」であることが多く、歌詞には直接出てこないフレーズであるこの弾幕は面白い存在だと思います。

これは今日やったハッカソンでやったことのまとめで、使ったソースコードとデータ一式はこちらにあります

方法

  • 配信開始から一週間分の過去ログを集める
  • 「夢」「希望」(わかば*ガールば「鳴」)の少なくとも一方が含まれるコメントを抽出
  • 正規化されたレーベンシュタイン距離を使って適当にクラスタリング
    • 似ているコメント同士でも1000コメント以上離れたコメントは別グループに分け、グループ同士をエッジで接続しました。
    • 書かれているコメントを真似して書くコメントと、独立に思いついて偶然にたコメントを区別するためです。
  • 時系列にまとめて図に書く
    • デカいグループ(結果として「※希望はありません」になる)を真ん中に書く
    • そのグループに近い順に周辺に配置する

結果

1話

観察

  • かなり初期(No3326)に「※希望はありません」が出現
    • ほぼ同時期に「夢はあるけど希望はない」「※希望はない」も出現
  • 「※希望はありません」は最初からヒットした訳ではなく、一回目はそのままフォロワが無く消滅。
    • 2万コメント後に復活して細々続き、4日目にしてなぜか大ヒット。
    • 一旦少なくなるタイミングもある
      • コメントは1000件のキューであることを考えると、待ち行列的な混雑の揺らぎみたいなものだと考えていいのだろうか?
  • 初期は「夢がちゃんとある(〜とは言ってない)」のような従来的な歌詞に基づいたコメントが多い
    • その後も継続的に出現するが、「※希望はありません」と比べると相対的に弱くなる
  • 「※ただし希望は無い」などの派生系コメントは本家のヒット後に出現
    • しかしフォロワーはなく消え、暫くたつとまた似たような「※(希望と救いは)ないです」みたいなのが発生してくる。たぶん独立に何度も発生してる。
    • おなじ「まんがタイムきらら」作品が元ネタの「夢もキボーもありゃしない」系コメントも独立に散発的に出現している

なぜ4日目に大ヒットしたのか?

よく見ると4日目、07/12はGoogleTrendでの最大ピークと一致している。

SNSを見て検索して大量に流入したバズ志向の新規視聴者がこの弾幕でお祭り的に盛り上がろうとしたのが 大ヒットの原因であるという憶測はできるが、これだけでは証拠が弱すぎる。単なる偶然かもしれない。

2話

  • 一話の流行を受けて「※希望はありません」は最初から大人気

おまけ

「わかば*ガール」1話

わかば*ガールの今季一番アレな弾幕「TNP鳴らして」も調べました。

  • こちらです

  • 初期は「GONG鳴らして」、ないし素直に「ピンポン鳴らして」
  • 猛烈に書かれている瞬間があるが、よく見ると連投回避のためにちょっと文字変えてるのが固まってる
    • 実はクソ下品な弾幕書いてるのは極一部の人間だけだった説
    • 弾幕へ面白おかしく反応するコメントが「※」に比べて目立つのも気になる

洋裁経験ゼロから2日でつくるコスプレ衣装

Posted on

いろいろあって大学5年目ですが、先週末の学園祭には元気に参加しました!

今年の学園祭では、好きすぎて京都まで聖地巡礼に行ってきたアニメ、「いなり、こんこん、恋いろは。」のコンちゃんのコスプレをしてみました!

SONY DSC

SONY DSCしっぽも生えてるんですが、この写真だと見えないですね~。この格好でお客さんにエルニーニョの説明をしました。あんまりうまく説明出来ませんでしたけど!

たぶん「いなこん」を全話見た皆様でも「こんなキャラ居たっけ…?」みたいな感じかと思われますが、OPで一瞬だけ出てきます。

20140520_2

いなりちゃんといつも一緒にいる子狐の神使・コンちゃんが人間の姿で顕現する時の姿で、漫画ではみんなで一緒に海に行く話のあとの回で登場します。

20140520_3

何度見てもコンちゃんかわいい~!!(フサ フサ)

この話は殆ど他の話のフラグに依存しないし影響もしない、いわゆる「エピソード」なので、10話しかないアニメではカットされたのだろうと思います。漫画8巻の付属BDにはこのエピソードのアニメが入るらしいですよ!買うしか無い!買うしか無い!(回し者)

アニメには登場しないキャラなので(狐の姿なら毎回出てるけど)、当然衣装とかは売ってません。というわけで、人生初のコスプレは衣装から全部自作です!何故人はマイナーなキャラクターのコスプレをしたくなってしまうのか!!

洋裁をするのは小学校以来で、その時は間違えて縫って履けないズボンを作って、そのまま心折れて提出もせずに卒業したような気がします。そんな感じです。あと3年くらい前に女装してニコ生でiPadケース縫った気がしますが、ありゃノーカン。

作る時に考えたことを、断片的にメモっておこうと思います。

服の構成要素は既成品改造レベル

コンちゃん(人型)の可愛さに気づいて現在パソコンの背景にしている画像がこちらです。

20140520_4この画像をよく見ると、全体の衣装はファンタジーな感じでとてもかわいい1のですが、個々の要素は既存の服をすこし変えたものであることが分かります。

  • マントとフードは、レインポンチョのマントの形を変えたりフードに耳生やしたりすればいけそう
  • 上着は、和服から袖を取ったもの。帯は普通に帯。
  • ズボンは普通の半ズボンの上の部分を袴みたいにすればそれっぽくなりそう。

この時点で、既存の洋裁の型紙を改造すれば、無理をせず十分それらしい衣装が作れそうだと分かります。

あとさらに洋裁初心者には大変うれしいと思ったポイントが

  • とりあえず赤い布と白い布さえあれば作れる

というところです。たくさん材料があると混乱してミスをしてしまいそうなので、とりあえず白い布と赤い布を大量に買っておけばあとは形をどうしてどう縫うかの問題に落とし込めるのは大変好都合に見えました。

 ミシンは適当で良かったっぽい

ミシンすら持ってなかったので、適当に買いました。

ミシンもたくさん種類が出ていてどれ買えばいいの~!?という感じだったのですが、ふなっしーのコスプレをしている超上級者の友人に「3万くらいのコンピュータミシンならどれでもOKじゃない?」みたいなアドバイスをしてもらったので、適当に安いのを選びました。実際使ってみて過不足なかったので、大丈夫だったっぽい。

フットペダルはやっぱり便利ですね。あと最近の機種はみんなそうなのかもしれませんが、この機種は糸通しがミシン本体に付いてて、糸を針に通すのがめっちゃ楽でした!

ちなみにこのミシンが来たのは木曜日で、学園祭は土曜日からだったので非常にタイトなスケジュールでした。もっと計画的になろう(◞‸◟ )

既成品の型紙を集める

大学近く(といっても徒歩20分)にユザワヤが最近できたので、型紙含め材料全部買ってきました。

麻の入った朱色の布がたまたまあったのがすごいラッキーでした。結構余ったので、巫女装束とか作っても良いかな~?

制作

しっぽ⇨袋を作ってフェイクファーをはりつける

しっぽに関しては、四角い袋を適当にぬって先端を丸くしたあと、フェイクファーの帯をボンドで貼り付けまくりました。

SONY DSCそれっぽくなったものの、ボンドが固まっているので、触ると硬くなってしまってモフれないのが難点です。布状になってるフェイクファーがあれば、直接それを袋にすることも可能だったかも…。

マント⇨ほぼそのままだけど裏地大変

マントは今回の衣装にいらなさそうなディテールを適当に削りつつ、マントの形を型紙レベルで書き換えただけです。一番大変だったのは赤い裏地を付ける所で、そのために赤い布と白い布の両方で同じ型紙をカットして縫い合わせないといけないので、作業が普通に作る時の倍以上になります。

SONY DSC装飾とかは全部ボンドで貼り付けました。ボンド便利!!上の写真だと頭にちゃんと葉っぱがついてますが、この葉っぱはリアル葉っぱです(つくりものの葉っぱを買い忘れた)

ズボン⇨袴風にするためにサイドをカットする

SONY DSC袴は昔、高校(ほとんど行ってない)で剣道の授業があって着たことがあったので、それを思い出して、適当に腰のところをカットして、ゴムじゃなくて帯で腰を縛るようにしています。本当の袴はさらに前のほうは5本のひだが付いていたりするのですが、コンちゃんの衣装はそうではなさそう。

結局上着のおはしょりで隠れるのであまり意味はありませんが、しっぽがズボンに固定されていて重いので、それをしっかり持ち上げるのにはちょうど良かったです。

足が出てくるところ(ボタンがついてるところ)がすこしくびれているのがとても可愛いので、再現しようと先の方だけ細くなるように、足先につれて太くなっていた所を途中から細くなるように型紙を改造したのですが、あまりそれっぽい感じにはなってくれませんでした…。

上着⇨おはしょりを作るために長くした

上着は二部ゆかたの上の部分だけ利用することで制作しました。袖も付けていません。

SONY DSCこの二部ゆかたの型紙では、「おはしょり」は浴衣が上下に分かれていることで表現されているのですが、今回は普通に「おはしょり」を作りたかったので、上着の型紙を30cmくらい延長して、長めにしました。

「縫う」より「切る」方が大事

今回やってみて感じたのは、ミシンを使うからついつい「縫う」のが大事なように思ってしまうけど、それよりもちゃんと綺麗に型紙を布に移して、綺麗にカットするのが大事だったということです。華々しさがない作業なのでついつい手を抜きたくなってしまうのですが、ここで手を抜くと後の作業全てに響きます。

小学生の時の私はまち針とかもめんどくさくて殆ど使わなかったような記憶があるのですが、これもちゃんとまち針さして布を固定するのは非常に大事でした。

反省点

反省点もいくつか有ります。

  • 子供用のレインポンチョの型紙を使ったせいで、頭とマントの接合部が首より短くなって着れなくなってしまいました。
    無理やり布でつぎたしましたが、正直不格好。
  • 浴衣の構造を理解せず作っていたので、襟の縫い代が外に出ています。まさか、襟が胸のところまで続いてるなんて知らなかったんだもん!
  • ズボンは長すぎたと思います。足が出てくるところのくびれもとてもかわいいと思うのですが、ここがうまく再現できなかったのは残念です。

あと中の上着に袖が全くありませんが、本当はあります。

20140520_5コミケもこのコスプレしようと思ってますが、その時までに改善できるのか…!?

あと、ちさちゃん(1/6人形)と同じ格好をしてみるのが夢(?)なので、1/6サイズとかで作ってみてもいいかも!

とりあえずTwitterで「作ってみようかな」とつぶやいてみる効果

今まで、「作る」って周りに宣言しちゃうと作った気になるからあんまり言わないようにしてたのですが、今回はこの一言で「ぜったい作るぞ~」みたいな気分になってきたので、「作ろうかな」という思いつきを具体的な言葉にしてつぶやきまくってみるのは結構有用かもな~と思いました。あとは一日24時間の制約と肉体的疲労にどう打ち勝つか…(◞‸◟ )

誰も知らないキャラのコスプレってどういう行為なんだ

コスプレって、例えば初音ミクとか有名なキャラの格好をして「あっ初音ミクだ!似てる!」って思ってもらう一種の相互的なコミュニケーションだと思うんですけど、コンちゃんはほとんど誰も知らないので(とはいえ聞かれたので説明したら2人くらい分かってもらえた)、コミュニケーションが成立してない気がするんですけど、

私が満足してるのでそれでいいとおもいます(小学生並の感想)

  1. 特にマントの裏地が赤いのがほんとーにかわいーとおもいます! []

凪のあすからの恋愛関係からページランクを求めてみました

Posted on

最近友人に薦められて、今日が最終回らしい「凪のあすから」を見ています。今6話なのですが、恋愛関係が大変複雑です。「深夜の昼ドラ? アニメ『凪のあすから』の人物相関図つくったよ」というページがあったので、引用しますと、こんな感じ。

うーん、グラフ理論って感じだ。そう思ってからピクシブの非公式カップリングのページを見てしまうと、もはや隣接行列か何かにしか見えなくなってきた…。

20130403隣接行列…グラフ理論…はっ!ページランク求めようページランク!

というわけで、今まで一回ぐらいやってみようと思っていた、ページランクの計算を実際にやってみました。こちらの「Google の秘密 – PageRank 徹底解説」を参考にしました。人間をページに見立てて、好意をリンクに見立てます。

ページランクとは結局何なのか

昔私が読んだ本だと、

  • 全てのページはページランク値PRを持っていて、
  • 他のリンクしているページそれぞれににPR/N(Nはページ内のリンク総数)を与えており、
  • ページランクの値PRはリンクされた他のページから貰ったページランク値の和に等しい

というのを読んだ気がします。つまり、貰ったページランク=あげたページランク=そのページのページランクという等式が成り立つということです。

元の論文にもそんな図が載っています。

20130403-2

Lawrence Page, Sergey Brin, Rajeev Motwani, Terry Winograd, ‘The PageRank Citation Ranking: Bringing Order to the Web’, 1998,
http://www-db.stanford.edu/~backrub/pageranksub.ps

これをグラフ理論と確率過程の話で表現すると、こうなります。

  • 各ページから他のページへ移動する確率の表を用意する(とりあえずすべてのリンクで等確率=1/リンク総数とする)
  • その表に従ってあるページから出発してリンクをたどり続ける
  • すると、どのページから出発しても、N回リンクをたどった時にあるページPに居る確率がN+1回目のそれと変わらなくなってくる(これを定常状態と呼びます)
  • その時の、N回目でそれぞれのページに居る確率がページランクです。

これがホントに元の話と一緒なのか?ということなのですが、

  • “もらうページランク”=(自分も含めた他のページにN−1回目に居る確率*それぞれの遷移確率)の和=N回目にそのページにいる確率
  • “あげるページランク”=(N回目にそのページにいる確率 * そのページから他のページへの遷移確率)の和=N回目にそのページにいる確率1

なので、もらうページランク=あげるページランクという関係は確かに成り立ちます。

求めてみる

ページ遷移確率表=行列

実際にもとめてみましょう。まずは、鍵となるページ遷移確率表を用意します。さっきの表を見ながら、ひーくんからまなかへ遷移する確率は1…みたいな感じで行列を作るとこうなります。一応、今回は友情は無視して恋愛関係だけ考えます。

M =
 ひーくん ちさき  まなか   要    さゆ   美海   つむぐ  あかり  至    みをり ←好き ↓好かれる
   0.00000   1.00000   0.00000   0.00000   0.00000   1.00000   0.10000   0.00000   0.00000   0.00000 ひーくん
   0.00000   0.00000   0.00000   1.00000   0.00000   0.00000   0.10000   0.00000   0.00000   0.00000 ちさき
   1.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.10000   0.00000   0.00000   0.00000 まなか
   0.00000   0.00000   0.00000   0.00000   1.00000   0.00000   0.10000   0.00000   0.00000   0.00000 要
   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.10000   0.00000   0.00000   0.00000 さゆ
   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.10000   0.00000   0.00000   0.00000 美海
   0.00000   0.00000   1.00000   0.00000   0.00000   0.00000   0.10000   0.00000   0.00000   0.00000 つむぐ
   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.10000   0.00000   0.50000   0.00000 あかり
   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.10000   1.00000   0.00000   1.00000 至
   0.00000   0.00000   0.00000   0.00000   0.00000   0.00000   0.10000   0.00000   0.50000   0.00000 みをり

普通、ページには複数のリンクがありますが、このアニメだと思い人が二人以上居るのは不倫と勘違いされて殴られた至だけです。

あと6話時点ではつむぐは誰も好きではないので、つむぐの行が全部0になるはずなのですが、そうしてしまうとページランクが求まりません2

これを元論文ではdangling pageと呼んでいます。元論文では「あんまり重要じゃないから削除して計算しています」と無視してしまっているのですが、つむぐくんを無視するのはかわいそう(?)なのと、仮につむぐくんを消してしまうと今度はまなかがdangling pageになって…となって最終的に大人組しか居なくなってしまうので、次に紹介するrandom surferモデルに習って、みんなを平等に好きなことにしました。

計算は掛け算するだけ

元の定義通り、「あるページからスタートしてリンクをたどり続けた時に、それぞれのページに居る確率が一定になってくる」まで遷移させ続けます。

たとえば、ひーくんからはじめましょう。はじめはひーくんに居ると仮定しているので、ひーくんに居る確率は1で、他みんな確率0とします。

1回リンクをたどると、グラフを見るとひーくんはまなかが好きなので、まなかの確率が1になるはず。

これを我々が先ほど作った行列を使って計算しようとするなら、先ほどの行列Mに、ひーくんを1としたベクトルPを掛ければよいです。

octaveでやるとこんな感じです。

octave:95> M=[ 0 1 0 0 0 1 1/10 0 0 0 ; 0 0 0 1 0 0 1/10 0 0 0; 1 0 0 0 0 0 1/10 0 0 0; 0 0 0 0 1 0 1/10 0 0 0 ; 0 0 0 0 0 0 1/10 0 0 0 ; 0 0 0 0 0 0 1/10 0 0 0; 0 0 1 0 0 0 1/10 0 0 0 ; 0 0 0 0 0 0 1/10 0 1/2 0; 0 0 0 0 0 0 1/10 1 0 1; 0 0 0 0 0 0 1/10 0 1/2 0 ]
(略)
octave:96> P = [1; 0; 0; 0; 0; 0; 0; 0; 0; 0] ←ひーくんに居る確率を1としたベクトル
octave:97> M*P
ans =

   0
   0
   1
   0
   0
   0
   0
   0
   0
   0

というわけで、まなかは三番目の要素で、それが1となったので、見事正しい結果を得られています。これを沢山続けてみましょう。10000回ぐらい掛けると変わらなくなってきます。

octave:98> (M^10000)*P
ans =

   0.00000
   0.00000
   0.00000
   0.00000
   0.00000
   0.00000
   0.00000
   0.22222
   0.55556
   0.22222

…あれぇ?最後の3人、つまり大人組以外ゼロ?なんか間違ったかなぁ?

ランダム・サーファー・モデル

こうなってしまった原因は、大人組から子供組へ繋がっていないことです。つむぐくんは全員が好きだと仮定したので、子供組から大人組へはつむぐくんから遷移することが出来るのですが、その後は大人組の間でぐるぐるぐるぐる巡り続けることになります。ひーくんからはじめても長い目で見ればいつかは大人組に入ってしまい、そこで定常状態となるので、子供組の確率がすべて0になってしまったのです。グラフ理論の言葉でいうと、グラフを辿ると元の位置に必ず戻ってこれる大人組のような部分を再帰類と呼び、そうではなく元に戻れない子供組のような部分を非再帰と呼ぶそうですが、あまりこれ自信をもって解説できないので、しません…。

元の論文ではこれをRank sinkと読んでいて、そのためにランダム・サーファー・モデルというのを考慮しています。これはどういうモデルかというと、「時々はまったくリンクされていない別のページに飛ぶ」と考慮しているモデルです。具体的には、新しい遷移確率行列を次のように定義します。

octave:99> M2=(M*1/1.15)+((1/10)*0.15/1.15)

これは、まず今までの確率を少し下げた上で、あるページから他のページへ僅かな確率で飛ぶようにした、ということです。凪のあすからの言葉を使えば、ひょっとするとひーくんは他の女の子(や男の子)にも興味を持つかもしれないよねというモデルです。

この修正したモデルでは、あるページから他のページへ少ない確率ながら必ずジャンプできるので、Rank sinkのような問題は起こりません。

早速、計算してみましょう。

octave:100> (M2^10000)*P
   0.095976 ひーくん
   0.060684 ちさき
   0.106569 まなか
   0.043208 かなめ
   0.023111 さゆ
   0.023111 美海
   0.115780 つむぐ
   0.135981 あかり
   0.259599 至
   0.135981 みをり

やはり両思いは強いのですね!(?) 子供組を見ると、やはり特に重要そうなキャラクターであるひーくん、まなか、つむぐの三人のページランクが高いので、おおよそページランクの妥当性を示せたと言っていいんでしょうか!?とりあえず、この三人に注目して今後は視聴を続けたいと思います!

蛇足:固有値・固有ベクトルを使って求める

なんか10000回も行列を掛け算するのは…という感じしますか?元の論文だとその方法で計算してると書いてあるのですが、これは行列の固有値・固有ベクトルを使っても求めることが出来ます。

固有値・固有ベクトルをおさらいしておくと、

  • ある行列Mに対する、
  • 固有値μ・固有ベクトルVは、
  • 次のような関係を満たすものです
  • MV = μV

ここで、固有値μ=1なら、MV=Vとなって、N回目とN+1回目でのそれぞれのページに居る確率が全く同じという事になり、ちょうど私達が求めたかったベクトルと一致しますね!

octaveで求めるとこんな感じになります。

octave:142> eig(M2)
ans =
   1.00000 + 0.00000i ←求めたい、固有値1の固有ベクトルは1番目だと分かる
   0.78950 + 0.00000i
   0.19713 + 0.55213i
   0.19713 - 0.55213i
  -0.86957 + 0.00000i
  -0.59237 + 0.00000i
  -0.25222 + 0.45314i
  -0.25222 - 0.45314i
   0.00000 + 0.00000i
   0.00000 + 0.00000i

octave:143> [V, D] = eig(M2); ←固有値と固有ベクトルを再度格納
octave:144> V(:,1) ←固有ベクトル1番目を取得する
ans =
   0.252078
   0.159383
   0.279899
   0.113484
   0.060701
   0.060701
   0.304091
   0.357146
   0.681825
   0.357146
↑固有ベクトルは整数倍しても固有ベクトルで、octaveはベクトルの大きさを1に正規化するので、さっきの結果と合わない
octave:146> V(:,1) ./ sum(V(:,1)) ←ベクトルの要素の合計が1となるようにすると…
ans =
   0.095976
   0.060684
   0.106569
   0.043208
   0.023111
   0.023111
   0.115780
   0.135981
   0.259599
   0.135981
↑先ほどの結果と一致する!

こんな感じで計算できます。固有値ってこんなのにも使えるんですね〜。ちなみに、この行列の固有値のうち、絶対値が一番大きいものはかならず1になることがペロン=フロベニウスの定理から言えるらしいのですが、よくわからないので解説できません…。

感想

凪のあすからは線形代数と確率過程とグラフ理論を学べる神アニメ

ていうか実は前期のアニメで一番好きだったのは「いなり、こんこん、恋いろは」で、京都と出雲にまで行ってきたのですが、それを書く日は来るのだろうか…!?

  1. 他のページへの遷移確率の和は1です。リンク総数*(1/リンク総数)=1。 []
  2. つむぐから他のページに遷移できないので、確率がそこで皆0になってしまう []

Lazy aKari:わぁいLazy K あかりLazyKインタプリタだいすき

Posted on

Abstract

CPUのクロック数が頭打ちになり、1コアあたりの性能を向上させるよりもコア数を増やす事による並列性能向上が行われるようになった昨今では、並列化の行い易い純粋関数型プログラミング言語が注目されています。本研究で題材とするLazyKは、トークンが4つというシンプルさでありながら、チューリング完全な純粋関数型プログラミング言語です。

一方、近年のアニメシーンにおいて、アニメ本編よりもインターネット上での罵声の浴びせかけあいやステマばかりが着目され、アンチと信者のせめぎあいがより激しくなり荒廃が進んでいます。

7/2より放送されている「ゆるゆり♪♪」の主人公赤座あかりは、彼女の必殺技「\アッカリ~ン/」によって可視光における強い参照透過性を実現し、彼女のすべてを愛す性格によって、世界に愛をもたらしています。

本研究では、LazyKに赤座あかりの愛を組み合わせた独自言語「Lazy aKari」を実装することで、LazyKの啓蒙と世界に愛を広めました。

いつも通りの「トークン変えただけのゴミ言語のお時間」です。Brainfuckでやってる事が多い気がしますが、毎度毎度Brainfuckでやるのも流石に秋田ので別のにしました。トークンが4つで調度良かったのでLazyKです。で、毎度毎度手続き型で書くのも秋田ので今回はLISPで書いて見ました。ほとんどLISPの機能を使ったので随分楽ちんな実装となっております。

Scheme処理系の一つであるgaucheを使ってます。

Unlambdaスタイルのみに対応しております。トークンの対応は次の通り

  • わぁい⇨`
  • うすしお⇨s
  • あかり⇨k
  • だいすき⇨i
$ gosh akari.scm <ソースファイル>

として、入力を入れたらCtrl+D(WindowsではCtrl+Zらしい)を押して入力を確定すると、プログラムが実行されて結果が表示されます。

サンプル:echoプログラム

入力をそのまま返します。

大好き

これを保存してgosh akari.scm echo.txtとして実行し、入力したらCtrl+D(WindowsではCtrl+Z)を押してね。入力した結果がそのまま表示されます。

% gosh akari.scm echo.akari
yryr[Ctrl+D]
yryr

大好きはエコー…。そう、人と人との絆は、相互承認なのです(鼻で笑いながら

サンプル:Hello World

Hello Worldです。メッセージ変えたかったのですがLazyKは書ける気がしなかった()のでWikipediaのをそのまま使いました

わぁいあかりわぁいわぁいうすしおわぁいわぁいうすしお大好きわぁいあかりわぁいわぁいうすしおわぁい
 あかりわぁいわぁいわぁいうすしお大好き大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかり
 うすしおあかり大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁい
 うすしおわぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁいわぁいうすしおわぁい
 わぁいうすしお大好き大好き大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり
 大好きわぁいあかりわぁいわぁいうすしおわぁいわぁいうすしお大好きわぁいあかりわぁいわぁいうすしおわぁい
 わぁいうすしおわぁいあかりうすしおあかりわぁいわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかり
 うすしおあかり大好きわぁいわぁいうすしおわぁいあかりわぁいわぁいうすしおわぁいわぁいうすしおわぁい
 あかりうすしおあかり大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかりわぁい
 わぁいわぁいうすしお大好き大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり
 大好きわぁいあかりわぁいわぁいうすしおわぁいわぁいうすしお大好きわぁいあかりわぁい
 わぁいうすしおわぁいあかりわぁいわぁいわぁいうすしお大好き大好きわぁいわぁいうすしお
 わぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいわぁいわぁいうすしお大好き
 大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁい
 うすしおわぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいあかりわぁいわぁいうすしお
 わぁいわぁいうすしお大好きわぁいあかりわぁいわぁいうすしおわぁいあかりわぁいわぁいわぁい
 うすしお大好き大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり
 大好きわぁいわぁいわぁいうすしお大好き大好きわぁいわぁいうすしおわぁいわぁいうすしお
 わぁいあかりうすしおあかりわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり
 大好きわぁいあかりわぁいわぁいうすしおわぁいわぁいうすしお大好きわぁいあかりわぁいわぁい
 うすしおわぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁいうすしおわぁいあかりわぁい
 わぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいわぁいうすしおわぁい
 わぁいうすしおわぁいあかりうすしおあかりわぁいわぁいうすしおわぁいあかりわぁいわぁいうすしお
 わぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいわぁいわぁいうすしお大好き
 大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁいうすしお
 わぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいあかりわぁいわぁいうすしおわぁい
 わぁいうすしお大好きわぁいあかりわぁいわぁいわぁいわぁいうすしおわぁいわぁいうすしおわぁい
 あかりうすしおあかりわぁいわぁいわぁいうすしおわぁいわぁいうすしお大好き大好き大好き
 わぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいうすしお
 わぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁいわぁいうすしお大好き大好き
 わぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁいうすしお
 わぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいあかりわぁいわぁいうすしお
 わぁいわぁいうすしお大好きわぁいあかりわぁいわぁいうすしおわぁいあかりわぁいわぁいうすしお
 わぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいわぁいわぁいうすしおわぁい
 わぁいうすしお大好き大好き大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁい
 あかりうすしおあかり大好きわぁいあかりわぁいわぁいうすしおわぁいわぁいうすしお大好き
 わぁいあかりわぁいわぁいうすしおわぁいあかりわぁいわぁいうすしおわぁいわぁいうすしお
 わぁいあかりうすしおあかりわぁいわぁいうすしおわぁいあかりわぁいわぁいうすしおわぁい
 わぁいうすしおわぁいあかりうすしおあかり大好きわぁいわぁいうすしおわぁいわぁいうすしお
 わぁいあかりうすしおあかりわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり
 大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁいわぁい
 うすしおわぁいわぁいうすしお大好き大好き大好きわぁいわぁいうすしおわぁいわぁいうすしお
 わぁいあかりうすしおあかり大好きわぁいあかりわぁいわぁいうすしおわぁいわぁいうすしお大好き
 わぁいあかりわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁいうすしお
 わぁいあかりわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいわぁい
 うすしおわぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁいうすしおわぁいあかりわぁいわぁい
 うすしおわぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいわぁいわぁいうすしお大好き大好き
 わぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁいうすしおわぁいわぁい
 うすしおわぁいあかりうすしおあかり大好きわぁいあかりわぁいわぁいうすしおわぁいわぁいうすしお大好き
 わぁいあかりわぁいわぁいうすしおわぁいあかりわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしお
 あかり大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁいうすしお
 わぁいあかりわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいわぁいうすしお
 わぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁいわぁいうすしお大好き大好きわぁいわぁいうすしお
 わぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり
 大好きわぁいあかりわぁいわぁいうすしおわぁいわぁいうすしお大好きわぁいあかりわぁいわぁいうすしおわぁいあかり
 わぁいわぁいわぁいうすしお大好き大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり大好き
 わぁいわぁいわぁいうすしお大好き大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしお
 あかりわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいあかりわぁいわぁい
 うすしおわぁいわぁいうすしお大好きわぁいあかりわぁいわぁいわぁいうすしおわぁいわぁいうすしおわぁい
 あかりうすしおあかり大好きわぁいわぁいうすしおわぁいあかりわぁいわぁいうすしおわぁいわぁいうすしお
 わぁいあかりうすしおあかり大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり
 わぁいわぁいわぁいうすしお大好き大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうす
 しおあかり大好きわぁいあかりわぁいわぁいうすしおわぁいわぁいうすしお大好きわぁいあかりわぁいわぁい
 うすしおわぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁいうすしおわぁいあかりわぁいわぁいうすしお
 わぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいわぁいわぁいうすしおわぁいわぁいうすしお
 大好き大好き大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり大好き
 わぁいあかりわぁいわぁいうすしおわぁいわぁいうすしお大好きわぁいあかりわぁいわぁいうすしおわぁい
 あかりわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいわぁいうすしお
 わぁいわぁいうすしおわぁいあかりうすしおあかりわぁいわぁいわぁいうすしお大好き大好きわぁいわぁい
 うすしおわぁいわぁいうすしおわぁいあかりうすしおあかり大好きわぁいあかりわぁいわぁいうすしおわぁい
 わぁいうすしお大好きわぁいあかりわぁいわぁいわぁいうすしお大好き大好きわぁいわぁいわぁい
 うすしお大好き大好きわぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり大好き
 わぁいあかりわぁいわぁいわぁいうすしお大好き大好きわぁいわぁいわぁいうすしお大好き大好き
 わぁいわぁいうすしおわぁいわぁいうすしおわぁいあかりうすしおあかり大好き

どうしたあかり。たまにはのり塩も食べないと。

% gosh akari.scm hello.akari
[Ctrl+D]
Hello, world!

かんたんなかいせつ

LazyKは上にあるように、4つのトークン`skiをつかいます。で、そのうちskiの3つは関数です。LISPで書くとこんな関数。

(define (S x) (lambda (y) (lambda (z) ( (x z) (y z)))))
(define (K x) (lambda (y) x))
(define (I x) x)

で、`というのは関数呼び出しを表します。つまり、`ikは(I K)で、“skiは( (S K) I)のことで、`s`kiは(S (K I) )ということです。関数は必ず1つだけ引数を取ります。以下可読性を重視してLISP形式で書きます。

Iは引数をそのまま返す関数なので簡単ですね。

Kは関数を返す関数です。つまり、(K 1)の戻り値は (lambda (y) 1)という「関数」で、((K 1) 2)としてさらに戻ってきた関数を呼び出すと1(=x)という結果になります。なんでこんな面倒な事をするかというと、LazyKの世界では関数は引数を1つしか取れないのですが、Kという関数にはどうしても2つ引数を取らせたかったからです。LazyKでは関数は関数を返すことができるので、関数を返す関数を作ることで引数が1個しかとれない問題を回避しています。これをカリー化と言うそうです。

Sはちょっと厄介ですね。((S K) K)が関数Iと等しい関数であることを確かめると理解できると思います。

((S K) K) -> (lambda (z) ( (K z) (K z))) ;定義にしたがって、xとyをKに置き換えただけ
-> (lambda (z) ( (lambda (w) z) (K z))) ;最初の(K z)を展開した。内側のラムダ式でwは使われないことに注目。
-> (lambda (z) z)
-> これはIそのもの

…うーん、面倒ですね。

数字は?

LazyKは上記でみた3つの要素しかありません。数字というリテラルはありません。えっ、でも計算くらいできないと困るじゃん。

そこでLazyKでは、数をチャーチ数というので表します。数とありますがやっぱり関数で、この関数に別の関数fを渡すと、fをn回適用してくれる関数を返してくれる関数です。「関数」がゲシュタルト崩壊してきてはあ?って感じですね。たとえば、チャーチ数で3を表す関数をchurch-3は、引数として関数fをとり、「f(f(f(x)))を返す関数」を返してくれます。つまり、渡す関数を「引数に1を足して返す関数」にすると、

(define (adder x) (+1 x)) ;1を足した引数を返す
((church-3 adder) 0) -> 3

というわけです。ちなみに、チャーチ数の0は(K I)です。

リストは?

よくわからないんですけどこれも関数で表します。LISPのcar/cdrなリストと同じような構造で、具体的にはリストの関数を_LIST_とすると、(_LIST_ K)とするとcarが、(_LIST_ (K I))とするとcdrをしたことになるらしいです…。同様にconsも定義できるそうです。 終了条件がわからない(lispでのpair?はどうやるの?)ので誰か教えてください。

入出力は?

入出力は上で紹介したチャーチ数とリスト構造を使います。LazyKのプログラムは関数を組み合わせて作られる大きな大きなひとつの関数なので、これへ引数として入力値のASCIIコードをチャーチ数で表したもののリストを入れて実行されます。で、その戻り値(チャーチ数のリスト)が出力というわけです。

なので、「大好き」(=i)だけのプログラムは、入力値をそのまま返すechoプログラムになったわけですね。

というかですね

LazyKは情報がなさ過ぎます。あと実をいうと二期はまだ見てないです(

二期みた

こwwwwwねwwwwwこwwwwwwwちゃんwwwwwwwwwwwwwwwwwwwたちwwwwwwwwwwwwwwwwwww