宇宙を舞台にした世界最大級の大規模オンラインゲーム「EVE Online」が、ゲームを支える240万行のPythonコードをPython 3に移行すると発表しました。
We have officially started our codebase migration over to Python 3
— EVE Online (@EveOnline) August 25, 2026
There’s quite a lot involved in this process, and you've already helped us tremendously in our most recent mass test. If you'd like to know a bit more about what this means and what is involved, even if… pic.twitter.com/boD4jEhBgR
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への移行のゴールは、移行したことにプレイヤーが誰も気が付かないこと、となっています。そしてそのゴールを実現するために、なにか気がついたことがあればバグレポートで知らせてほしいと開発チームは呼びかけています。
あわせて読みたい
Publickey広告
- 新野淳一が解説「ソフトウェアの安全性を高めるメモリ安全」
AIがプログラミングコードを書く時代にますます高まる重要性
脆弱性を引き起こさない「メモリ安全なプログラミング言語」とは?
Amazon Linuxが4年ぶりにメジャーバージョンアップ、「Amazon Linux 2027」パブリックプレビュー。SELinuxがデフォルトで強制モードに
≪前の記事
HTMX 4.0正式リリース。内部実装がXHRからfetchに移行しStreaming HTMLが可能に、属性はデフォルトで子要素に継承されないように変更など
タグクラウド
クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害
プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質
Blogger in Chief
Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
(詳しいプロフィール)
Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed
最新記事10本
- .NET 11リリース候補版が登場。.NETランタイムが非同期ネイティブ対応、プロセッサ数の上限がなくなる、AOTコンパイラによるネイティブバイナリの高速化など
- AWS、AIがフルスタックAWSアプリの基本コードを、セキュリティ、可観測性、インフラまで一気通貫で生成する「Nx Plugin for AWS 1.0」、オープンソースで公開
- AWS、自然言語でデータ分析アプリを構築可能に、「Amazon Quick」に新機能
- Amazon Linuxが4年ぶりにメジャーバージョンアップ、「Amazon Linux 2027」パブリックプレビュー。SELinuxがデフォルトで強制モードに
- 巨大オンラインゲーム「EVE Online」。ゲームを支える240万行のPython 2.7のコードをPython 3へ移行すると発表
- HTMX 4.0正式リリース。内部実装がXHRからfetchに移行しStreaming HTMLが可能に、属性はデフォルトで子要素に継承されないように変更など
- VS Code誕生から現在までの物語「The Story of VS Code」YouTubeで公開。作者のエリック・ガンマ氏はなぜIBMからMSへ移籍してVS Codeを作ることになったか
- JavaScriptをC言語にコンパイルする「porffor」がアルファ版に到達。ネイティブやWASMを生成可能
- Java誕生から現代に至る歴史をゴスリン氏ら関係者が語る公式ドキュメンタリー「The Java Story」、YouTubeで公開中
- Webブラウザ上でターミナルのシミュレータを実行、GitやCLI、Vimなどを無料で学べる「WebTerm Learn」が公開