04 / 05 · 2023.07 — 2024.07
広州辰創科技発展有限公司
シミュレーション・推演の製品ラインでバックエンドとエージェント開発を担当。Go(Gin)で戦場シミュレーションの業務メインサービス・エンジンのライフサイクル管理・多人数共同編集を実装し、Python で C++ のゲーム推演基盤と連携して赤・青のエージェントとリアルタイム監視ツールを開発した。
- 職種
- Python 開発エンジニア
- 業種
- シミュレーション・推演(研究向けソフト)
- 所在地
- 北京
- 在籍
- 1年1ヶ月
主な成果
約 100 本
業務メインサービスの API。型式・エンティティ・装備・データ辞書・テンプレート・想定バージョンなど 17 モジュール
38 本
ZeroMQ + Protobuf でラップしたゲーム推演基盤との連携 API
16 体
配備・評価した参加エージェント(ルール/機械学習/深層学習)
この会社での案件
PROJECTS · 22023.07 – 2024.07(1年) · バックエンド開発(Go / Python)
戦場並行シミュレーションシステム
同社の中核製品で、研究機関向けの B/S 構成の戦場シミュレーションプラットフォーム。ユーザーは 3D デジタル地球上で作戦想定を編成し、ワンクリックでシミュレーションエンジンへ送って推演。態勢をリアルタイムに 3D 表示し、多人数での共同編集、録画再生、効果評価を行う。
- 業務メインサービス(Gin + MongoDB)の設計・開発を担当。router / controller / service / model の階層構成で、型式・エンティティ・装備・データ辞書・テンプレート・想定バージョンなど 17 モジュール・約 100 本の API を実装
- 推演エンジンのライフサイクル管理を設計:ポートの動的割り当て、想定のエンジン入力へのエクスポート、os/exec によるプロセス起動と登録、goroutine での終了監視と資源の自動回収により、複数推演の並行実行に対応
- WebSocket Hub でタスク単位のルームによる想定の多人数共同編集を実装:読み書き 2 つのコルーチン+ハートビート、想定ツリーをフラット化したインデックスキャッシュ、差分コマンドのリアルタイム配信
- オペレータサービスの開発:想定 JSON → 外部シミュレーションエンジン XML 変換(3,000 行超)、GeoJSON による領域・交差・和集合の空間演算。態勢のフレーム単位録画と、一時停止・倍速・タイムライン再生を実装
- Go でエンジンコンソールを開発し、TCP でスケジューラと接続してエンジンコマンドを中継。推演の開始/停止/一時停止/再開の HTTP API を提供
- Tornado + SciPy でレーダー信号生成サービス(線形 FM パルス、クラッタ、エコー)を開発。バックグラウンドスレッドで非同期生成し Docker で配備
- Go
- Gin
- MongoDB
- MySQL
- Redis
- NSQ
- WebSocket
- Python
- Tornado
- SciPy
- Docker
システム構成
2023.07 – 2024.07(8ヶ月) · Python 開発 · エージェントとプラットフォームの連携
知能ゲーム対抗推演
無人化の空海対抗シナリオ(島嶼防衛 vs 空母打撃群の侵攻)におけるエージェント指揮決定プロジェクト。C++ のゲーム推演プラットフォームが裁定を担い、Python 側でプラットフォーム連携、赤・青双方のエージェント、対抗過程のリアルタイム監視を実装した。
- ZeroMQ(REQ + DEALER)と Protobuf でプラットフォーム連携層を実装。推演制御、ユニット/任務/損害の照会、航路、発艦、編成など 38 本の API をラップし、Runner が固定ステップで「観測 → 判断 → 指令」を回して勝敗を採点
- 赤軍の防御エージェントを開発:知覚 — 情報融合 — ミサイル/火砲/レーザーの火力配分 — 攻撃検証という段階的な意思決定。青軍の侵攻エージェントも開発:複数の行動案、無人機部隊の発進と飽和攻撃
- 参加 16 エージェント(ルール/機械学習/深層学習)の配備・評価を担当。依存関係や実行上の問題を切り分け、代表的な戦略を分解して技術共有を実施
- エージェントの態勢を MQTT で配信し、PyQt5 でリアルタイム監視ツールを開発。タブごとに赤・青のユニットと損害を表示し、ラウンド単位でのオフライン保存と振り返りに対応
- Python
- ZeroMQ
- Protobuf
- MQTT
- PyQt5
- NumPy
システム構成
システムデータフロー
抽象的な図示・内部の詳細は含みません想定編集
Vue + Cesium・WebSocket 共同編集
Gin メインサービス
17 モジュール・約 100 API
▲ 担当範囲
オペレータサービス
想定 JSON → エンジン XML
▲ 担当範囲
エンジンコンソール
Go・TCP でコマンド中継
▲ 担当範囲
シミュレーションエンジン
推演・態勢返送
3D 表示
態勢・録画再生
チームと日常
写真は同僚の同意を得ているか、他の方の顔をぼかしています
ここで学んだこと
シミュレーション・推演の製品ラインで、初めて Go でサーバーサイドを書きました。goroutine と WebSocket Hub による多人数共同編集、os/exec によるシミュレーションエンジンのプロセス管理、router / controller / service / model の階層で約 100 本の API を整理する方法を身につけました。
もう一つの柱は、Python による C++ 推演基盤との連携です。ZeroMQ + Protobuf の上でエージェントとリアルタイム監視を作り、参加 16 エージェントを配備・評価する中で、ルール・機械学習・深層学習の代表的な戦略を分解し、技術共有も行いました。
TECH STACK
- Go
- Gin
- Python
- Tornado
- MongoDB
- MySQL
- Redis
- NSQ
- WebSocket
- ZeroMQ
- Protobuf
- MQTT
- PyQt5
- Vue 2
- Cesium
- Docker