MacでSwitchのプレイ映像をキャプチャーする方法

最近はGoProでバイク動画を撮影する機会も減ってしまい,動画編集することもなく,何かネタは無いかなーと考えていたところ,ゲーム動画を作ってみようかと急に思い立ったわけです.
毎日スプラトゥーン2だけはせっせと隙間時間を見つけて20〜30分はプレイしていますし,第三者が見て楽しめるかはさておき,コンテンツのネタとしては無尽蔵なのです.(笑)
というわけで機材だけはそろえておこうということで,必要な機材を選定するためいろいろ調べてみました.
結論から言うと,MacでSwitchのプレイ動画をキャプチャーするにはそれほど製品の選択肢はないようです.
信頼性があり,手ごろな価格で入手できる製品であれば問題ないので,価格を調べると約2万円程度の製品で,プレイ動画をMacに取り込めることが分かりました.
この手のキャプチャーボードという製品は,信頼性,値段,動画配信機能(youtube, twitchに対応しているか?),パススルー機能などでユーザに選ばれているようです.

今回選んだ商品は以下のものです.

Elgato Game Capture HD60 S [ソフトウェアエンコード式キャプチャボード(日本国内正規品)]
キャプチャーボードは相性もあるようで,商品レビュー欄にはMacで使えないなどの書き込みもありましたが,私の環境では問題なく使えています
私の環境は以下の通り.

iMac(Retina 5K, 27-inch, Late 2014)
macOS Catalina (10.15.7)

接続構成としては,ゲーム機からキャプチャーボードには,HDMIケーブルで映像を取り込み,キャプチャーボードからMacへは,USB3.0(TypeC)で接続します.

私の場合,SwitchをプレイするテレビとMacの距離が5m程度あるので,これを接続するには長いUSBケーブルが必要になる点が少々気になったのですが,Amazonで手頃なUSBケーブルを選び,無事,発注しました.

余談ですが,AmazonでUSBケーブルを購入する際にいつも時間がかかってしまうのは私だけでしょうか?
まず第一に商品点数がとても多いし,しっかりしたケーブルのようでもレビューで不良品だったなどのコメントがあるととても商品選定に時間がかかってしまいます.また,USBケーブルメーカーが海外製ということで,余計に慎重になってしまいます.

今回もケーブル長が5m必要だったこともあり,とても時間がかかったのですが,3m延長ケーブルと2mの通常のケーブルを購入しました.問題なく使えているのでとりあえず一安心です.

商品は以下のものです.
Rampow USB Type C ケーブル【2m/黒/保証付き】急速充電 QuickCharge3.0対応 USB3.0規格 usb-c タイプc ケーブル Sony Xperia XZ/XZ2,iQOS(アイコス),GoPro Hero 5/6 アンドロイド多機種対応
AINOPE USB 延長 3M USB3.0 延長ケーブル 金メッキコネクタ 高速データ転送 aオス-aメス USBケーブル 延長コード 高耐久ナイロン編組
ケーブルの表面はアミアミで柔らかくて質感の良いケーブルでした.
ところで,macOS Big Surっていつ出るんでしょうね?
今秋ですよね.

動画保存+編集については,またの機会に書きたいと思います.
では!

プロキシ環境下で cocoapods インストールエラーが発生する場合の対処方法

プロキシ環境下での環境構築時に経験した問題の対処方法をメモしておきます.

プロキシ環境下で cocoapods のインストール時に以下のエラーが発生した.

$ sudo gem install -n /usr/local/bin cocoapods

ERROR:  Could not find a valid gem 'rails' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - no such name (https://rubygems.org/latest_specs.4.8.gz)

理由は,sudo コマンドに http_proxy 環境変数が適用されないため.
-E オプションを付加するとログインアカウントの環境変数を引き継いでくれる.

$ sudo -E gem install -n /usr/local/bin cocoapods

無事,cocoapods のインストールが行えました.

Apple WATCH 音楽再生中のコントロール画面を非表示にする方法

普段通勤途中に iPhone, Apple WATCH, AirPods Pro で音楽,YouTube を楽しんでいます.
その際,Apple WATCH がこのようなコントロールが表示されることがずっと不満でした.
WATCH 側で操作を行うことがないのに,音楽再生中はコントロール画面が表示され,通勤中はずーとお気に入り壁紙がキャンセルされることになります.

iOS14 で確認したところ,音楽再生中のコントロール画面を非表示にするには,以下の項目をオフにすれば良いようです.
WATCH アプリの [一般] – [画面のスリープ解除] – [オーディオAppを自動起動]

Swift のキーワードを今更ながら調べる

最近ずっと避けてきた Swift のキーワードを勉強しています.(^_^;
正直ジェネリクスを利用したヘッダーはノリでは分かる,もしくは,分かった気になれますが,完全に理解するのは私にはとても忍耐がいる作業です.

参考になったページをメモしておきます.

typealias
associatedtype
ジェネリクスの<>の記述が分からない場合に参考になると思います.

【Swift】associatedtypeの使いどころ
typealiasというSwiftの仕様を把握する
→ 言語仕様が変更されて一部,associatedtype にする必要がある.
【Swift】ジェネリクスが使われているメソッドを理解する

RxSwift 個人メモ

iOS アプリの Reactive プログラミングは,最終的には Apple 謹製のフレームワークになるかと思いますが,世の中には既に RxSwift を利用した iOS アプリが多数存在しながらも,学習コストが比較的高い分野のため,開発フェーズ後はメンテできる人がおらず,手つかずになっているアプリも沢山あると想像しています.

最初にRxSwiftに入門した際には,概念を把握するのにとても苦労しました.
理由は,体系的に説明された資料が見つけられず,ネットの断片的な資料を探すことから始めたため,概要の把握が思いのほか大変であったためです.

個人的なメモですが,最初に知っておくべき概念,用語,何度も見返したい参考ページをまとめます.

▼ Rx とは?
Rx(Reactive X)とは,「オブザーバパターン」「イテレータパターン」「関数型プログラミング」の概念を実装している拡張ライブラリ.
Rxの導入メリットは,「値の変化を検知できる」「非同期の処理を簡潔に書ける」こと.
値の変化には,変数値の変化やUIの変化も含まれる.

▼ Rxの三要素
– Observable
– Operator
– Scheduler

▼ Reactive Programming 概要
SwiftでReactive Programming

▼ RxSwift で参考になった資料
RxSwiftの機能カタログ
俺はこれでRxSwiftを学んだ!リファレンス集
[RxSwift] shareReplayをちゃんと書いてお行儀良くストリームを購読しよう
[Rx入門] Subject詳解 / Hotな、ColdなObservableのこと
RxSwiftのobserveOnとsubscribeOnを理解する // Speaker Deck
よく使いそうなRxSwiftのオペレーターの勉強をしてみた(flatMap, flatMapFirst, flatMapLatest 等)
RxSwift のスケジューラ
→ observeOn,subscribeOn の違いについて参考になった.
RxSwift4で廃止になった Variable のリプレイス

▼ サンプル コード
RxExample MVVM のその先へ(Fat ViewModel の倒し方)
RxSwiftとUIライブラリの表現を組み合わせたサンプル紹介
リバース・エンジニアリング – RxSwift

▼ 用語 について
Observable イベント発生元
Observer イベント処理

▼ Observable の破棄
– disposeBagで破棄する.
– subscribeメソッドの戻り値Disposableインスタンスに対してdispose()メソッドを呼び出す方法.

▼ Driver/Signal
Driver
subscribe()後,イベントを1つ流してほしい場合に使用する.
(UITextField の入力文字列,UIButton の有効/無効状態など)
Signal
subscribe()後,イベントが発生するまで,イベントを流さないで欲しい場合に使用する.
(UIButton のタップイベント,アニメーションの完了イベントなど)

▼ Hot/Cold
Subject から送出される値が「Hot」,それ以外が「Cold」.
Cold を Hot に変換するには,以下のメソッドを使用する.
Publish()メソッドは,Hot 変化オペレータ.Connect()メソッドは,ストリーム開始.

– share(replay: 1)は,Cold Observable を Hot Observable へ変換するためのオペレータ.

▼ Hot な Observable の特徴
– subscribe されなくても動作する
– 複数の箇所で subscribe したとき、全ての Observable で同じイベントが同時に流れる.

▼ Cold な Observable の特徴
– subscribe したときに動作する
– 単体では意味がない
– 複数の箇所で subscribe した時,それぞれの Observable でそれぞれのイベントが流れる.

▼ Subject/Relay
Subject「通信処理や DB 処理等」エラーが発生したときにその内容によって処理を分岐させたい
Relay UI に値を Bind する
– PublishSubject
– BehaviorSubject
– PublishRelay
– BehaviorRelay

マイナンバーカードを申請した件

必要性を感じたことがなかったので作っていなかったのだが,マイナンバーカードを申請することにした.
理由は,マイナポイント事業というのが今後展開されて,詳細不明だけど…ポイントがもらえるというのを知ったからです.
マイナポイントを個人が利用しているポイント(楽天ポイントなど)として取得することができるようです.
楽天カードの場合,対象期間にクレジットカード利用で最大5,000ポイントもらえるようです.

ざっくりまとめると,
マイナンバーカードとクレジットカードを紐付けると,5,000ポイントがもらえる
ということだと思います.

ということで,登録します.(笑)
マイナンバーカード取得には,約1ヶ月かかるとのこと.

郵送はめんどくさいので,ネットで申請します.
参照したページは以下の通りです.
マイナンバーカードでマイナポイントをもらおう
マイナンバーカード交付申請
パソコンによる申請方法
登録内容は,以下の事柄です.
– メールアドレス登録
– 顔写真登録
– 申請情報登録

マイナンバーカードの受け取り
マイナンバーカードの受け取りは事前予約制とのこと.
予約がないと受取ができないことに注意.
マイナンバーカード(個人番号カード)を申請された方へ 東京都北区

この手順を知って感じたのは,申請すると直接自宅にマイナンバーカードが届くのではないということに驚きました.
個人に本人確認して送付物を渡すというのは手間のかかる作業なのですね.

ところで,高齢者の方は,番号のことを「コード」と言われたり「ID」と言われたりした途端に申請できない気がします.
用語についても「マイナンバー」だったり,「個人番号」だったり…受取は事前予約であったり…もろもろめんどくさいので考えないこととします.(笑)

SS の乗車姿勢がまだ分からない

SSの乗車姿勢に馴染めず,1年ほど体を慣らしていたのですが,ようやくサーキットを走ってきました.
私の場合,自走で現地まで向かうことになるので,2時間程度かけて現地に出向き,スポーツ走行を行い,帰宅する行程を全てSSで走ることになります.
1日約5時間程度は軽い腕立てができる程度の体力が必要になるのですが,その体力をつけるのに1年を要してしまいました.
効率を考える人であれば,トランポを用意するのでしょうが…

工具などは以前より用意していたのですが,ようやくミラーを外して本来の姿とご対面です.
タイヤも1年たってもひげが残っている状態で温存していたのですが,ようやくサイド トレッドを使うことができました.

残念ながら,リア190サイズのトレッドを全部は使うことはできませんでした.
これは未だバンクした車体のどこに体をどういう風に置くのか?ということが理解できていないためです.
MT-09で最初に乗ったときもそうでしたが,リラックスして乗車することができず,上体がかなり高い位置に残ったままという問題がありました.
R1000でもその状態なのだと思います.早く改善したいです.(結構,タンクを抱える感じで乗ったんだけどなー)
あと,バンクセンサーの位置もネイキッドとSSでは変えた方がいいように感じました.

ネイキッドでの走行経験と比べて,R1000入門者でもすぐに理解できた素晴らしい点

・クイックシフター
・エンジンがなめらかに回り,どこからでもパワーが出ます
・車体の剛性,バランスが非常に高い
・トラクションコントロール,ABSなどのサポート

MT-09だとアクセルを開けていった際に若干フロントが軽くなるコーナーがあったのですが,それらの不安は感じることがありませんでした.
(フロントが着地した後,振られると怖いんだよなー)
また,不用意に少しでもアクセルを戻した場合にエンジン回転の滑らかさが失われて,振られることがあったのですが,そのようなこともありませんでした.
車種,メーカーによるとは思いますが,ABS の効き味が異なると感じました.
(MT-09では普通に走行できていた速度で感じたので原因が正確には理解できませんでしたが,多分,ABSだと思います.でも,あんな速度でABS作動するかな…)

【後日談】ABSではなく,車種が異なることによるフロントからのインフォメーションの違いだと思います.SSってとてもダイレクトにインフォメーションがあるのだと知りました.

はやくスムーズに扱えるようになりたいものです.

Swift Embedded Framework

また知らない言葉があったので,調べてみました.
Swift Embedded Framework.
Xcode6から利用できるようなので,リリース自体はかなり前のようですが,私は積極的に採用したプロジェクトに参画したことがありません.
一応参考となるリンクをメモしておきます.

Swift Embedded Framework の導入
Embedded Framework使いこなし術
Embedded Frameworkの導入方法

Swift の associatedtype を最短で理解できたページ

associatedtype キーワードがよくわからなかったので調べたのだが,ジェネリックがどうとか難しいページが多かった.
キーワードの意味だけをわかった気になりたかったのだが…
以下のページを見ると2分くらいで理解できました.

associatedtype とは,protocol を定義する時には型が決まっていないものに使用する.
protocol 実装側で型を決められるようになる.

swiftの謎キーワードだったassociatedtype, mutating, subscriptについて