feature image

2026年10月24日 | ブログ記事

traQ チームの一週間

traQ は、東京科学大学デジタル創作同好会traP で開発・運用している部内向けチャットツールです。

GitHub - traPtitech/traQ: traQ - traP Internal Messenger Application Backend
traQ - traP Internal Messenger Application Backend - traPtitech/traQ
traQリポジトリ

traP では日々、機能開発やバグ修正、サーバーの運用などを行っています。今回は、そんな traQ でこの一週間に起こった出来事を紹介します。

10/15: PROJECT: SUMMER FLAREの説明文が変更されてテストが落ちる

traQ に URL を含むメッセージが投稿された際、リンク先の概要を示す「OGP カード」が表示されます。

特に、VRChat のワールドの URL については、専用の API キーを用いてワールド概要を表示する機能が備わっています。

この機能が正常に動作しているか確かめるため、次のようなコードが書かれていました。

	{
		name:    "success",
		worldID: "wrld_aa762efb-17b3-4302-8f41-09c4db2489ed",
		want: func(t *testing.T, res *VRChatAPIWorldResponse) {
			assert.Equal(t, "PROJECT˸ SUMMER FLARE", res.Name)
			assert.Equal(t, "Break the Summer․ Break the tower․ Complete the Meridian Loop․ A story about reality and humanity․", res.Description)
			assert.True(t, strings.HasPrefix(res.ImageURL, "https://"))
			assert.True(t, strings.HasPrefix(res.ThumbnailImageURL, "https://"))
		},
		wantErr: assert.NoError,
	},
service/ogp/parser/domain_vrchat_test.go

PROJECT˸ SUMMER FLARE のワールド説明が Break the Summer․ Break the tower․ Complete the Meridian Loop․ A story about reality and humanity․ と一致しているかを確かめるものです。

しかし、10/11 頃にワールド説明文が変更され、対応言語が追記されました。結果として、このテストは fail し、CI が落ちるようになります。

夏が壊れる前にCIが壊れた

説明文が空でないことだけを確認するように修正し、解決しました。

test: VRChatワールド情報取得テストで説明文の完全一致を確認しないように · traPtitech/traQ@4c6eefa
外部APIから取得するワールドの説明文が作者によって変更され、master を含めてテストが失敗していたため。説明文が取得できていることのみを確認する。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Claude-Session: https://claude.ai/code/session_019eBLaVv…

10/19: traQ v3.33.0 リリース!

新機能を開発中の kaitoyama さんから、リリースの依頼があったので新バージョンをリリースしました。

DBマイグレーション v43_2 と v20261014 の適用を見守りつつデプロイ。

ところで、このマイグレーションの命名規則が迷走しています。複数の機能を並行して開発しているため、マイグレーションの作成順序と適用順序が一致しなくなってしまいました。具体的には、v43 → v43_2 → v20261014 → v43_1 → v44 の順番で適用される見込みです。もはや連番とは何なのか分からなくなってきたので、今後は日付で命名することにしました。

ちなみに、v44 は開発中のthread機能に使うマイグレーションで、まだ master に取り込まれる予定はありません。

……ありませんでした。

10/19: thread 機能が master に混入

traQ チームは、現在大規模な機能開発である thread 機能の開発に取り組んでいます。thread 機能は独立したブランチ feat/thread で開発が続けられており、feat/thread ブランチは定期的に master の変更を取り込んでいます。

CI が落ちる問題も起きていたので、master を thread に取り込む作業に取り組もうとしたところ、コンフリクトしています。私は「あーはいはい、いつものコンフリクトね」と思って thread を master に merge してコンフリクトを解決しました。

あれ?master から分離すべき thread の作業を master に混入させてしまいました

7年掛かった thread もついにリリースです。おめでとうございます!

そんなわけないですね。動かない不完全な thread 機能が取り込まれてしまい大惨事です。特に、dev 環境の DB は thread 機能用のマイグレーション v44を取り込んでしまったため、簡単には元に戻すことが出来ません。

とはいえ、もともと dev 環境は不正なデータが大量に混ざっていて良くないのでデータを吹き飛ばしたいという話が上がっていました。折角なのでこの機会に爆破しちゃいましょう。

幸いにも本番環境への影響はありませんでしたが、とはいえもし本番環境で意図しないマイグレーションが実行されたら重大インシデントです。緊急のセキュリティ修正などのために master に対する直コミットを私だけ許可していたのが原因なので、特権は剥がしておきました。

これでもう不正に thread がリリースされることはありませんね!

10/22: さくらのVPSメンテナンス

traP では、サーバーにさくらインターネット株式会社様からご提供いただいたさくらの VPS を利用しています。

さくらインターネットから、PwnEscape の対応のためにメンテナンスを行う旨の告知がありました。

メンテナンス・障害情報・機能追加|さくらインターネット公式サポートサイト
サービスのメンテナンス・障害情報と機能追加についてお知らせしています。各種手続き、オンラインマニュアル、よくある質問、FAQ、メンテナンス情報、障害情報などさくらインターネットのサポート情報を公開しています。

一時間程度の障害とのことですが、traQ が止まると全部員 800 名のコミュニケーションに影響が及びます。出来れば止めたくないので、旧環境の ConoHa VPS に一時的に移行することを検討しました。しかし…

困りました。その辺にちょうど良い計算機資源落ちてないかな…

そういえば、手元に AMD 様からご提供いただいたパーツで構成されたサーバーがありますね。それを使いましょう。

旧環境の traQ を停止し、物理サーバーに新環境を構築します。幸い、移行作業は 10 分ほどで完了しました。

chore: 🔧 traQとPortalを停止 by Kentaro1043 · Pull Request #1973 · traPtitech/manifest
WhytraQとPortalの本番環境を停止What Changed 本番のtraQ(backend、frontend、system-bot、widget)とPortal(backend、frontend、pipeline)のDeploymentをreplicas: 0に変更。

あとは誰かが間違えてサーバーの電源を落とさないように、注意書きをしておけば完璧です。

SysAdデザイン部長の力作

まとめ

サークル内でサービスを開発・運用していると、日々様々な出来事が起こります(これほどたくさん起こるのは珍しいですが…)この記事を通して、そんな開発チームに思いを馳せてもらえたら嬉しいです。

最後に、traQ の開発・運用に携わる皆さん、日々 traQ を使ってくださる traP・ex-traP の皆さん、そして traP の活動を支えてくださる企業の皆様、いつもありがとうございます!

ramdos icon
この記事を書いた人
ramdos

23B。CTFをしている場合とそうでない場合があります。

この記事をシェア

このエントリーをはてなブックマークに追加
共有

関連する記事

2026年9月22日
夏合宿から歩いて帰りました 2026
ramdos icon ramdos
2026年8月7日
traP は Go Conference 2026 に協賛します!
Takeno_hito icon Takeno_hito 他
2026年7月15日
部内SNSを球状に改造してみた【26年度春ハッカソン4班】
quarantineeeeeeeeee icon quarantineeeeeeeeee 他
2026年4月9日
traPに入部するメリット30選
ramdos icon ramdos
2026年4月4日
traPに入部する方法 2026
ramdos icon ramdos
2026年3月7日
traP部員による「PCの選び方」 2026年度版
ramdos icon ramdos
記事一覧 タグ一覧 Google アナリティクスについて 特定商取引法に基づく表記