Activ8 Tech Blog

https://synamon.hatenablog.com/

Activ8は「生きる世界の選択肢を増やす」をミッションに、メタバースエンターテインメント事業を展開する2016年創業のスタートアップです。SFの世界を現代社会に実装し、メタバース×エンタテインメント領域で日本発、世界中を魅了する会社を目指しています。 本テックブログでは、メタバース技術とその周辺の技術、開発全般に関してActiv8所属のエンジニアがお話しします。

フィード

記事のアイキャッチ画像
Rust の Stream の基本的な取り回しを理解する
Activ8 Tech Blog
こんにちは、エンジニアの渡辺(@mochi_neko_7)です。 今回は Rust における Stream の基本的な取り回しを紹介します。 Anthropic の Claude API の Rust Client を書いていた際に Streaming API の対応をしていたところ、自身が Rust の Stream をちゃんと理解していなかったことに気づき勉強し直していました。 ところが日本語で解説している記事をあまり見かけなかったため、本記事で自分の理解している範囲で基礎的な内容を整理して紹介したいと思います。 もし間違った記述等ありましたらご指摘いただけますと幸いです。 環境 Rust…
1ヶ月前
記事のアイキャッチ画像
XR Interaction Toolkitをマウス入力に対応させる
Activ8 Tech Blog
XR Interaction ToolkitはUnity公式が提供するパッケージの一つです。その中には、XR向けのインタラクションを実装する為に必要なコンポーネントが一通り揃っています。 docs.unity3d.com 私が認識している限り、今までのUnityのインタラクション事情は、UIに対してはuGUIという強力な仕組みが用意されていたものの、3Dオブジェクトに対してのインタラクションは基本的な機能しか提供されていませんでした。それだけ各アプリケーションにおいての事情が異なるという事もあるのでしょうが、このためにそれぞれの開発者が独自にEventSystemを拡張したり、Raycastし…
1ヶ月前
記事のアイキャッチ画像
Cloudflare Workers + Honoの環境構築からデプロイまでが簡単すぎた
Activ8 Tech Blog
はじめに こんにちは、エンジニアのクロ(@kro96_xr)です。 先日他社のエンジニアの方と話す機会があったのですが、そこでHono(炎)というフレームワークを知りました。 github.com 元々はCloudflare Workersに特化したWebアプリを作るために作られたものとのことで、ちょうどCloudflare Workersも触ってみたかったので試してみました。 その結果、あまりにも爆速で環境構築とデプロイが完了し、タイトルの感想を抱きましたのでご紹介します。 Honoの特徴などは開発者の方の記事にて詳しく書かれておりますのでそちらもご覧ください。 zenn.dev yusuk…
1ヶ月前
記事のアイキャッチ画像
日付ライブラリTempoを触ってみた(date-fnsと比較)
Activ8 Tech Blog
はじめに こんにちは、フロントエンドエンジニアの堀江(@nandemo_3_)です。 先日、JavaScriptの新たな日付ライブラリがTempoがリリースされました。 2023/2/26にv0.0.13がリリースされたばかりです。 tempo.formkit.com リリース3日後でStar数が1700になっており、今後の伸びが期待されるところです。 お決まりの既存の類似ライブラリとStar数を比べた画像はこちらです。 あまり情報がないので、触りながら色々試していこうと思います。 Tempoの特徴 Tempoは、JavaScriptの日付と時刻のライブラリの誇り高き伝統の中の新しいライブラリ…
2ヶ月前
記事のアイキャッチ画像
Bitbucket PipelinesのWindowsセルフホストランナーを、マシン再起動時に自動的に起動する様に設定する
Activ8 Tech Blog
Bitbucket Pipelinesでセルフホストランナーを構成する場合、デフォルトではPowershellスクリプトを使い、手動で起動する必要があります。 この場合、何らかの事情でマシンを再起動した際に、マシンに接続してランナープログラムを手動で再起動してやる必要が出てきて面倒です。 GitHub ActionsではWindowsはデフォルトでサービスとして動作しているので簡単に自動化ができるのですが、Bitbucket Pipelinesの場合は自動化するのにひと手間掛かります。 この記事では、備忘録的にBitbucket Pipelinesランナーをマシン再起動時に自動実行する方法につ…
2ヶ月前
記事のアイキャッチ画像
PEG Parserで.srtと.vttのパーサーを書いてみた話
Activ8 Tech Blog
こんにちは、エンジニアの渡辺(@mochi_neko_7)です。 今回は映像の字幕テキストを扱うためのフォーマットである SubRip Subtitle (.srt) と WebVTT (.vtt) のパーサーを PEG (Parsing Expression Grammar) を用いて Rust で実装してみた話を紹介します。 唐突ですが、OpenAI の audio/transcriptions API の response_format の説明に The format of the transcript output, in one of these options: json, tex…
2ヶ月前
記事のアイキャッチ画像
Rust/Actix-webでToDoアプリのAPIを実装してみる
Activ8 Tech Blog
はじめに こんにちは、エンジニアのクロ(@kro96_xr)です。 前回の執筆でRustのWebフレームワークについて調査してみました。 今回の記事では、その中からActix-webとORMツールのDieselを使用して、シンプルなToDoアプリのバックエンドAPIを開発してみました。 前回の記事はこちら。 synamon.hatenablog.com 環境構築 環境 今回使用したバージョンは以下になります。 cargo 1.76.0 rustc 1.76.0 actix-web 4.5.1 diesel 1.4.8 dieselは2.1系が最新ですがバージョンを上げたら動かなかったため一旦古…
2ヶ月前
記事のアイキャッチ画像
Figmaの生成AIプラグインでWebデザインを作ってSTUDIOで公開してみた
Activ8 Tech Blog
はじめに こんにちは、フロントエンドエンジニアの堀江(@nandemo_3_)です。 最近、Figmaに生成AIプラグインが多くあることを知り、デザイン制作からサイト公開まで生成AIにやらせることができるのでは?と思い、 さらに、ノーコードでWebサイトが制作できるSTUDIOというサービスがあるのですが、 これもFigmaからSTUDIOに移行が行えるプラグインがあるということで、 生成AIで作成したデザインをSTUDIOに乗せ替え、公開までしてみようと思います。 使用したプラグイン Builder.io www.builder.io Magician magician.design AI …
3ヶ月前
記事のアイキャッチ画像
UnityでOpenPose風のアバタースケルトンを表示するライブラリを作ってみた
Activ8 Tech Blog
はじめに エンジニアの松原です。前回こちらの記事で扱った、UnityでOpenPose風のアバタースケルトンを表示する仕組みを、Unityのライブラリとして開発、公開しました。この記事に実際の使い方を書きました。 synamon.hatenablog.com 今回の記事で使用しているライブラリ本体は以下のGitHubに公開しています。 github.com 英語の写植になりますが、Youtubeでも使い方の方法を公開しています。 www.youtube.com 今回説明用のアバターにユニティちゃん 3Dモデルデータを利用しました。 unity-chan.com 必要環境・必要条件 Unity …
3ヶ月前
記事のアイキャッチ画像
Unityの-nographicsオプションの影響について
Activ8 Tech Blog
Unity Editorは、コマンドラインで実行することが可能です。 docs.unity3d.com コマンドライン引数に与えるオプションによって、プロジェクトの作成、ライセンス認証(オンライン認証及びオフライン認証)、テストやビルド、C#スクリプトの実行まで、実に様々な動作が出来るようになっています。 その中に、グラフィック機能を持たない環境で動作する為の-nographicsオプションが存在します。 私はCIを触る事がよくあるのですが、CI用に用意されているマシンはグラフィック性能が抑えられている事がよくある為、このオプションをたまに使っているのですが、とある作業で、GPUが使えない環境…
3ヶ月前
記事のアイキャッチ画像
Rust/DioxusでWebフロントエンド入門してみる
Activ8 Tech Blog
こんにちは、エンジニアの渡辺(@mochi_neko_7)です。 先週の記事 synamon.hatenablog.com では Rust の Web バックエンドのフレームワークを紹介してもらいました。 本記事ではそれに続く形で、Rust で使用できる Web フロントエンドのフレームワークで、React 風の API が使用できる Dioxus に入門してみたいと思います。 Rust v1.75.0 Dioxus v0.4.3 Dioxus Hello, world 1. ツールのセットアップ 2. プロジェクトのセットアップ 3. Hello, world Dioxus 入門 1. Re…
3ヶ月前
記事のアイキャッチ画像
(2024年1月時点)RustのWebフレームワークの簡単な比較
Activ8 Tech Blog
はじめに こんにちは、エンジニアのクロ(@kro96_xr)です。 エンジニアと言いながら最近コードを書く機会が減っていたので、年末年始にRustにチャレンジしていました。 まだ全然理解しきれていないという自覚はありつつ、今回はRustの主要なWebフレームワークについて簡単に調査、比較していきたいと思います。 間違いなどありましたらDM等でご指摘いただけると幸いです。 なお、情報は全て調査時点(2024/1/8)のものとなります。 Frameworkの候補 フレームワークの比較をしてくれているリポジトリがあるので、この情報を元にピックアップしてみます。 github.com 人気のフレームワ…
4ヶ月前
記事のアイキャッチ画像
Bunで構築したNext.jsをVercelに一瞬でデプロイしてみた
Activ8 Tech Blog
はじめに こんにちは、フロントエンドエンジニアの堀江(@nandemo_3_)です。 先日、JavaScriptランタイム最新動向という記事を書いたのですが、 synamon.hatenablog.com Bunが非常に興味深く、TypeScript、Next.jsに標準対応しているということで、Vercelにデプロイできるか調べてみたところ、Bunをサポートしたというアップデート記事が見つかりました。 vercel.com 記事を見る限り、bun.lockbファイルをプロジェクトに入れて、VercelのInstall Commandにbun installを設定するだけで良さそうです。 早速…
4ヶ月前
記事のアイキャッチ画像
UnityでOpenPose風のアバタースケルトンを表示する仕組みを作ってみた
Activ8 Tech Blog
はじめに エンジニアの松原です。近年生成系AI、特にStableDiffusionの仕組みをベースとした生成系AIが目まぐるしい速度で進化しており、2023年の年間を通しても取り沙汰されない日のほうが少ないのでは、と思えるぐらい連日SNSでのニュースで見かけていました。 私自身も長いことAIのニュースを追いかけていなかったので、改めて追っていったところ、StableDiffusionの拡張機能として利用できる ControlNet の仕組みが面白く、2023年の夏ぐらいから調べていました。 今回は ControlNet でポーズの指示を扱うためのスケルトン情報(または Keypoints )を…
4ヶ月前
記事のアイキャッチ画像
ランタイムで読み込んだHumanoidモデルに読み込んだモーションを適用する
Activ8 Tech Blog
こんにちは、エンジニアの渡辺(@mochi_neko_7)です。 今回は Unity でランタイム(アプリケーション実行中)に読み込んだ Humanoid モデルに、同じくランタイムに読み込んだモーションを適用できるようにするまでの流れを解説します。 ユースケースが多くないのか世の中にあまり情報が多くない印象だったので、同様のことをされる方に参考になれば幸いです。 想定しているユースケースの一例としてはモーションビューワーで、ランタイムで外部からモーションデータを読み込んで、適当な Humanoid モデルにモーションを適用するものです。 少し前の記事 でチラッと紹介したようにモーション生成 …
4ヶ月前
記事のアイキャッチ画像
生成AIを使ってUnityのカメラアプリを作ってみた
Activ8 Tech Blog
こんにちは。Activ8の岡村です。 最近Activ8社内で生成AIハッカソンが行われたため、それに向けて作った簡単なUnityアプリをせっかくなので紹介します。*1 アプリの内容は、カメラで撮影した画像をAIに見せてプロンプトを生成し、生成したプロンプトで画像生成する、といったものです。 デモ 汚くて申し訳ないですが、自分の机の写真を用意しました。 ↓ The photo appears to depict a cluttered workstation from a first-person perspective. At the forefront, there is a black, …
5ヶ月前
記事のアイキャッチ画像
リアルタイムお絵描きツール「flowty-realtime-lcm-canvas」を触ってみた
Activ8 Tech Blog
はじめに こんにちは、フロントエンドエンジニアの堀江(@nandemo_3_)です。 社内の生成AIハッカソンのネタを探しているときに、XでLCMを用いたリアルタイムお絵描きツールがいくつかあることを知りました。 その中でも、flowty-realtime-lcm-canvasが非常に導入しやすく、初学者のような自分にとって画像生成AIの学びのきっかけになると思い、今回紹介しようと思います。 ※注意:初学者のため、間違っていることがあるかもしれません。ご了承ください。 LCMとは LCM(Latente Consistency Model: 潜在的一貫性モデル)は2023月10月に論文が発表さ…
5ヶ月前
記事のアイキャッチ画像
makereal(tldraw)を試してみる
Activ8 Tech Blog
はじめに こんにちは、エンジニアのクロ(@kro96_xr)です。 先日以下のようなポストが流れてきました。 let's go https://t.co/4dHJiLCegg pic.twitter.com/4y9VMiTN0h— tldraw (@tldraw) 2023年11月15日 言葉にするならワイヤーフレームからHTMLを生成できるツールでしょうか。 元々Miroライクなホワイトボードアプリとしてtldrawがあり、それにOpenAIのGPT-4Vを組み合わせたツールとしてmakerealが公開されたようです。 github.com github.com 私自身メインはサーバサイドで…
5ヶ月前
記事のアイキャッチ画像
Rustのcandleを使って顔検出を実装してみる
Activ8 Tech Blog
こんにちは、エンジニアの渡辺(@mochi_neko_7)です。 今回は Rust の candle という ML(Machine Learning) フレームワークを使用して、BlazeFace というモデルを用いた顔検出(Face Detection)を趣味開発で実装した話を紹介します。 Rust で ML をやること自体まだ珍しいかと思いますし、Rust で実装されている candle は開発中というのもあり情報が少ないので使用例の一つとして参考になればと思います。 BlazeFace を選んだ理由は、私自身 ML は初心者のため実装が比較的シンプルなモデル*1を自分で実装してみたかった…
5ヶ月前
記事のアイキャッチ画像
M5Stackを使ってタイムコード生成器を試作する
Activ8 Tech Blog
はじめに エンジニアの松原です。以前紹介したオーディオ・映像機器間の同期方法に関しての取り組み(その1、その2) を記事にしました。 前回記事ではオーディオ信号にLTC信号を送り、マイク入力から受け取ったLTC信号をUnity上でデコード、表示する方法について取り上げましたが、今回は前回記事とは逆に、LTC信号を送る側として、マイコンとして扱いやすいM5Stack(今回利用したのはM5StackCoreS3)とM5Stack用RCAモジュールを使ってLTC信号を生成するデバイスを試作してみました。今回はまだ試作段階で詰めが甘いところもあるため、コード公開はまた別の機会に行いたいと思います。 d…
6ヶ月前
記事のアイキャッチ画像
JavaScriptランタイム最新動向(Node.js vs Deno vs Bun)
Activ8 Tech Blog
こんにちは、フロントエンドエンジニアの堀江(@nandemo_3_)です。 2023年9月にJavaScript RuntimeのBunが、バージョン1.0をリリースしました。 bun.sh JavaScriptランタイムといえばNode.jsですが、DenoやBunとの違いは何か。 自分は恥ずかしながら、最近、Deno、Bunという新しいJavaScriptランタイムがあるということを知り、この際学び直しをしました。 JavaScriptランタイムってなんだ?DenoやBunってなんだ?っていう初心者向けの記事となります。 ランタイムとは そもそもJavaScriptランタイムのランタイムと…
6ヶ月前
記事のアイキャッチ画像
生成AIによるモーション生成技術の概観
Activ8 Tech Blog
こんにちは、エンジニアの渡辺(@mochi_neko_7)です。 昨今の生成系AIの発展のスピードが凄まじいのは言うまでもありませんが、GPT によるテキスト生成、Stable Diffusion による画像生成を発端に様々なデータの生成AIが開発されています。 本記事では 2023/07 の調査論文「Human Motion Generation: A Survey」を参照しながら、人間のモーションの生成技術の現状をざっくり紹介します。 arxiv.org モーション生成ではどのようなモデルが使用されるのか、条件付けによる利用イメージ、現状の課題などモーション生成AIの専門的な知識がなくても…
6ヶ月前
記事のアイキャッチ画像
Building Blocksで始めるMetaQuest3 MRアプリ開発
Activ8 Tech Blog
はじめに こんにちは、エンジニアのクロ(@kro96_xr)です。普段は主にサーバサイドエンジニアを担当しています。 今回は、Building Blocksという機能を使ってサクッとMetaQuest3上で動くMRアプリを開発してみたいと思います。 日本語に翻訳すると「積み木」ですが、積み木を積んでいくような感じで機能が実装できます。 開発開始 それでは開発していきましょう! なお、Unityのインストールは済んでいる前提で、今回はUnity2022.3.10f1を使用していきます。 Questを開発者モードにする まず、初期設定では自作アプリをQuest上で動かすことが出来ないため、Ques…
6ヶ月前
記事のアイキャッチ画像
Elixirのプロセス間の処理を試してみる
Activ8 Tech Blog
はじめに エンジニアの松原です。学習のためにゲーム関連のリアルタイム通信に関していろいろ調べていたところ、大規模なシステムになるほど、複数のプロセスやサーバーに処理を分散させて運用することが多いということが伺えました。 これまで私が触ってきた手続き型言語やオブジェクト指向言語(例えばC++やC#、Javascriptなど)では一纏のロジックを複数のプロセスやサーバーに分割、または平行処理をさせようとすると、言語ごとのパフォーマンスに関する優劣はあれど、元々それらの言語の仕様レベルで設計されていないため、実現するために外部ライブラリの導入や独自のAPIの定義などでかなりの労力を費やす必要があるか…
7ヶ月前
記事のアイキャッチ画像
【GAS】高度なサービス(Calendar API)を使用してイベントのURLを取得する
Activ8 Tech Blog
Google Apps ScriptのCalendarAppから取得できるCalendarEventオブジェクトには、特定のイベントのURLを直接取得できる関数が用意されていません。特にGASを使ってカレンダーとSlack等を連携させたい時、URLが取得できないのは不便です。 そこでインターネットを検索すると、 CalendarEvent.getId() を叩き、取得したIDを弄ってURLを作成する方法が色々見つかります。 しかし紹介されているそれらの手法の多くには欠点があり、Google Calendarの多彩なURLパターンに全て対応しているコードは見つけられませんでした。繰り返しイベント…
7ヶ月前
記事のアイキャッチ画像
microCMS+Next.jsで爆速でブログを作る
Activ8 Tech Blog
こんにちは、フロントエンドエンジニアの堀江(@nandemo_3_)です。 今回は特に書くことがないのですが、興味のあったヘッドレスCMSを触ってみたいなと思い、 無料で手軽に使うことができるmicroCMSを使ってブログを作ってみようと思います。 microCMSは無料枠があり、3個のAPIまで無料ということで、今回の要件程度であれば余裕で使えます。 サービス作成 早速、microCMSでサービスを作成していきます。 アカウント登録したら、すぐこの画面に行くと思います。 サービス作成には2種類あり、「1から作成する」「テンプレートから選ぶ」があります。 フロントエンドがすでにある、独自で作成…
7ヶ月前
記事のアイキャッチ画像
Unity向けの簡易的なVADライブラリの紹介
Activ8 Tech Blog
こんにちは、エンジニアの渡辺(@mochi_neko_7)です。 今回は VAD (Voice Activity Detection、音声区間検出) を Unity で利用するためのライブラリを自作してみたのでこちらを紹介します。 github.com Unity で発話している音声区間を判定したり、その音声データを切り取って何かに利用したい場合に便利なライブラリになっています。 ざっくりした説明は README にも書いてはいるのですが、こちらの記事では背景や設計などもう少し踏み込んだ話も紹介します。 以前の記事 synamon.hatenablog.com で紹介した Logging のラ…
7ヶ月前
記事のアイキャッチ画像
VTuber向けソフトウェア"Warudo"を試してみた
Activ8 Tech Blog
はじめに こんにちは、エンジニアのクロ(@kro96_xr)です。 先日"Warudo"というVTuber向けソフトウェアを知り、これは凄いと思ったので記事にしてみます。 2023年9月15日現在WarudoはSteamからダウンロードでき、個人利用であれば完全無料で使用で出来ます。 残念ながら日本語には対応していませんが、UIもわかりやすくある程度英語が読めれば使うことが出来ると思います。 store.steampowered.com 今回の記事では執筆時点で最新のバージョン0.10.13を使用しています。 セットアップ アプリケーションを立ち上げると以下のようなメニューが表示されるので、さ…
7ヶ月前
記事のアイキャッチ画像
Unity Entitiesが正式リリースされたのでマルチプレイチュートリアルを弄ってみる(その2)
Activ8 Tech Blog
前回の記事ではNetCode for Entitiesを触り、シンクライアントの挙動を実装する所までコードを書きました。 前回のプロジェクトに引き続き改造を加えてみます。 ビルドして実行してみる 前回、シンクライアントの挙動を実装しましたが、実際にマルチプレイが動作するか確認したい為、ビルドを行います。 サーバーのビルドは、ビルドプラットフォームをDedicated Serverにする事で可能です。 ただし、クライアント向けビルドに関しては、そのままWindowsプラットフォーム等でビルド実行するとサーバー機能を内包したホストクライアントとしてビルドされてしまうようです。 これを回避し、簡単に…
8ヶ月前
記事のアイキャッチ画像
RustでVectorDBを触りたい?!
Activ8 Tech Blog
こんにちは、エンジニアの渡辺(@mochi_neko_7)です。 今回は Rust で VectorDB を触ってみる話をします。 VectorDB は機械学習の文脈で使われることが多いため Python のサポートをしているものが多い一方で、Rust で直接触れるものが本当に少ないです。 なぜわざわざ Rust で使用したいのかの背景もお話ししつつ、Rust で触れる VectorDB である Qdrant、 追加で必要になる Sentence Embeddings など実装する上で考慮すべきポイントもサンプルコードを交えながら紹介します。 かなりニッチなテーマになりますが LLM の文脈で…
8ヶ月前