フレクトのクラウドblog re:newal

http://blog.flect.co.jp/cloud/からさらに引っ越しています

Amazon Chime SDK for JavaScript で Among Us Automute とゲーム実況 その2

本記事は AWS Advent Calendar 2021 の 18 日目の記事です。

こんにちは、フレクトの Among us 部所属の岡田です。

はじめに

今回は、Amazon Chime SDK for JavaScript(以降 Amazon Chime SDK と略す)を使って Among Us の Automute 機能+画面配信機能を作った話です。以前のブログでもご紹介したのですが、いくつか改良すべき点があったので、それについてお話しします。

ところで、ちょっとした宣伝ですが、弊社は日本企業で最初の Amazon Chime SDK のパートナーです。また、Amazon Chime SDK について AWS のサイト上でGuest ブログを執筆させていただいていたりもしています。今回の内容は(半分執筆者の趣味で)ゲームを題材としてますが、オンラインビデオを活用した真面目な(?)サービス開発の実績もございますので、興味を持たれましたらぜひ弊社にご相談いただければと思います。1

image


  1. ゲームが不真面目というわけではありません。執筆者はこの記事も本気で書いています。

続きを読む

Slack通話の内容をSlack上で見えるようにしよう

本記事は Slack Advent Calendar 2021 の 7 日目の記事です。

はじめに

こんにちは。研究開発室の岡田です。

ここ数年で多くの企業がリモートワークを導入するようになりました。このような企業では、Slack をはじめ、業務を効率化するために様々なコミュニケーションツールを活用していると思います。しかし、それでも会話や雑談が不足して様々な問題が発生している状況のようです。

参考:会話と雑談の不足で 7 割以上が心的不調

一方で、オフィスのように雑談が突発的に時間を選ばずに発生するような環境のほうが嫌だという人も一定数いそうです。仕事に集中したい時に、近くで面白そうな話を雑談されていると気になって困ることもありますし(自分の意志が弱いだけです。。)。

とはいうものの、やはり楽しそうに話している雑談や興味のある話をしている雑談には混ざりたいです。おそらく、"雑談の内容が面白そうレベル"が"仕事に集中したいレベル"を超える場合があり、そういったときに意識的に参加できるというのがストレスのない環境なのではないでしょうか。

ところで、私の職場では Slack に雑談用のチャネルがあり、そこで Slack 通話を用いて雑談をすることが多いです。Slack 通話を始めてしまうと参加者以外は雑談の内容を一切知ることができません。オフィスで業務している時であれば、雑談の内容が漏れ聞こえてきて、面白そうなら参加するといったこともできました。しかし、Slack 通話の場合は内容がわからないので、私のような引っ込み思案の人たちは参加していいものか迷ってしまいます。もし、Slack 通話の内容を参加者以外が知ることができれば、このような人たちが雑談に加わる機会が増えるかもしれません。また、オフィスでは耳栓でもしないと雑談を完全にシャットアウトするのは難しいです。しかし、Slack 通話の内容を Slack 上で見えるようにする方法であれば意図的に雑談用のチャネルを開かなければ雑談に気を散らされることなく仕事に集中できそうです。

そういうわけで、今回は Slack 通話の内容をチャネル内に表示する "speech-to-text-chat" という Slack App を作ってみましたのでご紹介します。 実際の動きとしては、下図のように Slack 通話の内容がテキストで投稿されるようになります。 image

続きを読む

Amazon Chime SDK for JavaScriptの新機能背景ぼかしの性能を評価する

こんにちは。研究開発室の岡田です。

先日Amazon Chime SDK for JavaScript に待望の背景ぼかし機能が追加されました[参考]。これまでも以前ご紹介したようにVideo Processing API を用いて仮想背景を実装することはできました。しかし、この場合 bodypix など人物と背景を分離するための機能を開発者が用意しなければならず、比較的実装のハードルが高くなっていました。今回の新機能により、人物と背景を分離したうえで背景をぼかすところまでを Amazon Chime SDK for JavaScript が全部やってくれるようになり、簡単に実装できるようなりました。

この機能の利用方法やデモについては、AWS 様の Guest Blog という形で 紹介させていただくことができましたので、こちらのブログをご参照ください。

https://aws.amazon.com/jp/blogs/business-productivity/blur-your-background-and-suppress-noise-in-an-online-meeting-application-built-with-the-amazon-chime-sdk-for-javascript/

このブログでは、上記の Guest Blog の執筆と合わせて実施した簡易版の性能評価の結果についてご紹介したいと思います。

続きを読む

Demonstrating Control AR Remote Instruction App by Hand Gestures

This is Shuochen Wang from R&D department in Flect. In this blog I am going to share my implementation on controlling AR remote instruction app by hand gestures.

Introduction

Why do we need remote instruction?

The Coronavirus has forever changed the way of living. One of the changes is avoiding face-to-face communication if necessary. Remote instruction is the perfect solution for the current problem because it eliminates the needs of the instructor to go to the operation site. The reason for the instructor could not go to the operation site could either be it is not recommended or impossible (for example overseas). Therefore, the need for remote instruction is ever increasing.

I have been working on developing a remote instruction app for the iPhone since last year. This year, my focus is on the ways to control the remote instruction using hand gestures. In March this year, I have published a blog about Manipulate AR objects using UI Gesture and Hand Gesture. In that blog, I have introduced how to set up AR world map, adding AR objects and then controlling them using UI gestures and hand gestures.

続きを読む

MuleSoft開発 冗長化について - その2

こんにちはCI事業部の川瀬です。

前回の記事からだいぶ経ってしまいましたが、フォルダ監視のアプリケーションの冗長化について続きをやっていきたいと思います。

結論から言うと、前回お話した通りこのようなポーリング系のアプリは冗長化しないで済むならしないことです。自動再起動に任せられるならこちらに任せてしまいましょう。 とは言え、何らかの理由で冗長化しなければならない場合もあると思います。

その場合は、スケジューラとObject Storeを使います。Object Storeにフラグを設定し、そのTTLはスケジューラの間隔より長くします。

f:id:k2-flect:20211012200102p:plain
スケジューラ

次にOn New or Update Fileを使用したフローを作成します。このフローの中では、Object Storeの有無を判別し、存在しない、つまりTTLの時間が経過しObject Storeが存在しない場合には、後段の処理を実行します。 ご存じの通り、スケジューラは冗長化しても1つのWorkerでしか動作しません。このWorkerが起動しなくなった場合、別のWokerでOn New or Update Fileをトリガーに処理が継続されることになります。

f:id:k2-flect:20211012200808p:plain
On New or Update File

ここで注意しなければならないことは、Workerがダウンし自動再起動が実行されるまでの間は、もう1方のWokerではスケジューラは動作しないことです。

docs.mulesoft.com

もう1つ、別のやり方としては冗長化構成しているアプリでMQ(VM or Anypoint MQ)を使用するやり方です。ただし、別のアプリからこのMQに対し、定期的にキューを送信する必要があり、この別アプリがダウンしてしまう場合もあります。結局この部分に対しては、自動再起動で対応するしかありません。

以上、フォルダ監視のアプリケーションの冗長化について記載してみました。このような複雑な処理をするぐらいなら、自動再起動だけで対応することも検討してもよいと思います。

Anypoint PlatformのDesign Centerを使ってみよう(3)

みなさまこんにちは、CI事業部の釜谷です。

フレクトでは、2020年度からMuleSoftに注力しています。
MuleSoftに興味のあるそこの貴方!是非フレクトにご相談ください!!

今回は前回に引き続き、Design Centerを紹介したいと思います。


今回のトピック

作成したAPI仕様を公開しよう!、です。

どこに公開されるの?

組織(ビジネスグループ)内のAnypoint Exchangeに、アセットとして公開されます。

公開するとなにがうれしいの?

Anypoint Exchangeの利用権限があるユーザが、アセットを利用できるようになります。

どのような利用方法があるの?

  • 組織内のAnypoint Platform利用者に、アセットが共有できます。
  • Anypoint Studio(Muleアプリケーション開発用IDE)にアセットを取り込み、アプリケーション開発で利用できます。
  • API ManagerのAPIインスタンスにアセットをインポートすることができます。

公開するにはどうするの?

API DesignerのPublish機能を使用します。

Public機能の使用方法

  1. 公開したいAPI仕様を開き、「Publish」をクリックします。
    f:id:flect-kamatani:20211006082828p:plain:w300:h100

  2. 「Publish to Exchange」をクリックします。
    f:id:flect-kamatani:20211006082817p:plain:w200:h150

  3. 「Asset version」欄、「API verison」欄に、バージョン情報を設定します。
    f:id:flect-kamatani:20211006082826p:plain:w300:h150

  4. 設定後、「Publish to Exchange」をクリックします。
    f:id:flect-kamatani:20211006082824p:plain:w300:h150

  5. Publish機能完了後、ダイアログが表示されます。
    f:id:flect-kamatani:20211006082821p:plain:w300:h150

  6. Anypoint Exchangeに移動すると、Publishしたアセットが表示されます。 f:id:flect-kamatani:20211006082819p:plain:w400:h300


次回も引き続き、Design Centerを紹介したいと思います。 (Design Centerばかりしつこいですか?もう少しお付き合いください。。。。)

本記事で、少しでもMuleSoftに興味を持って頂けたら幸いです!

Improve the hand gesture stability of the Vision framework's using filters

This is Shuochen Wang from R&D department in Flect. In this blog I am going to explain how to improve the hand gesture stability of the Apple's Vision framework by using filters.

The Vision framework performs face and face landmark detection, text detection, barcode recognition, image registration, and general feature tracking. Vision also allows the use of custom Core ML models for tasks like classification or object detection. In this blog, we will use the body and hand pose detection function. Specifically, we will use the hand pose detection function to obtain the coordinates of the finger joints.

In my previous blog I have explained about how to manipulate AR object using hand gestures. We used the Vision Framework to obtain the hand position. Because we do not use actual sensors or trackers that can measure the finger positions accurately, there will be errors in the measurement.

In this blog, I have performed an experiment to examine how filter can reduce the uncertainties of the hand pose detection of the Vision Framework. Before explaining the experiment, I would like to demonstrate the problem with the current hand gesture detection.

続きを読む