WB-BT300 とか PHP とか VPN とか

Twitter から拾った、コンピュータ関係の話。

iPhone の音を PC の音とミックスして出したくて、使っていなかった Bluetooth レシーバを引っ張り出してきた。Onkyo の WB-BT300 という機械だ。コイツはなにをする機械かというと、iPhone など Bluetooth 対応機からは音響装置に見え、WB-BT300 に対して音声を飛ばしてくれる。WB-BT300 は iPhone からきた音声を、デジタル信号かアナログ音声信号に変換して出力してくれるのだ。

で、会社の開発機には TEAC の US-366 というミキサー兼 USB 音源があるのでそいつと接続すると、PC からの音と iPhone からの音をミキシング(混ぜて)出せるようになるのですな。ちなみに US-366 と WB-BT300 は光デジタルケーブルで接続。

ところが、iPhone からの音しか出ない!! なんだこれ??

原因は WB-BT300 のデジタル フォーマットがサンプリング周波数 192kHz、量子化ビット数が 24bit のせい。このフォーマットは統一しておかなければならないのだが、たかが Bluetooth の音声受信装置でなんでこんな高い設定なんだwww
ちなみに CD はサンプリング周波数が 44.1kHz、量子化ビット数が 16 ビットだ。CD よりも音が悪いクセにデータ量は CD の 6.5 倍もあるwww

仕方がないので PC 側の出力も 192kHz の 24bit に設定した。こうすることによって無事 PC と iPhone の音が同時に出るようになった。

某絵描きから、イベントの福引きみたいなクジをデジタル化できないかという依頼があり、ごりごりと PHP と HTML と Javascript で作った。今流行の HTML5 というヤツだ(ぁ
中身はすぐに出来た。そりゃまぁ、そうか。クジ振るだけだから、出た乱数が何等賞なのかに変換して表示するだけである。

問題は管理画面である。単純にクジ、と言っても誰でも彼でもアクセスしてクジが引けるというワケにはいかない。以下の様な機能が入っている。

  • ユーザ登録して、ユーザ登録した人がクジを作れる
  • クジはいくつでも作れる
  • それぞれのクジには 1 ~ 10 等賞まで設定でき、さらに残念賞、参加賞が設定できる。そしてそれぞれの賞及びはずれがいくつあるのか設定するようになっている。
  • QR コードの表示
  • クジを引く画面を Javascript でアニメーションさせる。
  • 何等賞が出て、残り何の賞がどれくらい残っているかリアルタイムで監視する、モニター

使い方はユーザ(主催者)がクジを作ったら、そのクジを iPad などの端末で表示し、お客さんがそれをタップしてクジを引くというものだ。
さらに QR コードを吐いて、それをお客さんが撮影してクジを引くという機能もつけた。この場合、ちゃんと一回しかクジは引けないようになってるのだが、残念ながら Javascript では機種固有の識別番号を取得できないので、cookie になってしまった。そのため、cookie を消去すれば何度でもクジは引けてしまう。

ツイートでの愚痴は、HTML というかサーバのプログラムは一回一回が初めてのアクセスになるというか、仕組み上、同じ人が何度アクセスしようが、サーバ側は初めての人が初めてアクセスしたことにしかならない。
今アクセスしに来た人が前の○○という場所にアクセスしに来て、今のアクセスはそれの続きであるということは実は認識できないのだ。それを実現するために、cookie やらセッションやらっていう仕組みがあるのだが、とにかく一回一回のアクセスがすべて関連を持たせられないので、渡す数値だのなんだのも全部もらい直さないといけないので、プログラミングがすげーめんどくさいっていう話。

これが普通のプログラムだったら、さっききたアクセスは変数に残ってるし、その変数を参照して関数を呼び出せば済むんだけど、PHP だとアクセスが来るたびにプログラムは先頭から実行されてしまうのだ。

あと処理は PHP なんだけど、それを表示するのは HTML なのね。組み方としては PHP が処理の結果に応じて HTML を吐き出してるワケなんだけど、そうなるとプログラム ソースの中に PHP と HTML が混在してけっこう美しくない結果に……。今回は仕様書も何もないままテキトーに作り始めてしまったので分離されてないのだけど、予定してたより大きなプログラム(PHP 部分で 2000 行程度、Javascript が 500 行程度)になってしまったので、今後は気をつけたい(汗


(MP4 / 750×1334 / 25fps / 1’05” / 126MB / iPhone)

amatsukami.jp サーバの様々なサービスは、色々がんばって外に出してるんだけど、それでもやっぱり一部の機能は VPN を張らないと使えない。そのたびに端末(iPhone など)から VPN を張ってるんだけど、けっこうめんどくさい。
モバイル WiFi ルータに VPN を張る機能があれば、端末でいちいち張らなくても済むのになぁ……。

思ったほど妹は兄に恋してない

エロゲでさ、いや、エロゲに限らないんだけど、様々な創作物で兄と妹の恋愛を取り扱った作品が多いけど、基本的に男性向けだ。考えてみると女性向けでないよなーってことに気づいた。コレの意味するところは、男は妹ラヴだけど女は兄なんでどうでもいいってことなんだな。

つまり現実では妹とくっつくなんてことは、とても希で滅多にあり得ない。

悲しいねぇ(ぁ

ところが、一筋の光明が。

いちおう女性向けでもそういうジャンルはあるらしい。過保護兄・病んでる兄かー。
男性向けだとどうなんだろう。過保護兄は男性向けでも行けそう。ただ、女性が思う過保護と、男性が思う過保護は違うのかもしれない。病んでる方はボクの経験だとあれだ、執拗に独占しちゃうやつ? で、妹を閉じ込めてどこにも出さない的な、そういうのを想像しちゃうけど、病んでるは選択肢が多すぎて色々だなー。

チャットの使い方

最近、色んなプロジェクトで ChatWork を使うことが多くなった。
ボク個人的には「何コレ?」って感じのサービスなんだけど、要はグループ チャット システムである。プロジェクトの情報共有に使われているようだ。Redmine じゃダメなのん? と思うのだが、Redmine では即時性が足りない(んだと思う)。Chatwork はチャットというだけあってリアルタイム性がある程度付いてくる。とはいえ、「これからチャットするからルームに入ってー」とアナウンスするわけではないので、完全なリアルタイムではなく、用件がある人が書きっぱなしになってしまう。

でね、チャットなので当然、書き込まれた内容はどんどん流れて行ってしまう。
とはいえチャットとはそういうものだ。なので情報共有のためにはチャットを通して決まったことや報告した内容はどこかにまとめて置く必要がある。そのままチャットに置いたままでは、あとから「あの件はどう決まったんだっけ?」と確認するのは大変だからだ。

ところが、プロジェクト メンバーは平気でチャットに書いたままにしておく。
おかげで、○○の件って△△でよかったんでしたっけ? とか聞かれても、知らねーよってなるwww
もちろん知らねーよでは済まされないので、チャットの履歴を遡って検索することになる。

ChatWork には「タスク」というものがあって、話題を切り取っておくことが出来る。ただこれも「タスク」という名前が表すとおり、話題の中で「いついつまでに○○しときましょう」みたいなのを切り取って、それが終わったらそのタスクを消すみたいなことをするためのものなので、いつまでも置いておくとか別スレッドにするとかそういうことは出来ない。
また、「ああこの情報は大事だな」と気づけばそうやってタスク化できるが、向こうが報告してきてボクにとって重要だかどうだかも解らないような情報はボク自身がスルーしてしまう。そういう情報をあとから「あの件って……」と言われたら、結局、チャットの履歴を遡ることに変わりは無い。

どうすればいいか?
話題ごとにチャット ルームを作ればよいのだが、ChatWrok は向いていない。チャットだからダラダラと喋ってしまうし、余計な情報も多くなる。さらに子チャットなどを作る機能もない。
なので、別途掲示板みたいなものがあるとイイと思っている。とにかく話題ごとに切り分けられて、その情報をすぐに見られるようにすればいいのだ。まぁ、切り分けられたスレッドがたくさんできちゃうんじゃないかって言われるかもしれないが、チャットだと検索するにしても、長いチャットのやりとりの中を検索して遡っていく必要があるが、話題ごとになっていればタイトルの検索だけですむことが多いはずだ(ただこれは使う人たちのセンスにもよるが)。

などと長々と書いたが、要するにツールにはそれぞれ長所短所があるんだから何でもかんでも一つのツールで済ませようとするなって話。過去決まったことは、どっか解りやすいところに書いとけよ、っていう。

同じようなことは Redmne や Excel にも言える。本来と異なる使い方をしている企業や人はたくさんいる。

下の写真は餃子市西所沢店のもの。深夜までやってて味もしっかりしてて出てくるのも早くて駐車場もあって、ボクみたいな人間のために有るんじゃないかって言うぐらい気に入っているお店である。

罵られる CD

Twitter から拾った、くっだらねー話。

まぁツイートの通りなんだけど、さらには罵られる方(聞き手)の状況も色々あると思うんだよね。駄兄、駄弟、ニート、お父さん、おっさん、サラリーマン、ヒモなど。ってなると CD(80 min)じゃなくてもう MP3 で配信するしかないよね。

罵ると言っても、女の子側にも「愛」はないとダメだと思ってはいるんだけど、世の中ガチに罵られているのが好きな人もいるので、このさじ加減はなかなか難しい。でも基本的な展開はたとえば妹編だったら兄のことをキモいだのフケツだのいろいろ罵るものの、最終的に兄に陥落されてクパァって考えてるんだけど、罵りだけで終わった方がいいのかなぁ?

いわゆる上で言うところの基本的な展開で風紀委員長バージョンは、風紀を乱した主人公クンを罵りまくるんだけど、主人公に「それって気にしすぎじゃね? 委員長っていつもそんなことばっかり考えてるんだ?」って突っ込まれて動揺→逆ギレして見せるもさらに突っ込まれて狼狽→さらにもっとエロいことを考えてるんだろと主人公に責められ→クパァっていう。

売れるのかどうかは知らんが<ヲイ

どうやって遊ぶのかをちゃんと説明する

最近はすっかりショーシャルゲームの仕事ばっかりなんだけど、そんな中ふと思いついたこと。

ボクは基本プレイ無料ってのが大嫌いで、そもそもお金がかかってるものを無料で配布するのはおかしいし、お金を払っているプレイヤーだけに依存するのもおかしいとは思うものの、世間の答はそうではない。実際にガチャを搭載したゲームの方がパッケージゲームより遙かに多くの利益をゲーム会社にもたらしている。

しかしその儲けの主軸となっている「ガチャ」は確実にギャンブルだし、自制を持ってやめられるような仕組みではなくなっている。

また、この手のゲームの場合、金を全く払わずに遊ぶプレイヤーも重要だ。というのもソーシャルなのでそのゲームにたくさんの人がアクセスしていて貰わないとゲームが成り立たないからだ。だから無料ゲームの場合、全くお金を払わないプレイヤーも実はお客様なのだ。

そこで考えたのが、デバッグ会社などに協力してもらって予めサクラを用意しておくというものだ。と言ってもそれはそのゲームが盛り上がっていることを演出するためのサクラではなく、そのゲームの遊び方や面白いポイントを布教し、お金をどこで落とすべきかと言った所までうまくユーザを導くのが役目だ。
またフレンドなどにも積極的になってくれ、プレイヤーが気持ちよくゲームをプレイできるようにお膳立てもする。こうすることによって、ガチャだけに頼らない、様々なゲーム性・システム・アイテムにお金を出して貰うように、それでいて依存症にならずにその人の収入に見合った適度なゲーム プレイが出来るようにするわけだ。

さらにそれがうまく言ったら、プレイヤーの中でもモラルの高い人、上級者などに新規プレイヤーを任せられるようにする。つまり選ばれた一部のプレイヤーに、ゲーム管理者的な機能を渡してしまうのだ。その管理者的な機能は「ゲーム的な機能」でもある。
より優位なプレイヤーになれると同時にゲーム開発者でしかいじれなかった部分もある程度干渉できるようになる(例えば初心者のためにアイテムを増やしてあげたり、クエストのフラグを調整したり自らのキャラが助けたり、そもそもクエストを創出したりなど)。

こうすることによって、いつかはマンネリになってしまうゲーム上級者に新たな刺激と課題を与えることが出来るのだ。

そんなに悪くない考えだと思うんだけど、どうかなぁ。

今日、打ち合わせで三田に行ったんだけど、その帰りに乗った電車が「エアポート快速」というヤツなのね。この快速は地下鉄のクセになんと飛ばす駅があるのだ。地下鉄部分ってだいたい各停っていう固定観念があったので、何も考えずに乗ってしまったのだけど、このエアポート快速は浅草橋駅は通過するという。

仕方がないのでその前の駅の東日本橋で降りたんだけど、次の電車も快速らしい。マジで? じゃぁ次の快速も乗れないじゃん! って思ったら、こっちの快速は浅草橋に止まるらしい(というか地下鉄線内各停)。
都営浅草線はけっこう色んな電車が入っていて、神奈川にも千葉にも行けるので、よう解らん。

Vita 版 Timepiece Ensemble とか AI ロボットとか

PS Vita 版 Timepiece Ensemble のパッケージが会社から発見された。
今頃?
確かに発売したあと、パッケージってもらえないのかなぁとちょっと思ってはいたんだが……。

ロボットや AI が接客するのは失礼だっていう論調ってみかけないなーって話。世の中いろんな理不尽なことを主張する人がいるので、こういう主張もあるんじゃないかなと思ったんだけど、今のところ聞いたことがない。海外ではどうなんだろうか?

今後、接客は機械が担っていくことになる仕事の一つになりそうだけど、人間のいる余地がまったくなくなると言うことはなくて、いろいろ残りそうだねっていう話。ただどうなんだろうね、利便性ってさ、けっこう高級とかプレミアム感とかを上回る事が多いので、もしかしたら駆逐されて終わるのかもしれない。

GD ライブラリに、しばし苦戦する

 

萌え時計というボクがテキトーに作ったウェブアプリ(?)があるのだが、それにキャラクタの大きさを変えられるようにしようと思いついたので、ちょっと組んでみることにした。萌え時計の仕組みはとても簡単で、背景画像とキャラ画像が別々になっていて、建物の外か中・時間帯・場所・表示するキャラの種類が決まったら、それに適した背景にキャラクタを合成して表示しているだけだ。

だから、キャラクタを拡縮して背景に貼り付ければそれで終了である。

って思ってたんだけど、そもそも読み込んだ画像を単純に拡縮する命令は、PHP5.5 以上じゃないと使えない(amatsukami.jp はPHP5.3)。ちょwww
では拡縮はどうするのかというと、背景と合成する時にキャラのどこからどこまでを、どこからどこまでとして貼り付けるなんて方法でやるのである。たちえば (0.0) – (99,99) という 100 x 100 ドット四方の画像を、貼り付け先の (0,0) – (199, 199) にってやると倍の大きさで貼り付けられるわけだ。
%指定ですらない!

そしてこの仕様では問題が起きる。背景の画像は 512×512 ドットあるのだが拡大率によっては立ち絵がこの大きさを超えてしまうこともあるのだ。そうなると貼り付け先の領域が存在しないことになって合成がうまく行かないのだ。
そこでどうしたかというと簡単に%指定できるように、立ち絵を読み込んだら、それに%分拡縮した何もない画像を作成し、そこに元の立ち絵を目一杯貼り付けて拡縮するようにした。そしてあらためて、背景にこの拡縮済みの立ち絵を貼り付けるのである。

まぁそんなわけで、キャラの大きさが指定できるようになった。