Raspberry Piでのスマートスピーカー、そしてブラウザOS構想まで

この「移動中雑談Podcast:We Are On The Way」第11回目では、前回までの話題を踏まえつつ、GStreamer導入に関する試行錯誤や、新たな開発アイデアが次々と飛び出しました。

技術的な模索が続く中、RustやWebAssembly(Wasm)、さらにはRaspberry Piなど、取り組むべき方向性が豊富に浮かんできています。

GStreamerを試してみた話

問題点
Homebrew経由でGStreamerを入れたところ、一部プラグインが動作せず、公式サイトからパッケージを直接ダウンロードして対応しました。
公式チュートリアルではC言語でのサンプルが示されていましたが、本来ならRust版のバインディングを使って、Cargoビルドでヘッダーやリンカ設定の手間を省く方がスムーズなようです。

GStreamerの基本概念

  • Source(データの始点)とSink(終点)があり、その間にFilter(加工)やMixer(合成)などのエレメントを挟むことで、音声・映像・テキスト処理を行います。
  • Rustバインディングを使えば、Cでの煩雑な設定なしに、より簡潔なコードでパイプラインを構築できるはず。

Raspberry Piでスマートスピーカーへの野望

先週はズンダモンとの特別回を考えるも、結局モチベーションが続かずスキップしたという竹内さん。そこで浮上した新たな方向性が、Raspberry Piでスマートスピーカーを自作するという企画です。

ハード選定

  • Raspberry Pi 4あたりが適任。4GBモデルなら1万円前後、8GBなら2万円程度で入手可能。
  • 古いWindowsノートPCを流用する案も出ましたが、Linux系の方が開発環境を整えやすく、やる気も出るため却下。
  • NVIDIA Jetsonのような強力なボードもあるものの、高価なため今回はPiで手軽に始める方針。

計画

  • コワーキングスペースや会議室を借りて、ラズパイで環境構築からスタート。
  • 将来的にはRust+GStreamer+AI処理を組み合わせ、独自スマートスピーカーを実現するかもしれません。

OSを作ってみたい!ブラウザで動く小型OS構想

竹内さんは以前、マイクロカーネル方式のOS本に挑戦して挫折した経験あり。そこで新たな発想として、ブラウザ上で動く小型OSをRustで書き、WebAssembly(Wasm)で動かすアイデアが浮上。

ブラウザOSのイメージ

  • 従来のOS開発で必要なブートローダー実装などを省略し、ブラウザ上で完結する。
  • スタートページ的なUIを備え、ファイル操作やメモ帳、計算機などのミニアプリを統合。
  • 要となるのはWebAssembly(Wasm)で、ブラウザ特化の高速・安全な実行環境を提供。

WebAssemblyを巡る議論

WebAssemblyは、FigmaやAmazon Prime Video、Google Meetなどで既に利用されているものの、一般的なWeb開発者にとってはまだ敷居が高いという指摘がありました。 計算コストが高い処理やネイティブ並みのパフォーマンスが求められる特定ドメインでの利用が中心となっている印象です。

まとめ

今回のトークでは、「RustでのGStreamer活用」に続き、「Raspberry Piでスマートスピーカー自作」、「ブラウザ上で動くミニOS構想」、「Wasm活用」など、多彩なアイデアが展開されました。

  • GStreamerやRustでのメディア処理は技術的ハードルがあるものの、Rustバインディングで開発効率が上がる。
  • Raspberry Piでスマートスピーカー制作は、手軽な組み込み方向への挑戦として楽しそう。
  • ブラウザOS構想は先進的かつ実験的な試みで、Wasmの深い理解と工夫が必要。
  • 現状、Wasmは特定の高速処理領域や大規模Webサービスでの利用事例が目立ち、一般的な用途への波及にはもう少し時間がかかるかもしれない。

今後、竹内さんと僕がどの企画に注力していくのか、また実際に手を動かし始めるのか、引き続きお楽しみに!