面白きことは良きことなり

拙く未熟なiOSエンジニアの備忘録と戯言

USB3.0と2.4GHz帯電波の干渉によるネットワーク不安定化とその弊害(主にSwitch)

2.4GHz帯の電波について

2.4GHz帯の電波を使用する主な普及品として下記は割と知られていると思う。

無線LANに関しては、2.4GHzと5GHzの2種あるが、障害物に強く遠くまで飛ぶという理由や
無線LAN(b/g)が普及したタイミングで導入した名残もあって2.4GHzがよく使われている印象がある。

また、iPhone7等スマホの音楽再生をBluetooth経由で聞く人も今となっては珍しくないと思う。

先ほど2.4GHz帯の特徴として、障害物に強い等上げたが、一方で下記のマイナス面もある。

  • 2.4GHzを使用した製品が多く狭い空間では干渉しやすい
  • 電子レンジを使用するともろに2.4GHzに干渉する

USB3.0について

こちらは最近やっと世間的にも普及し始めてきた印象。
青色端子で、USB3.0が対応している機器を対応しているケーブルで接続すると、
従来の10倍程の速度でやりとりができる便利な代物。

今では、Nintendo SwitchPS4にも搭載されている。

f:id:aryzae:20170829124401j:plain
※画像はBuffaloのサイトから拝借: これからは新規格 超高速USB3.0 | BUFFALO バッファロー

USB3.0のノイズ問題

USB3.0は速度がパワーアップしただけでなく、ノイズもパワーアップしている。
詳しくは下記の記事参照
USB3.0機器から発生するノイズは、2.4Ghz無線LANに悪影響を与えるらしい。 - ぼくんちのTV 別館

USB3.0と2.4GHz帯電波の干渉によるネットワーク切断

先ほど貼った記事の中でも記載があるが、USB3.0はノイズが酷いことで2.4GHz帯の電波に干渉する問題がある。

これの何が一番問題になるかというと、Nintendo Switchを2.4GHz帯でネットに繋いで
Splatoon2やMonsterHunterXXをプレイするユーザーがオンラインプレイすることで
電波干渉が発生し、ネットワークが不安定になりラグや切断を生みやすくなることである。

Nintendo Switchはドックに設置することでTVに映し出してプレイできるのだが、
このドックにUSB3.0端子がついているため、非常に干渉しやすい作りになっている。

しかし、USB3.0端子からノイズが出るのは使用している時のため、開梱してそのまま設置した人であれば、
USB3.0を使用していないこともあるので、一概にネットワークが不安定になっているわけではない。

まとめ

Nintendo Switchでネットワークが切断されたり、不安定に感じるのであれば、
USB3.0端子や他に2.4GHzの電波を発生する機器を使用していないか確認して欲しい。

個人的に一番好ましいのは5GHzの無線LAN(a/n/ac)を使用すること!
というか、よっぽどのことがない限り、2.4GHzなんて使わないで欲しい。
いっそ2.4GHzの無線LANを駆逐してもいいのでは?

これで快適なイカライフやハンターライフが楽しめるね。

RxSwift+MVVMで出てくるサイトのコードの備忘録

RxSwift+MVVMで上位に引っかかるRealm

academy.realm.io

RxSwiftとMVVMを勉強しようとした際、上記サイトが上位にくるものの、記載されているコードを今写経してもエラーがでるのみで正常に動かなかった。
調べたり試行錯誤して動くようにできたので記録しておく。

というかほぼStackOverflow先生に答えがあったようなものだった。

動作環境

  • Xcode8.3.3
  • RxSwift 3.6.1

コード

// View(ViewController)
import UIKit
import RxCocoa
import RxSwift

class LoginViewController: UIViewController {

    @IBOutlet var usernameTextFiled: UITextField!
    @IBOutlet var passwordTextFiled: UITextField!
    @IBOutlet var confirmButton: UIButton!
    
    var viewModel = LoginViewModel()
    let disposeBag = DisposeBag()

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        usernameTextFiled.rx.text.orEmpty.bind(to: viewModel.username).disposed(by: disposeBag)
        passwordTextFiled.rx.text.orEmpty.bind(to: viewModel.password).disposed(by: disposeBag)
        
        viewModel.isValid.map { $0 }.bind(to: confirmButton.rx.isEnabled).disposed(by: disposeBag)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}
// ViewModel
import Foundation
import RxSwift

struct LoginViewModel {

    var username = Variable<String>("")
    var password = Variable<String>("")

    var isValid: Observable<Bool> {
        return Observable.combineLatest(self.username.asObservable(), self.password.asObservable()) { (username, password) in
            return username.characters.count > 0 && password.characters.count > 0
        }
    }
}

Swift2からSwift3への移行期にもよくあったけど、RxSwiftも古い情報がひっかかりやすく、最新のVersionでの書き方がわからず四苦八苦する状態に陥っている。

参考サイト

ios - UITextField binding to ViewModel with RxSwift - Stack Overflow

Carthageでversion指定の書き方を忘れるのでメモ

ふとした時、書き方を忘れ、色々漁って探し直すのが大変なので、ここにメモとして残す。 基本 ~> で書くか == で書くことが多いと思う。

# コメント

# ~> 互換性のある最大のversion指定
# ex. 3.0以上かつ4.0未満の最大のversion
github "ReactiveX/RxSwift" ~> 3.0

# >= 指定以上の最大のversion
# ex. 3.0以上の最大のversion
github "ReactiveX/RxSwift" >= 3.0

# == 指定のversion
# ex. 3.0固定
github "ReactiveX/RxSwift" == 3.0

記述が終わったら下記コマンドを叩く

$ carthage update

Macでのかな変換、カナ変換、英字変換

記事にした経緯

自分も知らなかったし、未だあまり知られて方法もあるので記載

方式名は適当につけているので正式名称ではありません。

また、日本語キーボード基準で記載しているので、英字キーボードの人は適宜読み替えが必要かもしれません、

FunctionKey方式

日本語入力し、未確定中に下記keyを押すと一発変換できる

変換 コマンド
かな変換 F6
全角カナ変換 F7
半角英字変換 F8
全角英字変換 F9


ちなみにWindowsの時は下記となっていて微妙に異なる

変換 コマンド
かな変換 F6
全角カナ変換 F7
半角カナ変換 F8
全角英字変換 F9
半角英字変換 F10


Control+方式

日本語入力し、未確定中に下記Keyを押すと一発変換できる

変換 コマンド(ショートカット)
かな変換 Control + J (^J)
全角カナ変換 Control + K (^K)
全角英字変換 Control + L (^L)
半角英字変換 Control + ; (^;)

FunctionKey方式とKeyの並び順が、全角英字と半角英字で入れ替わっているので微妙に注意


英数Key方式

ローマ字入力中から半角英数のみに一発変換できる特殊な方式

変換 コマンド
半角英字変換 英数Key × 2


あとがき

TouchBarにより、FunctionKeyの変換が使いにくいとかたまに聞く。

そんな人はControl+方式になれると幾分かストレスが減るかも。

MacApp購入予定リスト(WWDCに備えて)

※一部絶対割引されないものも混じっている。

AppleScriptをSwiftで記述できるアプリ

Scriptarian - Scripting Studio for macOS

Git管理アプリ

www.git-tower.com

Diffアプリ

www.kaleidoscopeapp.com

鉄板のDesignerアプリ

Sketch - Professional Digital Design for Mac

デザインからコードを生成するアプリ

www.paintcodeapp.com

iOSシミュレーター管理アプリ

simpholders.com

アニメーションのプロトタイプ作成アプリ

kiteapp.co

プラグインで万能なテキストエディタ

www.sublimetext.com

各言語のIDE

www.jetbrains.com