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

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

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

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


録画したアニメのファイル名を自動で書き換えて整理しよう:「ShoboCal_Renamer」

Posted on

 現在、このサーバは「foltia」という録画ソフトとPT2を組み合わせた、アニメ録画サーバを兼ねています。このfoltiaでは、ファイル名を以下のような形で格納しています:

1725-35-20100607-1730.m2t
(しょぼいカレンダの番組ID)-(話数)-(日付)-(時間).拡張子

 このファイル名の書式は機械が扱う分には簡単なのですが、人間が読むのはちょっとしんどいです(だって、番組ID1725って何なのか知らないし…)。というわけで、これをしょぼいカレンダーのDBに問い合せ、こんな感じの名前にしてくれるソフトを作ってみました:

あにゃまる探偵 キルミンずぅ 第35話 ダブルでお任せ!ハグハグリーダー!? (20100607-1730).m2t

 ファイル名の書式は入力/出力ともに自由にかつ割と簡単に設定可能ですので、foltia以外でも使えるかもしれませんね。

ダウンロード

githubからDLしてください。

オプションの指定

面倒なのでhelpをコピー!(ぉ

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
ShoboCal_Renamer 1.0 (2011/04/28)
written by PSI ( / )
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
usage: ruby shobo_cal.rb [options] files or directories
-i, --in_format FORMAT           入力ファイルのフォーマットを指定してください。
-o, --out_format FORMAT          出力ファイルのフォーマットを指定してください。
-d, --dry-run                    ファイル名を実際には書き換えません。
-r, --recursive                  再帰的に実行します。
-e, --except FILENAME            指定したファイルは除外します。
-y                               上書きが必要な際に、その旨を聞きません。
-h, --help                       このメッセージを表示します
--version                    バージョンを表示します。

 こんな感じで使えます。

カレントフォルダのファイルを全て処理
> ruby shobo_cal.rb .
mp4に変換してあるのだけ処理したい。
> ruby shobo_cal.rb *.mp4
入力ファイル名、出力ファイル名のフォーマットを指定して、カレントフォルダのファイルを処理する。
> ruby shobo_cal.rb \
-i %tid%-%stid%-%date%-%time%.%ext% \
-o %title% 第%stid%話 %subtitle% (%date%-%time%).%ext% \
.

ファイル名のフォーマットについて

 入力ファイル内の”%キーワード%”で囲んだ部分の数字を読み取り、出力ファイル名の対応する”%キーワード%”に書き出します。基本的に数字縛りです。

 ただし、以下の例外があります。

  • 入力ファイル名で%tid%で指定した番号のアニメのタイトルを、出力側で%title%として使えます。
  • 入力ファイル名で%stid%で指定した番号のアニメのサブタイトルを、出力側で%subtitle%として使えます。
  • %ext%は特殊で、数字以外でも受け付けます。拡張子用です。

[東大ニコ研] イカ東がイカ頭つくったでゲソ [ハロウィン企画]

Posted on

イカ娘のイカ帽子をこちらの作り方を参考にイカ東(いかにも東大生)が実際に作ってみたでゲソ。初ニコニコ手芸部。

必要なもの

  • 紙(幅が元の1/4になります。1/6ドール用ならA6がちょうどいい。)
  • ハサミ
  • すずらんテープ(触手用;青色で決まりでゲソね!)
  • のり(触手をくっつける用)

疲れた

ので詳しくは上の動画見てください。そもそも文章と画像だけではわかりづらいな~と思って動画上げたので…。

撮影風景

DSCN4887.JPG

ちさちゃん(ドール)の写真取るの忘れてたー!ま、また今度かぶってもらえば良いか。

そういえばこっちだと初お披露目ですね。>ドール かわいいですよ~、女の子だけの趣味だなんてひどい!子供の時からやりたかったよ~!!