見出し画像

久しぶりの Android アプリ開発、または在宅勤務コンサルについて

この記事は Chatwork Advent Calendar 3 日目の記事です。

久しぶりの Android アプリ開発

さて、私は 2019 年から Product Manager (以下 PM) という立場で仕事をしております。しかし、2013 年に入社してから PM になるまではモバイルアプリケーションエンジニアとして特に Android アプリを担当しておりました。

一方で社内の有志で使っている Toggl の記録を Chatwork に日報として送信する社内向けの Android アプリも開発しておりました。Android 12 になっても問題なく動作していたので 4 年ほど放置していたのですが、 Toggl API のアップデートが必要になり、久しぶりに手を入れることになりました。

4 年間の乖離は非常に大きく、Support Library から Android X に置き換えたり、 RxJava も 1.x 系だったのでこれを機に Kotlin Coroutines に置き換えたり、 AAC ViewModel を導入したりいくつかの対応を入れました。

1 つ 1 つ変更してビルドを通していくのも大変でしたが、久しぶりの Android アプリ開発は非常に楽しく、また学びも多いものでした。最新の技術のキャッチアップを行うことは PM としても必要なことです。しかし、知識として学んだことも実際に使ってみなければわからないこともあると、あらためて実感しました。

例えば Kotlin Coroutines も私が Android アプリ担当だった頃はプロダクトに真っ先に導入したものでしたが、そのときはまだ Data Binding に使えるのは Android X にある ObservableField 系または LiveData 系のみでした。しかし、今回久々に触ってみて Kotlin Coroutines Flow の StateFlow が使えるようになっていることに驚きました。

Google Play に公開する予定はありませんが、 1 つでも「マイプロダクト」を持っていると、技術的なサンドボックスとしても使えるので引き続きこのアプリをメンテしていこうと思います。


在宅勤務コンサルについて

話は打って変わって、私は社内で在宅勤務環境をどう整えたら良いのか?という相談をよく受けます。弊社では 2020 年 4 月頃から在宅勤務推奨の体制となっていて、私も年に数回出社するかどうかという状況です。

それ以前から家でも快適にプログラミングや写真編集が楽しめるように、在宅での仕事環境づくりに取り組んでいたわけですが、急遽在宅勤務体制を取らざるを得なくなった社員からは「どうしたら良いの」という声が溢れ出るようになりました。

ここではそこそこの数の相談を受けて大体共通している部分について、記事としてまとめてみようと思います。

ネットワークの問題

相談として受けた件数が多いものの 1 つです。テザリングでは限界が来たからどうにかしたいとか、無線 LAN が遅いからどうにかしたいとか、ビデオ会議の音声が途切れてしまうからどうにかしたいとか、理由は様々です。

まずは fast.com で上り下りの速度計測とレイテンシーを出してもらって、問題を探っていきます。そしてテザリングや Pocket WiFi で問題があると言ってくる方には固定回線を引いてくださいとお願いをします

家に固定回線を引いてほしいというと大体渋い顔をされるのですが、なぜ必要なのかは懇切丁寧に説明します (それでも引いてくれるかは本人次第ではありますが) 。

「マンション付帯の回線があるので」という方もいますが、それでもやはり別途回線を引くことをオススメしています。マンション付帯の回線は当たり外れが非常に大きいですし、測定時点で高速でも 1 回線を複数世帯で共有するタイプでは利用世帯が増えると遅くなりますからね。

固定回線を引いている方でも、ケーブルテレビ回線を引いている場合もできれば光回線に変えてほしいとお願いをしています。ケーブルテレビ回線は下りが速くても上りが遅いのです。ビデオ会議のように双方向通信が必要な場合、上りの遅さは致命的になります。

そして光回線を引いているが遅いという場合、大体は無線 LAN の遅さが原因となっていました。プロバイダーからレンタルしているルーター付属の無線 LAN が 11n にしか対応してないとか、11ac / 11ax だけど 2.4GHz 帯で通信してしまっているとか、こうしたものが大体の原因です。

光回線を引く、フレッツ系だったら v6 プラスなどの IPv4 over IPv6 / IPoE オプションを付ける、有線 LAN で接続し、難しければ無線 LAN は 11ac 以上にして 5GHz 帯で通信する。ここまでやれれば概ねの問題は解決します。ただたどり着くのが難しい。Home 5G ルーター系には期待しているのですが、まだ本領発揮はこれからなのでもう少しかかりそうだなとも思います。

ビデオ会議の問題

在宅勤務に伴ってビデオ会議ツールの利用頻度が上がりました。弊社のサービスにも Chatwork Live というビデオ会議機能が組み込まれていますし、Google Meet や Zoom といったサービスも市民権を得ました。

利用頻度が高まるにつれ、ビデオ会議の品質をもっと上げたいという相談を受けるようになりました。映像の品質、音声の品質の両面がありますが、解決が比較的簡単なのは映像の品質です。

明るさと解像度がセットになれば大体の課題が解決します。なのでライトと外部のウェブカメラ接続をオススメしています。ラップトップ付属のウェブカメラも最近は良い画作りをしてくれるものが増えていますが、設置の自由度に難があるため逆光になってしまったり、下からあおるような映像になってしまうため、外部接続のウェブカメラが欠かせません。

そして、ウェブカメラはケチらないほうが良いとも伝えています。有名どころでは Logicool の C920nStreamCam という 2 つがあり、どちらも 1080p の解像度を持つものです (フレームレートは 30fps と 60fps の違いがあります) 。

これらのうち上位機種は StreamCam で、価格も 3 倍ほど違いますが ほとんどの場合に StreamCam をオススメしています。両方を使った身として、逆光耐性や発色の良さが段違いだと分かったからです。特に設置環境的に逆光になる場合に力を発揮します。

難しいのは音声の品質です。部屋の反響音といった環境の問題なのか、使っているマイクの問題か、それとも先に書いた回線の問題なのかの切り分けから始めます。

そしてマイクの問題に当たったときに話すこととして、Bluetooth イヤホンは良いがマイクは Bluetooth のものを使わないでくれということです。根本的に Bluetooth マイクは音質の問題を抱えています。

まず、Bluetooth の基本音声プロファイル (HFP 1.5 以下) は 1ch / 16bit / 8,000 Hz の「昔の電話」クオリティしか出せません。HFP 1.6 以上の場合は HD Voice をうたっていますが 1ch / 16bit / 16,000 Hz です。サンプリングする周波数帯域も HD Voice でさえ 50 Hz 〜 7,000 Hz と狭く、聞いたときにはブツッと割れたり切れたり、こもっているようなヌケの悪い音となってしまいます (声の周波数帯域は 100 Hz 〜 2,000 Hz の間と言われているので、十分ではあるはずなのですが) 。

ビデオ会議においてはその音が 1 名以上の画面の向こうにいる人に対して届くわけなので、聞いている身としては「今なんて話したんだろう」とか「聞き取りづらい」となってしまい、聞き取ろうとすることに集中するから内容が入ってこないなんてことになりがちです。自分は良くても相手が良くない状況を作ってしまっては、ビデオ会議の生産性は上がりません。

そのため、マイクは必ず有線のものを使うようにアドバイスしています。そしてこれも別に高額なものを用意する必要はありません。Mac であれば EarPods with 3.5 mm Headphone Plugまずは十分です。一部の例外を除いて、Bluetooth マイクが有線マイクよりも音が良いというのは 2021 年末時点ではありません。

ここが最低ラインで、次に環境音が入らないようにするにはどうしたら良いかを考えていけば良いわけです。実際、EarPods はかなり周辺の音を拾います。場所を変えることが難しいならば有線のゲーミングヘッドセットのようなものを試してみるとか、本格的なマイクを検討してみるとかすれば良いでしょう。

ネットワークやビデオ会議についての環境整備についてはヒアリングを行いながら、このあたりを基本として環境整備をしてもらえるように予算に合わせた機材選定などをお手伝いしています。他には机や椅子の選び方なども相談に乗っております。


一体これはなんの記事なんだろうという内容になりましたが、たまにはこういうものも良いのではないでしょうか?

それでは次の日の方にバトンを渡したいと思います。

この記事が気に入ったらサポートをしてみませんか?