COLOPL Tech Blog

コロプラのエンジニアブログです

CEDEC2026の「この講演よかったよ」を持ち寄る社内LT会を開催しました!

こんにちは、エンジニアの中途採用と技術広報を担当しているT.Aです。 7月に開催された CEDEC2026 に、コロプラからも多くのエンジニアが参加しました。8月31日には参加したメンバーが集まり、「CEDEC参加者による この講演よかったよLT会」を開催しました。…

「文字列の長さ」の判定で気をつけるべきこと【後編】MySQL と Spanner のカラム長

こんにちは、エンジニアの 工藤 です。 この記事は前後編の後編です。前回の記事は こちら です。 前編では、 PHP で「文字列の長さ」を数える単位は一つではないこと、そして名前入力のような場面では書記素クラスタ数とバイト数の両方に上限をかける必要が…

「文字列の長さ」の判定で気をつけるべきこと【前編】Unicode と PHP の文字列処理

PHP

こんにちは、エンジニアの 工藤 です。 ゲームに限らず、どんなアプリケーションを実装する時もユーザーが「文字入力」する場面はあるかと思います。 だいたいのアプリケーションでは、入力できる文字を絞ったり、文字列の長さに上限を設けたりしていると思…

リアルタイムフレームワーク「prizm」について社内勉強会を開催しました

こんにちは!サーバー基盤グループの阿部です。 今回は内製のリアルタイムフレームワーク「prizm」をテーマにした勉強会を開催しましたので、その様子をご紹介します。 prizmとは prizm は、複数のクライアントが1つのサーバーに接続し、Room と呼ばれる単位…

Agones でマッチング情報をゲームサーバーに届ける metadata の事例紹介

こんにちは。エンジニアの薮 (@tyabu12) です。 Kubernetes 上でゲームサーバーを動かす Agones を使っていると、マッチメイキングで確保したゲームサーバーに「この部屋はどんなルールで、誰が来る予定なのか」を伝えたい場面が出てきます。本記事では、Ago…

Spanner エミュレータの排他ロックを回避してテストを並列化し、CI の実行時間を約3分の1にした話

こんにちは。エンジニアの薮 (@tyabu12) です。 Spanner を使ったバックエンドのプロジェクトで開発や運用が進みテストコードが増えてくると、CI の待ち時間が少しずつ開発サイクルのスピードを削っていきます。コロプラのとあるプロジェクトでは、CI テスト…

リアルタイムサーバーも .NET C# でいけそうか? Go / C++ / Node.js とパフォーマンスを比較しました

こんにちは、サーバー基盤グループの新井です。 社内では API サーバーを .NET C# で開発する検証 が進んでおり、リアルタイム通信用のゲームサーバー(リアルタイムサーバー)も同じ言語で書けないかと考えました。 そこで .NET / Go / C++ / Node.js でリ…

Slackのメッセージや記事を画像化する社内Botを作った

こんにちは、AIイネーブルメントグループの山田 (@yamadashy) です。 社内Slackには、技術記事や調査メモ、議論の共有、参考リンクといった情報が日々流れてきます。記事を紹介するとき、毎回説明文を書くのは手間です。 RSSで流れてきた記事は、まず概要だ…

エージェントを「安心して任せられる」ものにする設計(Google ADK で学んだこと)

こんにちは。エンジニアの相楽です。普段は内製の社内システムの運用や、社内の業務効率化に取り組んでいます。 最近、Google ADK(Agent Development Kit)と Claude API を組み合わせて AI エージェントを作り、実際に業務で運用しています。この記事は特…

Deep Dive PHP: FrankenPHP 詳細解説 〜nginx + PHP-FPM から実行モデルはどう変わるのか〜

こんにちは、サーバー基盤グループの駒崎(@dkkoma)です。 弊社のサーバーサイドの多くは Laravel を中心とした PHP アプリケーションで、Web サーバーは長らく nginx + PHP-FPM(FastCGI Process Manager、以下 FPM)を標準構成としてきました。現在この構…