2017年5月9日火曜日

喫茶店の話し

私は喫茶店が結構好きです。
カフェ巡りとかまではしませんが、1年間でだいたい300回以上は利用します。
そうなったキッカケというのが、就職活動をしていた二十歳の頃に遡ります。

当時、静岡か横浜(※どっちか忘れた)の地下街を迷って彷徨き、喉が乾いたので適当な喫茶店に入ったのですが、そこがガチのコーヒー専門店で、メニューは一番安いマンデリンが800円ほどでした。(ブルーマウンテンは3000円ぐらいだった気がする)

「やっちまった」と思いつつ、何も頼まずにすごすごと出ていくのも恥ずかしかったので、とりあえず一番安いマンデリン(800円)を注文。すると、マスターがゴリゴリと豆を挽き、見たことがない謎のアナログな機械でドリップ。そして出てきたコーヒーを一口飲んでみると、凄まじい衝撃を受けました。とにかく濃い。しかし、普通のエスプレッソのような単調な濃さではなく、透明度がある(?)というか複雑な味で、喉へ流すとマンデリン独特の酸味が刺さるように刺激をしてくる...かつて飲んだことがあるその他のコーヒーとは完全に別物です。
それが美味いかどうかはさておき。
コーヒーとは、美味いとか不味いではなく、嗜好品なのだということを理解しました。

その味が今でも忘れられず、もう一度嗜んでみたいのですが、私はかなりの方向音痴なので場所は覚えていないし、更に就職活動の最中で日常的に迷子になっていた時の事だから、何処の県にあったのかすら思い出せない有様です。
就職後に何度かその喫茶店を探すことをトライしてみたのですが、十数年経った未だに発見できていません。もしかすると、不思議の国へ迷い込んで見つけた店だったのではないかと疑ってすらいます。仮にそうだったとしても何ら不思議はありません。

以下、全然関係ない話しをします。

私は1年間でだいたい300回以上喫茶店へ行くと先述しましたが、実のところこれは上述のようなガチのコーヒー専門店ではなく、全てドトールコーヒーとかそういう感じの所です。

ガチのコーヒー専門店が仮にあっても私ではたどり着けないから、行ける喫茶店は生活圏(東京の銀座)内にあって、分かり易い看板のお店(≒チェーン店)に限られます。そういう所ならお値段も安いですし。

そういえば今年に入って、私の近所にあるそういう類の喫茶店が3件ほど潰れました。
潰れたのは、
①カフェ・ド・クリエ
②サンマルクカフェ
③ドトールコーヒー
の3件。
いわゆる「落ち着かない喫茶店」。

「落ち着かない喫茶店」というのは、要するに低単価で回転率で稼いでいるタイプの喫茶店のことを言います。ブレンドコーヒーSの値段がだいたい200円前後で、落ち着く喫茶店はだいたい500円前後でしょうか。

(回転率重視タイプのチェーン店のブレンドSの値段)
・ベックスコーヒー: 230円
・ドトールコーヒー: 220円
・サンマルクカフェ: 200円

(くつろぎ重視タイプのチェーン店のブレンドSの値段)
・コメダ珈琲: 420円
・喫茶ルノアール: 580円

(どっち付かずタイプのチェーン店のブレンドSの値段)
・カフェ・ド・クリエ: 270円(1日に2回行く場合の単価: 185円)
・スターバックス・コーヒー: 302円(1日に2回行く場合の単価: 210円)

味はどれもだいたい同じ。
特別美味くもないけど、不味くもない。
コーヒー専門ではないもの(マックやコンビニ)とも余り大差は無いです。
もちろん、製法が若干違うので誤差程度に味の違いはありますが、本物の味と比べればどれでも等しく同じ擬物で、純粋にコーヒーだけの値段なら100円で丁度よいぐらいだと思っています。(こういう喫茶店の値段は、コーヒーではなく空間の提供価格だろうという認識)

回転率重視 or くつろぎ重視のどちらが良いというものではなく、パッと入って喉を潤しつつ10分前後の休憩を取るなら回転率重視、小一時間ぐらい静かに過ごしたければくつろぎ重視みたいな住み分けができると思います。

ただ、どっち付かずタイプは微妙な存在だと思っています。
ドトールが混んでいて喫煙席を取れるか微妙だからとかそういう時ぐらいしか使わないし、スタバに至っては喫煙席が無いので利用する機会すらない。(新幹線のホーム内にあるやつを稀にテイクアウトで利用しますが、最近は予めコンビニで買えば良いので、それすら使わなくなった)

だから、当日中にリピートすれば実質「回転率重視」と同程度以下の価格帯になるような売り方をしているんでしょうけど、1年に300回以上喫茶店を利用する私でも、1日2回以上利用することはまずないので、当日中のリピート狙いというのはターゲットが狭すぎてあまり機能していないのではと思っています。

そういった理由で、中途半端タイプが潰れるのは割と納得感があります。

実際、潰れた①カフェ・ド・クリエはドトールのすぐ隣という悪条件の立地だったので、「これはすぐ潰れるんじゃないだろうか?」と思っていましたが、私が思っていたよりも大分早く潰れました。

残りの②サンマルクカフェ、③ドトールコーヒーは、これもまた隣同士で仲良く並んでいる謎立地だったので、客を奪い合って両方倒れてしまった感じでしょうか。ルノアールの隣にドトールとかなら住み分けができて良かったのでしょうけど。

ちなみに、①〜③に共通していたこととしては、どの店もそれなりに客入りが良かったということです。客入りが良いのに潰れたということは、原価高騰や回転率が想定よりも悪かったということかなと。

居抜きで別の喫茶店が入るなら、私が若かりし頃に不思議な国で見つけたガチの珈琲店が入って欲しいのですが、それは望み薄かな。でも、割とアリじゃないかと思いますが。土地が狭いので、回転率重視 or くつろぎ重視のどちらよりも適していそうな気がしないでもないので。

2017年5月6日土曜日

Android 7.0の音ズレ問題

スクフェス、デレステ、ガルパなどの音ゲー関連がAndroid7.0で軒並み音ズレが酷いという情報をチラホラ聞きます(参照)。

どの程度酷いのかは未確認。
というより、Androidで音ゲーやるのがそもそも間違っている気がします。
後述しますが、Androidの場合OSの仕様レベルでそもそも音ゲーに耐えられないシロモノなので。(私も音楽系のアプリをAndroidで出していてそこそこ高評価を頂いてますが、低評価が付く原因の9割以上はOS仕様上どうにもできない部分の話しだったりします)

とりあえず、対策方法としては(root化が必要ですが)BuildPropのaudio_hal.period_sizeを調整すると治る場合があるとか(参照)言われています。この値は何ぞや?と思ってAndroidのソースコードを見てみたところ、恐らくこの辺ですね。要するにストリームアウトするバッファサイズに関係するパラメタらしい。

つまり、どういうことか。

例えば、ストリームアウトするバッファ・サイズが100msだった場合、オーディオ出力をする指令を出してから実際に音声が鳴る = HALから低レベルオーディオAPI(最近のAndroidなら多分ALSA)に波形データが渡るまでの間に平均50ms(0〜100ms)のラグが発生するという具合です。

そして、恐らくAndroid 7.0でこのデフォルト値が大きくなったため、遅延が酷くなって音ゲーが全滅してしまった感じでしょう。(それ以外にも色々と複合的な要因がありそうな気がしていますが)
何故、大きくしたのかですが、これは多分何らかのトレードオフかと思います。バッファ・サイズを大きくすると、遅延が大きくなるというデメリットがある反面、CPUの専有期間を短くできることで、例えば「音がプツプツする」といった事象発生を緩和することができます。(つまり、Android 7.0で別のところで処理能力を回したいから、音のリアルタイム性を犠牲にしてCPUリソースを確保したものと推測しています)

Androidのオーディオシステムの仕組みを解説した分かり易い図があったので貼っておきます。
Android 5.0 Lollipop Audio Path Latency
Learn more about Android's 10 Millisecond Problem

ALSA(一部のAndroidはALSAじゃないけど)は、Advanced Linux Sound ArchitectureというLinuxのオーディオHALです。
以前はOSS(Open Sound System)が主流でしたが、割と最近ALSAに変わりました。

ALSAは従来(OSS)と比べて高機能になりましたが、その分、遅延もそこそこあります(上図だと5.3msだとか)。Androidのオーディオ関係がクソな原因のひとつが、ALSAという割と高機能なHALの上に更にAudioFlingerというAndroid独自のHALを載っけていることです。

カツラの上にカツラを被る大御所俳優みたいな感じですね。
この設計は流石に拙すぎるので、Googleほどの技術力があればここら辺は将来的にしっかり治してくるだろう・・・と思っていた時期もありました。

以前のLinuxで主流だったOSSの場合だとそれなりに(AudioFlingerの)存在意義はありました。OSSというのはかなりシンプルなオーディオHALで、特定のスペシャルデバイスファイルに対してパルス符号を入出力するとD/A,A/D変換するというものです。シンプル故にその上に別途HALを作ってオーディオパスを多重化するような実装が必要だから、AudioFlignerにはそれなりに存在意義があったと理解できるかと思います。

しかし、ALSAは高度化されておりそれを直に使っても問題無いので、現在のAudioFlingerは無駄に遅延時間を長くするだけの邪魔な存在でしかなくて、しかし、その上位層がAudioFlingerベッタリになっているから直せない(正確には直せないこともないが直すのが大変=コストが掛かるが、Googleの人は恐らくそれほどオーディオ関係のことを重要視していないから予算が取れない)という感じだろうと推測しています。

ちなみに、ココら辺の設計がダメダメになったのがAndroid 4.xあたりで、3メジャーバージョンも上がった7.xでもそのダメダメなクソ仕様を引きずり続けている感じです。たぶん、もう治らないんじゃないかと思います。私は5.0の時に抜本的な対策がされなかったことから、「もうAndroidは(少なくともオーディオ系統は)ダメだ」と確信しました(だからプライベートのスマホはiPhoneに乗り換えた)が、今回のAndroid7.0で音ゲーが全滅したケースで、やはり私の確信は正しかったんだなと確認できました。このままだと、将来的にはもっと酷くなるんだろうけど、流石にその前には何とかしてくるかもしれません。(何ともならないかもしれません)

View.OnTouchListenerでのマルチタッチ処理

やりたいことはシンプルなのに実装が色々と面倒臭かったので、備忘録を兼ねてメモ。

(やりたいこと)
・1つのViewでマルチタッチを処理したい
・タッチされている座標だけ把握できればおk

(やりかた)

(解説)
・Android SDK単品では無理そうなので、SparseArrayのテーブル(touching)を準備
・touchingテーブルは、タッチIDを主キーにタッチされている座標を記憶する
(主キーがint型なのでHashMapではなくSparseArrayを使った方が処理効率が良い)
・タッチ開始(ACTION_DOWNなど)を検出した時にテーブルにPointをadd
・移動(ACTION_MOVE)を検出した時にPointを更新
・タッチ終了(ACTION_UPなど)を検出した時にテーブルからPointをdelete

(若干疑問点)
タッチ開始(DOWN)とタッチ終了(UP)は1タッチID毎にイベント(※ここで言うイベントとはonTouchのコールバックのこと)が発生するが移動(MOVE)は2本指同時に動かした時、両方同時にイベントが発生した。
これが恒常的なもの(保証されているもの)なのかが若干疑問。
一瞬、「DOWNとUPの場合、非MASKのactionIdの9〜16bitにタッチIDが付加され、1回のイベントで取得できるactionIdは1つだから保証されているのでは?」と思ったけど、それならMOVEが1回のイベントで複数処理されるのがおかしい。
MotionEventのactionIdなんですが、明らかに設計ミスっぽい気がする(ただし、当然ですがここはプリミティブ過ぎて今更直せないという感じだろうか)。

(追記)
CANCELの場合もMOVEと同様、複数指分が纏めて走るらしいので、CANCELの時はtouchingをclearするように修正。

2017年5月1日月曜日

お金の掛からない宝くじでも買っておく的な

グリマスの音ゲーの事前登録が始まってました。
https://millionlive.idolmaster.jp/theaterdays/

ただ、動画で流れているゲーム画面を見て若干食傷感が...ゲームが音ゲーとして面白ければやりますが、デレステ or バンドリの焼き増しレベルだったらスルーする予定です。
でも、もしも面白かった場合、事前登録するだけでSSRが貰えるかもしれないという乞食根性で事前登録しておきました。
100万も集まるかは微妙な気がしないでもないですが。
ちなみにバンドリの事前登録はだいたい50万前後。知名度が低くて50万も集まったのなら、アイマスの看板があれば100万なんて余裕なのかな?
ペース的にはつい先程(この記事を投稿する小一時間前)丸1日で10万突破したとのこと。

以下、PVを見た感想を書いておきます。

①モーションが独立している

コレ要るんですかね?
デレステの場合は初発だったからウケましたが、後発で独立モーションを取り入れたところで、そこまでウケるものではないでしょう。なので、単純に開発コストだけがハネ上がっているように見えてしまう。
それでARPPUが上がる(=お金を落とす層がそれを有難がって落とすお金の量を増やしてくれる)のであれば、それなりにやる意味はあるかと思いますが、ドレスショップが閑古鳥状態のところを見ると、恐らくそれも無いでしょう。
なので、メリットがあるとすれば、「デレステを陳腐化させてパイを奪えるかもしれない」ってところですかね。なので、事実上ソレの一点狙いだろうと理解しました。
つまり、運営がCA系列以外ということであれば、それなりに意味がありそうです。(また運営がCA系列ということであれば、正直コレは意味不明です)

②協力ライブ

なるものがあるらしいことを仄めかすセリフがあった。
...けど、3度目となるともう新鮮さは無いですね。
ただ、仮に運営がCA系列以外だとすると、流石に何かしらの知財ガードがされているはず(知財権をバンナムが握っていた場合、バンドリの協力ライブ導入を排除できる筈なので、それがされていないということは少なくともバンナムではなくCA側が権利を握っている筈・・・気になって少し調べてみましたが、例えばデレステやバンドリのスタンプとかは多分コレで、やはりCA側が特許を出願しているらしい)。
なので、私の予測通り運営がCA系列以外だとすると、デレステやバンドリの協力ライブとは(少なくとも権利化されている範囲は)別物にせざるを得ないから、もしもそうだとすると面白いものになる可能性があるかも。
というのも、デレステもバンドリも協力ライブはまだまだ面白くする余地がかなりありそうというか、不満みたいなものが結構あるシロモノなので。

③ソロプレイ(片手でもプレイできる)

これは...要らないかな。
私は基本iPad Proでプレイするから縦持ちするのは、端末の大きさの関係で面倒なので。
ただし、デレステ同様iPhoneとアカウント共有できれば、iPhoneではコチラを中心にプレイとかはあるかもしれない。
しかし、画面をポチポチするだけなら難易度的に楽すぎてツマラナイものになるかなと。
加速度センサーとか使った何かとかなら新鮮味があって良いかもしれませんが。ただ、それで快適にプレイできるように作るのは恐ろしく難しい筈だし、現状の画面を見る限り単なるヌルいポチポチゲーっぽい。

このゲームの現時点の期待値としては「正直よく分からない」という感じです。
面白く出来そうな余地は結構ありそうですが、既にやり尽くされたジャンルだからそれを今更進化させるのは多分相当難しくて、「単純にシンデレラじゃない方のアイマスを音ゲー化しました」みたいな方向のものに落ち着く(=私がスルーするタイプになる)可能性が今のところ高そうかなと。まぁ、モノが出てみないと分からないので、とりあえず期待せずに事前登録だけしておく分には良いのではないでしょうか。事前登録するだけならお金も掛からないから、お金の掛からない宝くじでも買っておく的な感じで。

2017年4月9日日曜日

クズ運なのですが、

昨夜、ガルパの単発ガチャ(250)でピックアップを引き当てる。
ピックアップを引ける確率は0.5%。
デレステのピックアップとだいたい同じ確率ですが、デレステでも結構たくさん単発ガチャ回したけど、単発でSSR引けたのは1回こっきり(フェス時のみ)で、フェス以外でピックアップを引けた回数はゼロ。
そんなクズ運の私が単発で引くことが出来たというこは、バンドリのガチャは今緩い感じなのかな。(私が突如豪運を覚醒した可能性もゼロではないけど)
IPが弱いから、まずは緩めにして当てさせることでファンを増やし、2周目以降で課金兵を育てる作戦なのかなと勘ぐってしまった。
アニメの方はネット上の批判を見る限り、ズッコケたんですかね?
私は見ていないから何とも言えません。
実のところ全く見ていない訳ではなく、AbemaTVで11話の一部だけチラッと見てみたのですが、恐らくトータルで(ネット上で言われているほど)悪くないコンテンツだったのではないかと推測しています。
大ヒットするか?と言われると無理だと思いましたが。(※ただし、私はけもフレの1話で大ヒットすることを予想できず一度切ってしまったので、当たるコンテンツを見分ける能力は皆無ですが)
AbemaTVだとタイムシフトが(無料会員だと)出来ないので、決まった時間に見ないといけない=時間の都合が合わないと見れないという点が私には少々厳しい。AbemaTVは、スキマ時間に見る用途では良い感じだと思っていて、CA=広告会社だからビジネスモデル的に狙い通りだと思うのですが、その半面、そのスタイルは目的意識を持った視聴には向かないので、例えば、ドラえもんやフルハウスなど(1話完結もの)や懐かしのアニメ(既にストーリーを把握しているもの)といったコンテンツとは相性が良いけど、ストーリーモノには向かないと思っています。(だから、何故ドラマチャンネルなんかがあるのか割と謎)
あとは、時期が悪かったのかも(前期はけものフレンズがあまりにも強すぎて、他に何やっていたかすら思い出せないレベル)。

2017年4月8日土曜日

iOSアプリの提供中断について

SUZUKI PLAN製のiOSアプリですが、しばらくの間、提供を中断します。
※復帰する可能性があるので「提供終了」ではなく「提供中断」としています。

提供中断の理由は、AppStoreでアプリを提供するには年額12,000円のライセンス料をAppleに収める必要があるのですが、売上から得られる収益(※)がライセンス料未満になったので、今回のライセンス更新を見送ったためです。
※少し補足すると、売上 = Android + iOS両方の売上の合計です。iOS単体だと結構前からライセンス料を下回っていたのですが、最近はAndroidも落ちてきて、ついに合算でライセンス料を下回った形です。
なお、インストール済みのアプリについては引き続き利用できます。
ただし、AppStoreからの再インストールはできないので、ご注意ください。

2017年4月1日土曜日

ラブライブ一人負け?

2chを見てたら、「バンドリ(ガルパ)が出てきてラブライブが一人負け」みたいなことが書かれていたけど、そんなことはないだろうと思って少し調べてみました。

まず、バンドリのランキング(iPhoneのセルラン)の推移がこちら。
バンドリのセルラン(iPhone/日本)
同期間のラブライブの推移がこちら。
ラブライブのセルラン(iPhone/日本)
赤線: バンドリのリリース日
そして、同期間のデレステの推移がこちら。
デレステのセルラン(iPhone/日本)
赤線: バンドリのリリース日
デレステの方はちょうど3末に集金力の高いイベント(シンデレラフェス)があったから1位を取れているけど、ラブライブの方も何となく3末にかけて上がっている。3末というと年度末会計ということで何かしら集金力の高いイベントがあったのではないかと予測(ラブライブの方はプレイしていないからよく分からないですが)。

このままだとよく分からないので、ラブライブとデレステの集計範囲を1年にしてみます。

まず、ラブライブの過去1年の推移。
ラブライブの過去365日のセルラン推移
そして、デレステ。
デレステの過去365日のセルラン推移
分かり易くするために最低ランク位置を基点にした補助線(青)を描いています。

ラブライブもデレステもバンドリリリース(赤)以降に過去1年間で最大の下げ幅を更新しているので、ラブライブ一人負けというより、仲良くシェアを奪われている感じだと思います。

ただ、個人的にはデレステの落ち方の方が微妙に気になります。
バンドリのリリース前に過去365日間最高の落ち込みを記録しているあたり。
上記の日付は2月22日ですね。
関係無いですが、2月22日というと私がSSSを走っていた時と重なりますね。

バンドリが無くても下降トレンドに入っていたような気がします。

完全に個人的な趣向のことですが、先日のシンデレラフェスで「ミスしてもコンボが繋がる」という新しい能力(正確には組み合わせ技みたいな形ですが)が追加されましたが、ソレで少なくとも私のデレステへの課金モチベーション+プレイモチベーションが一気に吹き飛び、その後の限定ガチャで欲しい能力のアイドルが追加されても課金しない感じでした。(無料石で数回回して「あー、出なかったわー残念」で終了)

それでも、相変わらずフェスではセルラン1位を取れているから安泰なのかな。あのフェス限定能力の所為で、少なくとも私は「もうデレステには1円も落とさないぞ」と決意したのですが、これは少数派の意見だから無視しても良い感じなのかなと。少数派は淘汰されても仕方ありませんね。(無限の財布を持つ少数派なら話しは別かもしれませんが、その少数派というのはゲームが目的の外にあるから大丈夫ってことかなと)

だからといって、バンドリに金を落とすかというと全然その気もなく、ある意味お財布にとって優しい状況。なので、ラブライブ一人負けというよりは全部共倒れしている印象です。

このジャンル自体の飽和...ですかねぇ。

合理的ではないものを作りたい

ここ最近、実機版の東方VGSの開発が忙しくて、東方VGSの曲追加が滞っています。 東方VGS(実機版)のデザインを作りながら検討中。基本レトロUIベースですがシークバーはモダンに倣おうかな…とか pic.twitter.com/YOYprlDsYD — SUZUKI PLAN (...