現在はこの問題が解決され動作するようになりました. そのため,本記事は訳あって古いバージョンのVSCodeしか利用できない人向けの記事となります. あらかじめご了承ください.
OpenCVとかQtとか,便利ものはたくさんある
カメラやマイクといったメディアを用いるためのプログラムは多く存在する. 最近のスマホアプリだったらカメラで顔を写してウサギになったり犬になったりできる. もちろん,そういったアプリはPCにも存在する. 最近だとZoomとか,Microsoft Teamsとかのビデオ会議ツールとかもカメラを使うアプリケーションだ.
では,そういったアプリケーションを実際に作成するときにはどのようなライブラリを使えば良いか. 有名なところでいえば OpenCV とか Qt が挙げられる. これらのライブラリは,カメラへのアクセスを簡潔にしてくれるだけでなく, 取得したイメージに対してエンコード形式等を深く考えることなく,処理を容易にしてくれる. 開発者の開発体験を大いに向上させてくれるだろう.
VSCodeじゃ動かないってよ
ところが,これらのライブラリを使用してカメラやマイクにアクセスするコードを記述すると, エラーコードを出すことなく静かにプロセスを終了させる現象が発生する. それはもうとても綺麗にプロセスを終了させる.
この現象はMacOSに固有の問題だ.VSCodeはMicrosoft製なだけあって,Windowsでは正しく動く. 「セキュリティとプライバシー」をチェックしてみると確かにVSCodeはリストにない. このことから,VSCodeはMacOSへメディアのアクセス許可を発行していないことがわかる (まぁ,テキストエディタにメディアの許可なんていらないという話もあるが).
調べてみたところ,この問題に悩んでいる人は多いらしい. 公式のリポジトリにも同様の内容のissueが存在している. issueの会話においていろいろな議論がなされているが, 実はシンプルな解決方法が存在する.
VSCode以外で実行してみてはいかが?
当たり前だが,これが最も簡単な解決方法だ.
幸い,MacOSにはterminal.app
という便利なアプリも存在する.
競合アプリケーションも豊富にあり,Atom
,IntelliJ IDEA
,Sublime Text
とあげたらキリがない.
Pythonのコードを書いているならPyCharm
も選択肢の1つだろう.
何ならEmacs
,Vim
を使って玄人になる選択肢もある.
そう,可能性は無限にある.
何もVSCodeだけに執着する必要はないのだと,VSCode自身が教えてくれた.