こんにちは、Pythonエンジニア育成推進協会 顧問理事の寺田学です。私は試験の問題策定とコミュニティ連携を行う立場です。
2025年になりましたので、ここ数回ほど続けていたPythonデータ分析実践試験で出題される各データ型の解説は今回お休みして、Python業界における昨年の振り返りと、今年の展望についてお話したいと思います。
■2024年のPythonトピックス3つ
2024年のPython業界におけるトピックスは、私の視点から見ると3つありました。順にお話したいと思います。
1.AIが市民権を獲得
2023年から引き続いて、2024年もAIの年だったと思っています。調べ物の時などにはChatGPTやGeminiなどの汎用AIなどを使うなど、AIはますます生活に馴染み、みんなが標準的に利用するようになってきました。同時にプログラミングにおいては、GitHub CopilotやClaude.aiのようなコーディングに特化したAI が登場しており、プログラミングの分野においてもAIが欠かせない時代となりました。昨年のうちにAIは市民権を得た存在になってきたなと感じています。
さて、多くのプログラマーやエンジニアの中で、プログラミングの時にAIを使うか否かで、生産性に違いが出てくるという認識が進んでいます。AIによるコーディングアシスタントを使うか使わないかでコーディングのスピードは違いますし、より適切なコードを作ることができます。また、コーディングアシスタントだけでなく、コードレビューをAIにしてもらうというシーンも増えています。私自身もCopilotなどのAIツールを使わずにコーディングすることはほぼなくなりました。
もちろん、発展途上の世界でもありますし、使っている人もいれば、使えない環境にある人もいるとは思いますが、それでもコーディングを手伝ってくれるAIの効果は明確で、プログラマーやエンジニアの世界にどんどん浸透しています。これからさらに、より高度なAIが登場し、コードを自律的に書いていくツールが増えていくのではないかと感じています。
ただ、AIによるコーディングアシスタント自体の有用性に疑いようはありませんが、AIにソースコードを渡すことになるため、セキュリティや機密情報の保持と言った問題はもちろん抱えたままではありますので、注意は必要です。
こうした背景がある反面で、OpenAIのAPIやGeminiなどの実際に世の中にあるサービスを使ってアプリケーションを作るという事はあっても、自分たちで独自にAIによるプロダクトの開発をするという部分についてはまだまだハードルが高いと言えます。
もちろん、研究開発は多くの人が行っているだけあってその成果は数多く出ています。その際にはPythonも同時に使われていますが、独自でLLMを作るというようなことはごく一部に限られているように思います。つまり、使う側と作る側、もしくは研究開発というように二極化していることも今の特徴といえると思います。
2.Web UIフレームワークの利用者が増加
昨年も紹介したWeb UIフレームワークは、2024年にさらに市場が伸び、大きな勢力となりました。
Python製のWeb UIフレームワークの例としてはStreamlit、Gradio、Panelなどがあり、これらはPythonのモジュールを書いたら、Webのユーザーインターフェースも含めて生成してくれるもので、これまであったPythonのWebフレームワークであるDjangoやFlask、FastAPIとは一線を画したものです。
もちろんこれらのWebフレームワークは現在でもよく利用されていますし、案件としても増加していると思いますが、簡単にユーザーインターフェースを作ることができるWeb UIフレームワークの台頭は予想通り、順調に市場に受け入れられているようです。
ところで、Web UIフレームワークのツールについては、2024年前半の時点では乱立するだろうと予想していましたが、後半になるにつれ、Streamlitの勢いが加速しているように感じています。もちろん、Gradioなどの他のツールも健在ですし、どれを使っているからダメという事はありません。歴史的に見ても、一度どれかのツールに集約されることはよくあることですし、ここから他のツールが盛り上がることもあれば、より良いものが出てくる可能性はもちろんあります。
いずれにせよ、Web UIフレームワークというツールが、便利に使われているという状況が徐々に広がっていることには変わりありません。
3.パッケージマネージャー等の周辺ツールの拡充
Pythonの世界では、様々なパッケージマネージャーが利用されるようになっており、ツールが乱立してきています。それに伴い、いろんな使い方が紹介され、使う人も増加しています。代表的なものはHatchやuvというものですが、これらは使いやすいと広く認知されており、多くの人が利用しているようです。
また、パッケージマネージャーではありませんが、Ruffという一定のレベルでコードをフォーマッティングしてくれるツールの台頭が顕著です。少し前であれば、Blackが一世を風靡していましたが、Blackが一通り使われるような時代になったと思ったら出てきたのがRuffです。私自身は2023年から使い始め、昨年の段階でRuffに変更しています。
さて、uvもRuffもAstral社が作ったもので、Rustというプログラミング言語が内部で使われています。Rustという言語の特徴は、非常にパフォーマンス性が良いことにあります。速くて便利なツールが実現できるとあって、最近は内部でRustが使われることが増えており、最近のPython周辺でもRust製のツールの導入が進んでいます。
ちなみに、uvやRuffは内部的にRustで書かれているというだけで、インターフェースはPythonになりますので、Rustが使えないと使えないツールというわけではありません。
■Python業界と案件の変化
- 業界の全体的な案件の様子
先ほども書いたように、プログラマーやエンジニアが便利に使うツールとしてAIが活用されるようになっていると共に、AI自体がアプリケーションの一部に組み込まれているという時代になってきています。その部分を案件や業界という視点で見てみると、やはりAPIなどの既存サービスを使う方が多く、自分たちで何かのモデルを作るという世界はごく一部にとどまってると感じています。
もちろん、アプリケーションを作ったり、サービスを提供したりという企業においては、自分たちで独自のものを作れる力があるため、研究開発などを行って、プロダクトを開発していると思います。実際、研究や挑戦的なプロダクトとしてAIが組み込まれたプロダクトが出ていることは確かにあります。そうしてできたものをPythonから読み込んで上手く組み込むということはもちろんやってきていますし、そういう案件自体も増えてきてると思ってはいます。
ただ、案件レベルで見てみると、どちらかと言えば、研究に近いか、実験的なプロジェクトが多いというように私からは見えています。
- Web案件
次に、PythonのWebの仕事という点から見ると、Djangoを使った案件は非常に増えてると思いますが、FastAPIを採用した開発を要求されるケースも増えてるとも感じています。
FastAPIの特徴は非同期なフレームワークで、非同期にいろいろなリクエストを受け取るということができるため、内部も非同期にしやすいという点です。それだけではなく、内部でPydantic(パイダンティック)というものを使って、型のチェックやバリデーションする仕組みが入っています。また、FastAPIは、OpenAPIのインターフェースをPydanticのモデルを書くことによって提供してくれます。そのため、ドキュメンテーションと実装コードが一緒に出てくるので、開発者目線で見ると、使いやすさや便利さを皆さん感じています。こうした特徴があるからこそ、FastAPIの案件での採用が非常に増えているのではないかと考えています。
反面、Python側のWebフレームワークだけで案件が終わるということがほとんどなくなってきています。もちろんAPIサーバを作ったり、Webの仕組みを作ったりという案件はまだありますが、フロント側に移るとやっぱりTypeScriptのフレームワーク(ReactやVue.jsなど)が継続的に使われていると思いますので、PythonだけでWebの案件が終わらないということは変わっていません。むしろTypeScriptを上手く活用できるということがWebの案件においては非常に重視され、そちら側の仕事が増えてるのではないかというように感じています。
Web UIフレームワークに関して言えば、WebアプリやWebシステムを作れるエンジニアですら、Web UIフレームワークを使ったシステム開発を提供することは増えているようです。
私自身もSstreamlitを2023年後半から使っており、2024年には数件の案件でStreamlitを使っています。先ほど挙げたようなFastAPIやReactなどを使って、Webシステム開発の工程全てを対応することはもちろん可能ではありますが、それなりに時間とコストが必要になります。
それに対して、簡単なものをより簡略して作りたいという場合には、Web UIフレームワークを活用した方が効率的です。例えば、ファイルをドラッグ&ドロップでアップロードし、何らかの処理をしたファイルをダウンロードしたり、簡単な入力フォームを使ってグラフを表示したりといったものは、Streamlitなら非常に簡単に作ることができます。だからこそ活用の場が広がっていると感じています。
- Python案件動向のまとめ
今後、Python業界でも、AI系の話はますます増えていくと思います。そうなれば、ここで挙げたようなツールを組み合わせた案件も増えてくる可能性は高いでしょう。また、より高度なものとして、FastAPIとReactの後ろ側にAIの独自モデルを組み合わせた仕組みづくりというようなものも案件として出てくるかもしれません。PythonとAIは切っても切り離せない部分がありますので、今後、Python業界としても話題になってくる部分かなと思っています。
■Pythonのバージョン
Pythonは年1回リリースされており、昨年10月に3.13がリリースされました。2025年には3.14のリリースが10月に予定されています。
3.11からは、スピードアップに取り組んでおり、明確な改善は計り知れない部分はありますが、一説によればアプリケーションレベルで1.5倍ほどの速さになっていると言われています。そのため、アプリケーションの内部をPythonで処理しているのであれば、3.13でも十分に速度の改善を感じられるのではないかと思います。
また、かねてより問題定義されていたGIL問題の解決に関しては、3.13では先送りされています。
GIL問題の箇所を取り除いてコンパイルされたもの自体は公開されていますので、試すことは可能ですが、現時点で標準に取り込まれる、稼働しているものや、サードパーティ製ライブラリが壊れてしまうものが一部あるのではないかという事で、3.13ではオプションという形で提供されることになりました。GIL問題は実のところかなり根深いため、これまで築いてきたPythonの資産を壊してしまう可能性があります。今後5年ほどの時間をかけて丁寧に除去するということが昨年5月のPyCon USで公言されています。
そのため、3.13自体の進化と言えばあまり大きなものはなく、どちらかと言えばスピードアップやGIL問題、JITコンパイラの問題などの解決のための内部的な準備に入る段階になったことだと言え、今後、絶え間なく、徐々に進化していくというように考えて頂ければと思います。
では、なぜこのように段階を追って長い時間をかけることになったかと言えば、Python2からPython3へ移行したときに多くの人が経験した辛い思いとコストによる問題を避けるためです。
多くの変更を一度に行ってしまえば、当時とまた同じことが起きてしまいますので、これらの問題の解決にあたっては、数年の時間をかけて徐々に一つずつ丁寧に仕上げ、一つずつ動きに問題がないかを確認していくという方針になったのです。遅いと思うかもしれませんが、前のバージョンで得た資産を生かせるという状況を長い期間作ることで、安心して3.14以降のバージョンを使い続けることができます。
さて、これの1つの例として、3.15で搭載される予定の機能として、すべてのマルチバイトランゲージ対応があります。これはすべてをUTF-8で完結するような仕組みとして用意されています。
現状、Windowsなどの一部のインターフェースでは固有のエンコーディングが使われることになっていますが、WindowsでもUTF-8が使えるようになり、世界標準のエンコーディングが利用可能となった今、PythonもUTF-8に統一していこうという流れです。ただ、現時点では標準ライブラリでさえも想定とは違う動きをしてしまうものが見つかっていますので、準備自体はできているものの、デフォルトの機能としての提供はまだ見送られています。
ではこのような背景があるなら、まだ3.13を試す必要はないかと言えば、個人的には使うことをお勧めしていますし、私自身もすでに利用しています。
3.13では対話モードが劇的に進化しており、カラーリングされるなどの今までになかった機能が入っています。一部のライブラリでは非対応のものもまだあるとは思いますが、手元でやる分には問題はありませんので、ぜひ使ってみてほしいなと思います。ただ、プロダクトに使うかどうかは慎重な判断が必要です。
■スキルアップのための仲間づくり
プログラミングを学んでエンジニアになる時のステップとして、いろいろな勉強の仕方があります。Pythonエンジニア育成推進協会の試験を使って勉強する人も多いと思いますが、自分だけで学習していると、他の人がどのようなことしているのか分からなくなります。そこで、イベントに出るなどしてエンジニア力やプログラミング力を養ってほしいと考えています。
コロナ禍が明けて、オンラインでもリアルでも多くのイベントが完全復活しています。コロナ禍を挟み、数年ほど参加する機会がなかったため、オンラインや動画で学ぶ世界が一般化されたことで、リアルイベントの楽しさを知らない世代もいます。
リアルイベントに参加するには、時間や参加費、移動費まで考えなくてはなりませんが、十分に得られるものがあるはずです。他の人がどのような話に興味を抱いているのかも知れますし、ライバルや先輩を得て切磋琢磨できる出会いもあります。
どんなものに行けばいいかは分からないと思うかもしれませんが、オンラインから参加してみるのもいいと思いますし、オンラインで雰囲気が分かったら、勇気を出してリアルイベントの場にぜひ飛び出してリアルだからこそ手に入れられる情報や友人を得ていってもえればいいな思っています。
■オンライン上にある豊富な情報を活用した学習へ
AIの台頭によって、学習もコーディングもしやすい環境になりました。
現状、AIにどんなコーディングをしたいかを適切に質問することができれば、ある一定のレベルで正しいものが出力されますが、出力されたコードを見て、確認するという作業は人がやらざるを得ません。これはシニアレベルの人からすればコードが出てきたときに正否の判断などはコードを見ればわかると思いますが、始めたばかりの人にとっては判断しにくく、大変難しい作業と言えます。だからこそ、判断する力やAIに適切なものを出力させられるだけの情報提供できるスキルが必要です。
そして、懸念すべきは、AIがますます賢くなり、徐々に複雑なコードを出してくる傾向が高くなっていることです。これに関して正直に言えば、頑張って理解する人がいなくなってしまうのではないかと危機感を抱いています。というのも、これまでであれば、経験によって徐々にプログラミング力をステップアップさせていくことができましたが、AIの進化が早すぎて人が追い付けず、AIに頼ってしまうことにあります。便利にAIを使うことは必要ですが、そうしすぎることで、自分の身にならないというジレンマに陥らないように気を付けなければなりません。AI時代だからこそ、丁寧に学習し、AIが出したものが良いものであるか判断し、ただ受け入れるしかない世界にならないよう知識を身に着けていきましょう。
今後、進化の激しいAIとの関わりあいは難しいことになると思います。AIを使いこなすためにも、適切な回答が得られるような指示の出し方、そして正否を判断できるようになっておく必要があり、それができるようになれば、優位な結果を得ることができます。
これを英語に置き換えてみると、英語を学習せずとも今は翻訳機を頼れば旅行はできますが、現地の人とコミュニケーションをしっかりとるなら英語をきちんと学んだ方が良いというのと同じです。プログラミングも、ただAIを使いこなせればいいと判断する人もいるかもしれませんが、プログラミング力を鍛えた方がAIを使いこなすのに役立つはずです。
頑張って勉強するしかありませんが、なんとか身に着けられるようにしてほしいと願っています。