♯untitled_note

私的な考えとかメモ、その他トラブルシュート

OperaMiniをPC上で無理やり使う ~ネット回線がない データ通信制限 200kbpsとの戦い~

引越し先にネット回線が無い。

引っ越した当日に最速でNTTと契約したが、オペレーターからは「今立て込んでるから回線工事は1ヶ月後や!あとお前んとこVDSL対応してないからFTTHで工事が必要になるで!不動産会社に確認したら壁に穴開けたりするのNGらしいからもしそうなったら工事でけへんで!」という無慈悲な回答を得られた。

1ヶ月も待って工事担当者が見に来た結果「これはダメですね…」となったら目も当てられない…。
ハラハラ・ドキドキの結果発表は来週だ。*1

まあそれはともかく、僕はもはやネットから離れることは出来ないタイプの人間なので、1ヶ月間ネット無しで生活するなんて耐えられない。
スマホで繋がる小さい画面の中でのネットなんてのはネットじゃあない。

PCのでかい画面とマウスやキーボードで快適にネット生活をしたい。そう思った。

 

 

ネット回線の準備 - スマホテザリングを使う

テザリング機能の説明をすると長くなるのでテザリングをよく知らない人はテザリングについて各自で調べて欲しい。

かなり昔、テザリングAndroidのメニューに乗り始めた頃は、メーカーによってテザリングメニューの入り口が潰されていたり、キャリアのオプション契約が必要だったりしたのだが今はいずれも無料になっているはずだ(よく調べてないがもう何年も前に大手キャリア2社が無料なのは見た)

というわけで、スマホテザリング機能をネット回線代わりに使う。

 

テザリング環境

今回テザリングを使ってネット接続しようとしている環境構成は以下の通り。

テザリング親機:SHV34(Android)
MVNO契約:mineo データ通信容量月3GBまでのプラン
テザリング子機1(PC):Windwos10
テザリング子機2(タブレット):Nexus7(WiFi only)

スマホを親機にして家にいる間はPCやタブレットをすべてスマホの回線を使って通信してしまおうという至極単純なものだ。 

 

テザリングの問題点(データ通信容量)

スマホテザリングを利用すると決めたが、そのままLTEの高速通信を利用していたのでは、データ通信容量をあっという間に食いつぶされるという問題がある。

昨今のPC版Webサイトはデータ通信容量等知ったことかという程に画像が使われており、裏で働くJavaScriptの容量も馬鹿にはならない。
ツイッターのような短文投稿サイトなら大丈夫か?と言うと、ツイッターも200KByte(kbpsではない)はする画像がガンガンに流れてくるし、安心はできない。

加えて言うとWindowsPCというのはWindowsUpdateのように勝手に裏で通信が走ることがあり、ただPCの回線をつないでおくだけでも知らぬ間にデータ通信容量をガッツリ使われている可能性があるのだ。

テザリング機能は使うが、そのまま使っていてダメ。

ではどうするのか。

 

対策:データ通信節約モード(低速モード)をONにする

MVNO業者の多くには、低速モードというデータ通信速度に制限をかけるかわりに、データ通信が使い放題になるという機能を用意しており、ユーザーが任意にON/OFFできるようにしている。

僕が契約しているmineoの場合は「mineo節約スイッチ」という機能があり、これをONにすることでデータ通信速度に制限はかかる(最大200kbps)がデータ通信が使い放題になる。これを使う。

support.mineo.jp

 

これの良いところは、単に低速だがデータ容量が使い放題になるということではなく、PCが勝手に通信することに怯えなくて良いというのと、必要なときに高速なLTE通信が使えるということである。

僕が知っている限りでは、大手3キャリアには同様の機能は無く、データ通信容量が残っている限りLTEでの高速通信をし続け、容量がなくなったら128kbpsというISDN並の速度に制限されてしまう。

これでは計画的なデータ通信容量の使い方はできない。
(大手3キャリアで本当に出来ないのかどうかは各自で調べてね。)

 

低速モードに関しては以下サイトが参考になる。

kakuyasu-sim.jp

 

テザリングの問題点(バッテリー)

スマホテザリングをONにしているということは、画面をスリープにしていたとしても、その間スマホは常に働きっぱなしになっているということである。
当然バッテリーは普通より早く減っていくので充電しながら使う*2のだが、当初想定していた環境ではスマホの充電が追いつかない現象が出てしまった。

しかしこれの原因は非常に単純なものであった。

対策1:接続子機は1台にする

前述していたように、家にいる間はスマホをネット回線にしてしまおうという目論見のもと、PCとスマホを利用しない間も繋げていたのだが、接続子機が2台以上あると、子機が2台とも通信をしていなくても、充電中だろうとスマホ側の排熱が追いつかず、バッテリーが減っていくことがわかった。

対策2:テザリング中はスマホを操作しない

また、接続子機は1台だとしても、テザリング中にスマホでゲームでもしようものなら同じようにスマホが熱くなり充電が追いつかなくなる。

つまり、スマホテザリング親機とする場合は子機は1台までテザリング中はスマホを触らないというのを守っていれば充電追いつかない問題は回避される(熱も少し持つぐらいになる)

 

PC側の準備 - データ圧縮してくれるブラウザを使う

これで平時は200kbps(25 KB/s)でデータ通信し放題!
ISDN128よりも1.5倍も早いなら俺は十分戦える!

と思っていたが…舐めていた。
今のネット環境とISDN全盛の時代では前述していたようにWebサイトに使われているモノが違う。

もう全然読み込まない。どうするのか。

解決策:OperaMiniを使う

OperaMiniはスマホアプリ。

play.google.com

OperaMiniは、閲覧ページをOperaサーバ側で"OperaMiniで閲覧できる専用の形式に作り直して(圧縮)"したデータを受信することができる。

 

このアプリは手の混んだことをしている分、圧縮率がすごい
大体通常の50%ぐらいは圧縮されるようだ。

おまけに広告ブロックが標準でついている。

参考までに自分の使用時の圧縮率。

f:id:rizenback000:20190519201112j:plain

 

でもOperaMiniはスマホアプリ!!PC版が無い!

ではどうするのか。

解決策:BlueStacks上でOperaMiniを使う

BlueStacksはWindows上で動くAndroidシミュレータ。
Androidシミュレータなので、Androidアプリ版のOperaMiniを動かすことができる。
単純な話だ。

www.bluestacks.com


だが、基本的にAndroidシミュレータというのは動作が重い。
なので、この方法はPCスペックをある程度持っている人向けになる。

今回僕は幸いにして高めのスペックのPCを使っているし、どうせネット回線が貧弱な状態で重いソフトを動かすことなんか無いので、BlueStacksを以下のように設定してブラウザ代わりに使っている。

PCスペック

OS:Windows10 64bit
メモリ:16GB
VRAM:4GB(GeForce GTX970)

BlueStacks設定
f:id:rizenback000:20190519192206j:plain

f:id:rizenback000:20190519192222j:plain

この辺の解像度とDPIを適切に設定しないと、ディスプレイのサイズに対して狭い範囲しか表示されないという状態になったり、逆に文字が小さすぎる…なんてことが起きるはずなので、自分の環境に合わせる必要がある。

うまくすれば、ディスプレイサイズのタブレットのような形でページを表示させることができる。

モザイクだらけだが、このTweetDeckの画面は参考になるかもしれない。

f:id:rizenback000:20190519211917j:plain

 

ちなみに別のAndroidシミュレータとしてNoxPlayerというものもあるが、自分の環境では動作が不安定でネットが繋がらない現象が出てしまったのでどっちが良いのかは検証できていない。

 

さらにちなむと、Operaには似たようなデータ圧縮機能でOperaTurboという機能もあるが、これはあまり効果がなかった(後述する)

 

OperaMiniの効果

OperaMiniの圧縮効果は凄まじい。
普通にChromeでモバイル版ツイッターを開いてTLを眺めていると、以下のようにあっという間に画像の読み込みが追いつかなくなる。

f:id:rizenback000:20190519204121j:plain


こんな状態では「関心のある画像を開いてみよう」なんて気は起きてこない。
そもそも何の写真かすらわからない状態で拡大画像を開こうとは思えないし、拡大画像を開こうとしても当然読み込めない。

画像の読み込みにどれ位の差があるのか実験してみたら、以下のようになった。

700KByteの画像を読み込むケース

GoogleChrome30秒~1分
OperaMini:8秒程度*3

この状態であれば、7つぐらいカラムを開いたTweetDeckですら遅延なく読み込める。 

 

OperaMiniの問題点

Androidシミュレータは基本重い、という前提をクリアした上での問題点がいくつかある。

勝手に落ちる

設定のせいなのか、それともBlueStacksの安定性の問題か、たまにOperaMiniが勝手に落ちてしまうことがある。

だが開いているタブ内容は保存されているのでもう一度アプリを起動すれば見ているページが失われることはない。

これが目に見える一番の問題点。

閲覧ページが全部Operaサーバを経由するってセキュリティ上どうなの?

知らない…(小声)
良くはない!良くはないことだが背に腹は変えられねえ!
そもそもBlueStacksもアレな感じはするし、そういう重要なページにアクセスするときは普通のブラウザを利用しよう。そういうことにした。

これが目に見えない一番の問題。

動かないページが出てくる

OperaMiniの圧縮率を最高に設定していると、JavaScriptの読み込みを止めたりしているので、動かないページも出てくる。

そうすると、いちいちOperaMiniの圧縮率を下げる必要がある。
(はじめから大体のページは動くという圧縮率にしておけば問題無い話ではある)

画像が汚くなる

当たり前の話なので、自分としては問題点ではないのだが、注意点として書いておくと、画像圧縮率を「高」にするとJPEGを低画質で保存したように画像が粗くなる。ただモザイク状になるとか何が映ってるのかわからないようなレベルではないので、そこまで気にはならない。

動画が再生できないことがある

これもしょうがない部分ではあるが、サイトによっては埋め込み動画が再生出来ないことがある。
例えばTwitter公式のWebクライアントでは殆どの動画が読み込めず、「メディアが再生できませんでした。」という無慈悲な表示が出る。

ただ、Twitterの場合はTweetDeckになると再生ができたりする。

 

 

OperaTurboは効果なし

OperaTurboはPC版Operaに搭載されている機能で、Opera側のサーバで閲覧ページを圧縮されたデータを受信する機能。

OperaMiniとOperaTurboの差は、閲覧ページのデータを"作り直して圧縮"するか、閲覧ページのデータを"そのまま圧縮"するかという差だ*4

 

最初はこのOperaTurboを利用するつもりだったのだが、Operaの最新バージョンでは機能が削除されており、なんでなんだろうな?と調べてみるとSSL通信はOperaTurboの対象外となるらしく、SSL通信全盛でどこもかしこもHTTPSの今の時代にはそぐわず、使用率が極端に減っているのだろう。そりゃドロップされるよね。*5

 

Chromeには似たようなデータ圧縮拡張があるがあまり役に立たない

実はChromeにもOperaTurboのように閲覧ページを圧縮してくれる拡張がある。

僕が知っているのは以下の2つだが、いずれも効果が無い、あるいは別の問題があった。

Data SaverGoogle謹製の拡張。

仕組み的にはOperaTurboと同様で、やはりSSL通信は対象外。
しかも、この拡張はウェブストア上の説明にも「この拡張は既に廃止されており、インストールしたとしても勝手に削除するよ」と書かれている。役に立たない。

 

skyZIP ProxySSL通信も対象とする拡張。

仕組み的には匿名プロキシでプロキシサーバ上でデータを圧縮して送ってくるらしい。
ただ、海外のプロキシなので接続するページによっては閲覧できないことがある。(リージョン制限でお前の国からのアクセスはダメだと言われるか、正常に表示されないことがある)

使ってみた感じそれほど早くなっている感じもせず(多分プロキシ自体が海外サーバのためだと思う)

そうでなくとも、知名度的に得体の知れない運営(デベロッパの連絡先がGmailなのだ)で、セキュリティ的にちょっと心配がある…というわけで自分的にはNG。(似たようなOperaMiniを使ってる時点でほんと今更な話だが)

 

通常ブラウザ向けの設定

通常のWeb閲覧はBlueStacks+OperaMiniで良いことがわかったが、

HTML5をバリバリ活用した

shinycolors.enza.fun

をプレイしようとしたら、さすがにOperaMiniではプレイできない。

 

こういう、どうしても普通のPC用ブラウザを利用しなければならない時には、キャッシュをできるだけ効かせたいのが人情だ。

つまり、その設定をする必要がある。

 

ブラウザのキャッシュ設定を変更する

  • キャッシュ容量はブラウザが設定できる最大に。
  • キャッシュ保存期間はブラウザが設定できる最大に。

HTML5のキャッシュ容量は別の設定らしいのでここを参考にする。

www.tipsfound.com

 

ローカルプロキシサーバ(Squid)を導入する

Squidを導入したのはOperaMiniという解決策を導き出す前に、「どうにかしてキャッシュをより有効に貯められないか」という段階で思いついたからであって、実際のところは通常のWebサイト閲覧にはOperaMiniを使うことのほうが多く、OperaMiniは受信するデータの特殊性からおそらくローカルプロキシが効かないと思われるので、ほとんど意味がなさそうではある。

しかしやむを得ない事情で普通のブラウザを使うこともあるのだから、効果が無いことも無かろうということで自分は設定してみた。

効果は…あまり実感できていない。

やっぱりOperaMiniを使うことのほうが格段に多いから効果を実感できない…が、ログを見る限りではちょいちょい役にはたっているようだ。

導入のハードルも少々高めなので、こちらは気休め程度に考えておこう。

atomiyama.com

 

もっと細かい話

基本はデータ通信節約モード(200kbps)+BlueStacks+OperaMiniを使うという前提の元、僕が気付いたことを書き連ねておく。

  • ツイッターを利用するときは、絶対に公式のWebクライアント以外がいい。(僕の場合はTweetDeck)
    一度全体を読み込んでしまえば画像を含む新しいTLの逐次読み込みがスムーズだし、場合によっては動画も再生できる。(動画にデータ圧縮は効かないので普通に読み込みに時間はかかるが、前述したようにツイッター公式のWebクライアントではそもそも読み込むことすら出来ないことのほうが多い)
  • ツイッターのGIF自動再生は切っておく。無駄にデータ通信しようとするだけ。
  • 自動更新系は一時的に切っておく。
  • OperaMiniですらやたら読み込みが遅いと思ったらバックグラウンドプロセスを疑う。
    これはタスクマネージャのWiFi通信状況を監視してもいいが、リソースモニタのネットワーク活動を常に開いているとわかりやすい。
    受信(バイト/秒)がやたら高いexeがあるとそいつが何者か突き止めて停止させる。

    f:id:rizenback000:20190519210817j:plain

  • 回線帯域を食いつぶすバックグラウンドプロセスで特に頭を悩ませたのがWindowsUpdate関連。
    僕の環境ではDeliveryOptimizationというUpdate関連のサービスが無効化できず(配信の最適化をOFFにしているのに)、勝手にsvchost.exe -pとして勝手にWindowsUpdateが通信を始めることがあった。
    大体の場合こいつが原因だったので僕は常にservices.mscを開いてDeliveryOptimizationを止めることができるようにしておく羽目になった。
    こいつのせいでLTE通信で繋いでいると勝手に数十MB消費されることが2,3回あった。*6
  • 長文を編集するならやはり時間がかかっても良いから普通のブラウザで開いたほうが良い。
    いつOperaMiniが落ちるかもわからないし、文字入力の編集はOperaMini上ではやはり難がある(Android上で文章編集が大変なのと同じ理由)
  • スマホ単体でゲームなどをしたいときはテザリングをOFFにしてデータ通信節約も解除する。(スマホ単体なら対して通信されないので)
  • スマホ・子機となるタブレットのアプリ自動更新も切っておく。
  • 寝るときはデータ通信節約モードで充電しながらテザリングONにしておき、アプリの更新をやっておくと都合が良い。

 

 

色々書いたが、後半だんだん面倒になってきて何書いてるのか自分でもわからなくなってきたが、まあこんな需要なかなか無いだろうと思いこのまま投稿する。

 

このエントリを書いた理由は、「OperaMiniの圧縮率ならかなりイケるかもしれない…でも調べてもPCで使う方法なんて載ってない…どうする…」と考えた時に、Androidシミュレータの表示サイズクソ大きくしてブラウザ代わりにしちゃえ。という開き直りが思いの外うまく行ったので、OperaMiniをどうしてもPCで使いたい人にこのエントリが届けばいい。

*1:周りの電波状況を見る限り市販のアクセスポイントの無線LANが無数に飛んでいるし、今時ネット回線を引けないなんて他の住人は一体どうしているんだ?という疑問があるのであまり心配はしてない。引けなかったら死ぬ

*2:本来スマホのバッテリーに対しては優しくないことだがやむなし

*3:読み込めたところを上から表示するので興味ない画像だと思ったら画像読み込み途中で次に行けるのも魅力

*4:と解釈しているが本当にあっているかどうかはちょっと不安。まあそんな感じだと思って欲しい

*5:あくまで個人の推測です

*6:LTE通信ですら帯域を食いつぶすのだ