メインブラウザをVivaldiに乗り換えた
メインブラウザをGoogle ChromeからVivaldiに乗り換えました。12月の頭から使い始めたので約1ヶ月経ちました。
タブを数十個開くような使い方をしてるんですが、Chromeだと1個1個のタブも幅が小さくなってタイトルが読めなくなって使いずらいし、ブラウザのレスポンスが遅いなぁと感じてました。
Vivaldiはタブを横に配置できると聞いて、タブのタイトルが読めない問題を解決できるならと思って使い始めたら、不満がほぼなくなったので乗り換えました。
良い点
タブを縦に並べられる
画像のようにタブを縦に並べて配置するとたくさんタブを開いてもタイトルを問題なく読めます。また、タブの配置は設定で上下左右に設定できるので、Chromeのように上部に並べることもできます。
パフォーマンスも(体感ですが)十分で、タブを67個開いた状態でプロセスは31個、メモリは約1GB、レスポンスも速いです。使っていないタブはサスペンドする?っぽいのでそのおかげかもしれません。
マウスジェスチャー
Vivaldiはマウスジェスチャーに標準で対応していて、さらにスタートページ(スピードダイヤル)や拡張機能の管理画面などのWebページ以外でも使えるのがすごく便利です。
実はChromeの前にOperaを使っていて、Chromeに乗り換えた時に残念だったのがこの点だったので地味に感動しました。
Chromeの拡張機能が使える
Chromeの拡張機能に対応しているようで、自分が使っている3つは問題なく使えています。
不満な点
大きな不満はないですがちょっと気になる程度のものが2点あります。どちらもその内アップデートで解消されそうです。
別のアプリからサイトを開いたときにウィンドウが勝手に最大化する
ツイッタークライアントなどでURLをクリックしたときにデフォルトブラウザでそのサイトが開くと思いますが、
という手順を踏んだ時Vivaldiが勝手に最大化されてしまいます。回避するには、ウィンドウを右半分に表示した状態で一旦終了して再度起動した状態で同じことをすると起きません。
たまに固まる
Vivaldiに限りませんが、Chromeより少しだけ頻度が多い気がします。ただ忘れたころに1回固まるくらいなので気になるほどの頻度じゃないです。
まとめ
Vivaldiをインストールして設定を自分好みに変えて1ヶ月使いましたが、自分の使い方だとChromeでできたことは全てVivaldiでも問題なくでき、Chromeの不満が全部解消されたのでメインブラウザとして使うことにしました。
LattePandaを購入
秋月電子でLattePandaを買いました。おすすめされていたACアダプターとヒートシンクも一緒に購入。
LattePandaは5V/2Aの電流を流せる電源が必要ですが、一緒に買ったACアダプターは5V/3Aのもので余裕があります。ヒートシンクはLattePanda公式のもののようです。
以下、セットアップでやったことを書きます。セットアップで必要なマウス・キーボード・HDMIケーブルは持っていたものを使います。
起動
付属のマニュアルに書いてある起動方法が少し変わっていました。
- ACアダプターのUSB端子をLattePandaに接続する
- 赤いLEDが光った後、消えるまで待つ
- LattePandaの電源スイッチを押す
1ではLattePandaの初期化を行うようです。
3で電源スイッチを押すと再び赤いLEDが光ってWindowsの起動が始まります。
Windows Update
まずはWindows 10のPCと同様にWindows Updateを実行しました。何回か実行するので結構時間がかかります。
日本語化
初期状態のLattePandaのWindows 10は英語なので下のサイトを見て日本語化しました。
TightVNCのインストール
Windows 10 HomeはWindowsのリモートデスクトップのホストになれないので、別の方法でリモートデスクトップをできるようにする必要があります。私はLattePanda公式のドキュメントに書かれている通りにTightVNCをインストールしました。
クライアントのPCにもTightVNCのビューワーをインストールします。
Wi-Fiのセットアップ
LattePandaはWi-Fiに対応していますが2.4GHz帯を使うものです。しかし通信速度が欲しかったので、標準のWi-Fiアダプターではなく持っていたELECOMの5GHz専用のWi-Fiアダプターを使います。
11ac 867Mbps USB3.0小型無線LANアダプター(子機) - WDC-867SU3SBK
LattePandaの3つのUSBの内1つがUSB3.0に対応しているのでそこに接続します。
ここで注意するのがドライバーのセットアップです。
ELECOMのサイトでWindows 10用のものがダウンロードできますが、Windows 10標準のドライバーで接続できるのでインストールは不要です。インストールするとWindowsに認識されなくなって使えなくなります。なので、ELECOMのサイトのドライバーはインストールせずにアダプターをLattePandaに接続します。接続すると自動でドライバーがインストールされます。
インストールが完了したら、Windows 10標準の方法でWifiのセットアップをします。
不要ソフトのアンインストール
32GBしかストレージがないのでゲームなどの不要なソフトをアンインストールします。
ヒートシンク
LattePandaは結構熱くなるというのは聞いていたのでヒートシンクを載せる前にアップデート中のLattePandaの金属部分に指で触ってみたら、確かにずっと触っていられない程度には熱かったです。
で、ヒートシンクを載せる時に最初は表面の一番面積の広い部分(LattePandaのキャラクターが印刷されている所)に5個載せようとしてたんですが、一応公式サイトで調べたら表面の小さい金属部分に1個、裏面に4個載せてました。
(2枚の画像は右のサイトから引用:https://www.lattepanda.com/products/15.html)
思い込みで載せなくてよかったです。
でもヒートシンクなしの状態でどこが熱いか触って確かめてみたら、表面は公式通りの場所より広い方が熱かった気がしたのでそっちに載せました。
載せた後に触ってみたら表面のヒートシンクより横の狭い金属部分の方が熱かったので公式通りに載せた方がよかったかもしれません。
v6プラスとPPPoE(IPv4)の併用
PPPoE(IPv4)の併用
前回の記事のように設定すればPCやスマートフォンからはインターネットに問題なく接続できますが、PS4のボイスチャットが使えなくなりました。フレッツはマルチセッションができるので、もう1台ルーターを使ってPPPoE(IPv4)を使った接続を作成して回避します。
ネットワーク構成は下の図のようにします。中央のWXY-1750DHP2が今回購入したv6プラス対応のルーターで、PCやスマートフォンなどはこれに接続します。そして右のWSR-600DHPは同じくBUFFALOのルーターで、v6プラス利用前まで使っていたものです。これとPS4を接続します。
また、WXR-1750DHP2のLANポートとWSR-600DHPのWANポートをLANケーブルでつなぎます。
WXR-1750DHP2の設定
v6プラス対応ルーターの設定です。「PPPoEパススルー」の「使用する」にチェックします。
また、このルーターのネットワークは仮に192.168.11.0/24とします。
WSR-600DHPの設定
1.「IPアドレス取得方法」で「PPPoEクライアント機能を使用する」を選択する。
2.「PPPoE」で@niftyから送付されたIDとパスワードで接続する設定を作成する。
また、このルーターはネットワークを分けます。ネットワークは仮に192.168.12.0/24とします。
まとめ
これでPS4はv6プラスを使わずにインターネットに接続できるのでボイスチャットも使えるようになりました。インターネット接続の速度はv6プラス利用前と同じ状況になりますが、今のところゲームをしている時に問題は出ていません。また、プロバイダが変わった影響かボイスチャットで相手の音声が途切れ途切れになる問題が解決しました。
v6プラスを使ってインターネット接続速度を改善する
v6プラス利用前に起こっていた問題
家のインターネット回線の速度が夜に数百kbpsと劇的に遅くなり、ニコニコ動画やYoutubeの動画を再生するのに動画時間の何倍も待ったりWebサイトやツイッターの画像の表示も数十秒待つような状況になっていました。業を煮やして調べると、NURO光やv6プラスにすると回線速度の低下がなくなるらしいので対策をすることにしました。
フレッツ光 2017年 急激に遅い評判増える その原因は? | 実際の速度は800M以上! NURO光の実測や評判は?
夜インターネット回線が遅いのを改善してみた(@nifty/フレッツ光/v6プラス/WXR-1900DHP): わかぶろぐ
私は賃貸マンションに住んでいて、インターネット回線はフレッツ光のマンションタイプ(100Mbps)、プロバイダはYahoo! BBでした。NURO光にするには回線を引けるかどうか大家の方と相談が必要だったり時間と手間がかかりそうだったので、自分だけで手続きができるv6プラスを申し込んでみることにしました。
フレッツの回線タイプによってはv6プラスは使えないようですが、自分のマンションが対応しているタイプ(書類によるとNマンション1Bですが、下のサイトのどれに該当するかはよく分かりません。)は対応してました。
サービス内容|フレッツ・v6オプション|フレッツ光公式|NTT東日本|インターネット接続ならフレッツ光
v6プラスについて
フレッツのIPv4は契約者数が多い上に装置で最大200Mbpsに制限されていて通信量が多くなる夜に速度低下が起こるようで、それがv6プラスで回避できるようです。
【v6プラス】無料オプションで爆速に!「遅い」「重い」を解決するおすすめのネット回線(プロバイダ)&ルーター - 踊るびあほりっく
https://www.jpne.co.jp/service/v6plus/
また、v6プラスにすると固定IPアドレスを使えなくなったり特定のポートを使う通信ができなくなるので自宅サーバーや特定ポートを使う一部のゲームに影響があるようです。とは言え1契約でIPv4のセッションも同時に張ることができるので、v6プラスを使っても大丈夫だと思います。私はPS4はIPv4を使ってインターネットに接続できるようにしました。
プロバイダとの契約
v6プラスに対応しているプロバイダはいくつかありますが私は@niftyにしました。v6プラスオプションは無料で利用できます。
7/10に申し込んで7/12には書類が郵送されてきました。ただ、よく分からないのは7/12にはルーターの設定をしてIPv4が使えるようになったと思ってたんですが、@niftyの課金開始日が8/1でした。もしかしたらルーターにYahoo! BBの設定が残っていてインターネットに接続できていたのかもしれません。
8/3に「IPv6接続オプション」の申し込みが完了したというメールが来て、v6プラスが使えるようになりました。
v6プラス対応のルーターの準備
v6プラスを使うには対応するルーターが必要です。v6プラス対応のホームゲートウェイ(ひかり電話対応ルーター)か、市販のv6プラス対応ルーターを用意する必要があります。私はホームゲートウェイを使っていなかったので、BUFFALOのWXR-1750DHP2というルーターを購入しました。
BUFFALOのv6プラス対応ルーターはサイトに一覧があります。
IPv6接続動作確認済みサービス/機器一覧 | バッファロー
ルーターの設定
v6プラスを使ってインターネットに接続するようにルーターの設定をします。ブラウザでルーターの設定画面にログインした後、
1.「IPアドレス取得方法」で「インターネット@スタートを行う」を選択する。
2.PPPoEの設定がもしあれば削除する。
3.「IPv6接続方法」で「NDプロキシを使用する」を選択する。
当初は1と2だけ行っていましたが深夜0:30頃に回線が数分間切断されるという現象が発生していました。対策として3の設定を行うと解決します。
※2017/8/28追記:当初は3で「IPv6パススルーを使用する」を選択していましたが、セキュリティ上危険だと指摘を頂いたので「NDプロキシを使用する」を選択するように変更しました。
ルーターの設定ができたらv6プラスがちゃんと使えるか下のサイトで確認します。
「v6プラスのインターネットアクセス(v6プラス用)」の試験でOKが表示されていれば成功です。
感想
v6プラスにする前は速くて20Mbps程度、夜は最悪1Mbpsを下回る状況でしたが、v6プラスを使い始めたら夜でも60Mbps以上出るようになり最初に書いた問題も解決しました。最大100Mbpsの回線契約でこれだけ速度が出るのは驚きです。
また、これくらい速度が出るとYoutubeで4K解像度・60FPSの動画も、ページを表示してすぐに再生を開始しても止まることなく視聴できます。
プロバイダを変更する手間とルーターの購入が必要でしたが、快適にインターネットを使えるようになったので満足してます。
Dockerのビルドのレスポンスを整形して出力する
F#でDockerイメージをビルドする - locabloではレスポンスをそのまま出力していたのでパースして出力できるようにしました。
F#っぽいコードにならなかったのが残念...
let formatResponse line = let root = JObject.Parse(line) let hasProp key = root.Properties() |> Seq.map (fun x -> x.Name) |> Seq.contains key let valueOf (key : string) = string root.[key] let newLine = System.Environment.NewLine let builder = new System.Text.StringBuilder() if hasProp "id" then builder.AppendFormat("{0}: ", valueOf "id") |> ignore if hasProp "progress" then builder.AppendFormat("{0} {1}{2}", valueOf "status", valueOf "progress", newLine) |> ignore elif hasProp "stream" then builder.AppendFormat("{0}", valueOf "stream") |> ignore elif hasProp "status" then builder.AppendFormat("{0}{1}", valueOf "status", newLine) |> ignore else builder.Append(line) |> ignore builder.ToString() let outputBuildResponse (responseStream : Stream) : unit = seq { use reader = new StreamReader(responseStream, Text.Encoding.UTF8) while not reader.EndOfStream do yield reader.ReadLine() } |> Seq.map formatResponse |> Seq.iter (printf "%s")
前回の記事の出力がこれで、
{"stream":"Step 1/2 : FROM busybox\n"} {"status":"Pulling from library/busybox","id":"latest"} {"status":"Pulling fs layer","progressDetail":{},"id":"1cae461a1479"} {"status":"Downloading","progressDetail":{"current":16384,"total":699311},"progress":"[=\u003e ] 16.38 kB/699.3 kB","id":"1cae461a1479"} {"status":"Downloading","progressDetail":{"current":260087,"total":699311},"progress":"[==================\u003e ] 260.1 kB/699.3 kB","id":"1cae461a1479"} {"status":"Downloading","progressDetail":{"current":424839,"total":699311},"progress":"[==============================\u003e ] 424.8 kB/699.3 kB","id":"1cae461a1479"} {"status":"Downloading","progressDetail":{"current":490375,"total":699311},"progress":"[===================================\u003e ] 490.4 kB/699.3 kB","id":"1cae461a1479"} {"status":"Downloading","progressDetail":{"current":539527,"total":699311},"progress":"[======================================\u003e ] 539.5 kB/699.3 kB","id":"1cae461a1479"} {"status":"Downloading","progressDetail":{"current":621447,"total":699311},"progress":"[============================================\u003e ] 621.4 kB/699.3 kB","id":"1cae461a1479"} {"status":"Downloading","progressDetail":{"current":699311,"total":699311},"progress":"[==================================================\u003e] 699.3 kB/699.3 kB","id":"1cae461a1479"} {"status":"Verifying Checksum","progressDetail":{},"id":"1cae461a1479"} {"status":"Download complete","progressDetail":{},"id":"1cae461a1479"} {"status":"Extracting","progressDetail":{"current":32768,"total":699311},"progress":"[==\u003e ] 32.77 kB/699.3 kB","id":"1cae461a1479"} {"status":"Extracting","progressDetail":{"current":699311,"total":699311},"progress":"[==================================================\u003e] 699.3 kB/699.3 kB","id":"1cae461a1479"} {"status":"Extracting","progressDetail":{"current":699311,"total":699311},"progress":"[==================================================\u003e] 699.3 kB/699.3 kB","id":"1cae461a1479"} {"status":"Pull complete","progressDetail":{},"id":"1cae461a1479"} {"status":"Digest: sha256:c79345819a6882c31b41bc771d9a94fc52872fa651b36771fbe0c8461d7ee558"} {"status":"Status: Downloaded newer image for busybox:latest"} {"stream":" ---\u003e c75bebcdd211\n"} {"stream":"Step 2/2 : RUN ls\n"} {"stream":" ---\u003e Running in 74350655bd58\n"} {"stream":"bin\ndev\netc\nhome\nproc\nroot\nsys\ntmp\nusr\nvar\n"} {"stream":" ---\u003e 7fc898365619\n"} {"stream":"Removing intermediate container 74350655bd58\n"} {"stream":"Successfully built 7fc898365619\n"}
formatResponse関数を使ってパースして出力するとこうなります。
Step 1/2 : FROM busybox latest: Pulling from library/busybox 1cae461a1479: Pulling fs layer 1cae461a1479: Downloading [=> ] 15.93 kB/699.3 kB 1cae461a1479: Downloading [===============> ] 211.8 kB/699.3 kB 1cae461a1479: Downloading [=======================> ] 326.5 kB/699.3 kB 1cae461a1479: Downloading [=========================> ] 359.3 kB/699.3 kB 1cae461a1479: Downloading [============================> ] 392.1 kB/699.3 kB 1cae461a1479: Downloading [==============================> ] 424.8 kB/699.3 kB 1cae461a1479: Downloading [=================================> ] 474 kB/699.3 kB 1cae461a1479: Downloading [=====================================> ] 523.1 kB/699.3 kB 1cae461a1479: Downloading [========================================> ] 572.3 kB/699.3 kB 1cae461a1479: Downloading [============================================> ] 621.4 kB/699.3 kB 1cae461a1479: Downloading [==============================================> ] 654.2 kB/699.3 kB 1cae461a1479: Downloading [=================================================> ] 687 kB/699.3 kB 1cae461a1479: Downloading [==================================================>] 699.3 kB/699.3 kB 1cae461a1479: Verifying Checksum 1cae461a1479: Download complete 1cae461a1479: Extracting [==> ] 32.77 kB/699.3 kB 1cae461a1479: Extracting [=======================================> ] 557.1 kB/699.3 kB 1cae461a1479: Extracting [==================================================>] 699.3 kB/699.3 kB 1cae461a1479: Extracting [==================================================>] 699.3 kB/699.3 kB 1cae461a1479: Pull complete Digest: sha256:c79345819a6882c31b41bc771d9a94fc52872fa651b36771fbe0c8461d7ee558 Status: Downloaded newer image for busybox:latest ---> c75bebcdd211 Step 2/2 : RUN ls ---> Running in 5c8584208f21 bin dev etc home proc root sys tmp usr var ---> b95a8e54a8f1 Removing intermediate container 5c8584208f21 Successfully built b95a8e54a8f1