この記事は2024年6月1日で公開された中国語の記事「Python 潮流周刊#53:我辈楷模,一个约见诺奖得主,一个成为核心开发者」の日本語訳です。主に LLM によって翻訳され、手修正で校正されていりますが、もし不自然の点が気づいたら、「記事の改善」機能で、編集リクエストをいただけるとありがたいです。
こちらから最新号まで購読できます(英語のみですので、ご了承ください。)
こんにちは、Pythonエンジニアのネコです。毎週、英語を中心とした高品質な Python、AI、そして一般的な技術に関する情報をお届けしています。また、Telegram では、より幅広いニュースや情報も補足的に発信していますので、ぜひフォローしてみてください。
今回は、12本の注目記事と12のオープンソースプロジェクトを紹介し、さらに『プログラムはなぜ動くのか — 知っておきたいプログラミングの基礎知識』の中国語版《程序是怎样跑起来的(第3版)》を5冊プレゼントします。
訳注:※このキャンペーンはすでに終了しています。
🦄記事&チュートリアル
1、私はノーベル賞受賞者に「お会い」しました (中国語)
まさに敬礼すべき存在です!本週刊の常連である @frostming さんは、PDM の開発者として、2018 年のノーベル経済学賞を共同受賞した Paul Romer 氏から面会の申し出を受けました。この記事では、そのワクワクするような体験が紹介されています。Paul 氏は現在、Python 初学者向けに開発環境を構築するための GUI アプリケーションを開発しているとのことで、まさか彼がこうした分野にまで関心を持っているとは思わず、一気に親近感が湧きました。
訳注:frostming さんの GitHub のアカウントのはここです。
2、450 日で Python のコアコアデベロッパーに (中国語)
もう一人、敬礼すべきエンジニアが登場しました!@高天 さんは、わずか 1 年あまりで CPython プロジェクトに継続的な貢献を行い、正式に Python のコアデベロッパーに選ばれました。現在、世界でアクティブなコアデベロッパーは 100 人にも満たないため、その一員となるのは非常に稀なことですよね。(参考:この高天さんを推薦するスレッドで、彼の貢献内容が詳しく紹介されています)
訳注:高天さんの GitHub のアカウントのはここです。
3、Python は浮動小数点数と整数をどう比較しているのか?
この記事は、ちょっと不思議な比較結果から話が始まります(下のスクリーンショット参照)。IEEE-754 の倍精度形式について簡単に触れたあと、CPython インタプリタのソースコードを読み解きながら、Python が浮動小数点数と整数をどのように比較しているのかを詳しく解説しています。C や Java のように整数を自動的に倍精度に変換するのとは異なり、Python では整数に無限精度があるため、専用の比較アルゴリズムが設計されています。
非常に大きな整数と浮動小数点数を比較したときに起こる予想外の結果
4、JIT や GIL の削除よりも注目している Python 3.13 の新機能
Python 3.13 は注目すべき変更が多いバージョンで、これまでそれについての記事も紹介してきました。しかし、この記事の筆者が最も期待しているのは、新しく追加されたdbm.sqlite3です。これによって、dbm と shelve を組み合わせて使う際に、異なる OS 間で発生していた互換性の問題が解消されました。
5、Python パッケージングに6年間関わってきた舞台裏の話
著者は PyCon US 2024 のクロージングキーノートで、過去6年間にわたる Python パッケージングにまつわるエピソードを語りました。この記事では、その講演に関連するリンクや参考資料が多数紹介されています。
5番目の記事によると、Beautiful Soup がリリースから20年を迎えたことがわかりました!ウェブスクレイピングやドキュメント解析でよく使われるこのライブラリは、記念記事の中でこれまでの歩みを振り返るとともに、ユーザーの体験談を集めてアンソロジーを作る計画も紹介されています。長く健全に発展してきたうえに、開発者の人間味も感じられる素晴らしいプロジェクトですね。
7、昔は Ruby 派だったけど、今は Python が好きかも
著者は以前 Ruby が大好きで、Python にはあまり魅力を感じていませんでした。しかし TypeScript や Rust を通じて型プログラミングの強さを実感し、型ヒントや match-case をサポートする Python にどんどん惹かれていきました。さらに他にも魅力的な機能があることに気づき、今ではすっかり Python 派になったようです。
8、Postgres を使った Django の非同期タスクキュー(Kafka、Rabbit MQ、Celery、Redis を使わない方法)
この記事では、Django において Celery や他の複雑な非同期処理フレームワークの代替として、シンプルに実装できる「Django コマンド」を使った非同期タスクキューの構築方法を紹介しています。具体的な使い方に加え、デッドロックなどの潜在的な問題についても考察されています。
9、Streamlit で非同期 MongoDB 操作を実現する方法
Streamlit はダッシュボード構築に優れたツールですが、非同期でデータベースと連携するのは一筋縄ではいきません。この記事では、Streamlit と MongoDB を非同期で連携させるための 4 つのアプローチを比較・検討しています。MongoDB の操作には、非同期対応の Beanie ライブラリが使用されています。
10、LangChain 実践:LangChain SQL Agent と GPT を活用したドキュメント分析と対話システムの構築(中国語)
大量のドキュメントを AI でデジタル化し、ユーザーからの複雑なデータ関連の質問に自動で回答するにはどうすればよいか?この記事では、Python と LangChainを用いて PDF を読み込み・解析し、SQLite でデータを管理しながら、LangChain SQL Agent を使って対話システムを構築する方法を解説しています。
11、pyo3_asyncio:Python の Asyncio を Rust から扱うためのバインディング
pyo3_asyncio は、Python と Rust の間で async/await を簡単に扱えるインターフェースを提供するライブラリです。両言語のFutureの相互変換(conversions between Rust and Python futures)や、イベントループの管理もサポートしています。この記事では、その実装の仕組みや使い方について詳しく解説されています。
著者は長年、Python の依存ライブラリを pipxでインストールしており、実は公式の CPython ではなく PyPy インタープリターを使っていました。特に問題もなく動作しており、体感的な違いもほとんどなかったことから、PyPy が実用的な CPython の代替として十分に機能していることが説明できるでしょう。
🐿️プロジェクト&リソース
1、llama-fs:llama 3 を活用した自律的なファイルシステム
ファイルの内容やタイムスタンプなどに基づいて自動でリネームやディレクトリ整理を行うツールです。画像や音声など、さまざまなファイル形式に対応。フロントエンドは Electron 製、バックエンドは FastAPI ベースで構築されています。(スター数 3K)
2、orjson:高速かつ高精度な JSON ライブラリ。データクラス、日時、Numpy に対応
Python で最速とされる JSON ライブラリで、標準ライブラリや他のサードパーティ製よりも高精度。dataclass、datetime、numpy、UUID のインスタンスをネイティブ形式でシリアライズできます。(スター数 5.7K)
3、asyncssh:asyncio ベースの SSHv2 非同期クライアント&サーバー
非同期対応の SSHv2 クライアント・サーバー実装で、SFTP や TCP に対応し、OpenSSH と互換性があります。1つの SSH 接続で複数のセッションを同時に扱え、1つのイベントループ内で複数の SSH 接続も処理可能です。(スター数 1.5K)
4、ipyblender-experimental:Jupyter Notebook に Blender を組み込む
Blender は、3D モデリングやレンダリング、アニメーション制作、動画編集などに使われる高機能なオープンソースの 3D グラフィックスツールです。このプロジェクトでは、その Blender を Jupyter Notebook 上で使えるように統合しています。
5、searxng:プライバシー重視のメタ検索エンジン、複数の検索サービスの結果を統合
searxng は、70 以上の検索サービスからの結果を統合する、プライバシーを重視したインターネットメタ検索エンジンです。セルフホスティングが可能で、ユーザーの追跡や解析は行わず、安全な暗号化通信に対応し、現在、100以上のメンテナンスされたインスタンスが稼働しています。(スター数 9.7K)
6、rio:JavaScript・HTML・CSS 不要、Python 製の Web 開発フレームワーク
rio は、HTML・CSS・JavaScript を一切書かずに Web アプリを構築できる、Python 製の Web フレームワークです。React ライクな豊富なコンポーネントと宣言的な UI フレームワークを備え、型安全性も完全にサポートしています。
buku は、強力なブックマーク管理ツールであり、個人向けテキストベースのミニウェブ(personal textual mini-web)としても活用できます。GUI もサポートされており、ブラウザからブックマークをインポートしたり、ウェブ上の URL からタイトル・タグ・説明を自動取得することが可能です。また、お気に入りのエディタを使って、ブックマークの追加・編集・更新も行えます。(スター数:6.3K)
8、resume-builder:純粋に Python で開発された履歴書生成ツール
Python 製のシンプルかつ低コストな履歴書作成ツールで、PDF ファイルとして出力できます。
9、more-itertools:itertools を拡張するイテラブル操作のための便利ツール集
標準ライブラリの itertools には便利な関数が多数含まれていますが、more-itertools はそれを拡張するプロジェクトで、さらに多くのユーティリティ関数が用意されています。詳しくはドキュメントを参照するのをおすすめします。(スター数 3.5K)
10、tach:モジュール化と疎結合なパッケージ構成を徹底するツール
Rust 製の Python プロジェクト管理ツールで、モジュール化設計を前提とし、パッケージ間の依存関係を明確にルール化することで、開発や保守をしやすくします。
11、Zango:企業向けアプリ/マイクロサービス開発のための Python Web フレームワーク
Zango は Django をベースにした Web フレームワークで、モノリス環境で、複数のアプリやマイクロサービスを独立してデプロイできます。セキュリティやコンプライアンス対応の機能も標準搭載されており、企業ニーズに応えるための基本コンポーネントが一通り揃っています。
12、pdm:最新の PEP 規格に対応した Python のパッケージ&依存管理ツール
pdm は、シンプルかつ高速な依存関係の解決機能を備えたモダンな Python パッケージ管理ツールです。PEP-517 や PEP-621 に対応し、柔軟で拡張性の高いプラグインシステムも特徴です。Python 本体のインストールにも対応しており、pnpm のように、集中管理されたインストールキャッシュを利用することで、ディスク使用量を抑えることもできます。(スター数 7K)
🐧 バックナンバー
Python トレンド週刊#3:PyPI のセキュリティ問題 (2023.05.27)日本語訳
Python トレンド週刊#4:Python 言語サミット 2023 (2023.05.31)日本語訳
