EPISODE 02

モバイルワークを試行錯誤するブログ

Mate 10 ProとBluetoothマウス、キーボードの通信断問題

Mate 10 Proをデスクトップモードで利用するときには外付けのキーボードとしてPFUのHHKBを、マウスはLogicoolのMX Anywhere 2SをBluetoothで接続して利用している。

しばらく使っているうちにキーボード、マウスともに突然接続が途切れたり、ポインタの動作がカクついたりという症状が出てきた。常に動作がおかしいわけではないし、キーボードとマウスの接続がおかしくなるタイミングもバラバラ。何かのタイミングで起きている様子だけど、原因は特定できていない。電波を発する電子機器はApple Watch 3、電子レンジ、モニタ、Amazon Echo、Wi-Fiルータ、テレビ、タブレット、スマートフォン、デジタルカメラなど数え切れないほどあるので、干渉している原因をひとつひとつ切り分けるのも現実的ではないし、Mate 10 Proとマウス、キーボードの相性問題であったら解決は相当困難と思われる。

発生する都度Bluetoothの接続を切って、再接続、場合によっては再ペアリングという作業をしていたけど、それもだんだん億劫になってきた。

マウス・キーボードのハードウェア障害の可能性もあるのかなとUSB Type-CのハブとLogicoolのキーボードK780を引っ張り出してきて、Unifyingレシーバ経由で接続して数日間使ってみる。するとBluetooth接続で発生していた事象が嘘のように起きなくなった。これでダメならUSBによる有線接続に切り替えるしかないか、と考えていたけどとりあえずは一安心。

f:id:bcorp:20180224121127j:plain

HHKBはかなり気に入っていたキーボードだけどUnifying接続ができないため、キーボードをHHKBからK780に切り替える必要に迫られたけど、こればかりは仕方ない。

f:id:bcorp:20180224121233j:plain

K780に変更して気になったことと解決策は、

HHKBと異なりctrlキーが左下にあるので、若干打ちにくい。これは以下のアプリを使ってcaps lockキーをctrlキーにアサインすることで解決した。こういった課題がiOSと比べると一瞬で解決できるのがAndroidのメリットか。

play.google.com

f:id:bcorp:20180224121946j:plain

キーボード自体はHHKBと比較してキーストロークが浅いので、若干違和感はあるけど、Bluetoothが切断されることで作業が中断してしまうことを考えれば圧倒的に快適。

f:id:bcorp:20180224122010j:plain

HHKBと比べてフットプリントが増えてしまうのは残念だけど、スマートフォンスタンドもあるのでMacBookのTouch Bar的な使い方もできるし、メディアキーや10キーも利用できるようになったことで、生産性があがるかもしれないと自分自身を納得させている。

f:id:bcorp:20180224121630j:plain

デメリットは今までUSB Type-CとHDMIのケーブルでモニタに接続していたことで、スッキリとしたデスクだったけどハブを接続したことで若干ごちゃごちゃした感じになるのが気になること。

f:id:bcorp:20180224122056j:plain

しばらく気にしないようにしていたけど、どうにも気持ちが収まらないのでUSB Type-Cの延長ケーブルを買ってきて、ハブはモニタの後ろに隠してしまうことに。

f:id:bcorp:20180224124214j:plain

これで今までどおりスッキリとしたデスクに戻すことができた。関係ないけどUSB Type-Cの延長ケーブルがあることを初めて知った。Type-Cの規格に無いような気がしているけど、充電もデータ通信も普通にできているので、深掘りするのはやめておく。

f:id:bcorp:20180224124144j:plain

USB Type-Cのハブをモニタに近づけることで、モニタと干渉してマウス・キーボードの接続に影響する可能性も危惧したけど、今の所問題なさそう。その他、Bluetooth接続と異なるのはMate 10 Proとケーブルを取り外すと同時に接続が解除されること。Bluetoothではマウス・キーボードがスリープ状態になるかMate 10 Proで接続を解除するまで接続された状態になっていたのでここは副作用としてのメリットだった。

Bluetoothのトラブルは、今まで運良く経験したことがなかったけど、こういうこともあるんだなあといった感想。理想的な環境にするのは、骨が折れるけどひとつずつ解決していくしかないのかなと。

Huawei Mate 10 Proでのローカル開発環境

Mate 10 ProのデスクトップモードでTermuxを利用すると日本語が入力できないという問題。その後色々試してはみたけど結局今の所解決策はなさそうな感じ。

日本語入力以外ではそれなりの開発環境は構築できそうなので、Termux内のVimエディタを利用するのはやめて、他のエディタアプリを利用してみることに。TermuxはMate 10 Proのストレージにもアクセスできるので、エディタアプリで編集した上でTermuxから読み取るというやり方で。

アプリの選定にあたっての条件は以下の通り。

1)Mate 10 Proのデスクトップモードで起動すること

2)外付けキーボードで日本語が入力でき、キーボードショートカットやコピペができること

3)シンタックスハイライトされること

4)Mate 10 Proのストレージの任意のディレクトリにファイルが保存できること

5)フォントサイズ、テーマが選べること

とりあえず使ってみたのは、Google Playでも評判の良かったQuickEditというアプリ。無料版と有料版があるけど、まずは無料版で試してみる。

デスクトップモードでの起動

全画面モードでの起動も、任意のウィンドウサイズへの変更もできる。タブも利用できるので、いくつかファイルを開きながらエディットするという使い方もできる。

f:id:bcorp:20180220181654j:plain

無料版と有料版との差分は広告が表示されることだけで、機能的な差分は見つけられなかった。デスクトップモードで利用すると広告が表示されるのはファイルを保存した時だけとなっていて、入力している分には有料版なのか無料版なのかを意識することはなさそう。

f:id:bcorp:20180220181744j:plain

ファイルを自動保存に設定すると、広告は表示されず、明示的にファイルを保存する時以外は広告を目にすることはない。頻繁にControl+sで保存する癖があると毎回ポップアップ広告が出てきくるので、自動保存にしておいたほうがストレスは少ない。

外付けキーボードの利用

アプリケーション内での文字のコピー&ペーストや、他のアプリでコピーした文字列もペーストできる。もちろんキーボードだけで文字の選択や選択した文字列に対してキーボードショートカットも利用できるので、マウスを利用するシーンは減りそうな印象。HHKBを使ってざっと試したところ、Control+a、Control+c、Control+v、Control+x、Control+zなど頻繁に利用するショートカットは使える様子。日本語の入力に加えてメニュー関係も日本語になっているのも直感的に操作する上でのメリット。

シンタックスハイライト

シンタックスハイライト可能な言語は数多くあって代表的な言語はほぼ網羅されている様子。

f:id:bcorp:20180220182147j:plain

プログラミング言語だけではなくMarkdownやHTMLにも対応しているので、ブログの下書きやメモに使ってもよさそう。エディタのアプリない設定で改行コードはAndroid/Linux/macOS、文字コードはUTF-8に指定すると変なエラーは起きずに済むので事前に設定しておくといい。

f:id:bcorp:20180220184612j:plain

f:id:bcorp:20180220182354j:plain

ファイルの保存場所

DropboxやOneDrive、GoogleDriveなど一般的なクラウドストレージサービスの他、今回の目的だった本体ストレージの任意のディレクトリにもファイルを保存することができ、クラウドを介さなくてもMate 10 Proで書いたコードをMate 10 Proで実行できるようになる。

f:id:bcorp:20180220182624j:plain

フォントサイズとテーマ

テーマは明るいテーマ、暗いテーマ、ブラックテーマの3種類から選択することができる。このなかで最も眼に優しそうな暗いテーマが長時間使っいても疲れにくそうな印象。

f:id:bcorp:20180220182922j:plain

f:id:bcorp:20180220183006j:plain

f:id:bcorp:20180220183019j:plain

フォントサイズは8-56の間で選択できるので実用にあたっての過不足は感じられない。

f:id:bcorp:20180220183235j:plain

その他文字列の検索、置換、指定行番号へのジャンプ、Markdown、HTMプレビューなどエディタとしては必要十分といったところ。入力した文字数が確認できないのは残念な点だけど、文書作成を目的としているわけではなく、コードエディタと割り切れば、行数が常時確認できるだけでいいのかも。

ということで、エディタは良さそうなので、適当にコードを書いてみてMate 10 Proでコードが動くことを確認してみる。

f:id:bcorp:20180220184937j:plain

シェルスクリプトと、Python、RubyでやってみたがQucikEditで作成したコードを保存してTermuxで実行すると期待したとおりに出力される様子。

まとめ

MacやWindowsに比べて色々と制限はありそうだけどMate 10 Proでローカルでそれなりの開発環境を整えることはできそう。NginxやRuby on Railsもインストールして利用できそうなので、それは追々試していく。プログラミングを始めるにあたって、いちばんの難関である環境構築がAndroidを使えばアプリをインストールするだけで、整ってしまうというのは素晴らしい。

家やホテル、コワーキングスペースでは外部ディスプレイ、キーボード、マウスと接続し、移動中にはスマートフォンの画面でと、全く同じ環境で作業できるのはiOSと比べてAndroidの大きなメリットではないかと感じる。まだまだ技術的に超えるべき課題はあるけど、CPUもストレージも、メモリもラップトップの性能をに追いている状況ということもあり、スマートフォンだけで仕事をするという時代もそろそろ現実的になってきたのではないだろうか。

Linux on Mate 10 Pro

Mate 10 ProのデスクトップモードでWindowsの仮想環境にログインして作業ができることが確認できたので、次は同じデスクトップモードでLinuxを使ってみたい。

Mate 10 Proのデスクトップモードについてはこちらのエントリーに記載している。

試したのは昨年リリースされた「Termux」というアプリ。この手のソリューションは以前からあったけどAndroidのrootを取る必要があったけど、このアプリはGoogle PlayからインストールするだけでローカルにLinux環境を構築できるというもの。

f:id:bcorp:20180217233748j:plain

https://termux.com

ある程度の制限はあるもののPythonやRubyなどのプログラミング言語が使えたり、vim、ssh、httpサーバが使えたりと、うまく使えばローカル開発環境がアプリのインストールだけで構築できるようになるというナイスなソリューション。

ということでMate 10 Proのデスクトップモードでの動作を試してみる。これができれば、デスクトップやラップトップと遜色ない環境が作れるはず。早速Mate 10 Proと外部モニターを接続してみると、特にエラーが出ることなく動いている様子。

f:id:bcorp:20180217232351j:plain

適当に、

$ apt install ruby

で、RubyをインストールしてみるとRuby 2.4.3がインストールされちゃんとirbも使えている。と、ここまではよかったのだけど、普通に利用するにあたって、いくつか致命的な欠点があることに気がついてしまった。

クリップボードが使えない

ブラウザや他のアプリからコピーして貼り付けること、Termux内での文字列のコピぺができない。キーボードショートカットを使っても、マウスのボタンを駆使しても駄目。

さすがにコピペせずに全部のコードを入力するのは面倒臭すぎる。で、次に考えたのがSSHクライアントによるTermuxへのログイン。TermuxはOpenSSHが利用できるので、SSHサーバとして動かした上で、コピペができる別のSSHクライアントアプリからTermuxへログインすることで、解決できるのではないかと。

手順の概要は、

1)TermuxでOpensshをインストール

2)鍵認証の設定

3)SSHクライアントアプリのインストールと設定

4)SSHクライアントからTermuxへログイン

利用するSSHのクライアントアプリはデスクトップモードで動作しかつコピペができるConnectBotを選択した。

1)TermuxでOpensshをインストール

$ apt install openssh

としてOpensshをインストールする

2)鍵認証の設定

ローカルアクセスしかしない想定なので、パスワード認証でもいいかなと思ったけど、Termuxではパスワード認証ではSSHによるログインができない仕様となっているとのこと。

基本は普通のLinuxサーバの設定と同じでいいけど、鍵はSSHクライアントからアクセスできる場所にコピーする必要があるので、鍵を作る前にTermuxからMate 10 Proのストレージにアクセス可能にする設定をしておく。

ストレージへのアクセス権限を付与

$ termux-setup-storage

鍵の生成とアクセス権限の付与

$ ssh-keygen

$ cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys

$ chmod 600 ~/.ssh/authorized_keys

$ chmod 700 ~/.ssh

生成した鍵をMate 10 Proからアクセスできるストレージにコピーする

$ cd .ssh

$ cp id_rsa > ~/storage/downloads

SSHサーバを起動する

$ sshd

3)SSHクライアントアプリのインストールと設定

ConnectBotを立ち上げて、鍵のコピーと接続に必要なパラメータを設定する。

f:id:bcorp:20180217234151j:plain

鍵は先程コピーしたディレクトリからファイルを指定する。

設定するパラメータは以下の2つ。

プロトコル:SSH

ユーザ名@ホスト名:ポート a@localhost:8022

f:id:bcorp:20180217234707j:plain

ユーザ名は接続に必要な条件ではないけど、入れないと保存ができないため適当な文字列を入力。ホスト名はlocalhostで問題なし。ポート番号はTermuxの仕様で8022番となる。SSHサーバになるTermuxを立ち上げたまま、クライアントのConnectBotから接続を試みると、特に問題なく接続された。

f:id:bcorp:20180217235640j:plain 左がSSHサーバ、右がSSHクライアント

f:id:bcorp:20180218000706j:plain

期待したコピペも問題なしで、さあ真剣に環境構築でもしようかなとvimを立ち上げたら次の課題に直面した。

日本語が入力できない

Termuxでも、ConnectBotでもIMEの切り替えができない。Mate 10 Pro側で物理キーボードの入力IMEをGoogle日本語入力、Gboard、iWnnに切り替えても反応なし。デスクトップモードにせず、Mate 10 Proの画面では仮想キーボード、外付けキーボードとも普通に入力できるので、どうやらデスクトップモードには対応していない様子。

Mate 10 Pro、Termux、ConnectBotの設定を色々と変えてみたけど改善はしなさそう。一応他のエディタで日本語を作成して貼り付けることはできるけど、作業効率が悪すぎることから、一旦ここで撤退。

まとめ

少なくとも日本語を利用しない前提であれば、Mate 10 ProのデスクトップモードでLinuxのシェルが動作することは確認できた。Linuxを使うにあたって考慮すべき点はたくさんあるけど、使い方によってはMate 10 Proが大きく化けるかもしれないと考えている。現時点では実に惜しいな、といった感想。

念のためAWSのLightsailに検証用として立ち上げたUbuntuインスタンスには、ConnectBotからSSHで接続することはできて、日本語も入力できている。

f:id:bcorp:20180218000758j:plain

オンライン前提だけどしばらくはMate 10 Proのデスクトップモードとクラウドのサーバで作業するほうが効率は良さそうという中途半端な結論になってしまったのだった。