システム開発

EOLを迎えたPythonをアップデートする際の移行プロセス

このコラムを執筆している5月下旬は夏のように暑くなる日も増え、自宅にいるときはエアコンが欠かせませんね。そんな時期にもせっせと頑張って部屋を快適にしてくれているエアコンですが、本体のラベルに「想定される標準使用年数」といった記載があるのをご覧になったことはありますか。電気製品などの機械は長く使用しているうちに故障しやすくなりますし、いざ修理を依頼しようとしても古すぎて既にメーカーが部品を保有していないなど、突然の買い替えを迫られることがあります。

さて、新しいエアコンを売りたいわけではないので本題に切り替えます。古くなって問題が生じるのは、Webアプリケーション、データ分析、機械学習・AIと広い分野で人気があるプログラミング言語Pythonも例外ではありません。このコラムでは、Pythonのアップデートによるメリットや移行プロセスについて解説します。

▶アプリケーション開発のサービスページはこちら!

  1. EOLを迎えたソフトウェアの放置リスク
  2. アップデートで得られるメリット
  3. Pythonの簡易移行プロセス
  4. まとめ

1.EOLを迎えたソフトウェアの放置リスク

Pythonのバージョン2系の最終版である2.7は2010年7月3日にリリースされ、2020年1月1日にEOL(End of Life)となりました。これはサポート期間が約10年の長期にわたったこともあり、かなり多くのシステムがPython2.7で構築されたのではないでしょうか。また、バージョン3系においても3.10は2026年10月にEOLを迎える予定です。

Pythonに限った話ではなく、EOLとなったソフトウェアを使用し続けることは、直ちに問題が生じないとしても様々なリスクを抱えることになります。例えば、EOLとなったPythonバージョンに脆弱性が見つかっても、公式に修正版が提供されることはなく、サイバー攻撃などにより情報漏洩や不正アクセスを招く恐れがあります。

使用しているサードパーティーのライブラリやフレームワークをアップデートしようとした際にも、古いPythonに対応していないことによりアップデートできず、同様の問題が起きることも考えられます

2.アップデートで得られるメリット

Pythonの最新のリリースバージョンでは、定期的にバグ修正およびセキュリティ修正が提供されるため、安全にシステムを使用することができます。また、開発が継続されていることにより、新機能の追加や、処理速度やメモリ効率の向上などが期待できます。

他にも、最新バージョンより前でまだEOLでないバージョンに対しては、セキュリティ修正のみが提供されます。特に安定性を期待したい場合は、セキュリティサポート期間がまだ残っている安定したバージョンを採用することもあります。

Python_update

3.Pythonの簡易移行プロセス

Pythonをアップデートするには、新しいバージョンのインストーラーを実行するだけ…で済めばよいのですが、実際にはそう簡単にはいきません。
広く利用されているプログラミング言語Javaでさえ、"Write once, run anywhere"(一度書けば、どこでも動く)と言われながらも、アップデート後に既存のプログラムが期待通りに動作しなくなるケースや、再度テストを行う必要があるなど、一筋縄では行かないものです。
ここではPythonバージョンアップのプロセスを一例として紹介します。

現状の確認

  • 現在使用中のPythonのバージョンを確認します。
  • 現在使用中のパッケージ一覧とバージョンを確認します。

目的の設定

バージョンアップ後の新しいPythonバージョンを選択します。選択にあたっては、理由を明確にし、関係者に説明します。

影響調査

  • Pythonのバージョンアップによってプログラム修正が必要な部分を洗い出します。特に2.7系から3系へのメジャーバージョンアップの場合は、言語仕様の変更などにより、既存のプログラムが動作しなくなることが多いです。
  • 使用しているライブラリが新しいPythonのバージョンに対応しているかを調査・検証します。新しいPythonのバージョンでの動作がサポートされていない場合は、類似した別のライブラリへ置き換えることを検討します。サードパーティーのライブラリの中にはネイティブコードを含むものがあるため、OSなどの実行環境が変わる場合は注意が必要です。

コード変換ツールや生成AIの活用

  • Pythonのバージョンアップを効率的に進めるために、自動コード変換ツールを活用することを検討します。
  • Python2系から3系へのバージョンアップの場合、以前は2to3を利用する方法もありましたが、既に非推奨になっているため代替手段を検討します。
  • Python3系のマイナーバージョンアップの際にはpyupgradeなどを利用することで、不要な記法や旧式の構文を自動的に改善できます。

これらのツールは移行作業の初期段階を大幅に効率化しますが、自動変換後にも手動による確認やテストは不可欠であり、あくまで補助として使用することが推奨されます。

GitHub CopilotやClaudeなどのAIエージェントにコードをチェックさせて、改修提案や自動編集を活用するのもよいでしょう。生成AIの利用に際しては、各社のAI利用ガイドライン等を十分ご確認ください。

影響調査

バージョンアップ用の検証環境や仮想環境で、Pythonおよびライブラリのアップデートを行います。もしくは、新しいバージョンの環境にあらかじめ用意しておき、そこに既存のプログラムコードを配置する方法もあります。

プログラム改修とテスト

  • 影響調査の段階であらかじめ修正が必要と洗い出された部分は、このプロセスの最初に改修しておきます。
  • 新しいPythonの環境でアプリケーションの主要な処理を実行し、エラーが発生しないか、期待通りの結果が得られるか、などを検証します。

新本番環境への切り替え

新しい本番環境に対象のPythonバージョンをインストールし、改修・テストしたアプリケーションをライブラリとともに配置します。あらかじめ移行作業手順書を作成し、検証環境などでリハーサルを実施しておくと安心です。

4.まとめ

ここまでの話を簡潔にまとめます。

  • EOLとなったPythonを利用し続けると、脆弱性により情報漏洩や不正アクセスを招く恐れがある。
  • Pythonの最新バージョンには、バグ修正およびセキュリティ修正が提供されるため、安全にシステムを利用することができる。
  • Pythonをアップデートする際は、影響調査を実施し、プログラム改修とテストを行う必要がある。

弊社のシステム開発サービスでは、今回お話ししたPythonのアップデートをはじめ、システム開発に関するご相談やご依頼をお受けしています。貴社のシステムに「あと1歩!」というお悩みがありましたら、ぜひ弊社までお気軽にお問い合わせください。

▼資料のダウンロードはこちらから

CTCシステムマネジメントコラム

CTCシステムマネジメントコラムでは、ITシステム運用の最新動向に関する特集・コラムがご覧いただけます。

ページトップへ