2016年4月18日月曜日

橋が崩落後、阿蘇へのアクセスは?

国道57号線を大分方面に進んでいくと、阿蘇大橋が右手に見えます。 道が混んでいなければ平野の大津から車で10~15分、近いです。 この橋を渡ってすぐを左折すると東海大の農学部エリアとなります。 この橋を使わない場合、大津から北に抜けてミルクロードという阿蘇山侵入経路でも キャンパスにはたどり着けますが、おそらくこのルートも分断されています。 と、なると南阿蘇村から都市部へ抜けるためには東へ走って高森、そこから宮崎方面に抜けて高千穂峡。 高千穂から西へ抜ければ熊本、東へ抜ければ宮崎沿岸部に到達します。 あるいは、高森から武田市経由で大分方面に抜けていくか? どのルートが生きているのかは分かりませんが、 相当な迂回であることがお分かりかと思います。 目の前に見える対岸の土地に行くために車でグル~~っと遠回りするんですから、これはとんでもない話です。

4月18日現在としてはミルクロードが通行可能みたいです。 絵図でいうと、白いラインがそれです。 これでかなりの時短となります。

国道57号から阿蘇大橋のルートが生きていれば、大型車両も普通に入っていけるので 物資の輸送や重機の搬入もやりやすかったでしょうが、まさに生命線である橋が落ちたことで非常にまずいわけです。 自衛隊ヘリが活躍したことからも明白ですが、傷病者を救急搬送するのだって陸路では厄介です。 オスプレイによる物資輸送も行われましたが、現状では空路が命綱となるのかもしれません。 橋さえあれば、アクセスは良かったのに、陸の孤島というか、袋小路の最奥部になっているわけです。

土砂崩れの規模がもの凄いので、元通りに復元するよりも多少ルートを変更してでも接続することが急務でしょう。 極端な話、歩いてしか渡れない橋でもいいから、とにかく道を作ることが先決です。 傷も癒えぬうちに、梅雨の時期が来れば土砂災害が追い打ちをかけることになります。 阿蘇地域は降雨量が尋常じゃないので、地盤がゆるいことと相まって雨季は災害が起きやすいのですが、 今回の地震の影響で非常に崩れやすくなっているので恐ろしく危険、危機感を持たねばならない部分です。

2016年4月8日金曜日

SurfaceView で死んだ話

SurfaceView はマルチスレッドで動く絵を見せるビューです。 本体と独立しているというのが特徴で、例えばミスでビュー側の画像更新がストップしたとしても、 メインの処理は関係なく進んでいます。 で、音だけはバキバキ聞こえてきて、気が付いたら敵を全滅させていたりします。 また、描画スピードが物事に追いついていないとコマ落ちになります。

SurfaceView に関して不満があったので、相当いろいろ調べましたが明確な答えは出てきませんでした。 ただ、Android 4.x 以降になってからは混乱が見受けられるといのが印象です。 2010年くらいの記事だと、SurfaceView 重い・遅い・クソ、という話は見えてきません。 で、問題となるのはハードウェアアクセラレーションなのかもしれません。

ハードウェアアクセラレーションとは

Android 5.x 以降の機種では開発者向けオプションで 「GPUレンダリングを使用」 「GPU表示の更新を表示」 などという項目があります。 GPU とはパソコンでいうとこのグラフィックボードみたいなものだと思うんですけどね、 描画専門の機能のことです。 で、ハードウェアが持っているGPUを行使することで グラフィック描画機能を向上させるみたいです。 この機能は、Android 4.x だとデフォルトでオンになっているというのが通説です。

で、話はややこしいですよ。 ハードウェアアクセラレーション使用はメリットがある反面、デメリットもあります。 場合によっては恣意的にオフにしてやった方がよいということも…。 この辺はググって調べてください。内容がアバウトじゃないから、調べるのは容易だろうと思います。 で、何がややこしいかというと、
・View には適用されるけど、SurfaceView には適用されない(真実は…?)
・だから、View の方が逆に早いよ(真実は…?)
・じゃあ Android 5.x はデフォルトでオンなのですか?
・ついでに Android 6.x はデフォルトでオンなのですか?
・もしかして、メーカー単位で微妙に設定が違っていないですか?
いろいろな疑惑がでてきます。

シャープが悪いのか?

個人的な経緯を説明しましょう。 ゲームを Android で作成していて直面した事態です。

・デバッグ機は2台目、Xperia SO-02f です。

・今まで Viewで作ってきたけど、SurfaceView にしたろか?

・とりあえず移植完了。早い遅いの変化は感覚的に変化なし。

・新たにNexus5X と、AQUOS(SHARP) SH-02Hをゲット!

・新機で実機デバッグ開始。画面表示、動作など特に問題なし。

・Eclipse だと直結で run できないので、SO-02f(Android4.4.2)が相変わらずメインデバッグ機。

・普段使い(電話&インターネット)はシャープですね。お出かけでウェブ見る分にはとてもいいマシーンですね。

・あれれ、何かこのボスと戦うとき明らかに遅くなってない?

・画面内にFPSが表示されるように細工

・ソニー(Android4.4.2)が最速で、シャープ(Android5.1)とネクサス(Android6.0)はもっさり

・ちゃんと比べていないが、ソニーはシャープの5倍以上の速度で描画することが可能、というかシャープが異常に重い

・解決のために色々やってみる。実際は例のボス以外でも遅くなっているシーンが多発していることが判明

・色々やったけど、やっぱ無理やねん、劇的な改善とはならず…。そうや、久々にネクサスでデバッグしてみよか…

・ネクサスだと改善されとる…! どの段階で良くなったのかはもう分からん

はい、この…。私の個人的な体験に加えてですよ、いくら調べてもハッキリしない真実。 そういえば、上記の問題とは別に、マップ画面開始直後にシャープの場合はなぜか落ちるので、 ちょっと小細工して落ちないように工夫したことがありましたよ、すっかり忘れていたぜ。 …シャープさんが悪いとは言い切れないんですよ、Android5.1 特有の問題かもしれないのだから。 私が国内外の機種20個くらいで、真面目に比較検討したわけではないっすからね。 とてもそこまで大がかりなテストはできない、現実的じゃない…。 こういうとき、リファレンス機があると便利です。 ネクサスで問題なく動くんだから、文句ないよね? と、考えていいわけですから。

とりあえず、ネクサスで目的のスピードが確保できたのでこれ以上この問題を掘り下げて考えることはしません。 ちなみに、FPSどれくらいなの? って思うでしょ。 私が作っております「アタックダンジョンMMF」のFPS(フレームレート)、 標準目標が10枚/秒で、シャープだと5~9です。 たったの10です。 世間的には超ロースペックですが、これを仮にFPS30のゲームとするでしょ(描画速度が出るかどうかは別として)。 例えば敵を切るアクション(斜めに線が入っていく的な)。 まあ0.3~0.5秒くらいの尺は欲しいですね。 と、いうことは9~15枚の絵を描かないといけないわけですよ。 これを、あらゆるアクションパターンに対して行う。 さらに敵の絵は地獄。 考えるだけでも恐ろしい。 だから、研究を重ねてギリギリまでFPSを少なくしました。 FPS10の場合であっても、アニメーションオブジェクトは700~800枚くらいありますからね。

たったの10ですからね、別にどうということはない処理なんですが、敵の数や描画オブジェクトが多いときは重くなりがちです。 これはマシーンの性能が悪いからではなく、設定がうまいこと機能せずに SurfaceView というパターンに対して見事にかみ合わない。 そういうことなんだと思いますけどね。 仮に普通の View で描画性能の競争をしたら、SHARPさん負けはしない、きっと勝つと。

どんな機種でも動く…は戯言なのか?

今回の出来事で分かったのは「新型が旧型に劣る場合がある」ということです。 これは結果的にそうなわけで、演算処理能力やOSのバージョンで勝っていても局地的な不利をカバーしきれないことがある。 特定の場合に限り、○○はまともに動作しない、という、ケースバイケースな感じの不安。 じゃあ、安心はできない。 メーカーといっても、日本だったらソニー、シャープ、富士通、東芝、NECくらいのものでしょうが、 世界的には Samsung、Huawei、Asus、Lenovo、Motorola、Archos、HTC、LGE、etc…いっぱいありますね。

味付けは基本します。日本のメーカーに限らず海外のメーカーも。 クセがあるっていうことですねえ、ネクサス以外は。 その結果、どのような差異が出るのか? これは誰にも分からない。