野田ゲー「モンスト」の実装テクニック

野田クリスタルさんがR-1ぐらんぷり決勝で披露したゲーム「モンスト」の実装を見てみたところ、おもしろい箇所があったので紹介します。

「モンスト」とは

「モンスト」は野田さんがHSPで書かれたWindows用のゲームです。媒体はCD-ROMで、私は3年位前に渋谷の吉本の劇場で買いました。CD-ROMにはゲームが5本入っていて、「モンスト」はその1本です。

野田さんはこのCD-ROMについて「コピーガードがないのでコピーし放題」とよく言ってますが、なぜかHSPソースコードもそのまま入っているというサービスっぷりです。これは、HSPは「hsptmp」というソースコードのバックアップファイル?を自動で作成するようなのですが、それを手違いでCD-ROMに含めてしまったのだと思います。

今回はその「hsptmp」を読んでみた、という話です。紹介するのは上記画像のストッキングに穴を開ける処理です。

あなたならどう実装するでしょうか?

野田さんの実装

該当部分を抜粋します。

color 252,226,196


if hit_f(0) = 1 : circle 0+x+88,0+y+170,box+x+95,box+y+175

何をしてるのかというと、ハサミが衝突したらキャラクターの肌の色と同じ色の円をcircle命令で描いています。

ストッキングに穴を開けるのではなく、ストッキングの上に丸を描いて穴が開いたように見せている、という実装です。つまり、ヘタウマなように見えるキャラクターは決して適当に描かれたものではなく、肌は単色である必要がある、という仕様が存在しています。

所感

ストッキング画像を部分的に透過する、といった作りを私は予想していたので、この簡単な実装にはかなり意表を突かれました。これはなかなか思いつかないんじゃないかと思います。

ファイル名 DSC_0001.jpg

ネット上にある「DSC_0001.jpg」というファイル名の写真をツイートするbot @dsc_0001_jpg を作りました。

「DSC_0001.jpg」はデジカメで撮った写真に自動でつけられる最初のファイル名です。

Astronautという、YouTubeの平凡なホームビデオをただ再生し続けるサイトがあるんですが、これの日本版みたいなものが見たい、と思って作ってみたbotです。

Astronautがどんなものかというのは、こちらの記事 「閲覧数ゼロのYouTube動画」と「宇宙」の織りなすファンタジー に詳しいです。

「DSC_0001.jpg」とは

デジカメで撮った写真、より正確にはニコンのデジカメで撮った写真、に自動でつけられるファイル名です。 ソニーならファイル名が「DSC」(アンダースコアなし)、キヤノンなら「IMG_」から始まります。

ニコンであることに特に意味はなく、各ファイル名で検索したときに、単に検索結果が多かったから、という理由で選んでます。

「0001」は連番で付けられる最初の数字です。どんなときにこの数字が採番されるかというと、

  1. デジカメを買って初めて撮影した。
  2. 写真の保存フォルダが空(ただし設定による)。
  3. 連番が「9999」までいった。

といった場合かと思います。

「DSC_0001.jpg」というファイル名が意味するのは、多くはおそらく2番の場合で、撮影者に何かきりのいいタイミング(パソコンに写真を移動させたとか)があって、その次に初めて撮影した写真、ということになるかと思います。

権利的な話

botGoogleの画像検索結果と同じ情報を載せているだけなので、このbotがアウトだったらGoogleもアウトなはず、くらいの理解で作ってるので、全然違ってたら教えてください。

ただ、削除対応ができないのはダメな気がするので(Googleはキャッシュ削除対応がある)、一定期間(2週間くらい)経ったら自動で過去ツイートを消すようにしようと思います。

作ってみて

Astronautみたいな感じにできるかなと思ってたんですが、動画と写真は全然別物だなというのが最初の印象です。 なんというか、動画より写真の方が撮影者の意図が入りやすい気がします。

あと作る前は、各地に断片的に存在するものを、ちょっと意味を持った共通項を通して見るとなにか見えてくるものがあるのではないか、というような期待があったんですが、いざ出来たのを見てみると、なんか断片的なものは断片的なまま、ただ在るだけでそれでいいんじゃない、という気分が勝ってしまったので、まあ悪くないものが作れたんじゃないかと思います。

Kakko "We Should Be Dancing" の噂

これは Kakko (鈴木杏樹)の “We Should Be Dancing” のミュージックビデオです。


Kakko - We Should Be Dancing

S/A/W というイギリスのプロデューサーチーム(小室哲哉みたいな人ら)が、当時20歳くらいの Kakko をプロデュースしてイギリスで出した曲です。

私はこの曲が好きなんですが、最近、この曲について気になる噂を知りました。

噂とは

Girls On Pop!: Kakko - We Should Be Dancing

噂は上記のブログで見つけました。以下に引用します。

Rumour has it that Kakko couldn’t pronounce the letter “R” properly, and Mike Stock had a hell of a time trying to figure out lyrics that didn’t feature the “R” sound prominently!

Kakko は英語の “R” の発音ができなかったので、ストック(プロデューサー)が歌詞から “R” の発音を極力なくすようにした、というものです。

噂とはいえ、日本語話者が英語の “R” が苦手なのはよく言われているので、なんとなくそれっぽい気はします。

気になったので、実際の歌詞を見てみました。

歌詞の検証

歌詞を こちら にあったものから引用します。

Everybody knows
Why we come here
To be happy
And have a good time
When the music plays
Let it take you
It can fill your
Imagination
All at once I know
At moments like this

Ooh-ooh-ooh
We should be dancing
Come on, dance with me
Come on, dance
Ooh-ooh-ooh
We should be dancing
Come on, dance with me
Come on, dance

Everybody here
Is on the lookout
For someone special
To spend the night with
Everybody knows
It's a feeling
Deep inside you
You can't hide it
All at once I know
At moments like this

以下、新しい歌詞は出てこないので省略

“R” がまったく出てこなかったら大発見だな、という期待があったんですが、ちょいちょい出てくるようです。

噂は本当なのか

では、出現頻度でみたらどうだろう、ということで検索してみたら、 頻度分析 (暗号) - Wikipedia にアルファベットの出現頻度のグラフが載っていました。

f:id:inaniwa_3:20170401185849p:plain

このグラフによると、英語の一般的な文章における “r” の出現頻度は6%くらいのようです。

一方、 “We Should Be Dancing” の歌詞について、歌詞の繰り返しをなるべく除いて、 “r” の出現頻度を求めてみると、 7 / 304 = 2.3% となりました。一番繰り返されるサビには一切出てきません。

これが誤差の範囲なのか有意に少ないのかとかになると、統計の話になってきて私はあまり自信がありません。なので検証はこの辺にしておきますが、たぶんプロデューサーのストックに聞くのが正解だと思います。

感想

Kakko にはちょっと悪いですが、話題としてはおもしろいかなと思いました。

ちなみに、歌詞に “E” の文字が出てこない曲はあります。


Rapping without the letter E

Microsoft Computer Vision にアルバムジャケットの画像を説明してもらう

概要

MicrosoftComputer Vision にアルバムジャケットの画像を説明してもらう、という Twitterbot を作りました。

Microsoft Computer Vision とは

MicrosoftComputer Vision というのは、画像の認識をしてくれるサービスです。こちら から試すことができます。

上の例は佐野元春のアルバムジャケットの画像ですが、例えばこの画像を Computer Vision のサービスにアップロードすると、「person standing next to a bird」という結果が英語で返ってきます。すごい認識精度ですね。

Microsoft のサイトを見ていただければわかるんですが、サービスのサンプル画像として、下のような水泳をしている男性の画像が使われています。

f:id:inaniwa_3:20170224235330j:plain:w300

この画像は「a man swimming in a pool of water」と認識されるんですが、そんなことよりも、私はこの画像を見たときに、ちょっとニルヴァーナのアルバムっぽいなと思いました。そこで、私はいろんなアルバムジャケットの認識結果を見たくなってしまったので、いきおいこの bot を作りはじめました。

bot の仕組み

Amazon の商品画像
    ↓
[Microsoft Computer Vision]
    ↓
画像の説明文(英語)
    ↓
[Translator]
    ↓
画像の説明文(日本語)
    ↓
ツイート

ツイートの都度、この一連の流れが自動で行われます。

アルバムの選び方

単に Amazon の売り上げランキングから選ぶのが簡単なんですが、そうすると、ジャニーズの無地画像(緑)だらけになるのでやめました。かといって自分の好みで選んでもだいぶ偏りそうだったので、これもやめました。

ある程度の客観性がほしかったので、いろいろな名盤ランキングを参考にしてアルバムを登録することにしました。

  • ローリング・ストーン誌が選ぶオールタイムベストアルバム500
  • 日本のロック名盤ベスト100(講談社現代新書
  • 邦楽名盤特集(HMV
  • 邦楽名盤100選(ブックオフオンライン)
  • ・・・

今のところ、このようなランキングに登場するアルバムから選ばれるようになっています。今後もちょこちょこ追加していこうと思っています。

感想

bot は変な説明も多いです。ですが、特に抽象的なアルバムジャケットは、人間が説明しようと思ってもまあまあ難しいのではないでしょうか。この Computer Vision は説明を放棄することもなく、とりあえず何かは返してくれるので、そういう姿勢は見習いたいなと思いました(いい話)。

M-1グランプリ2015 出場全3472組コンビ名 頻出単語

M-1グランプリのWebサイトでなんとなく出場コンビ名を眺めてたら、「ブルー○○」ってコンビ名が妙に多いのが気になりました。

f:id:inaniwa_3:20151129172015p:plain

3,500組近くエントリーしてるので、まあこんなこともあるかなと思いましたが、にしてもやっぱり多い気がします。 どうしても気になったので、全コンビ名について、単語の出現回数のランキングを出そうと思ってやってみました。

方法

1. 全コンビ名を取得する

公式WebサイトにJSONで置いてあったので、それをダウンロードして使いました。 なぜか3,437組分しかありませんでしたが(公式発表は3,472組)、あまり気にしないことにしました。
http://www.m-1gp.com/json/combi_nagashi.json

2. 適当なスクリプトを書く

コンビ名をMeCabで分割し、なんとか「単語」と呼べそうなものだけにフィルタリングして (名詞に限定したり、一文字のひらがな・カタカナなどは省いたりして)、 あとはその数を数えました。
スクリプトこちら です。

結果

回数 単語
105 リー
92 イン, ラン
90 ット
74 マン
58 ライ, リン
56 アン
51 バー, ブル
46 ブラ
44 ボー
43 パン
42 パー
40 キー
39 クラ
38 キン, ファ, モン
37 ロン
36 トラ, トリ
35 ちゃ
33 サン, レン
32 カン
29 タン, テン
27 マイ
26 スター, メン
25 フラ, レイ
24 ダン, ハイ
23 ボーイ, ラス, 子
22 ティー, ピー
21 ちゃん, ステ, マー, 人
20 シン, ジョ, セン, 中, 日
19 イズ, クロ, トリー, トン, ワン
18 ジャン, ジン, ハン, ランド
17 さん, サイ, トロ, ブルー, プリン, 天
16 エン, キング, ゴン, ダブル, 風
15 ザ・, スカ, ドリ, フル, ボン
14 いち, もん, アル, マル, 三, 山
13 an, ドロ, ドン, ハー, パイ, 団, 月, 木
12 カラ, ガン, ジャー, スーパー, ニュー, マリ, ヤン, ロック
11 かん, しん, らん, タイム, チャン, ブラザー, ベイ, ボール, ミン, ライン, 弟
10 てん, アップ, クラブ, クール, スリー, セブ, ブラン, ホー, ラフ, リス, レス, ロップ, 上, 二, 京, 兄弟, 村, 東, 男, 町, 金
9 とり, アフ, イブ, カレ, ガール, ゲン, シャン, シュー, セブン, ツイン, ブラザーズ, ボーイズ, ポップ, ラック, ロス, ロマン, ロング, 年, 東京, 神, 笑
8 IN, たい, オレンジ, コーン, サイド, セイ, ドラゴン, ドロップ, バリ, フライ, ベン, ルマン, 会, 国, 太, 感, 爆, 空, 飛, 魚
7 くま, しょ, たち, たま, なか, みつ, ゆう, らい, わん, アリ, イチ, エル, カントリー, ガチ, グリーン, ゴリ, ジョン, ベイビー, メガ, ラッシュ, ラップ, ランチ, リップ, リング, レート, 一, 六, 力, 吉, 家, 平, 手, 族, 松, 流, 目, 石, 色
6 Mr, えん, たか, たん, だい, つる, どん, ゅう, アンド, イエロー, グラン, ジョー, セカンド, セル, チキン, トイ, トム, ナス, ハウス, バカ, バタ, パンダ, パンチ, パーティ, フリー, プー, ポイント, マイル, モンキー, ラボ, 丸, 九, 井, 介, 光, 心, 戦, 星, 白, 組, 花, 雷, 飯, 魔
5 BAN, nd, あま, あん, くん, ぐり, げん, さくら, すず, ちょ, なん, むら, アウト, アミ, アンダー, イダー, オブ, オールド, ギャル, ケン, ゴールド, サム, シロ, スクール, スパイ, チョップ, チリ, トップ, トビ, トーン, ナイン, ナンバー, ハッピー, バース, パラダイス, パンプキン, パーティー, ビット, ビーズ, ピンク, ファー, フィー, フラワー, ヘッド, ヘル, ベース, ペンギン, ボックス, ポテト, ミス, ミック, ヤング, リトル, リバー, ルース, レディ, ロビン, ロマンス, 九州, 五, 十, 南, 味, 夏, 大阪, 学, 崎, 愛, 日本, 時, 根, 猫, 者, 茶, 谷, 高, 黄昏, 黒
4 DA, NO, あい, いそ, いも, おじ, おと, がん, きた, きん, くり, ぐら, しこ, ちん, つき, つね, とき, はな, ぼう, ぼん, もの, らく, わら, アンコ, イヌ, インター, ウェイ, オーバー, カラン, カレー, ガーデン, ガールズ, キス, キック, キャンディ, キラー, クン, グリン, ケイ, ジェット, ジャンプ, ジュー, スタンド, ストロベリー, ストーン, スマイル, ゼロ, タワー, ターボ, ダイナマイト, チョコ, チーズ, ツインズ, ティブ, テッド, デイズ, トロイ, ドライ, ドール, ハイボール, ハニー, ハラ, バク, バック, バラ, バンク, パニック, パパ, パーマ, ピンポン, ブラウン, ブラック, ブルース, プラス, プリンセス, ベア, ベロ, ホーム, ボス, ポリ, マカロン, ムーン, メロ, モス, モダン, モンズ, ヤマ, ヨシ, ライス, ライダー, ラスト, ラーメン, リズム, リンス, リード, レッド, ロード, 代, 円, 原, 友, 園, 夜, 少年, 恋, 所, 桜, 牛, 王, 男子, 番, 節, 豆, 軍, 酸, 銀, 隊, 電, 頭, 馬, 鬼

数が多いので、出現回数が3以下の単語は省略しています。

考察

「ブルー」は出現回数17回で、それ単体で意味がわかりそうな単語としては、けっこう上位に来たかなと思います。 ちなみにコンビ名をすべて挙げると、

サブルーチン、サラリーマンブルース、シースルーブルー、ピンクブルー、ブルーインパクト、ブルーギル、ブルージーン、ブルーストーン、ブルースマイル、ブルーセレブ、ブルーハニーズ、ブルー・ブルー、ブルーリバー、ブルーレディ、マローブルーピィ、ロンリーブルース

の計16組となりました(ブルー・ブルーは2回で数えています)。 ただ、「ブルース」も数えていたりするので、青の意味でのブルーはもう少し減ると思います。

その他考察

色ではブルーが多い

「ブルー」17回、「グリーン」7回、「イエロー」6回、「ピンク」5回、「ブラック」4回、「レッド」4回

地域では東京が多い

「東京」9回、「九州」5回、「大阪」5回、「日本」5回

男性コンビが多い?

「ボーイ」23回、「ガール」9回

「黄昏」が多い

「黄昏」ってそんなに頻出単語ではないと思うし、私は虹の黄昏くらいしか知らないのですが、5組いました。

まとめ

「ブルー」が多いなという直感は、まあまああってたかなと思います。

コンビ名といえば、昔から「ン」がつくコンビ名は売れるというのが有名だと思います (ダウンタウンウッチャンナンチャンとんねるずなど)。 M-1のWebサイトからはコンビごとのM-1の戦績も取れそうなので、 コンビ名と戦績に何か関連性を見出せたらおもしろいかなと思いました。

うんこを太くする

この前、雑誌を読んでいたら、おもしろい本が紹介されていました。

「悪趣味百科」という本です。

悪趣味百科

悪趣味百科

これは20年くらい前に出た翻訳本なんですが、アメリカ文化の悪趣味な面を解説するといった感じの内容です。

表紙からして悪趣味ですが、趣味が悪いのは表紙だけでなく、本文にもおよびます。

f:id:inaniwa_3:20131217110303j:plain 画像は http://snappylife.sblo.jp/article/82683938.html から引用

画像を見ていただければわかりますが、特定の3文字が太く印刷されています。

この本の装丁は祖父江慎さん(伝染るんです。を手がけた方です)だそうなんですが、曰く、ページが文字だけだと上品になってしまうので、下品にするためにやむなくこうしたとのこと。

また、当時は文字を太くするのにもお金がかかるので、苦労があった、とのことです。

ブックマークレット

現代は、コストゼロで文字を太くできる時代になりました(たぶん)。そこで、本ではないですが、代わりにWebサイトでそういうことができるものを作ってみました。

まず、以下のリンクをブックマークバーにドラッグ&ドロップして、ブックマークに登録します。

うんこ

ブックマークに登録できたら、あとは、うんこを太くしたいWebサイトを開いた状態で、ブックマークをクリックしたらOKです。

ちなみに、コードはこちらのようになっています。

javascript:(function(){document.body.innerHTML=document.body.innerHTML.replace(/([うんこ])/g,"<font size=+1><b>$1</b></font>")})()

使用例

例として、不名誉な通称で有名なスーパードライホール、の記事に、このブックマークレットを適用してみます。

f:id:inaniwa_3:20151107223028p:plain http://news.mynavi.jp/articles/2013/03/21/ab/ から引用

Webサイトを開いた状態で、画像左上のブックマークをクリックするとこのようになります。

f:id:inaniwa_3:20151107230943p:plain

感想

今回、いろんなWebサイトで試してみたんですが、「このWebサイトは、この3文字の出現頻度が高い傾向があるな」などといった知見が得られました。

もちろん、別の文字でもできるので、応用はいろいろあるんじゃないかと思います。

第8回ニコニコ学会β 参加記

ニコニコ学会βという学会で、前記事の偶然短歌botについて発表しました。それの記録です。


応募まで

2ヶ月ほど前、ツイッターで、ニコニコ学会での発表を推薦される。推薦者は前回の座長さん。推薦といっても応募が必要で、しかも審査で落ちる場合もあるとのこと。

転職活動で、オファーが来て受けたら落ちたみたいな話がよくあるが、それっぽいなと思った。が、いい経験と思って応募することにした。

発表準備

審査は無事に通り、3分間の発表の準備をすることになった。プレゼンの参考にしようと、TEDの動画を見たが、発表者の意識の高さに具合が悪くなってしまった。結局、気づいたらケーシー高峰の動画ばかり見ていた。

資料はGoogleスライドで作った。

前日まで

ニコニコ学会はニコニコ超会議のブースのひとつである。当日は他のブースも行ってみようと思って、超会議のウェブサイトを確認したところ、あまりのブースの多さに、見ていて具合が悪くなってしまった。これは回りきれない。

結局、見に行くブースを絞りきれず、当日を迎えた。

当日・会場到着まで

朝のリハーサルに参加するため、早くに家を出た。京葉線で、東京から海浜幕張に向かう。

そういえば、私用で幕張メッセに来るのは、10年位前にクラフトワークのライブを見に来たとき以来かもしれない。そう思いながら、舞浜で降りる客を見ていた。

当日・発表まで

リハーサルも終え、あとは夕方の発表まで自由時間である。とりあえずいろいろ見ようと、ホール内をぐるっと一回りした。

視覚・聴覚と情報の多い空間で、脳が情報を処理しきれなくなったんだと思う。私は具合が悪くなってしまった。

昼くらいには会場の外に出て(かっこよく言えばパーティーを抜け出し)、木陰のベンチでひとり休んでいた。仰ぎ見ると木漏れ日がとても綺麗で、それは、会場にいたどのコスプレイヤーよりも綺麗だな、と思ってしまった。

当日・発表

そして、発表を迎えた。

登壇してすぐに思ったのは、マイクが臭いな、ということだった。これはある程度仕方の無いことで、よく言えば今までの登壇者の重みとも言える。

私も3分間、マイクを臭くする行為をしていた。

当日・帰宅

相変わらず具合が悪かったので、お金で特急券を買って帰った。

車内から外を見たら、川で船の衝突事故があったみたいで、船の残骸が散らばっていた。これのインパクトが強くて、発表したことが、いきなり遠い昔になってしまった。


発表を終えて

この話があったとき、何をしゃべろうかなと思ったんですが、穂村弘さんに文學界のコラムで「inaniwa3氏の作品と見なすこともできるんじゃないか」と書いていただいたことを思い出し、それを念頭に置いた発表にしました。

発表資料はこちらです。

学会の方、ご覧になった方、 ありがとうございました。