この記事は2023年5月20日で公開された中国語の記事「Python潮流周刊#2:Rust 让 Python 再次伟大」の日本語訳です。主に LLM によって翻訳され、手修正で校正されていますが、もし不自然の点が気づいたら、「記事の改善」機能で、編集リクエストをいただけるとありがたいです。
こちらから最新号まで購読できます(英語のみですので、ご了承ください。)
ここでは毎週、参考になる Python や汎用技術に関する情報をまとめています。一部は英語の内容も含まれており、小見出しにその旨を記載しています。(今回のタイトルは共有項目の一つから取ったもので、すべての内容がそのテーマに関するわけではありませんのでご了承ください。)
🦄記事&チュートリアル
1、関数型スタイルの Python デコレータ(中国語)
デコレータの実装原理、引数付きデコレータ、デコレータの重ね掛け、クラスデコレータ、そしていくつかの代表的なサンプルについて解説されています。記事は 2014 年に公開されたもので、コードは Python 2 時代のものです。この投稿を紹介する理由は、陳皓氏による唯一の Python に関する記事であり、非常に丁寧に解説されているからです。
訳注:陳皓氏は「左耳朵耗子」というニックネームで中国のエンジニアでよく知られていますが、2023年5月13日、急性心筋梗塞により逝去されました。ニックネームの日本語訳について確認が取れなかったため、本名をそのまま使用しています。
2、asyncio のいくつかの高度な使い方 (中国語)
おなじみの @古明地覚 さんによる新シリーズ「asyncio シリーズ」より。わずか2週間で14本もの記事が公開され、その圧倒的な執筆ペースとクオリティには驚かされます。今回の記事では、コルーチンと通常の Python 関数の両方に対応する API 設計の方法、イベントループを明示的に進める方法、引数なしでタスク間の状態を共有するテクニックなどが紹介されています。
訳注:「古明地覚」は東方 Project の登場キャラクターである「古明地さとり」の中国語表記「古明地觉」からモチーフしましたニックネームです。
3、Nginx+uWSGI で Django をデプロイし、ロードバランシングを構成する方法(中国語)
この記事では、uWSGI と Nginx の設定方法を通じて、Django アプリケーションに対するリバースプロキシの構築およびロードバランシングの手順を解説しています。内容は連載中の「Django ノート」(中国語:《Django 笔记》)の一部で、現在までに 44 本が公開されており、Django を体系的に学ぶ上で非常に有用なリソースとなっています。
現在、Python のパッケージ管理ツールは非常に多く、Conda や OS のパッケージ管理ツールにもいくつかの課題があります(今週刊の第1号でも関連する話題が2件取り上げられています)。Flask の作者である Armin Ronacher 氏が Rust で開発した rye は、Rust のパッケージ管理の仕組みを参考にしながら、より標準的な解決策を目指しています。この記事では rye のインストール方法と使い方を紹介します。
5、PyInstaller:あなたの Python コードを単体のアプリケーションにパッケージ化する方法 (中国語)
PyInstaller は Python プログラムを Windows、Mac、Linux といった複数のプラットフォーム向けに実行ファイルとしてパッケージ化できるツールです。この記事はシンプルでわかりやすい入門記事であり、基本的な使い方の紹介だけでなく、2種類のパッケージ方法のメリット・デメリットや、パッケージ後に起こりやすい5つのよくある問題についても丁寧に解説されています。
6、Pythonで本当のマルチスレッドを実現する方法(英語)
Python 3.12 では、新たに 「Per-Interpreter GIL(PEP-684)」 という機能が導入される予定です。これにより、Python で真の並列処理が可能になります。現在、この機能はアルファ版の段階であり、C-API を通じてのみ利用可能です。この記事では、CPython の test
モジュールを使って、サブインタプリタの動作例を紹介しています。
7、GIL vs. nogil:コードを1行変えるだけでI/O性能が10倍に向上(英語)
nogil プロジェクトは、真のマルチスレッド実現を目指した別の取り組みです。この記事での検証では、CPython 3.9-nogil が単一ファイルの処理で2.5倍、複数ファイルの処理では 10 倍も速く動作することが確認されました。nogil プロジェクトの最新の進展として、正式な PEP-703 が策定されており、その詳細はこちらで紹介されています。
8、PyCharm でパスフレーズジェネレーターを作成する方法(英語)
PyCharm 公式によるチュートリアル記事です。PyCharm 上でプロジェクトの作成、パッケージのインポート、Typer ライブラリを使ったコマンドラインアプリの作成、コードの実行・デバッグ、ラン/デバッグ構成の作成・編集方法を丁寧に解説しており、初心者の方が学習や実践を始めるのに最適な内容となっています。なお、PyCharm 2023.1.2 が先日リリースされ、新機能や改善が多数含まれているため、ぜひチェックしてみてください。
9、Python メタクラスチュートリアル(サンプル付き)(英語)
Python では、クラスを含むすべてがオブジェクトとして扱われます。メタクラスは、実行時に動的にクラスを作成できる Python の強力な機能で、実際には type
型のオブジェクトを生成しています。この記事では、メタクラスの基本から、より高度な機能や具体的なサンプルまでをわかりやすく解説します。
10、ターミナルで「ls」と入力すると何が起こるのか?(英語)
よくある面接の質問に「ブラウザで google.com と入力すると何が起きるか?」というものがあります。これは何度も聞かれているため、多くの人がだいたい答えられるでしょう。一方で、普段からターミナルを使っている私たちは、「ターミナルにコマンドを入力したときに何が起こるのか?」と問われたら、答えられるでしょうか?この記事では主に、ターミナルの歴史や起動の流れ、そしてコマンドの解析と実行の流れについて解説しています。
🐿️プロジェクト&リソース
1、WingetUI:使いやすいパッケージマネージャー用の GUI(英語)
このプロジェクトは、Windows 10-11 でよく使われるコマンドラインインターフェース(CLI)パッケージマネージャー(Winget、Scoop、Chocolatey など)向けに、直感的に操作できる GUI を作ることを目指しています。現在、ソフトウェアのインストール、更新、アンインストール、順番待ちのインストール、通知機能、ダークモード、インポート/エクスポートといった機能をサポートしています。
2、pandas-ai:AI 機能を搭載した Pandas(英語)
Pandas は現在最も人気のあるデータ分析・処理ツールですが、これに生成 AI の技術が組み合わさると、さらに便利になるのでしょうか?結論としては、まさにその通りです。pandasai プロジェクトは、テキストで Pandas のデータオブジェクトを操作できるようにし、Pandas ライブラリの操作を大幅に簡単にしています。
3、promptulate:強力な LLM Prompt Layer フレームワーク
Prompt Engineer 向けに設計されたこの LLM Prompt Layer フレームワークは、連続した対話の管理や役割の事前設定、会話内容の保存、さらにはツールの拡張機能など、多彩な機能を備えています。プロキシを使わずに直接アクセスできるため、インストール後すぐに利用可能です。promptulate を活用すれば、自分専用の GPT アプリケーションを簡単に構築することができます。
4、MicroPython:マイクロコントローラと組み込みシステム向けの Python(英語)
MicroPython は新バージョン 1.20 をリリースしました。今回のリリースでは、新しい軽量なパッケージマネージャーが導入され、コードサイズが小さくなり、多数の新しいボードがサポートされるようになりました。また、LWN のこの記事では本バージョンが紹介されており、記事によると Anaconda が第2四半期(Q2)に PyScript のランタイムを Pyodide から MicroPython に切り替える可能性があると伝えています。
5、DB-GPT:データベースをベースにした GPT 実験プロジェクト(日本語対応)
ローカル環境で動く LLM を使って、自分のデータや環境とやり取りができます。データ漏洩の心配はなく、完全にプライベートかつ安全です。FastChat をベースに大規模モデルの実行環境を構築し、vicuna をベースにした大規模言語モデルを利用しています。LangChain を使ってプライベートな知識ベースからの質問応答にも対応し、プラグイン機能もサポート。設計段階から Auto-GPT のプラグインにも対応しています。
🐢ポッドキャスト&動画
1、Ep 40. Rust と PyO3:Make Python Great Again(中国語)
しばらく更新が止まっていた『捕蛇者説』ポッドキャストがついに復活しました!今回のゲストは PyO3 プロジェクトのメンテナで、さらに wechatpy の作者でもあります。Rust と PyO3 は Python の強みを活かしつつ、Python のアプリケーションエコシステムを大きく進化させる可能性を持っています。以前にも、パフォーマンス最速のコード解析ツールとして Ruff を紹介しましたし、Flask の作者が新たに開発したパッケージ管理ツール rye も、Rust と Python の連携によって生まれたものです。(余談ですが、『捕蛇者説』の3人のホストが X やブログで陳皓さんを偲んでいるのを見かけました。陳皓さんが Python コミュニティに深く関わっていたとは知りませんでした、ご冥福をお祈りします。)
訳注:Python は英語で「蛇」を意味するため、このポッドキャスト名の『捕蛇者説』は中国の古典作品『捕蛇者説』からインスピレーションを得ています。中国語の漢字表記は「捕蛇者说」で、HPはhttps://pythonhunter.org/です。
2、Talk Python to Me #415: Future of Pydantic and FastAPI(英語)
Pydantic 2.0 は Rust を使ってコアおよびトップレベルのコードを完全に書き直しており、その結果、FastAPI をはじめとする上位のライブラリに良い影響をもたらしています。ポッドキャストでは Pydantic の Samuel Colvin と FastAPI の Sebastián Ramírez を招き、最新の話題としてインタビューが行われました。
3、再訪『Fluent Python』著者 Luciano Ramalho(英語)
先月、新発売された『Fluent Python』中国語第二版(リンク)をおすすめしましたが、今回はそれに関連した資料を2つご紹介します。こちらのポッドキャストは thoughtworks が制作したもので、『Fluent Python』英語第二版の発売前に行われたインタビューです。内容は Python のこれまでの歩みや他のプログラミング言語との比較、新刊での変更点などについて語られています。また、2020年に新刊の執筆中に録音された「The future of Python」というエピソードもあり、どちらのポッドキャストも全文の文字起こしが公開されています。
4、最もよく使われる7つの分散システムパターン(英語)
本動画は、7つの代表的な分散システムパターンである Ambassador、Circuit Breaker、CQRS、Event Sourcing、Leader Election、Publisher/Subscriber、Sharding をわかりやすく紹介しています。アニメーションや図解が非常に見やすく、視覚的に理解しやすい内容となっており、技術者にとっても参考になる構成です。
🥂ディスカッション&トピック
1、プログラマーとして、生活や仕事の質を上げるために使っているアプリやハード、サービスは何ですか?(中国語)
V2ex のスレッドでは、このテーマについてみんな活発に意見を出していますよね。私が特におすすめしたいアプリは Feedly と Substack で、RSS とニュースレターの閲覧に使っています。Feedly は本週刊の情報収集にとても役立っています!(できれば、読者のご支援で Feedly Pro+ の AI 機能も使えるようになりたいな〜)
2、rye は本当に必要なのか?(英語)
前回も取り上げた rye ですが、mitsuhiko さんはなぜこのツールを開発しようと思ったのでしょうか?どんな課題を解決しようとしていて、どのようなツールを目指しているのでしょうか?また、Python 公式はパッケージ管理について今後どのような対応をしていくのでしょうか?このトピックは Github 上で活発に議論されています。
3、皆さんは、どのようにしてプログラマーとしてのキャリアをスタートさせましたか?(中国語)
V2EX の投稿では、スレ主が学生時代から就職する前までの経験を振り返って語っています。コメント欄には、多くの方がそれぞれのキャリアの始まりについての体験談をシェアしています。皆さんは、どのようにしてプログラマーとしての道を歩み始めたのでしょうか?
スポンサー&サポート
コンテンツの作成には多くの時間と労力がかかっています。もしこの記事が少しでも参考になったと感じたら、気軽にサポート や コーヒーをごちそう などをいただけると嬉しいです!
また、スポンサーも募集中です。興味のある方はぜひ DM にてご連絡ください。
本週刊について
Python トレンド週刊では、国内外200以上の情報源から注目すべき記事、チュートリアル、オープンソースプロジェクト、ソフトウェアツール、ポッドキャスト、動画、話題のトピックなどを厳選してお届けします。本週刊のビジョンは、すべての読者が Python の技術力を高めるとともに、本業や副業の収入アップにつなげられるようサポートすることです。
購読方法:Python猫 (Wechatのグループ参加可)| RSS | メールマガジン | Github | Telegram | Twitter