Sound Canvas for iOS

待ちに待った Roland Sound Canvas for iOS がリリースされた。こいつは Roland が発売していた GS 音源というシンセサイザを iOS 上で エミュレーションしてくれるソフトだ。ボクが過去に作った曲でも使われているシンセサイザーだ。
実はボクは SC-88Pro を二台所有していて、家に一台、会社に一台それぞれ置いてある。急にジングル作ってとか言われることがあるので、この SC-88Pro という音源でサクッと作ってたりしている。
ただいずれも古い機械で有り、いつ壊れてもおかしくない。
この iOS 版があれば、SC-88Pro が壊れても iPhone で再現できる。

と、思ってたんだけど……。

どうも iOS というか iPhone を PC から MIDI 音源として使うには色々と面倒そうだ。
Lightning ⇔ MIDI にするような装置が必要だ。そしてそれさえあれば PC 側から MIDI 信号を送ってやれば Sound Canvas for iOS がドライブできるのかどうかも、よくわからん。しかもその実験のために 12000 円も出すのもなぁ……。
あともう一つの問題が浮上した。それはその作った曲をどうやって録音するのかよく解らない。いや、そりゃヘッドフォン端子から音録ればできるけど、せっかくのエミュレータなのにデジタルのデータが欲しいよ? どうするんだろ。

さらに、普通に MIDI を再生するだけでも一苦労。Sound Canvas for iOS には MIDI ファイルを読み込んでそれを再生するいわゆるシーケンサも搭載されているものの、Roland から購入した MIDI ファイルしか再生できない。
iOS は Windows なんかと違って、アプリごとにアクセス出来る領域が決められていて、同じ iPhone 内にあるファイルを自由に読み込んだりすることはできない。ネットワーク上のファイルなんてもってのほか。Sound Canvas for iOS 専用の場所に MIDI ファイルを入れなければならないのだ。
うーむ、ボクのサーバには膨大な MIDI データがあるというのに……。

で、一応 Windows のエクスプローラみたいなソフトがあるんだけど、そいつを使うと無理矢理 Sound Canvas for iOS を外部から呼び出して MIDI ファイルが再生できることが解った。曲リストなどは作れないが、1 曲 1 曲ならこれでサーバ上の MIDI ファイルも再生できるようにはなった……が、今度はサーバ上の MIDI ファイルが ZIPLZH で固められていることだ(汗)。さらにそれらを展開しても RCP ファイルであることも多い……orz(当時のツイート
MIDI ファイルというか演奏情報って、けっこう繰り返しの塊だ。だからすごく圧縮が効く。数百 KiB のファイルが数 KiB になる。当時、HDD の容量が 100MB とかそういう時代だったので圧縮しておいていたのだ。
RCP ファイルってのは NEC の PC-98×1 に出ていたシーケンサ ソフトのファイル形式で、オリジナルの形式のため、今のソフトでは再生できない。当時は RCP がけっこう幅を利かせていたのだ。

と言うわけで、せっかく手に入れた Sound Canvas for iOS、今のところどう使ったらいいものか、困っている(笑)。
一番最後の写真は、自宅のシンセサイザたち。SC-88Pro は上から 4 つめ左の機械。

IMG_3315 IMG_3316 1506183320

 

溶岩焼ダイニング bonbori の打ち上げ

去年の 10 月から関わっていたソシャゲの打ち上げに呼ばれた。
場所は新宿の『溶岩焼ダイニング bonbori』というグリル料理屋。焼き肉屋のもうちょっと焼きに専門性を持たせたようなお店。
焼き物美味しい。
店員が焼いてくれるんだけど、面倒なので自分で焼いたりしてた(ぁ

打ち上げに呼ばれるのって久しぶりかも。
ボクはいつも複数のプロジェクトに関わっていて、あるプロジェクトが終わっても、他のプロジェクトで忙しかったり、打ち合わせが入っていたりして、打ち上げにはなかなか参加出来ないので、なんだか嬉しい。

腹一杯食べてしまった。

一番最後の写真はチーズではなくてフォアグラ。

1502241461 1502241463 1502241464 1502241466 1502241469

あけましておめでとうございます(ぁ

ようやく、年賀状までこぎ着けました。
今この日記を書いているのは、5/9(汗)。4 ヶ月以上日記が遅れております。
さて、2014 年は今までにない年でありました。詳しくはかけませんが、いろいろあって精神が病んでしまい、周囲に迷惑をかけたりなどなど。未だに本調子ではなく、2015 年を迎えました。
いやはや……今年もどんな年になるのやら。

精神を病んだことで、今までより自分のために時間を使えるのではないかなぁと思いつつ……いろいろ敗戦処理的なものも残っているので、それらもジワジワと片付けなければと思いつつ……。
うん、だめだな、ちゃんと報告しようとするとここでは書けないことばかりになってしまう(笑)。いや、笑いことではないのだが。

日記twitter などは平常運転のように見えるように努力しております。暗さの欠片も基本的にはないはず……。今年はとりあえず同人を一冊出し、出来ればもう一冊出したいところではありますが、果たしてうまくいくかどうか……。

ちなみになんで 1/5 に新年の挨拶と報告なのかというと、この日に年賀状が上がってきたからです(笑)。『OZ Meets OZ !』の絵描きさんに無理を頼んで描いてもらいました。

まぁ、モンハンとか猫とか仕事とか

1/2 から仕事が始まっていた。HTML 以外にも何故かバナーとか作っているヲレ。あれ、これボクの仕事か!?(笑)とか思いながら、グラフィッカー デビュー!(マテ
まぁお年玉ガチャとか振り袖祭りだったかなんだったか、その辺の更新をしていた。

ところでウチには二匹の猫がいるのだが、とにかくツメを出す。こんなに間抜けな猫、見たことないっていくらいツメの使い方が下手。例えばカーテンによじ登って、カーテンに爪が引っかかって降りられなくなったりとか。
今まで何度も猫は飼ってきたけど、こんな猫はじめて。
でね、甘えるときもよくツメを出すんだけど、そのおかげでボクの腕はボロボロである。カサブタだらけだ。
だがいつしか、「痛い」と言うとツメを引っ込めるようになった。
へー。
ツメを立ててボクの身体をよじ登ってくるときとか、あとゴロゴロ言いながらボクの肌の上で足を踏み踏みするときとか、傷だらけだったんだけど、最近は「痛い」というとツメを引っ込める。
でも相変わらずカーテンには引っかかって下りられなくなってるけど(ぁ

甘えるとき、ツメ、出さないで欲しいなぁ……。

閑話休題。
仕事は始まっているけれども、大晦日までのようなずっと詰めて作業をするほど忙しくはなかったので、久しぶりにモンハンにお金を払ってログオンしてみた。
が……うーむ、なんの素材を集めなくちゃ行けないのかとか、サッパリ解らん……。
武器屋に行って、素材リスト見て、倉庫の中の既に持っている素材を見て……。
………。
……………。
そっと閉じた。それ以来やってない(ぁ

ゲームの目的

(関連記事:ゲームデザイナーの死、ねぇ
ソーシャル ゲームに関わっているわけだけれども、それへの愚痴は以前にも書いた。

今日は新たな愚痴(笑)。
ソーシャル ゲームはその名の通り、他人と関わることが前提となっている。なので協力して敵を倒すとか、素材集めに協力してもらうなんて要素が入っている。そして運営会社にとって大事なのは、毎日ログオンしてもらうことだ。
実際、協力プレイもそのために行われているようなものだ。ギルドやパーティの仲間から協力要請が来たら、一応答えざるを得ない。また、ログイン率を稼ぐために、毎日ログオンしていると運営からプレゼントをもらえたりする。
他にもお正月、節分、バレンタイン……などのイベント毎にゲーム内でもイベントをやったりプレゼントをしたりする。もっとスパンが短いものになると、昼休み特典とか言って 12 ~ 13 時の世間で言う昼休みの間にログオンすると何かもらえるとか、そういうのもある。

まぁ、いいんだけど……。

何が不満かというと、本来ゲームには「目的」があるはずである。
それはまぁ、野球とか将棋にもあるし、コンピュータ ゲームにもある。たとえば RPG でラスボスを倒してお姫様を助けるとか、ブロック崩しならブロックを崩すことだし。が、ソシャゲにはその「ゲームの目的」というのが希薄だ。
勿論、目的が設定されていては、目的を達したらゲームが終わってしまうと言う問題がある。ソーシャル ゲームというか、ネットワーク対応ゲームは終わりがないように作らなければならない。
まぁでもそんなことは簡単である。ラスボスを倒したら、また次のボスが出てくるとか、そんなんでいいと思う。推理小説は主人公の行くところ行くところで殺人事件が起きるじゃないか。ソーシャル ゲームでもゲームの目的は設定できるし、ボク(主人公)はなにをするために今このゲームをやっているのかというモチベーションが出来る。
そう、ボクのゲームのモチベーションは、そのゲームの目的とイコールだ。

ところがソーシャル ゲームの目的はさっき上で説明した「プレゼントをもらう」ことが目的になっている。○○したら○○をプレゼント、○○以内にログオンしたら○○をプレゼント、○○を○○分以内に倒したら○○をプレゼント……。いやいやいやいやいや、勿論それは別にいいんだけどさ、そもそもこのゲーム、なんのゲームなのよ!? って言う。
プレゼントはいいから、もっとゲームの設定と物語を活かした内容のものをさせてくれよ。たとえば RPG で勇者ならさ、モンスターとかに困っている国とか村とかに行って、そこでモンスター倒して、平和をもたらさせてよ。その画面に出てくるダンジョンはいったいなんのダンジョンで、なんのためにあって、どうしてボクはそのダンジョンを攻略しなくちゃいけないのか、さっぱり解らないよ!(しかも前にしか進めないしwww

って、ボクは思うんだけどなぁ……。
みんなどんなつもりでソーシャル ゲームやってんだろ?(という話は、また別の機会に書きます)

カレーの王様のタンカレー

今日のお昼は、浅草橋のカレー屋の中では比較的気に入っているカレーの王様CoCo 壱よりボクは好きである。前も書いたと思うけど、ここのカレーで一番好きなのが、牛タンカレーである。750 円。
中にゴロゴロと牛タンが入っているのだ。
これの辛口を頼むのが、ボクの定番である。

で、オニオンフライとらっきょうは有料なんだけど、いつも無料券をくれるので、結局この二つは無料でつけてもらっている。

夜警の写真はとあるビルから見下ろした浅草橋駅。このアングルから見られることってあんまりないなぁと思って、撮ってしまった。今日は会社の忘年会があり、その会場がこうして浅草橋を見下ろせる場所だったのである。

忘年会も終わり、今日で仕事納めなんだけど、ボクが関わっているプロジェクトはこのあと大晦日イベント、新年イベント、お年玉イベントとイベントが目白押しで正月休みはなさそうだ。

1412260901 1412260903 1412260904

オープン リゾルバ事件

勤め先の会社は三つの開発室があるんだけど、それらのネットワークを管理している。で、そのうちの一つの開発室で利用しているプロバイダから、どうも大量の不正パケットが流れた形跡があると連絡をよこしてきた。
ログをみたら、一目超然、DNS amp 攻撃だった。

ぎゃーす! そういえば、DNS の設定ってどうなってたんだっけ?<ヲイ
って色々調べたら、amatsukami.jp サーバもオープン リゾルバになっていた……orz

皆さんがウェブサイトを閲覧するとき、そのサイトを運営しているサーバに正しくアクセスするためには DNS という仕組みが不可欠である。インターネット上のサーバはすべて一意の重複することのない番号(IP アドレス)が割り振られていて、この IP アドレスはグローバル IP アドレスと言って、インターネット内で重複しないように割り振られている。例えば今あなたが見ている TAMA Networks を提供しているサーバのグローバル IP アドレスは 210.136.205.247 であり、これは世界に一つしかない IP アドレスである。この番号を他の誰かが使うことはない。
でもこの 210.136.205.247 という数字を使ってデータをやりとるするのは非常に非効率だ。この数字は将来的に変わるかもしれないし、この IP アドレスで提供されるサービスは一つに限ったことではない(FTP、メールなど)。
そこで、この数字と抽象的な名前(○○.co.jp とかのことで、これをドメイン名という)を関連づけることによって、柔軟なアクセスを提供するのが DNS という仕組みだ。たとえば、TAMA Networks のブックマークをブラウザで呼び出すと、ブラウザは amatsukami.jp にアクセスしようとする。ブラウザはまず DNS を提供しているサーバに「amatsukami.jp は何番でっしゃろ?」と問い合わせに行くのだ。すると、DNS サーバが「210.136.205.247 でんがな」と答えてくるので、ブラウザはその DNS から答えられた番号の振られているコンピュータ(サーバ)にアクセスしに行くのである。
これはなにも amatsukami.jp に限ったことではなく、世の様々なサーバ(sony.co.jp とか honda.co.jp とか)すべてがこの方法でアクセスしたいサーバを求めており、これを名前解決と言い、このような DNS サーバを「フルサービス・リゾルバ」という。

ではどのフルサービス リゾルバ DNS にアクセスしに行くのかというと、それは各プロバイダが提供している。他にも Google なんかが自由に使える DNS サーバを用意してくれたりしているし、自分で設定することも出来る。
また会社では会社で建てたフルサービス リゾルバ DNS サーバがその役を担い、ウチの会社もそうなっている。

さて、では DNS サーバというのは全世界中の IP アドレスと名前の情報を持っているのかというと、そう言うワケではない。DNS サーバは例えば「amatsukami.jp は何番よ?」と問い合わされたら過去に同じ問い合わせがないかをまず調べる(キャッシュ)。なければ、.jp を管理している DNS サーバに問い合わせに行く。すると .jp を管理している DNS サーバは「amatsukami.jp なら 210.136.205.247 っていうサーバが詳しいことを知ってるぜ」と返してくるので、210.136.205.247 に問い合わせに行くと、210.136.205.247  の DNS サーバ(つまりボクのサーバ)が amatsukami.jp に関する様々な名前と数字の対応を返すのである。このようにフルサービス リゾルバは、次々とより上の DNS サーバに問い合わせていくようになっていて、これを再帰呼び出しと言う。
amatsukami.jp に関する様々な名前というのは、例えば ftp.amatsukami.jp や www.amatsukami.jp など、amatsukami.jp がつく様々な名前である。ここで初めて、amatsukami.jp も 210.136.205.247 だとって返ってくるので、これを問い合わせしに来た機械に渡すのである。
この時、この「問い合わせをしに来た機械を詐称」することができる。
つまり本来は、A というコンピュータが「amatsukami.jp は何番よ?」って聞いてきたら、その結果を A に返すはずなのだが、ここを B というコンピュータに返せとすることが出来てしまうのである。
こうすることによって DNS サーバは B に答えを送ってしまうどころか、本来定義されていない情報を問い合わせる(この問い合わせ内容が、普通の DNS 問い合わせより遙かに情報量が多いように細工されている)ことによって、DNS サーバはコンピュータ B の回線をパンクさせてしまうのだ(実際には何万台という乗っ取られたパソコンをつかって、DNS サーバにこのような攻撃を行う)。
そのためフルサービス リゾルバは、インターネットの誰からでも受けてはいけないように設定しなければならない。そもそもこの名前解決の問い合わせは各プロバイダが提供しているのであって、わざわざ他人のサーバに問い合わせる必要などない。従ってウチも社内でのみ、このサービスは提供すべきなのである。

ではなぜそれがインターネット全体にも提供していたのか?
それは上の説明にも出てきた「amatsukami.jp なら 210.136.205.247 っていうサーバが詳しいことを知ってるぜ」という部分である。ボクのサーバは全インターネットに向けて、amatsukami.jp に関してのみ責任を持って名前解決をしなければならない(こういう DNS サーバをコンテンツ サーバという)。
amatsukami.jp のついたものに関しては、ボクのサーバだけが真実を知っているのである(実際には真実を知っているサーバを定義することが出来るが)。
そして Microsoft の DNS サーバは、フルサービス リゾルバとコンテンツ サーバを分離出来ない。もし分離したかったら、フルサービス リゾルバ用の DNS と、コンテンツ サーバ用の DNS をそれぞれ別に立てないといけないんですな(ちなみに UNIX の世界で使われている BIND という DNS のプログラムは、この二つの機能を分離出来る)。

まぁ、Windows でも BIND 使うべきなのかもしれないけどね……。

で、とりあえず会社の方はコンテンツ サーバとしての役割を他の外向けサーバに移し、ルータ側で DNS の外部ポートを閉じた。
一方の amatsukami.jp は LAN 内の Active Directory を提供しているマシンにフルサービス リゾルバを設定し、SMTP(メール)のゲートウェイをしているサーバに新たに DNS をインストールし、そちらでコンテンツ サーバとして設定した。これで amatsukami.jp サーバがオープン リゾルバではなくなった。

あー、説明が長かった……orz
ちゃんと正しく説明できているかなぁ……。