この記事は2024年9月15日で公開された中国語の記事「Python 潮流周刊#69:是时候停止使用 Python 3.8了」の日本語訳です。主に LLM によって翻訳され、手修正で校正されていますが、もし不自然の点が気づいたら、「記事の改善」機能で、編集リクエストをいただけるとありがたいです。
こちらから最新号まで購読できます(英語のみですので、ご了承ください)。
こんにちは、Python エンジニアのネコです。毎週、英語を中心とした高品質な Python、AI、そして一般的な技術に関する情報をお届けしています。また、Telegram のチャンネルでは、より幅広いニュースや情報も補足的に発信していますので、ぜひフォローしてみてください。
今週は、12本の記事と12のオープンソースプロジェクトをご紹介します。全体の文字数は約2100字です。
🦄記事&チュートリアル
Python 3.8 は 2019 年 10 月にリリースされ、今年 10 月でサポート終了を迎えます。これ以降は、セキュリティ脆弱性が発見されたとしても、修正パッチは提供されません。また、一部のサードパーティ製ライブラリやフレームワークも Python 3.8 のサポートを終了する予定です。ですので、早めに新しいバージョンへのアップグレードを検討しましょう。 (参考:来月には Python 3.13 がリリースされます、いつ Python 3.13 にアップグレードすべきか? )
2、マルチバージョン Python ライブラリについての考察
単一のライブラリが pydantic 1.x と 2.x のような複数バージョンを同時に利用する方法について、著者はその実現可能性を検討し、エンドツーエンドの解決策と、そこに伴う技術的課題を提示しています。
著者は、自身の Pandas プロジェクトを Polars へ移行することを決定しました。この記事では、その主な理由を説明します。決め手となったのは、Polars の処理速度が速いことではなく、その直感的で覚えやすく、使いやすい構文でした。記事内では、CSV ファイルを扱う際の Polars、Pandas、Tidyverse、Base R のコード例を比較しています。
4、Jupyter Notebookの読み込み速度を10倍高速化した方法
作者の製品に埋め込まれた Jupyter iframe の読み込みは、非常に時間がかかっていました。この問題に対処するため、JupyterLab の UI とバックエンドサービスを分離し、それらの並列読み込み、静的リクエストの模倣、拡張 UI の事前レンダリングといった最適化を実施しました。その結果、読み込み性能は 87% 向上しました。
著者は次のような疑問を投げかけています:非同期 I/O は「10億ドルの過ち」と呼べるものなのでしょうか? もし、この20年間をOSのスレッド性能向上に注ぎ込むという別の道を選んでいたら、私たちはもっと良い成果を手にしていたのではないでしょうか?
6、同じアプリケーションを様々な Webフレームワークで実装する
同じ機能を持つプロジェクトを異なる Web フレームワークで開発すると、何が見えてくるでしょうか?著者は、FastAPI + Jinja + HTML + CSS + JavaScript、FastHTML、Next.JS、SvelteKit、FastAPI + Svelte という組み合わせで実験を行いました。その中で FastHTML のパフォーマンスが特に印象的でした。
7、Weaviate と Streamlit で映画レコメンデーションアプリを構築する
Weaviate は、AI ネイティブのデータベースで、データの保存、検索、クエリの複雑さを軽減し、AI モデルとシームレスに統合します。本記事では、この Weaviate と Streamlit を活用して、自然言語で問い合わせ可能な映画推薦アプリケーションを開発する方法を紹介します。このアプリは、キーという 2 つのアプローチを検討する。後者については、Docker および Docker Compose を用いた Proxpi の設定方法について解説する。
CI システムの改善策として、PyPI データをローカルキャッシュする方法は有効か?本記事では、ビルド時にキャッシュをマウントする方法と、プロキシサーバーである Proxpi を利用する方法という 2 つのアプローチを検討します。後者については、Docker および Docker Compose を用いた Proxpi の設定方法について解説する。
筆者は、ハイフンとマイナス記号 (HYPHEN-MINUS と HYPHEN) が視覚的に似ているために発生する Unicode の問題に直面しました。具体的には、負の金額を表す際に誤ってハイフンが使用され、その結果、データが正の数として解析されてしまうというエラーです。本記事では、Python 標準ライブラリの unicodedata モジュールを用いて、これら2つの文字を正確に識別・区別する方法について解説します。
10、小さなタスクに Rust を使うべき?それとも Python ?
Rustはデータエンジニアリングの特定タスク(例えば Polars など)で人気を集めつつありますが、コードが冗長なため、多くの場面ではPython の簡潔さと使いやすさには敵いません。記事で示されている簡単なコード比較からも、Python が素早い開発とプロトタイプ作成において優位性を持つことがわかります。
11、Go vs Python サーバーレスアプリケーション:パフォーマンス、コスト、使いやすさの比較
サーバーレスにより、開発者はインフラ基盤を気にすることなく、アプリケーション開発そのものに集中できます。では、サーバーレスアプリケーション開発において、Go と Python にはそれぞれどのようなメリットとデメリットがあるのでしょうか?この記事では、それらを3つの観点から比較しています。
12、Google Trends API の代替手段:ウィキペディア閲覧数統計データ
Google Trends には公式の Python API が存在しません。また、非公式の API は信頼性に欠けるため、著者は検索トレンドや話題の動向を分析するための代替手段を模索しました。本記事では、その一環として Wikipedia の API を活用する方法について解説します。
🐿️ プロジェクト&リソース
1、polar: Lemon Squeezy のオープンソース代替
オープンソース開発者および独立開発者向けの、オールインワンの資金調達・商業化プラットフォームです。GitHub リポジトリ、Discord チャンネル、ファイルダウンロード、ライセンスキーなどのデジタル商品や、サブスクリプション型商品の販売を扱っています。(スター数 2.6K)
2、gigi: リアルタイムレンダリング向けプロトタイピング・開発フレームワーク
高速プロトタイピングおよびリアルタイムレンダリング技術の開発を目的としています。エディター、ビューア、コンパイラの3つのコンポーネントで構成され、DirectX 12のコード生成をサポートします。
3、nestedtext: 人間にとって読み書きしやすいデータ形式
構造化データを保存するためのファイル形式であり、JSON と同様に、直感的な入力・編集・閲覧が可能です。ただし、サポートされるデータ型は文字列型に限定されており、整数、実数、ブール型などの他のデータ型はサポートされていません。
4、maestro-cli: コマンドラインで音楽や様々な音声ファイルを再生する
これは、オーディオ再生用のコマンドラインツールです。YouTube、YouTube Music、Spotify の楽曲再生に対応しており、歌詞表示、クリッピング、タグによるフィルタリング、統計情報の表示、オーディオビジュアライゼーション、新しい音楽の発見などの機能を備えています。
5、repo2file: 指定したコードリポジトリの複数ファイルを単一ファイルにまとめる
コードリポジトリ内のファイルを単一ファイルにまとめて出力し、RAG や LLM での利用を便利にします。コードリポジトリ全体に対応し、.gitignore を尊重、さらにファイル形式でフィルタリングできます。
6、edx-platform: Open edX LMS および Studio
サービス指向のプラットフォームであり、任意のスケールでオンライン学習コンテンツを作成・提供するために設計されています。コンテンツ管理サービスと学習管理サービスを提供します。(スター数 7.3K)
7、langflow:RAG およびマルチエージェント AI のためのローコード開発ツール
Python ベースで、モデル、API、データソース、データベースに依存しない設計です。ドラッグ&ドロップ対応のビジュアル IDE を備え、マルチエージェントのオーケストレーションや対話管理にも対応。さらに LangSmith、LangFuse、LangWatch と統合されており、オブザーバビリティも確保されています。(スター数 28.3K)
8、crawl4ai:LLM 向けの Web クローラー/スクレイパ
ネットワークスクレイピングとデータ抽出を簡素化し、大規模言語モデルや AI アプリケーションで使用できるようにします。複数の URL を同時にスクレイピングしたり、すべての内部/外部リンクを抽出したり、スクレイピング前にカスタム JavaScript を実行したり、CSS セレクターをサポートしたりできます。(スター数 2.7K)
9、litecli: SQLite 用の CLI ツールで、自動補完とシンタックスハイライトに対応
Python で開発された SQLite コマンドラインクライアントです。一般的なデータベース操作、コマンドのオートコンプリート、構文ハイライトに対応しています。 (スター数 2.5K)
10、defusedxml:XML 爆弾などの脆弱性への対策
XMLファイルを安全に処理するための方法を提供します。具体的には、標準ライブラリのXMLパーサーを変更し、セキュリティ上の脆弱性の原因となりうる機能を排除することで実現しています。
11、sail: ミッションは、ストリーム処理、バッチ処理、そして計算集約型 (AI) ワークロードを統一すること
シングルプロセス環境において、Spark SQL および Spark DataFrame API の直接の代替手段を提供します。
12、dbos-transact-py:超軽量な永続的実行フレームワーク
中断やクラッシュが発生しても、最後に正常に完了したステップから自動的に再開し、実行の永続性を実現します。実行状態は PostgreSQL に保存され、ワークフローのトレースには OpenTelemetry が使用されます。
🐧 バックナンバー
Python トレンド週刊 #19: Mojo がついに一般提供開始! (2023年9月9日) 日本語
🐱購読はこちらから
技術ニュースレターは、情報過多の時代に本当に価値ある知識だけを選び抜くための最適な手段です。このプラットフォームは Python 開発者向けに特化しており、シェアする価値のある記事、チュートリアル、オープンソースプロジェクト、ソフトウェアツール、ポッドキャスト、動画、話題のトピックなど、豊富なコンテンツを厳選してご紹介します。今すぐ購読すると、毎週1本の記事が配信され、少しずつスキルアップできます。
コメントをお待ちしています!今週の紹介記事で特に気に入ったものはどれですか?皆さんからのフィードバックが多いほど、今後もより多くの情報を紹介します!
