Python 3.13でcgiモジュールが削除された話

技術

はじめに

最近Python 3.13がリリースされました。(と言ってももう2か月以上経っていますが。。。)

新しい機能としてはJITコンパイラ導入など、Pythonの実行速度向上に向けたアップデートが目玉の項目のようですが、個人的にはモジュールが削除の部分が気になりました。

どうやらcgiモジュールが削除されるとのこと。

以前から非推奨になったりしていたので、分かっていたことですが、ついに削除されてしまいました。

cgiモジュールの他にもいろいろなモジュールが削除されているみたいです。

Python 3.13のリリースノートは下記から確認できます。

What’s New In Python 3.13
Editors, Adam Turner and Thomas Wouters,. This article explains the new features in Python 3.13, compared to 3.12. Pytho...

cgiモジュールの思い出

以前PythonでcgiプログラミングでWebの勉強をしていた時にこのcgiモジュールを使用していました。

このモジュールを使うことでフォームからのGETやPOSTメソッドからデータを取得することが出るため、htmlとPythonを使ったWebプログラミングを勉強していました。

2024年の現在ではcgiはレガシーな環境かもしれませんが、Webの仕組みが分かって個人的には勉強になりました。cgiモジュールは簡単に試せますし、GETやPOSTからのパラメータをgetvalueメソッドやgetFirstメソッドで簡単に取得できるので、便利だなと感じていました。

こういった以前使っていて便利だなと思ったモジュールが削除されてしまうのは、時代の流れでしょうがないと思いつつも、少し寂しい気持ちになりました。

cgiモジュールの代替ってあるのか?

現在のWeb開発はWebフレームワークで開発を行う流れだと思うので、こういったGETやPOSTのパラメータを取得して処理を行う。というような構造のWeb開発はしないのかもしれないですが、cgiモジュールされた時、その代替はあるのか?という疑問が浮かびます。

最近の主流はWebフレームワークだと思うのでPythonだとflaskやdjangoを使用してくださいねってことなのかと解釈していますが、調べた限りはcgiモジュールの代替モジュールはないのかなと思っています。

もしcgiモジュールのようなものを使用したい場合は自分で自作するというのがベストな回答なのかなと思っていますが、どうなんでしょうか?

Pythonのバージョンを3.13以前にすれば使用自体は出来ますが、それもそれですよね。

ちょっと難しい問題だなと感じました。

まとめ

取り留めがない文章になってしまいましたが、cgiモジュールは使用したことがあったので今回の削除は残念に思ったのと、時代の流れかなと感じたこと、現在自分が感じている疑問を言語化しようと思い、こういった記事を書きました。

公式のリリースノートの確認は重要ですね。いろいろな情報が乗っていることを学びました。

こういったモジュール、ライブラリが削除される時、代替手段を考えないといけない問題は難しい問題だなと感じました。