Skip to content

ネットワーク・通信

Takanobu INAFUKU edited this page Jul 2, 2021 · 2 revisions

リアルタイム通信 - 概観

主にメディア・アート、ウェブコンテンツ制作の分野で使われることの多い、リアルタイムに通信を行う目的で用いられるプロトコルとして、OpenSoundControl(OSC)とWebSocket(WS)について解説します。

  • これらを使えると何が嬉しいのか

    • 対応している複数のアプリケーションやプログラムを、これらのプロトコルを用いて組み合わせて使うことができるので、できることの幅が広がる
    • ひとつの環境・ソフトウェアで複雑なプログラムを書いたり設定を行う機会を減らす、分散させることができる
    • 複数のユーザーやコンピューター間でデータをやり取りできる

    etc

リアルタイム通信 - OpenSoundControl

https://yoppa.org/mit-cc20/11760.html

既に取り上げられていたので復習

リアルタイム通信 - WebSocket

https://ja.wikipedia.org/wiki/WebSocket

  • インターネット技術標準化団体によって標準化されている、TCPコネクション上でリアルタイムな双方向通信を行うためのプロトコル
  • 最近のウェブブラウザであれば標準で使える機能

リアルタイム通信 - WebRTC

https://ja.wikipedia.org/wiki/WebRTC

  • TBA

インターネット上のリソースの利用 - 概観

インターネット上に存在するデータやコンピューターリソースを自分のプロジェクトから利用する方法について解説します。

  • これらが使えると何が嬉しいのか
    • 自前で高価なセンサーなどの機材を揃えたり、現地に観測するために出向いたりする必要なく、リアルタイムに近い頻度のデータを収集できる。
    • 画像解析や音声認識など、処理能力の高いコンピューターを必要とするような仕事をクラウド上のリソースに代わってもらうことがでる。
  • Cons
    • 作品等に導入する場合はネットワーク接続が必須になるので、インフラの確保と安定性への配慮が必要になる
    • 利用にお金がかかる場合がある

インターネット上のリソースの利用 - パブリックなウェブAPIの利用

  • Google
    • 割と何でもござれ。最近はAI・機械学習関連のものが増えている
    • Google Maps API
      • 位置情報からの周辺検索とか
    • Cloud Text to Speech / Speech to Text
      • 音声合成、音声認識
    • Cloud Vision API
      • 画像認識
  • 世界各地の天気

有償無償、様々な形態で提供されているが、大抵は、一定利用まで無料、以降従量課金というパターンが多いので、使う場合は賢く使いましょう

インターネット上のリソースの利用 - スクレイピング

主にプログラムによって自動化されたウェブブラウザ(もしくはそれに準じたより低レベルのアプリケーション)を用いて、実際にアクセスしたウェブコンテンツから必要な情報を抽出すること。クローリングともいう。

パブリックなウェブAPIが提供されていなくても、工夫次第で同等の情報を得ることができる。

アクセスされるウェブコンテンツから見るとbotのような感じになるので、コンテンツ提供者によっては不正なアクセスとして弾かれる可能性もあることは考慮する必要がある。やりすぎは禁物。

  • Scrapy
    • 高速・高レベルのWebクロール・スクレイピングPythonフレームワーク
    • 機能がモジュールごとに分かれていて、抽出データの定義やパーサーなどクロール・スクレイピングに必要な道具がひと取り揃っている。
    • どちらかというとサーバー上で並列で動かして大規模なクローリングを行うような用途向きかも。
  • Puppeteer
    • Google Chrome / Chromium をリモートコントロールするためのNode.jsのライブラリ
    • あくまで自動化するためのものなので、スクレイピングに利用する場合は必要に応じて自前で実装しなくてはいけない。
    • 実際にブラウザ動かすので、得られるコンテンツの内容が正確になりやすい。
Clone this wiki locally