React 18の新機能によるパフォーマンス改善について実際に動かして確かめる

こんにちは、フロントエンドエンジニアの堀江(@nandemo_3_)です。 ちょっと前の記事になりますが、Vercelより「How React 18 Improves Application Performance」という記事の投稿がありました。 vercel.com React 18で導入された最新機能が、アプリケーシ…

librgを使って仮想空間上にいる他の人を検索してみる

はじめに エンジニアの松原です。最近リアルタイムネットワークに関連するフレームワークやプロトコルについて調べていますが、リアルタイム通信に関連してオンラインゲームの仕組みを調べることもあります。今回の記事はオンラインゲームに関連した調査の中…

Unity Entitiesが正式リリースされたのでマルチプレイチュートリアルを弄ってみる

Unity 2022 LTSのリリースにあわせて、長らく開発中だったECSがEntitiesパッケージとしてついに正式リリースされました。 正式版のEntitiesに対応したNetCode for Entitiesもあわせてリリースされており、今回はそちらが本題です。 公開されているチュートリ…

Public IP InsightsでIPv4の使用状況を確認してみる

こんにちは、エンジニアのクロ(@kro96_xr)です。 今回はAWSから先日発表されたIPv4への課金に関して、同時に公開されたPublic IP Insightsを使ってコスト試算する手順を試してみました。 N番煎じ感が否めませんがよろしくお願いします。 はじめに 先日AWSか…

Unityでもgrpc-dotnetを使ったgRPCがしたい

こんにちは、エンジニアの渡辺(@mochi_neko_7)です。 今回は grpc-dotnet のライブラリを使って Unity を gRPC のクライアントとして利用する話を紹介します。 Unity で gRPC を使うにはいくつか選択肢がありますが、今回はサポートの切れている Grpc.Core…

AWS Lambda Web AdapterでServerless Next.jsを実現する

こんにちは、フロントエンドエンジニアの堀江(@nandemo_3_)です。 2023年6月22、23日にAWS Dev Day 2023が開催されましたが、 「モダンフロントエンド デザインパターン〜優れたUXを実現するには〜」というフロントエンドの最新動向に関するセッションがあ…

LTレポ「SentenceBERTを使って「草」や動画チャットのコメントの特徴を追ってみた」

広報の熊谷(@spirea_xxx)です! 2023年5月をもってSynamonとActiv8は経営統合をしたのですが、統合後の社内イベント第一弾として5月2日に「生成系AI活用について」をテーマに社内ハッカソンを開催しました! 会場はSynamonオフィス、オンラインでも参加がで…

NetMQ(ZeroMQ)を触ってみる

はじめに エンジニアの松原です。前回の記事( RabbitMQを使って開発言語の異なるアプリケーション間のメッセージ処理を試す ) に引き続き、ZeroMQについて取り上げたいと思います。 synamon.hatenablog.com ZeroMQの設計パターンについて 前回の記事で紹介し…

Github ActionsとSlackとLambdaを連携して社内向け署名付きURLを生成する

こんにちは、エンジニアのクロ(@kro96_xr)です。 今回はタイトルの構成で署名付きURLを生成する仕組みを作ってみました。 はじめに ことの発端は「GithubActionsでビルドした成果物を社内メンバーがダウンロードできるようにしたい」という要望です。 素直に…

子オブジェクトが目的の姿勢に一致するように親オブジェクトを動かす

エンジニアの岡村です。 xR系のプロダクトやらプロトタイプやらを作っていると、タイトルの様な事をしたいなと思う事がたまにあります。 その時々にコードを適当に書いては「あれ?動かないな?」となる事が多かったので備忘録を残しておくことにしました。

Unity公式のLoggingパッケージが使い勝手が良さそう

こんにちは、エンジニアの渡辺(@mochi_neko_7)です。 先日Unity 2022 LTSがリリースされたので触っていたのですが、ふとPackageをチェックしていたところ、 Unity公式のLoggingパッケージが存在することに初めて気が付きました。 しかもドキュメントやAPI…

Next.js(TypeScript) + react-three-fiberでVRMを表示する

こんにちは、フロントエンドエンジニアの堀江(@nandemo_3_)です。 前回、Babylon.jsを使って簡単に、Web上に3Dモデルを描画しました。 synamon.hatenablog.com 元々は、Web上でVRMを描画したかったので、今回はそちらにチャレンジしていきたいと思います。…

RabbitMQを使って開発言語の異なるアプリケーション間のメッセージ処理を試す

はじめに エンジニアの松原です。これまでの記事( Kafkaその1 Kafkaその2 )でもメッセージキューイングに関するトピックを扱っていましたが、今回は他のメッセージキューイングのサービスのうち、RabbitMQについて取り上げたいと思います。 synamon.hatenabl…

Gitリポジトリから意図しない改行コードを出来る限り排除する

Git

歴史上の都合により、Windowsは改行コードにCRLF、Mac及びLinuxはLFを使用しています。 Linuxやmacプラットフォーム上で動くアプリをWindowsで開発している時、例えば.sh等を書いている時は、ファイル内にCRLFが混入すると、改行コードを誤認識してしまって…

今更だけどYouTube LiveのメッセージをUnityで取得してみる

こんにちは、エンジニアの渡辺(@mochi_neko_7)です。 最近は趣味で専らLLM周辺の技術を触ったりプロトタイプを作ってみたりしていますが、今年のGWはずっと気になっていたAITuber*1を触っていました。 まとまってはいませんがAITuberの詳細が気になる方は…

Generative Agentsを作成するAPIサーバと管理画面をローカルで作って遊んでみた

はじめに こんにちは、エンジニアのクロ(@kro96_xr)です。 先月の頭にGenerative Agentsに関する論文が話題になりましたね。 arxiv.org そして、このGenerative AgentsについてはLangChainで実装例が提供されています。 python.langchain.com この機能をWebA…

Babylon.jsとreact-babylonjsで3Dモデルを描画してみた

こんにちは、フロントエンドエンジニアの堀江(@nandemo_3_)です。 2023年4月21日にBabylon.jsのバージョン6がリリースされ、界隈では話題になっておりますが、メタバース業界にいるフロントエンドエンジニアとしては、キャッチアップしておきたいと思い、B…

RecyclableMemoryStreamを使ったメモリプールのご紹介

こんにちは、エンジニアの庭山です。 Microsoftが公開している Microsoft.IO.RecyclableMemoryStream というC# 用のライブラリの紹介をさせて頂きます。 目次 目次 System.IO.MemoryStreamに特化したプーリング コードの典型例 活用例 メモリ管理方法 スロッ…

LangChainをFastAPI経由でUnityで利用する

こんにちは、エンジニアリングマネージャーの渡辺(@mochi_neko_7)です。 先日、LangChainというLLMを扱うPythonライブラリをDocker上で動かしてみた話を記事で紹介しました。 synamon.hatenablog.com 今回はその発展として、ローカルDocker上のLangChainを…

TypeScriptでサードパーティー性ライブラリに依存しないように実装を考えてみた

はじめに エンジニアの松原です。最近業務でAWSのLambda(Node.js)を利用した機能を開発しています。素のJavascriptを書いていくのは躊躇われたので、TypeScriptで書いています。 今回はTypeScriptを使ってコードを書いていくうちに、継承やインターフェース…

ftpサーバーにupload/download-artifactsするGitHub Actionを作った

はじめに GitHub ActionsとNASへのアップロード アップロード方法の検討 公式upload-artifactアクションのカスタマイズ フォークしたupload-artifactアクションの実装 自作したActionの感想 GitHub Marketplaceへの公開 まとめ はじめに 株式会社Synamonのエ…

LangChainをLocalのDockerで動かしてみる

こんにちは、エンジニアリングマネージャーの渡辺(@mochi_neko_7)です。 最近常に話題になっているChatGPTを始めとするLLM(Large Language Model)ですが、APIを利用して単にChat(正確にはChat Completion)をする以外に少し凝ったことをしたいというケ…

React Docsの「You Might Not Need an Effect」をしっかり理解する

こんにちは、フロントエンドエンジニアの堀江(@nandemo_3_)です。 だいぶ時間がたってしましましたが、 Reactのドキュメントが一時、Twitterで話題になりました。 話題となったドキュメントはこちらです。 react.dev タイトル「You Might Not Need an Effe…

Unityに最適化した音声デコードライブラリを自作する上で工夫したこと

こんにちは、エンジニアリングマネージャーの渡辺(@mochi_neko_7)です。 今回はUnityで音声データをランタイムでデコード/エンコードするライブラリを作った話を紹介します。 先日、OpenAIのChatGPTやWhisperをWebAPIで利用できるようにする話を記事で紹介…

ServerlessFrameworkを使ってChatGPT APIを使ったLineBotを作る

はじめに こんにちは、エンジニアのクロ(@kro96_xr)です。 最近、5年くらい前にQiitaで書いた記事にちょこちょこいいねをいただくんですよね。 qiita.com なぜ今更この記事を見てもらえているんだろうと考えていたところ、ChatGPT APIを用いたLineBotの作成…

雰囲気でDocker Composeを触っている状態から脱するために調べたこと(2023)

エンジニアの岡村です。 自分はサーバーがメインではなく、あまり業務でガッツリ触るわけでもないのですが、最近それなりに活用するようになってきました。しかし、ネット上の日本語情報を読んでいるだけではこれの書き方が正しいのかよく分からない、と悩む…

OpenAIが公開したChatGPTとWhisperのAPIをUnityでサクッと触れるようにした

こんにちは、エンジニアリングマネージャーの渡辺(@mochi_neko_7)です。 つい先日の2023/03/01、OpenAIがChatGPTとWhisperの新しいAPIを公開して話題になりましたね。 利用料金も1/10程度になり、気軽に利用しやすくなりました。 これらはWeb APIとして公…

package.jsonのリリースバージョンをGitHub Actionsで更新する

こんにちは、フロントエンドエンジニアの堀江(@nandemo_3_)です。 フロントエンドチームの業務改善の観点から、以前からissueに上がっていた本件を調査、対応しましたので備忘録として紹介いたします。 背景 フロントエンドチームが開発、運用しているSYNM…

C#からC/C++のネイティブプラグインを使用するときに注意すること

こんにちは、エンジニアリングマネージャーの渡辺(@mochi_neko_7)です。 本記事では、Unity/C#からC/C++で作られたネイティブプラグインを呼び出す、いわゆるC# Bridgeなどを作成する際に知っておくべきこと、注意すべきことを紹介します。 ネイティブプラ…

Kinesis Data Firehose+S3を使ったログ基盤をTerraformで構築する

はじめに こんにちは、エンジニアのクロ(@kro96_xr)です。 今回はサーバレスなログ基盤を構築、検証してみたため、その内容について書きたいと思います。 検証を実施した背景 弊社はSYNMNというアプリを提供していますが、将来的にアプリ内でのユーザー行動…