scrcpyでAndroidの画面をミラーリング
はじめに
AndroidでWindowsPCにミラーリングしようとすると、有料だったり、画質が悪かったり、地味にスペックを要求されてしまう(ある程度は仕方がないが。)アプリが多い。 ゲーム配信などには、画質や描画速度もほしいところ。
今まで試したもの↓
- LetsView: 完全無料で設定も融通が効いて魅力MAXだが、私の環境ではいつのまにか数分でエラー落ちとなっている
- ApowerMirror: 画質と軽さの面で申し分ないが、無料版では10分で配信が勝手に停止されるようになっている
- Android画面録画究極: この中では最も安定していた。名前が胡散臭い…ユーザ登録で機能開放される部分が多く、毎回有料版を勧めてくる。
- AirMore: 画質が満足いかなかった
ええ、、、ApowerS○ftだけで何個アプリ作るんだよ。。(´ 'д' ` )という実態。
今回、無料でミラーリングすることができるというscrcpyというパッケージを使ってミラーリングを試行した。 私以外にも記事は結構あるので成功の一例として捉えてもらえば。。
注意点としてAndroid端末は追加ソフトが不要だが、開発オプションのUSBデバッグモードをONにする必要あり。 あと筆者はなぜかWSL2上でscrcpyを実行しているが、普通にWindows用のscrcpy.exeをダウンロードして準備すればもっと簡単らしいゾ。
手順参考
スペックとか
種類 | バージョン名など |
---|---|
Android端末 | SO-01M (Xperia5) |
Windows | windows10 19041.928 |
Ubuntu | 20.04 LTS |
手順
1.インストール
wsl2が有効になったwindows上で手順を進めていく。
powershellで下記を実行してwsl2上でubuntuを起動。 wsl2の導入方法は申し訳ないが省かせていただく。
> wsl
既存パッケージ更新、scrcpyをインストール
$ apt update $ apt install scrcpy
なお、既存パッケージ更新が済んでいない状態ではapt installがエラー落ちする状況となった。
有線でポートを開いたあと、無線でつなぐ際はWindows側でadbのTCP/IP接続準備が必要となる様子。 Windowsターミナルでadbコマンドが使えるようにSDK platform-toolsを任意の場所に配置してパスを通しておくこと。
Windows:
※なお、下記実行前にAndroid端末をUSB接続しておくこと
$adb tcpip 5555
WSL2:
$adb connect [ip device]:5555
※USBを外したあとに adb devicesに名前がでない場合は、一旦接続を停止して再度adb connectを実行
接続後に役立つコマンド
# 接続デバイス表示 adb devices # 停止させるとき adb kill-server
2.ミラーリング・・・??
ひとまずscrcpyを実行するだけで良い。
scrcpy -m 1280 --max-fps 30
また、-mを指定しない場合はちょうどいい感じにしてくれる。
、、、と、うまくいけばいいのだが、できてないのではないだろうか。。 できた人は別件でWSL2でGUI環境が使えるように頑張っていたに違いない。。
3.ミラーリング時のエラー対応
$ No matching fbConfigs or visuals found $ failed to load driver: swrast
WSL2にはGUI環境がないのでそのような場合はホストのWindows10にX Serverと呼ばれるGUI実行環境があると良いらしい。 無料で使えるVcxSrvというものがあるのでそれを使った。
エラー対応参考
odaryo.hatenablog.com github.com
試したこと
ifconfigでホストwindowsのip情報を取得しておいてDISPLAY変数を設定
export DISPLAY="192.168.x.x:0.0"
※ここで設定するipはWSL2から確認できる172.x.x.xではだめだった
WLS2上から下記のようなコマンドでWindows上で動作中のxserverのアプリが起動できることを確認
xeyes xcalc
なお、VcrSrv起動時は下記の選択が良さげ。 私のxperiaでは下記の設定に変えてVcrSrvを再起動した時点でミラーリングできるようになった。 - multiplewindows選択 - start no client選択 - ExtraSetting - disable access controllのみチェック
またPCとAndroid端末をUSB接続したままではなぜかadb devicesがunauthorizedでしか表示されなかったので、USB接続解除後にadb connectしたところ deviceとして認識されるようになったので良かった。
ここまでやって手順2を再度実行していたったら映った!
scrcpy -m 1280 --max-fps 30
あとはscrcpyコマンドオプションで画質や画面サイズなど多少の調整は効くので、 scrcpy -h コマンドでヘルプを出して調整してみよう。
最後に
scrcpyは遅延も少なく画質も結構いいのでいい感じ。
今回の方法では有線接続ではできなかったしエラーも頻出した。このあたりはWindows用のscrcpyを普通に準備すれば簡単にできたはず。 一般的なソフトが使えるならそれに慣れることに越したことはない。Iphoneなら別のアプリも選択肢にあがるので、自分なりに満足いく方法を見つけてほしい。
Markdown on VScode
個人的に見かけることが多くなってきたのでMarkdownの使い方を軽く説明します。
VSCodeを使うので予め入れておきましょう。
サクラエディタなどの単なるテキストエディタよりはさすがに重いですが、他のIDEと比較して動作が軽いイメージです。
安心(?)のMicrosoft製!
https://azure.microsoft.com/ja-jp/products/visual-studio-code/
書き始めよう!
- Markdown All in One
これで下記のmd拡張子のファイルがマークダウン文書として編集できるようになる。
******.md
プレビュー付き、目次(Table of Contents)作成機能付き。
Ctrl + Shift + v # プレビュー Ctrl + Shift + P → 「Create Table Of Contents」実行 # 目次作成
見た目はちょっと微妙だけど、見出しやリンクなどが変換されてます。
あとはmdファイルを作成してVSCodeで書いていくだけ!簡単!
Markdownの記法は?
マークダウンの記法は基本的なものからhtmlタグを展開してくれるものなど多いので割愛。
チートシートをまとめてくれているので参照のこと。
(https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)
エディタのプラグインやブログサイトによっては非対応の記法があるが、
下記はどこでも使えるイメージ。何が対応してるかはプレビュー機能やHTML出力機能を使って確かめよう。
- 箇条書き - or *
- 見出し #
- 水平線 ---
- リンク
- コードブロック ```
- ```rubyなど言語指定したときのコードハイライト機能まではサポートされてない場合も多い
- 引用 >
- テーブル
テーブルを恐れるな!
後は基本的には慣れだが、Markdownの面倒な部分としてテーブル作成がある。
表を作成する際は|や:---:を大量に使って体裁を整えねば編集も難しい。
そこで下記を導入してみる。
Excelを始めとする表計算ソフトのセルコピーをすると マークダウンのテーブル記法に変換貼り付けしてくれる。良い!
コピペ動作確認ができたソフト
- Microsoft Excel
- Google Spread Sheet
(Evernoteの表はコピペできませんでした)
テーブル作成手順
Shift + Alt + v
### Ctrl+v (普通に貼り付け) ヘッダ1 ヘッダ2 ヘッダ3 あ い う 1 2 3 a b c ### Shift+Alt+v (Excel to Markdown table使用) | ヘッダ1 | ヘッダ2 | ヘッダ3 | |------|------|------| | あ | い | う | | 1 | 2 | 3 | | a | b | c |
テーブルを簡単にコピペ作成できた!
まとめ
Markdownを使えばただのメモからスタイル付きの文書を作成できます。
ただのテキストメモとしてまとめるより、Markdownで書いた方が見やすい文書を作成できるので、
普段のメモ使いにもおすすめです。
WEBサービスによっては ## や - の後にスペースを打つと勝手に見出しや箇条書きに変換してくれるものもあるため、
覚えとくとノート系サービス使う際にも役立つ、かも。
.mdを書いてmarkdown記法を布教しよう。
【Windows10】Ansible動作確認用にssh接続可能なコンテナを建てたい
## やりたかったこと
業務でAnsibleを使うようになったため、connection: local
でlocalhost向きにplaybookを実行することで、実行役と検証を1つの仮想ホスト内でやっていたが、環境変数読み込み等が原因でいざリモート作業環境にplaybookを移行した時にエラーが大量に出ていた。
HyperVが使えるWindows10PCが手に入ったので、Docker for WindowsでAnsible実行用コンテナ、作業対象のSSH接続先コンテナの2つを作り、疑似リモートAnsible構築検証をしたい。
参考サイト様
サーバサイド知識、Docker知識が底辺レベルのためとても助かりました。 というか、CentOSのバージョン以外、ほぼ丸パクリになってしまい申し訳ありません。。
- https://qiita.com/nijibox_tech/items/3cf6e9229d969e16e031
- https://qiita.com/xeres/items/6a32729916b07b37ea68
構成(雑)
Dockerコンテナ構成はこんな感じ。
Windows10 Docker for Windows (HyperV) ├ansibleコンテナ (ubuntu) └targetコンテナ (centos7)
※HyperVの有効化やDocker for Windowsの起動確認は予め確認すべし。
複数コンテナはdocker-compose.ymlを使うのが楽って聞いた!
services
の直下に書いたサービス名をホスト名として使えて、docker-composeで構築したコンテナ内部ではDockerコンテナのIP(172.xxx.xxx.xxx)を指定しなくても良いらしい!
どうなってるのかよくわからんが、動くからヨシ!
## やったこと
ディレクトリパス
任意のディレクトリ ├docker-compose.yml *1 ├ansible/ │ ├Dockerfile *2 │ └playbooks │ ├extra-vars.yml *3 │ ├hosts *4 │ └test/ │ └playbook.yml *5 └target/ └Dockerfile *6
6個もファイルがが・・
各ファイルの記述内容
先程のファイル群の内容を記述します。
docker-comopose.yml *1
version: '3' services: ansible: build: ./ansible image: check_ansible volumes: - ./ansible/playbooks:/playbooks target: build: ./target image: check_target
- buildでDockerfileのディレクトリを記述した。
- imageで
docker-compose build
で作成されるイメージ名を記述した。 - volumesでホストの
ansible/playbooks
を ansibleコンテナ/playbooks
にマウントした。
ansible/Dockerfile *2
FROM ubuntu WORKDIR /playbooks # ansible client install RUN apt update && \ apt install -y software-properties-common && \ apt-add-repository ppa:ansible/ansible && \ apt update && \ apt install -y ansible
ansible/playbooks/extra-vars.yml *3
playbookで使いたい変数値を好きに書いておきましょう。後でplaybook実行時に読み込ませてみます。
# 実行時に変数値記述ファイルとして読み込ませます
ansible/playbooks/hosts *4
ホスト情報を記載します。通常はIPやdomainを記述するところだが、 最初に記述したとおり、docker-compose.ymlで指定したservice名で記述できる。
[web] target
ansible/playbooks/test/playbook.yml *5
実際に実行するplaybookです。 内容を書き換えて色々なmoduleを記述してみましょう。 配置パスは自分がわかる場所であれば適時変更して構いません。
- hosts: target tasks: - name: Install Vim yum: name=vim
- vimをインストールする記述
target/Dockerfile *6
FROM centos:7 RUN yum -y install openssh-server RUN ssh-keygen -A RUN sed -ri 's/^#PermitEmptyPasswords no/PermitEmptyPasswords yes/' /etc/ssh/sshd_config RUN echo "root:" | chpasswd EXPOSE 22 CMD ["/usr/sbin/sshd", "-D"]
playbook実行手順
targetが起動していないといけないので、コンテナ起動→ansibleコンテナ内でbash起動→playbook実行という流れになります。
- コンテナ起動&bash起動
docker-compose up -d
docker-compose run ansible bash
- playbook実行
cd /playbooks ansible-playbook test/playbook.yml -e @/playbooks/extra-vars.yml -i /playbooks/hosts
- ansible-playbookコマンドで作成済みのplaybook.ymlファイルを実行できる。
-e
で@付きのファイルパスを書くと変数ファイルを読み込んでくれる。-i
でインベントリファイルを読み込んでくれる。
できなかったこと
本来動作確認したかったplaybookを丸々testディレクトリに配置して、ansible-playbook実行してみたがエラーが解消できなかった。
ミドルウェアとかが不足していたんだろうけど。。
(本番では成功したので助かった。)
複雑なことを検証しようとすると設定が全然足りないっぽいですが module数個単位での動作確認では使えたのでとりあえず良いということにします!