Happy Elementsのフィード
https://zenn.dev/p/happy_elements
京都でスマートフォン向けゲームを開発・運営している Happy Elements カカリアスタジオの Publication です
フィード
GitHubProjectを使用して便利だった設定の紹介
Happy Elementsのフィード
GitHubProjectを使用して便利だった設定を紹介したいと思います。 Workflowsの活用GitHub上のPRやIssueを自動的にProjectに紐づける(または、アーカイブする)設定が可能です。GitHubProjectの設定画面より「Workflows」を開きます。Issueが作られた時にProjectに紐づけるいつ:boys2_issues に Issue が Open したときにどうする:Project項目を追加する(Add the item to the project)Issueが閉じられてn日間経過後にProject項目をアーカイブ...
9日前
【C#】シンプルなあいまい検索を実装してみた
Happy Elementsのフィード
はじめに本記事では、あいまい検索の中でも比較的シンプルな実装について、ご紹介します。また、住所一覧から住所を検索するUnityエディタ用の機能を用意して、動作を確認してみます。 参考情報本記事を執筆するにあたり、以下を参考にいたしました。有益な情報を公開していただき、ありがとうございます。 実装に関する参考情報より高度な実装が知りたい方は、こちらをご参照ください。https://postd.cc/reverse-engineering-sublime-text-s-fuzzy-match/ 住所一覧に関する参考情報動作確認時に使用する住所一覧については、以下...
25日前
[Unity]3D映像表現のマルチアスペクト対応
Happy Elementsのフィード
Happy Elements株式会社 カカリアスタジオで『あんさんぶるスターズ!!Music』のゲームエンジニアをしているI.Y.です。この記事では、Unityで作成した3Dの映像表現を、様々な解像度・アスペクト比の端末で違和感なく表示するために行っていることについて、簡単にご紹介いたします。また、関連する話題として、空間に色を加えるためのポストエフェクトの実装について少し説明いたします。 前提モバイルアプリ「あんさんぶるスターズ!!Music」の音楽ゲームで表示されるMVで使われているものです。Unity2022.3系、Built-in Render Pipeline で開発...
1ヶ月前
乱数アルゴリズムについて
Happy Elementsのフィード
はじめにユニークなIDを登録する場合、128bitのランダムな数値であるバージョン4のUUIDがよく使われています。このUUIDは同じIDが被る衝突確率が限りなく低く、安全にユニークな値を得られます。どれくらいの確率かというと約3*10^17回UUIDを作っても99%の確率で、連続して一個も被らずUUIDを作れる可能性があるというくらい低い確率です。そんなUUIDについて上長と話していた時に、一つの疑念が思い浮かびました。「完全に一様なランダムアルゴリズムがあれば128bitもいらないんじゃないか?」UUIDの6bit分は決まってるので数の総数的には2^122個の数値があり、総...
2ヶ月前
Railsパフォーマンスチューニング: ActiveRecordインスタンス化する個数を減らす
Happy Elementsのフィード
はじめに去年あたりから、運用ゲームアプリのサーバーサイドが抱える負債返済を目標に掲げて、モニタリングツール(本記事の内容を実施していた時点ではNew Relic)で処理時間が目立つAPIの調査、改善を行っていました。特に処理時間がかかっているものに、ログインAPI(タイトル画面で呼び出される)が挙がっており、本文書はそれを改善した話になります。 調査(応答が遅いなど)一定条件を満たしたトランザクションについて、トレースログを確認することができるので、処理時間の中で特に大きな割合を占めているもの(Slow span)を退治していきます。デフォルトだとコード部分はApplic...
3ヶ月前
【Rails】ActiveRecordでXAトランザクションを無理やり使う
Happy Elementsのフィード
概要シャーディングを使うマルチDB環境において、シャードを跨る更新処理の整合性を高めたい。Railsで実現するなら、トランザクションのネストが常套手段と思います。トランザクションをネストする場合、タイミング次第で一方のDBはコミット、一方のDBはロールバックといった不整合な状態になり得ます。更に精度を高める手段として分散トランザクションがあります。分散トランザクションは、複数の独立したデータベースやリソースマネージャに対して一貫したトランザクション処理を保証するための技術です。MySQLには分散トランザクションとしてXAトランザクションという機能があり、Railsから使っ...
3ヶ月前
AndroidStudioが意外と便利だった
Happy Elementsのフィード
はじめにUnityでゲーム開発をしているとめったに触れることのないAndroidStudioですが、けっこう便利だなと思える場面が多々あったので、そのご紹介です。確認環境:MacOS Ventura 13.7Android Studio Koala 2024.1.1 Patch 1 logcatが見やすいAndroid実機からのログ表示に使うadb logcatコマンド。adb logcat -s Unity:Eこのようにオプションの指定で出力をフィルタして利用するのが一般的かと思いますが、AndroidStudioのLogcatタブから見ることも出来ます。色分...
4ヶ月前
HttpClient と YetAnotherHttpHandler で AssetBundle のダウンロードを HTTP/2 化してみる
Happy Elementsのフィード
はじめにAddressables を利用しつつ、AssetBundle のダウンロードを HTTP/2 化することで、高速化できるような仕組みを考えたいと思います。 前提Addressables では BundledAssetGroupSchema の AssetBundleProviderType に設定されている IResourceProvider の実装に従って、AssetBundle をロード・アンロードします。Addressables のデフォルトでは、AssetBundleProvider という実装が設定されており、内部的に AssetBundleResou...
4ヶ月前
【MySQL】UPDATE or INSERT な UPSERT を諦めた話
Happy Elementsのフィード
概要MySQLを利用するアプリケーションで、UPSERTをINSERT or UPDATEではなく、UPDATE or INSERT にしたかったけど、諦めた話です。 目的MySQLでUPSERTはINSERT ... ON DUPLICATE KEY UPDATEを使うのが定番です。INSERTでduplicateとなった場合にduplicateなレコードに対してUPDATEを行う挙動で、この記事ではINSERT or UPDATEとします。上記の挙動により生じる、以下の点について対策することが目的となります。更新が主なテーブルの場合、上記のクエリによる重複判断のオ...
4ヶ月前
【Ruby on Rails】FCMのHTTP v1 APIでのプッシュ通知配信の基本や上限の話
Happy Elementsのフィード
はじめにFirebase Cloud Messaging(FCM)を利用したリモートプッシュ通知の配信について、2024年6月20日で従来利用していたLegacy APIが廃止になり、HTTP v1 APIへの対応を行いました。少し記事にするのが遅くなりましたが、対応を行ううえで色々と調べたので、自分の中での整理も兼ねて、これから対応される方や新たにRuby on RailsアプリやRubyでFCMを使ってリモートプッシュ通知を配信したい方のお役に立てればと思い、まとめてみたいと思います。HTTP v1 APIについてhttps://firebase.google.com/d...
4ヶ月前
日時偽装事情について考えてみる
Happy Elementsのフィード
はじめに先日、チーム内のエンジニアで雑談している際に、過去案件での「日時偽装」事情について少し盛り上がったので、この機会に振り返りも兼ねて共有できればと思います。また、日時偽装については、過去にも弊社で投稿している記事がありますので、よろしければそちらも御覧ください。 日時偽装について日時偽装は、「未来に開催されるあの施策を確認したいので、一時的に日時を○○にしたい!」ってときに使うシステムです。弊社のようにゲーム運営をしていたり、WEBサービスを提供している企業ではわりとメジャーなシステムかと思います。 日時偽装方法についてさっそく本題なのですが、そんな日時偽装を...
5ヶ月前
[Unity]Hierarchyウィンドウで参照切れを発見できるようにすると便利
Happy Elementsのフィード
Hierarchyウィンドウで参照切れを発見できるようにする方法を紹介します。基本的に以下の記事の実装を参考にさせていただきました。https://qiita.com/masamin/items/78ba7238dae7aacdc28c 元記事からの変更点元記事と基本的に同じですが、以下の点が異なります。Required属性がついているフィールドがnullの場合もエラーアイコンを表示する。(上記スクショのMain)子オブジェクトが展開されていない場合に、子オブジェクトのどこかに参照切れがある場合は警告アイコンを表示する。(上記スクショのBattleField)エラーメ...
5ヶ月前
半透明EffectにDepthOfFieldを適用してみた
Happy Elementsのフィード
はじめにUnityのデフォルトのPostEffectのDepthOfField(以下、DOF)では、ShaderGraphやVFXGraphで作成した半透明エフェクトにはぼかしの効果がかかりませんでした。この記事では、そのエフェクトにもぼかし効果が反映されるように対応した内容を紹介します。 動作環境Unity 2022.3.23f1Universal RP 14.0.10 結論からデフォルトDOFで思った通りボケなかった半透明エフェクトもカメラからの距離に応じてボケるように対応しました。デフォルトDOFカスタムDOF DOFの仕組みに...
6ヶ月前
Difyの活用について
Happy Elementsのフィード
Difyを導入しました弊社では主にデータ分析やプログラミングの効率化などでLLMを活用しています。GPT-4が出て4ヶ月後には誰でも利用可能な形でチャット機能をリリースするなど環境整備を行ってきました。当時はフロントエンドとして以下のOSSを使いLLMはAzure OpenAI Serviceとつなぎ、RAGは自前のサーバーで実現していました。https://github.com/ChatGPTNextWeb/ChatGPT-Next-Webしかしながら、LLMの進歩も著しく最先端モデルや各種周辺サービスの発展速度に対して、画像チャット機能の導入やClaude3やGemin...
6ヶ月前
cognito-at-edge は CookiePath を指定して使おう
Happy Elementsのフィード
awslabs/cognito-at-edge を利用する場合、以下のように cookiePath を設定しておきましょう。v1.5.1 現在では cookiePath が正しく設定されていない場合にリダイレクトループが発生することがあります。const { Authenticator } = require('cognito-at-edge');const authenticator = new Authenticator({ region: 'aws-region', userPoolId: 'user-pool-id', userPoolAppId:...
6ヶ月前
[Unity]Hierarchyのパスへのコピー/展開対応をしました
Happy Elementsのフィード
はじめにUnityでの開発で、特定のオブジェクトの修正をデザイナーさんから依頼されることがありました。オブジェクトのパスをコピー/展開できるようにして開発を少し楽にできるようにしました。 動作環境Unity 2022.3.14f1UnityCsReferenceの内部メソッドを使っているので、バージョンが変われば動かなくなる可能性があります。 対応のきっかけ画像のLeftButtonのラベルのサイズを大きくして欲しいという依頼があったとします。自分の探し方としては、アプリを実行してInspectorでチェックを外して、どこにあるかを探しています。以前はHie...
7ヶ月前
Xcode15.3でビルドしたUnityアプリをiOS17で実行した際に%が二重にURLエンコードされる件とサーバ側回避策
Happy Elementsのフィード
概要Xcode15.3でビルドしたUnityアプリをiOS17で実行した際に%が二重にURLエンコードされる問題があったサーバ(Rails)側で回避策を講じた 環境Unity2021.3.29f1Xcode15.3 発生した現象運用中のUnityアプリで、Xcodeを15.3にバージョンアップしたビルドで動作確認をしていたところ、iOS17のみサーバ(Rails)の特定APIアクセス時にサーバ側アプリケーションエラーが発生するようになりました。iOS16以下、Androidでは従来通り問題なし。 調査経緯サーバ側の行動ログから、当該リクエストのURL...
8ヶ月前
zendeskのチケットを削除してストレージの容量を確保する
Happy Elementsのフィード
これはなに?皆様zendeskのAPIやツール使ってますでしょうか?仕事柄いろんなwebサービスのツールやAPIを使いますが、Rubyの環境においてはzendeskの公式ライブラリ群の使い心地が私はとても好きです。https://github.com/zendesk/zendesk_api_client_rbこの記事では、zendeskのAPIを使ってzendeskの古いチケット(と添付ファイル)を削除する方法を紹介します。また、削除操作は一定期間zendeskのストレージの容量に反映されないのですが、zendeskサポートへの問い合わせを経て把握した仕様を共有します。2...
10ヶ月前
【Rails】trilogyとmysql2によるActiveRecordの速度比較
Happy Elementsのフィード
概要trilogyなるMySQLのデータベースアダプタが速い、ということで試しました。今回はmysql2とtrilogyで同じ計測を行い、CRUD全般(Create/Read/Update/Delete)でtrilogyの方が速い結果になりました。ただし、activerecord-importによるバルクインサートは遅くなりました。2024.3.1追記バルクインサートをimport!からinsert_all!に変えたところ、trilogyの方が速い結果になりました。2024.3.19追記trilogy+activerecord-importのバルクインサートがなぜ遅いか...
1年前
具体例から知る実践的LLMプロンプトテクニック - プロンプトエンジニアリング最初のステップ
Happy Elementsのフィード
プロンプトエンジニアリングプロンプトエンジニアリングは「LLMのパワーを効果的に活用しよう」というアプローチであり、複雑な推論など実験的な手法も含んでいるとは思います。その一方で、要素としては現状ですでに実践的な手法も含んでいると感じました。そこで、現状において実践的なプロンプトテクニックだと感じたものをまとめました。 ケーススタディ逆順のアルファベットテキストを生成するということを具体例とします。 1文で行うまず、シンプルに一文で行うパターンです。inputI'd like to get text which is alphabet reversed sequ...
1年前