ひまネタNEWS(^o^) | スキマ時間にちょっとしたネタを提供スキマ時間に、話題のまとめを一気読み 全サイト自動巡回中
HIMA NETA ORIGINAL READER
本文だけモード Publickey IT・ガジェット 約9分で読めます

巨大オンラインゲーム「EVE Online」。ゲームを支える240万行のPython 2.7のコードをPython 3へ移行すると発表

読みやすさ この端末に設定を保存します
書体
文字
背景

広告・ランキング・関連記事を除き、配信元の安全な文字装飾だけを残しています。

2026年9月8日

宇宙を舞台にした世界最大級の大規模オンラインゲーム「EVE Online」が、ゲームを支える240万行のPythonコードをPython 3に移行すると発表しました。

EVE Onlineは2003年にサービスが開始された大規模オンラインゲームです。7000を超える星系からなる宇宙を舞台に、探索や艦隊戦などの戦闘、海賊行為、市場での商売などのさまざまなプレイが可能となっています。

その規模は、世界中から集まったプレイヤーの戦闘によって1時間あたり750以上の戦艦が沈み、市場では1日あたり100万回の取引を行っていると説明されています。

16年間Stackless Python 2.7が使われ続けた

2003年に開始された当時から、EVE OnlineはC言語のコールスタックに依存せず高い並行性を実現できるPythonの実装である「Stackless Python」で構築されてきました。Stackless Pythonの軽量なスレッドによるTasklets(タスクレット)を利用することで、単一のサーバが同時に数千のパイロットを処理できるようになっています。

その後EVE Onlineを構成するStackless Pythonは2007年にバージョン2.5、2010年にはバージョン2.7にアップグレードされました。

Stackless Python 2.7は2020年に公式サポートが終了していましたが、信頼性が十分に高かったこともありEVE Onlineのコードは現在までStackless Python 2.7が使われてきました。

そして今回、16年ぶりにEVE OnlineのコードをPython 3へとメジャーアップグレードする作業が開始されたことが発表されたのです。

Python 3へ移行することで高速化など期待

EVE OnlineがPython 3へ移行する理由は2つ挙げられています。

1つは性能です。最近のPython 3リリースは、この言語の歴史上最大級の高速化が行われたとしており、EVE Onlineの処理の高速化が期待されます(Publickey注:Pythonの高速化が何を指すのか明示されていませんが、もしかしたらフリースレッドあるいはJITかもしれません)。

参考:Python 3.14登場、フリースレッド版正式サポート。実験的JITコンパイラも公式バイナリで利用可能に

もう1つはPythonのライブラリやデバッガ、プロファイラをはじめとするエコシステムが、現在ではすべてPython 3用になっているということです。

このままではStackless Python 2.7のメンテンスの多くを自力で行わなければならなくなるため、Python 3の優れたツール群を利用できるようになることで問題が発生しても迅速な対応が期待できます。

Python 3で実行できるようにし、その後に挙動を一致させていく

サービス開始から数えると20年以上積み重ねられてきた240万行ものPythonコードは、どのようにPython 3へ移行するのでしょうか?

説明によると、まずはPython-FutureというPython 2のコードをPython 3に書き換えるためのツールを利用して、Python 3で実行できるようにします。

すでに行われたスキャンではコードの95.9%でPython 3のコンパイルが通ったとのことです。

こうしてすべてのコードがPython 2.7とPython 3の両方で実行できるようにするのがステージ1となります。

その上で、Python 2.7とPython 3のどちらも同じ挙動になるように修正が必要です。そしてすでにPython 3では挙動が変わることが分かっているコードが2万行分あります。

典型的な例は割り算です。Python 2では整数同士の割り算の結果は整数となり小数点以下は切り捨てられるため、5/2は2、1/2は0となります。一方、Python 3では整数同士の割り算でも小数点以下を含む浮動小数点数となり、5/2は2.5、1/2は0.5となります。

こうした計算は戦闘でのダメージや宇宙空間での座標などに使われているため、Python 2.7からPython 3へ移行する際にどのようにコードを変更するかは人間の判断が必要です。Python 3への移行のステージ2では、人間が判断して修正を繰り返していくとのことです。

つまりPython 3への移行は、まず機械的な処理によるPython 2.7からPython 3へ変換、そしてPython 3で実行可能にする。そのうえで、人間によるコードの修正を通してPython 3での挙動をPython 2.7と一致させていく、という2段階で行われる計画です。

ゴールは誰も移行に気づかないこと

このPython 3への移行のゴールは、移行したことにプレイヤーが誰も気が付かないこと、となっています。そしてそのゴールを実現するために、なにか気がついたことがあればバグレポートで知らせてほしいと開発チームは呼びかけています。

あわせて読みたい

プログラミング言語 Python

Googleで優先する情報源としてこのWebサイトを追加する
このエントリーをはてなブックマークに追加
fbシェア
Xポスト
Feedly

Publickey広告



≫次の記事
Amazon Linuxが4年ぶりにメジャーバージョンアップ、「Amazon Linux 2027」パブリックプレビュー。SELinuxがデフォルトで強制モードに

≪前の記事
HTMX 4.0正式リリース。内部実装がXHRからfetchに移行しStreaming HTMLが可能に、属性はデフォルトで子要素に継承されないように変更など


タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本


元のページを確認する

必要な場合のみ、広告などを含む配信元ページをフレームで表示できます。