はてなキーワード: まいまいとは
去年のJOCHUMが除外されていたことを結果で知る
色々あったんだろうな
【最終順位】
1位:シナモロール
2位:ポチャッコ
3位:クロミ
5位:ハローキティ
6位:マイメロディ
7位:けろけろけろっぴ
8位:ハンギョドン
9位:タキシードサム
12位:こぎみゅん
13位:バッドばつまる
14位:はなまるおばけ
15位:ウイッシュミーメル
16位:ぐでたま
18位:KIRIMIちゃん.
19位:コロコロクリリン
20位:ウサハナ
21位:がおぱわるぅ
22位:SHOW BY ROCK!!
23位:まるもふびより
25位:かぶきにゃんたろう
26位:yoshikitty
27位:みんなのたあ坊
29位:チャーミーキティ
30位:ぽっきょくてん
32位:ルロロマニック
34位:シュガーバニーズ
35位:まいまいまいごえん
36位:ジュエルペット
37位:ぺたぺたみにりあん
38位:ニャニィニュニェニョン
39位:リトルフォレストフェロォ
40位:タイニーチャム
42位:パティ&ジミー
43位:おさるのもんきち
44位:歯ぐるまんすたいる
45位:アグレッシブ烈子
46位:チョコキャット
47位:ゴロピカドン
51位:BUDDYEDDY
53位:イチゴマン
55位:かしわんこもち
56位:パウピポ
58位:リルリルフェアリル
59位:いちごの王さま
60位:ザシキブタ
62位:カリバディクス
63位:ぱんくんち
65位:ぽこぽん日記
67位:クマミレン
68位:くすりの福太郎
70位:ぼさにまる
72位:るるる学園
73位:ウィアーダイナソアーズ!
74位:メローチューン
75位:シンカイゾク
76位:ウィンキ―ピンキー
77位:たらいぐまのらんどりー
78位:ザ ラナバウツ
79位:てのりくま
82位:プワワ
87位:ポタンノーズ
88位:リスル
90位:リトルラヴィン
「サンリオキャラクター大賞」最終順位発表 シナモロールが自身初5連覇、ポチャッコが28年ぶりTOP2入り【最終順位一覧あり】 - 産経ニュース
毎年思うけどGIGAZINEのやつって一覧性が悪すぎるよね
◆亀田製菓「ハッピーターン つらターン」
◆サブウェイで脳波オーダー開始
◆日本郵政が「速達」でお肌に潤いを届ける「ゆうぱっく」を発表
◆タイトーの新人Vtuber「阿波野 八四八」登場
◆幻日のヨハネ -NUMAZU in the MIRAGE-
◆「お隣の天使様にいつの間にか駄目人間にされていた件」実写化決定
◆新作は学園恋愛シミュレーション💕『ぱる♡わーるど! ~もう友達(パル)じゃいられない~』
◆大阪環状線で有料座席サービス「Aぇシート」が開始
◆デイリーポータルZの記事が七五調に
◆ドスパラ公式のAI「Chotto GPU」
◆ご注文はうさぎですか?
◆ボボボーボ・ボーボボ実写化
◆アニメ「黒子のバスケ」公式サイトがお仕事仕様に
◆ダブル主人公で描かれるにじさんじ発のゲーム 「にじさんじファンタジー-勇者と魔王とエイプリル-」の制作が決定!?
◆BLEACH THE HIGH SCHOOL WARFARE
◆電子チラシサービスでチラシが浮世絵風に&ポイントの代わりに小判を配布
◆ウォーキングアプリ「aruku&(あるくと)」がランニングアプリ「hashiru&(はしると)」へ大型リニューアル
◆響け!ユーフォニアム ~誓いのダ・カーポ~
◆パインアメ味のパイナップル
◆「推しの子」有馬かなが「すしのこ」のイメージガールに就任
◆マンガ【推しの子】公式Xアカウントが【ぴえの子】公式Xアカウントに変化
◆キムワイプカフェオープン!パティシエ募集!
◆ウマ娘プロジェクト「宇宙走娘<コスモピュエラ>」
◆エバラの便利な「プチッと鍋」がバケツサイズの「ドカッと鍋」に
◆キッコーマン豆乳から「豆乳とうふ」が登場
◆エイプリルフールといえば、こじらせハラスメント
◆「プロジェクトセカイ」に限定ストーリー&特別チーム登場
◆「ブレイバーン・フライパーン」新発売
◆世界初男性イケメン系vtuber
◆わかさ生活
◆エイプリルフールに生まれた「重音テト」が16周年のお祝い中
◆「勝利の女神:NIKKE」の続編ゲームリリース決定
◆雀魂-じゃんたま-
◆超高級リゾート列車「GRAN HERMES - グラン・ヘルメス」
◆ドミノ・ピザがいつでもどこでもピザをチャージできる「ピザタブレット」販売開始
◆最強のアクトレス麻雀チームを決めるアクトレス競技麻雀リーグ開幕
◆「真夜中ハートチューン」楓林女子高校放送部による#告白代行
◆「ONE PIECE バウンティラッシュ」にニセルフィが登場
◆キャプテン石崎〜たたかえドリームチーム〜
◆飲むサクマドロップス
◆テレビアニメ「転生貴族、鑑定スキルで成り上がる」の主演声優にハリウッドザコシショウが就任
◆サクレまるごとレモン
◆国産AIチャット「CyberMates」に関西弁翻訳&関西風要約の新機能が追加
◆劇団四季がミュージカル「アナと桜の女王」を上演決定
◆ロボ子さんが「はげーぼー」さんに
◆カルピス菌の保存方法
◆カフェ・ベローチェのネコ肉球型コーヒーゼリー
◆フラガリアメモリーズ「ALL SO BAD」MVのはぴだんぶいバージョンが公開
◆【機密解除】航空自衛隊協力による特殊装備品の概要について
◆Kanon 16bit Edition
◆低音ボイスが特徴の音声読み上げソフト「フリモメン」が「魔法少女☆フリモ」に大変身
◆チョーヤ梅酒からチョーニャ「ウオッシュ」登場
◆「ぬきたし」アニメ化中止?!
◆Fate/Dream Striker
◆にゃんこ大戦争が恋愛リアリティ番組「バチェニャーCATS」を配信決定
◆「東京ばな奈VRヘッドセット」登場
◆鷹嶺ルイプロデュースの恋愛シミュレーションゲーム「ホロに恋する」新作が登場
◆特大サッポロポテト
◆暗黒議会で「アサギ」をあらゆる世界に登場させる議題が投票受付中
◆このチャンネルはぺこらマミーが乗っ取ったぺこ♪
◆カスピ海ヨーグルトパーク
◆フィギュア造形やガレージキットの制作に行き詰まったらコレ!「ウマクデキィルEX」
◆キングジムが「保存ボックス」型クーラーボックスを発売
◆あすけんのお姉さんが人事異動でムキムキのお兄さんに
◆疑似ハーレムの声優が入れ替わる
◆アニメ「くそみそテクニック」が阿部さんのフリーアイコンを配布してみんなも阿部さんに
◆消音機能や暗視機能などあらゆる機能を詰め込んだ「多機能マルチサイレンサー」登場
◆恋愛ADV「この青空に約束を」の続編制作が決定?
◆巨大マジカルすごろく展示会
◆CAPCOMがこれまでのノウハウを生かした「CAPCOM製ヘリコプター」で航空事業に参入
◆ついに宇都宮餃子会が「餃子のなる木」の開発に成功
◆シャニソンで「4lternative 1dentity」イベント開催
◆キャル&ヤバイバル
◆「魔法少女にあこがれて」に登場したホテル「ワンナイト」建設決定
◆「シュガーバターの木」収穫時期到来
◆アース製薬「開運ホイホイ」
◆ねこ育成ゲーム「パラねこ」
◆「SHY -シャイ-」の各国ヒーローが「シャイレンジャー」としてチームアップ
◆INTI CREATESが新作ゲーム「精霊機(スピリットマシン)フレイリート」を発表
◆マジック:ザ・ギャザリング「サンダー・ジャンクションの無法者」
◆まいまいまいごえん
◆虎杖と東堂が高校野球全国大会優勝するまでの軌跡を描いたドキュメンタリー「ブラザーズ ~全国優勝への道~」
◆ドラゴンクエストウォークが超大型イベント「スラミチチャンピオンシップ 〜導かれし競走馬たち〜」を開催
◆あのソニックマンがセガに入社して「ソニックアンバサダー」に就任
◆「白猫プロジェクト」が10周年で実写化
◆ソードアート・オンライン インテグラル・ファクター
◆VKC48
◆ポケモンGO
◆「僕のヒーローアカデミア ULTRA IMPACT」の主人公が洸汰くんに
◆TVアニメ「変人のサラダボウル」が岐阜駅前の信長像を乗っ取る
◆博衣こよりがAIこよりに乗っ取られる
◆ブルーシール
◆QBBベビーチーズのアソートタイプが登場
◆clusterが「1億人が同時接続できるワールド」を公開
◆青鬼オンラインが映画化
◆陰の実力者になりたくて!マスターオブガーデン
◆ゲームメーカーのエフアンドシーが飲食業に進出しスタッフ募集中
◆「にゃっにゃーにゃんにゃにゃぁにゃんにゃー」発売
◆保健医レクスの青春カルテ
◆「明恋夢想」発売決定
◆猫の鳴き声対応AIボイスレコーダー「オートメャオ」発売
◆みみちゃんが美味ちゃんに
◆カスタムキャストに3Dモデルを歌って踊らせる機能が追加される
◆パックマンの食べ物が変化
◆Deep One 虚無と夢幻のフラグメント
◆スイートホームメイドにメイドが2人追加
◆「サシュウ」から世界を救え!「IRODORIMIDORI FANTASY VII」発売決定
◆VTuberのぽんぽこさんがヘアスタイルを大胆変更
◆VTuber・もこ田めめめ、お姉さんになる
◆恋愛ゲームブランド「イケメンシリーズ」が新種の花粉を発見
◆BUSTAFELLOWSからスケアクロウがYouTuberデビュー
◆「エルフさんは痩せられない。」初のトレーディングカードが登場
◆恋愛アドベンチャーゲーム「時空の絵旅人」に限定SSR画霊「毛糸だま遊び」が追加
◆「B-PROJECT 1/2 -half-」始動
◆OMENから純金のゲーミングPCが登場
◆「この素晴らしい世界に祝福を!ファンタスティックデイズ」で称号「この背徳の騎士にご褒美を!」などがもらえるパネルミッション開催中
◆モンカフェからディフューザーが登場
◆「救世少女 メシアガール おかわり」に「ぞぬー」が侵略中
◆旅行ガイドブック「るるぶ」の人型キャラクター化プロジェクト「連れてって!るるぶさん」が始動
◆テレビアニメ「ラーメン赤猫」従業員募集中
◆「俺は全てを【パリイ】する」実写映画化
◆マリオンクレープから「激辛唐辛子クリームクレープ」が登場
◆スマホゲーム「感染×少女」が「感染×少女 パンツゲーム」を発表
◆マクセルが「インプレゾンビ消滅祈願」を実施
◆スマホゲーム「魔法使いと黒猫のウィズ」が本格格闘アクションゲーム「スピリットファイター -The World of Mystic Wiz-」の開発決定を報告
◆はてな匿名ダイアリーに巨大な検索フォーム「ビッグ検索」が登場
◆オンラインRPG「ラグナドール」がイベント「らぐにゃどーる」を開催
◆子ブタの「ぷーとん」のぬいぐるみにXXXXXXXXXXLサイズが新登場
◆マウスコンピューターからネコハラ対策グッズの「猫収納BOX」が登場
◆平安伸銅工業から画期的な収納グッズ「浮いてる棒」が登場
◆くりーむパンの八天堂が「銭湯八天堂」をオープン
◆爽やかに「ウノ!」と言うためのウノ専用ミントが登場
◆「ぷよぷよ!!クエスト」ですけとうだら特集
◆「実況パワフルサッカー」の期間限定イベントに「矢部坂秀人」ルートが登場
◆「BanG Dream!」がカップ麺「ラーメン銀河」を発売
◆戦艦バトルゲーム「蒼焔の艦隊」でバイオレンス劇画海戦ゲーム「世紀末漢伝」がスタート
◆美少女ゲームブランド「CRYSTALiA」が乙女ゲーム「乙女ゲームの世界に転生したけどカップリング厄介オタクなのでヒロイン辞退します!!」を発表
◆「Tokyo 7th シスターズ」にエイプリルフール限定のタイトル画面が出現
◆「バンドリ! ガールズバンドパーティ!」でエイプリルフール期間限定スキンが登場
◆「エーテルゲイザー」×「焼肉ゼンキ」コラボが決定
◆ゲーミングブランド「G-Tune」がソーラーパネル充電対応ゲーミングPC「G-TUNE HIKARI」を発表
◆「ニノクロ」のミニゲーム「ポンポンゲーム」がウェブサイトで遊べるようになり公式プロゲーミングチームの「ニノクロゲーミング」が復活
◆Live2Dの公式キャラクター「わんころもち」がモデルアップデートを実施
◆チロルチョコが食べられる将棋駒「DECOチョコ将棋」を発売
◆「ねこのしっぽ」がアニメ化
◆テレビアニメ「弱キャラ友崎くん」新PV公開
◆「ダーツライブ」が渾身のダーツを開発
◆「ケロロ軍曹」アニメ新プロジェクト始動
◆ビートまりおさんが新曲を発表
◆新曲「QUATTUORUX / 打打だいず Vs. Tanchiky Vs. からめる」公開
◆ツキノ芸能プロダクションが「ピュアラビ」をアニメ化
◆「カピバラさんゴワッとぬいぐるみ」新発売
◆回転ずしくんとドコドコうさぎ、入れ替わる
◆フリー素材キャラクター「つくよみちゃん」を未来から召喚する企画が実施中
◆「ゾゾゾ」の落合陽平氏が政治へ挑戦か
◆「ガルスマ」から木村良平・岡本信彦両名の超特大アクリルスタンドが登場
◆中学生イラストレーター・さくしゃ2、将来の目標を語る
サンデーはこの中で売上が下の方らしい、そして
今のジャンプははっきり言ってマガジンサンデーよりも書ける人が揃っていない、でもジャンプのほうが売上が大きいらしい。
読める作品を思い出してみると
サンデーは、龍と苺、コナン、MAO、シブヤニアファミリー、白山と三田さん、舞妓さんちのまかないさん、この漫画のヒロインは森崎あまねです、ラストカルテ、BeBlues、君は008、魔王城でおやすみ、レッド・ブルー、第九の波濤、十勝一人ぼっち農園、あおざくら、葬送のフリーレン、古見さんはコミュ症ですの17作品
チャンピオンは、弱虫ペダル、ゆうえんちバキ外伝、あつまれふしぎ研究部、ディエゴ、ハリガネサービス、SANDA、ヤンキーJKクズハナちゃん、もういっぽん、メイカさんはおしころせない、木曜日のフルット、グラップラー刃牙、BEASTARS、バチバチBURST、Gメンの14作品
マガジンは、はじめの一歩、ダイヤのA、黙示録の四騎士、シャングリアフロンティア、カッコウの許嫁、カノジョも彼女、それでも歩は寄せてくる、幼なじみとはラブコメにならないの8作品
ジャンプは、ワンピース、WitchWatchの2作品 (Dr.STONE終わったのが痛い)
Web漫画アンテナ登録作品は(現在更新されてないのが多々ある)
2.5次元の誘惑
38歳バツイチ独身女がマッチングアプリをやってみたヤバい結果日記
47歳、V系
Artiste
DYS CASCADE
GROUNDLESS-アリストリア改国戦記-
Helck
MANGA Day to Day
New's Network
SPY×FAMILY
あそこではたらくムスブさん
アニメタ!
アルテ
イジらないで、長瀞さん
おちたらおわり
おとなりに銀河
お下がりのオンナ
カナカナ
クマ撃ちの女
ゲーミングお嬢様
コーポ・ア・コーポ
こういうのがいい
この世界は不完全すぎる
コワモテ後輩が一日一回好きって言ってくる
サバエとヤッたら終わる
ざんげ飯
それでも歩は寄せてくる
ダンス イン ザ ヴァンパイアバンド A.S.O
ドルフィン
ドンケツ
なれの果ての僕ら
ぬけぬけと男でいよう
のボルダ
はぐれアイドル地獄変
ひとりでしにたい
ブスなんて言わないで
ペイル・ブルー・ドット バトルアスリーテス大運動会 ReSTART!
ぽちゃこい
マイ・ブロークン・マリコ
まいまいまいごえん
マチネの終わりに
マリッジグレー
ミドリノバショ
やり直し姫は夫と恋したい
ラーメン赤猫
ロリータ飯
悪の糸
囲の王
宇宙の卵
俺たちつき合ってないから
家が燃えて人生どうでも良くなったから、残ったなけなしの金でダークエルフの奴隷を買った。
家性婦とシタ 2
怪獣8号
間くんは選べない
帰ってください! 阿久津さん
境界のエンドフィール
君の心を漢字たい
拳児2
言えないことをしたのは誰?
公爵令嬢の嗜み
好きなオトコと別れたい
高嶺のハナさん
佐倉は私を好きすぎる
最果てから、徒歩5分
三十路病の唄
子供になった俺を妻がめちゃくちゃ愛でてくる ~曜路と乙菜の夫婦生活~
私と夫と夫の彼氏
灼熱カバディ
純猥談
女の解体新書
傷だらけのピアノソナタ
新しいきみへ
推しが辞めた
青とオレンジ
青に、ふれる。
青のオーケストラ
戦争は女の顔をしていない
創世のタイガ
早朝始発の殺風景
誰かのことを好きなだけ
蜘蛛ですが、なにか?
都合のいい果て
東独にいた
独身貴族は気づかない
美木さん、大好きです!
片喰と黄金
僕が夫に出会うまで
僕たちは繁殖をやめた
僕の心のヤバイやつ
僕の生徒はオトナギャル
僕より目立つな竜学生
万引きGメン たつとら!!
夢中さ、きみに。
明日の恋と空模様
綿谷さんの友だち
木根さんの1人でキネマ
柚子川さんは、察して欲しい。
幼馴染とはラブコメにならない
踊れ獅子堂賢
龍と苺
隣のお姉さんが好き
隣のガキに懐かれた話
恋とゲバルト
恋人以上友人未満
凛子ちゃんとひもすがら
鬱ごはん
罠ガール
自分が乃木坂みたいな顔と性格だったら、イケメンと付き合えたんだろうな。
私が与田ちゃんだったら、桃子だったら、未央奈だったら、美月だったら、聖来だったら、さゆりんごだったら、七瀬だったら、まいまいだったら。
大学時代は全然だめだった。周りの可愛い子ばっかチヤホヤされて、私は手軽な存在だった。
職場では、みんな私のこと可愛いって言ってくれるから勘違いしてる。子どもにも可愛いお姉さん!とか乃木坂みたいとか言われてさ。先輩も、同期も可愛いって言ってくれて。
イケメンが好き。イケメンだから好きというか、好きになった人がみんなそこそこイケメンだった。
そして好きになった人と付き合えたことがない。
なんで妥協で付き合ってるのに少しでも不安にさせるの?なら別れよってすぐなっちゃう。
でも寂しい。どうしようもなく寂しい。彼氏が欲しい。私の事を女の子扱いしてくれて、大切にしてくれる彼氏が欲しい。
Tinderで会ったらさ、みんなヤリモクなの。
そんなの分かってるけど、エッチしないなら会ってくれないでしょ。優しくしてくれないでしょ。
ヤリモクじゃない人も1回あったら連絡なくなった。
マッチングアプリだと、1回会って無理だなって思った人ほど連絡してくる。
自信ないしつまらない人間だし顔もそんななんだろうから本当に穴以外魅力がない。
顔はともかく、中身が終わってるんだろうな。
早く彼氏ほしい。
それでこの気分を紛らわせてほしい。
どうせまた好きになった人には遊ばれて、うわって思った人に告白されての繰り返しなんだろうな。
辛い、でも1人の方が辛い。
シンカリオンは良いアニメです。シンカリオン……まこと良いものだ。ただし「 様」、テメーはダメだ。
※わかる人だけわかればいいので一部伏せ字や空白にしています。
私は2018年から放送された某新幹線変形アニメを64話まで見ました。そのシ○カリオンというアニメには発音ミクが出演して大好評でした。(大好評だということにしておく)
ところがどっこい、○ンカリオンの敵であるキトラルザスのリーダーの名前が「 様」でした。
発音ミクが出ている(しかも準レギュラー)なのに敵の名前は「 様」であります。
あぁん、ひどぅい。
結果としてハヤ○とセ○リュウとその他もろもろは「 様」を葬りました。
ミクから見れば自分の兄と弟(のような存在)を殺したようなものです。
ミクが不憫です。が、最も不憫なのはKAIT○とレ○です。多分。
なぜこのような事になってしまったのでしょうか。
最も可能性が高いのは、シンカリオンのスタッフが事前に調べていなかったという事でしょう。googleか何かで検索すれば「カイレン」が意味するものはすぐわかったでしょうに、それを怠ったためにこんな悲劇を起こしてしまいまいまいました。多分。
その他の可能性としては、
2. スタッフが検索して意味を知ったが、「まあいいか」と思ってそのままゴーサインを出した説
3. 意味を知ってクリプトンに相談したが、「まあいいか」とクリプトンも思ってゴーサインを(ry
が主に考えられますが、これ以上はウスターソース、ソイソース、デミグラスソース、オリバーソース等がないので推測としか言えません。
敵のリーダーだから最後に倒されるのはわかります。また「 様」の名前の由来が鉱物からきているのも知っております。
他のアニメ等でボカロと名前が同じキャラクターが死んだり逮捕されたりする事も稀によくあります。
ですがクリプトンがアニメに関わっている状況では「 様」という名前を付けるべきではありませんでした。
それではクリプトンは落ち度0かというと、1~30ぐらいでしょう。(100の内)
事前に知らされていなかったとしても、「 様」の名前が出てから東京駅地下で処刑されるまで半年もあったのですから、
「 様」の出番を極力減らしたり、改心したりする(してもらう)など、対策はいくらでもとれたはずでした。
発音ミクが居ながらクリプトンはKAITOとレンを3564にしたので、私たちは隕石ドカッて落ちたような怒りと悲しみに暮れております。
これはファンにとって大ショックです。ニクソンショック、オイルショック、アタリショック、リーマンショック等に並ぶ「カイレンショック」だと自負しております。
なぜKAITOとレンは殺されなければならなかったのでしょうか。クリプトンは止めようとしなかったのでしょうか。
私たちは、KAITOと鏡音レンを禁止しなければいけないような所から生まれてきたのでしょうか。
我々ボーカロイドファンはいったいこれから先どこに向かって行くのでしょうか。
桜ミクの衣装を6人全員分出してください。
発祥: http://ex23.2ch.net/test/read.cgi/morningcoffee/1188654905/
Scheme という Lisp 語族の言語を用いて ℃-ute の相関関係をプログラムし、様々な角度から関係性を分析する手法を紹介していきます(ソースコードは最後に張ります)。
まずは、メンバー間の関係を「リスト」というデータ型で表現します。例えば「栞菜->愛理」という関係は
(kanna . airi)
という形で表すことができます。これに、「大好き」という情報を付加し、ついでにその関係の性質を数値化したものを加えると
((kanna . airi) (desc "大好き") (score . 1))
のようになり、関係図における一つの矢印の情報をデータ化できたことになります(暫定的に、好意は 1、良好・中立は 0、険悪は -1 の3段階で表すことにします)。
メンバー間の全ての関係性をこのデータ単位で定義し、データベース化しておくことで、色んな条件に基づいた検索やスコア計算などが可能となります。
ここで相関関係図における矢印を「リンク」と呼ぶことにして、あるメンバーから他のメンバーへどのようにリンクし、またリンクされているかを調べることができます。
(sort-nodes (number-list (from-links)))
結果:
((kanna . 6) (saki . 5) (maimi . 4) (erika . 3) (mai . 3) (chisato . 3) (airi . 2))
栞菜ちゃんがメンバー全員にリンクを張っていることが分かり、℃-ute ラブっぷりが伺えます。なっきーにも同様の事が言えます。例の「女の子が好き」発言を数値的に裏付ける結果と言えるかもしれません。
ただ、データ不足でリンク件数がまだ少ないのと、リンクの性質(好意/反感など)までは分からない点を考慮する必要があるでしょう。
同様に、リンクの終点の件数を調べてみます。
(sort-nodes (number-list (to-links)))
((chisato . 5) (erika . 5) (kanna . 4) (maimi . 4) (airi . 4) (mai . 3) (saki . 1))
えりかちゃんと千聖ちゃんが高ポイントです。メンバーからの人気や注目度の高さを示すデータですが、千聖ちゃんの場合敵対的なリンクが2件含まれている点に注意してください。
なっきーの被リンク数が極端に少ないですが、単純にデータ不足のためだと思われます。はぶら(ryとか言わないようにお願いします。
リンクに付随するスコアを計算することで、愛情の度合いを測ることができるのではないか、という考えに基づく研究です。
まず、全ての関係性を対象として、スコアがマイナスの関係を抽出してみます。
(filter-nodes (lambda (n) (< (score-relation n) 0)))
結果:
(((kanna . chisato) (desc "愛理に手出すんじゃねぇよ") (score . -1)) ((saki . chisato) (desc "愛理に手出すんじゃねぇよ") (score . -1)))
件数だけを得ると
(length (filter-nodes (lambda (n) (< (score-relation n) 0))))
2
僅か2件です。
良好・中立的な関係は
(length (filter-nodes (lambda (n) (= (score-relation n) 0))))
8
愛に満ちた関係は
(length (filter-nodes (lambda (n) (> (score-relation n) 0))))
16
非常に多いです。舞美ちゃんの「℃-ute同士でラブラブなんですよ」発言(例のラジオ)を数値的に裏付ける結果と言えるんじゃないでしょうか。
次に、メンバーごとのスコアを算出してみます。Lisp 的には以下のようにフィルタリングと畳み込み (fold) で計算することができます。例えば
(foldr (lambda (n acc) (+ (get-score n) acc)) 0 (filter-nodes (cut to? <> 'kanna)))
3
上式を一般化して一挙にメンバー全員に適用してみると
(sort-nodes (map (lambda (x) (cons x (score-loved x))) (all-members)))
結果:
((airi . 4) (kanna . 3) (mai . 2) (erika . 2) (maimi . 2) (saki . 1) (chisato . 0))
愛理ちゃんが好意を寄せられやすい傾向が伺えます。
今度は逆方向のスコアを計算してみると
(sort-nodes (map (lambda (x) (cons x (score-loving x))) (all-members)))
((kanna . 3) (maimi . 3) (chisato . 2) (airi . 2) (saki . 2) (mai . 1) (erika . 1))
まいまいとえりかちゃんが特に堅い・一途だという傾向を読み取ることができます。
今度は組み合わせ(カップリング)の評価です。
2点間相互のリンク・スコアを加算したものを「相性」と考えられるものとします。最大値 (互いに好意を寄せている場合の数値) は現在のスコアリング方式では 2 です。例えば
(score-between 'kanna 'airi)
の値は
2
となります。1 であれば一方通行と考えます。
関係性が未定義の場合もあるので 0 のものを除外して算出すると
(sort-nodes (filter (lambda (n) (not (= (cdr n) 0))) (map (lambda (n) (cons n (apply score-between n))) (all-combinations))))
(((chisato mai) . 2) ((chisato airi) . 2) ((airi kanna) . 2) ((saki kanna) . 2) ((kanna maimi) . 2) ((erika maimi) . 2) ((saki airi) . 1) ((saki erika) . 1) ((kanna mai) . 1) ((maimi airi) . 1) ((saki chisato) . -1) ((kanna chisato) . -1))
となります。若干ピンとこない部分もあるかも知れませんが、計算上は矛盾無くデータの内容を表しています。
(map (lambda (p) (find-relation (cons (caar p) (cadar p)) identity)) (filter (lambda (n) (= (cdr n) 1)) (map (lambda (n) (cons n (apply score-between n))) (all-combinations))))
(((kanna . mai) (desc "喰ってやるよ") (score . 1)) ((saki . airi) (desc "好き") (score . 1)) ((maimi . airi) (desc "良き妹") (score . 1)) ((saki . erika) (desc "彼氏にしたい") (score . 1)))
のようになります。
以上の調査を経て気になった問題点を列挙してみます。
特に最初の点に関して、「百合的」なるものの質的評価がなかなか難しいと感じました。例えば「大好き」も「良き妹」も同じ 1 と評価してしまっているのが妥当かどうか、といったことです。
また、スレにて与えられた情報を評価・分析する方法としては有効だとしても、逆方向のフィードバックの手段がなかなか見つからないというのが三つ目の問題です(技術力不足とも言います)。(注:画像化の方法が分かりました。追記参照)
最後に、プログラムのソースを示します。実行には PLT Scheme が必要です。文字コードは UTF-8 で保存した上で、(load "c-ute.ss") としてください。文字化けする場合はターミナルが UTF-8 を表示できるよう設定する必要があります。がんばってください。
c-ute.ss:
(require (lib "etc.ss") (lib "list.ss") (lib "26.ss" "srfi") (lib "delete.ss" "srfi" "1")) ;;; Utilities (define true? (compose not not)) (define (ignore _) #f) (define fif (case-lambda ((predicate consequent) (fif predicate consequent ignore)) ((predicate consequent alternative) (lambda (x) (if (predicate x) (consequent x) (alternative x)))))) (define (concat! xs) (apply append! xs)) (define (mapconcat f lst sep) (let lp ((str (f (car lst))) (lst (cdr lst))) (if (null? lst) str (lp (string-append str sep (f (car lst))) (cdr lst))))) (define (slice-string str len) (let lp ((res '()) (str str)) (if (<= (string-length str) len) (reverse! (cons str res)) (lp (cons (substring str 0 len) res) (substring str len))))) (define (break-string str len) (mapconcat identity (slice-string str len) "\\n")) ;; NOTE: input and output ports have to be either file-stream or #f ;; (i.e., cannot be a string port) (define (run exe opt in out) (let-values (((p p-i p-o p-e) (subprocess out in #f exe opt))) (subprocess-wait p) (close-input-port p-e))) ;;; Database ;; http://ja.wikipedia.org/wiki/%E2%84%83-ute (define names '((erika . "えりか") (maimi . "舞美") (saki . "早貴") (airi . "愛理") (chisato . "千聖") (mai . "舞") (kanna . "栞菜"))) (define (symbol->name sym) ((fif true? cdr) (assq sym names))) (define nodes '()) (define edges '()) (define (relate from to desc score) (let ((n (cons from to))) (or (find-relation n (lambda (r) (let ((d (assq 'desc r)) (s (assq 'score r))) (set-cdr! d (cons desc (cdr d))) (set-cdr! s (+ score (cdr s)))))) (begin (set! nodes (cons n nodes)) (set! edges (cons (cons n `((desc ,desc) (score . ,score))) edges)))))) (define (find-relation n k) ((fif true? k) (assoc n edges))) (define (related? x y) (find-relation (cons x y) (lambda (_) #t))) (define (from? n x) (eq? (car n) x)) (define (to? n x) (eq? (cdr n) x)) (define flip-relation (case-lambda ((n) (and (related? (cdr n) (car n)) (cons (cdr n) (car n)))) ((n k) ((fif true? k) (flip-relation n))))) (define (get-score n) (cdr (assq 'score n))) (define (get-description n) (cdr (assq 'desc n))) (define (describe-relation n) (find-relation n get-description)) (define (score-relation n) (or (find-relation n get-score) 0)) (define (print-node . ns) (for-each (cute find-relation <> (lambda (r) (display (format "| ~a => ~a (~a)~%" (caar r) (cdar r) (mapconcat (lambda (s) (string-append "\"" s "\"")) (cdr (assq 'desc r)) ", "))))) ns)) (define (iter-nodes k) (let lp ((nodes nodes)) (unless (null? nodes) (k (car nodes)) (lp (cdr nodes))))) (define (filter-nodes p) (let ((ns '())) (iter-nodes (fif p (cut find-relation <> (lambda (n) (set! ns (cons n ns)))))) ns)) (define (from-links) (map car nodes)) (define (to-links) (map cdr nodes)) (define (all-members) (delete-duplicates! (from-links))) (define (all-pairs) nodes) (define (ordered-pairs) (concat! (map (lambda (x) (map car (sort (filter-nodes (cute to? <> (car x))) (lambda (x y) (> (get-score x) (get-score y)))))) (sort-nodes (map (lambda (x) (cons x (score-loved x))) (all-members)))))) (define (all-combinations) (let lp ((cs '()) (ns nodes)) (if (null? ns) cs (let ((n (car ns))) (lp (if (member (list (cdr n) (car n)) cs) cs (cons (list (car n) (cdr n)) cs)) (cdr ns)))))) ;; number-list :: [a] -> [(a . Int)] (define (number-list ls) (let lp ((ns '()) (ls ls)) (if (null? ls) ns (let ((x (car ls))) (lp ((fif not (lambda (_) (cons (cons x 1) ns)) (lambda (n) (set-cdr! n (add1 (cdr n))) ns)) (assq x ns)) (cdr ls)))))) ;; sort-nodes :: [(a . Int)] -> [(a . Int)] (define (sort-nodes ns) (sort ns (lambda (x y) (> (cdr x) (cdr y))))) (define (diff-nodes ms ns) (let lp ((ds '()) (ns ns)) (if (null? ns) (sort-nodes ds) (lp (let* ((n (car ns)) (m (assq (car n) ms))) (cons (cons (car n) (- (cdr m) (cdr n))) ds)) (cdr ns))))) (define (get-total-score x p) (foldr (lambda (n acc) (+ (get-score n) acc)) 0 (filter-nodes (cut p <> x)))) (define (score-loved x) (get-total-score x to?)) (define (score-loving x) (get-total-score x from?)) (define (score-between x y) (+ (score-relation (cons x y)) (score-relation (cons y x)))) (define (-> x) (display (format "~%Links from [~a]~%" x)) (iter-nodes (fif (cut from? <> x) print-node))) (define (<- x) (display (format "~%Links towards [~a]~%" x)) (iter-nodes (fif (cut to? <> x) print-node))) (define (<-> x) (display (format "~%Reciprocal links for [~a]~%" x)) (iter-nodes (fif (cut to? <> x) (lambda (n) (flip-relation n (lambda (m) (print-node m n))))))) (define (<=> x) (display (format "~%Reciprocal matches for [~a]~%" x)) (iter-nodes (fif (cut to? <> x) (lambda (n) (flip-relation n (lambda (m) (if (ormap (lambda (x) (ormap (lambda (y) (equal? x y)) (describe-relation m))) (describe-relation n)) (print-node m n)))))))) (define (<?> x) (let ((to (assq x (number-list (from-links)))) (from (assq x (number-list (to-links))))) (display (string-append (format "~%Link statistics for [~a]~%" x) (format "| ~a => ~a (love ~a)~%" x (cdr to) (score-loving x)) (format "| ~a => ~a (love ~a)~%" (cdr from) x (score-loved x)))))) (define (info x) (for-each (cut <> x) (list <- <-> <=> -> <?>))) ;;; GraphViz (http://www.graphviz.org/) support (define graphviz "C:/Program Files/ATT/Graphviz/bin/dot.exe") (define (nodes->dot ns) (string-append "digraph cute {\n" ;;"\tordering=out;\n" ;;"\trankdir=LR;\n" "\toverlap=true;\n" "\tnode[fontname=\"msgothic.ttc\"];\n" "\tedge[fontname=\"msgothic.ttc\",fontsize=9];\n" (let lp ((str "") (ns ns)) (if (null? ns) str (let* ((n (car ns)) (s (score-relation n))) (lp (string-append str (format "\t\"~a\" -> \"~a\"" (symbol->name (car n)) (symbol->name (cdr n))) (format "[label=\"~a\",color=\"~a\"," (break-string (car (describe-relation n)) 7) (cond ((> s 0) "red") ((= s 0) "green") (else "blue"))) (format "style=\"bold~a\"];\n" (if (and (not (= s 0)) (< s 1) (> s -1)) ",dashed" ""))) (cdr ns))))) "}")) (define (write-dotfile dot file) (and (file-exists? file) (delete-file file)) (with-output-to-file file (lambda () (display dot))) file) (define (dot->png dot png) (call-with-input-file (write-dotfile dot "c-ute.dot") (lambda (in) (and (file-exists? png) (delete-file png)) (call-with-output-file png (lambda (out) (run graphviz "-Tpng" in out))))) 'done) ;;; Setup database ;; Based on: ;; http://ex23.2ch.net/test/read.cgi/morningcoffee/1188654905/116-142 (begin (relate 'maimi 'erika "大好き" 1) (relate 'maimi 'kanna "良き妹" 1) (relate 'maimi 'airi "良き妹" 1) (relate 'maimi 'mai "姉妹" 0) (relate 'erika 'maimi "一番可愛いよ" 1) (relate 'erika 'kanna "仲間" 0) (relate 'erika 'chisato "おソロパジャマ" 0) (relate 'kanna 'erika "仲間" 0) (relate 'kanna 'maimi "好き" 1) (relate 'kanna 'saki "喰ってやるよ" 1) (relate 'kanna 'mai "喰ってやるよ" 1) (relate 'kanna 'airi "大好き" 1) (relate 'kanna 'chisato "愛理に手出すんじゃねぇよ" -1) (relate 'saki 'maimi "荷物整理" 0) (relate 'saki 'erika "彼氏にしたい" 1) (relate 'saki 'kanna "興味がある" 0.5) (relate 'saki 'chisato "愛理に手出すんじゃねぇよ" -1) (relate 'saki 'airi "好き" 1) (relate 'airi 'kanna "受け入れる" 1) (relate 'airi 'chisato "最近親密" 1) (relate 'mai 'erika "保護者" 0) (relate 'mai 'maimi "姉妹" 0) (relate 'mai 'chisato "恋人" 1) (relate 'chisato 'erika "おソロパジャマ" 0) (relate 'chisato 'mai "恋人" 1) (relate 'chisato 'airi "最近親密" 1)) ;; query relations / draw graphs (if (file-exists? graphviz) (dot->png (nodes->dot (ordered-pairs)) "c-ute.png") (for-each info (all-members)))
Graphviz というソフトによって関係図を可視化できる、ということを教えていただきました(既に上プログラムを実行すると自動的に関係図画像を作成するようにしてあります)。ここでは技術的な観点から幾つか注意点を挙げておきます。
まず、Scheme プログラムから Graphviz を動かす方法について。コマンドラインからの起動のように、プログラムへのオプション文字列で入出力ファイルを指定する方法ではどうも上手く行きませんでした。調査の結果、入出力ファイルのポートを Scheme 側で用意しておく必要があるようです。処理系によって異なりますが、PLT Scheme の場合 subprocess という関数を次のように呼び出します。
(subprocess output-port input-port #f "/path/to/dot.exe" "-Tpng")
ここで output-port は png 等画像ファイルへの出力ポート。input-port は dot ファイル(グラフの定義ファイル)の入力ポートです。エラーポートは必要無いでしょう (#f)。
dot という名前の実行ファイルが、関係図のような有向グラフを描画するプログラムです。最後にオプション文字列として出力形式を指定します(png, jpeg, gif, etc.)。
次に dot ファイルを Scheme で書く方法ですが、以下の基本的な有向グラフの書式
digraph g { A -> B; B -> C; C -> A; }
を理解すれば、後は実直に Scheme のデータを当てはめて format 関数等で変換するだけです。
(string-append "digraph g {" (format "~a -> ~a;" (car node) (cdr node)) "}")
問題は、ノードを配置する順番によって出来上がる画像が変わってくる、ということです。
より見た目に分かりやすくするための工夫としては、相互にリンクするノード同士が dot ファイル上でも近接して出力されるようにすると良いでしょう。関連の強いものが画像の上でも近くに表示されるようになります。
また上述(特に例3)のスコアの概念を応用し、スコアの低いものが後に出力されるようにすることで、重力感覚に一致するような関係図を得ることができるでしょう。