Planet Python 日本語 ノート

Planet Python 日本語

Planet Pythonは、Python関連の内容を様々なソースから集めたプラネットサイトです。ブログ、ニュースサイト、他のオンライン出版物が含まれます。 このサイトは、Pythonプログラミングの世界で最新の開発状況を追跡するためのワンストップデスティネーションを提供します。サイトの内容には、チュートリアル、ニュース、プロジェクトの発表、Python関連の様々なトピックに関する議論が含まれます。 ユーザーは、Pythonコミュニティ、最新リリース、会議、Pythonプログラミング言語の使用に関するベストプラクティスに関する情報を入手するためにサイトを訪れることができます。このサイトの目的は、Python関連の内容を宣伝し、普及させることで、Pythonコミュニティの成長と発展に貢献することです。

ノートのスレッド

著者は、個人が現実世界の仕事上の問題を解決するのを支援するために、パーソナルコーチングセッションを提供しています。これらのセッションでは、通常、頑固なコード、アーキテクチャの不確実性、またはGit関連の障害などの問題に対処します。著者は長年このサービスを提供してきましたが、現在、専用のウェブページで正式に詳細を説明しています。1時間のセッション中に、クライアントはコードレビュー、プロジェクト計画、ペアプログラミング、Gitの質問、キャリアアドバイスなど、具体的なニーズについて話し合うことができます。セッションはプライベートであり、クライアントの情報と議論の機密性が確保されます。参加者は、セッションの録画と、将来参照するための共有資料を受け取ります。1時間のZoomセッションはそれぞれ300ドルで、いかなるメンバーシップにも関連付けられていません。クライアントはセッションを直接予約するか、著者にメールでスケジュールまたは適合性について話し合うことができます。著者はタイムゾーンに関して柔軟であり、相互に都合の良い時間を見つける意欲を示しています。また、特定の問題がコーチングセッションに適しているかどうかについてのフィードバックにもオープンです。
Pythonの基本的な構文を学ぶことと、機能的なアプリケーションを構築することの間には、大きな隔たりがあります。多くのPythonコースは言語の基礎に焦点を当てていますが、実際のプロジェクトに必要な不可欠な開発ワークフローを軽視しています。これにより、学習者はPythonのインストール、ターミナルの使用、pipによるパッケージ管理、仮想環境、プロジェクトの整理、Gitによるバージョン管理といったトピックについて混乱することがよくあります。これらのスキルは、開発者が自身の作業を効果的に共有し、デプロイするために不可欠です。この問題に対処するため、Ship Your First Python Appという無料の自己ペース型6週間コースが作成されました。このコースは、ゼロから完全なローカル開発ワークフローを教えることを目的としています。参加者は、小さなコマンドラインアプリケーション、すなわち開発者ジャーナルを構築します。各週で新しい概念が導入され、最終的には学生が解決しなければならない失敗したテストスイートで締めくくられます。カリキュラムは、プロジェクトセットアップ、データモデリング、コマンドラインインターフェース、型安全性、エラー処理、コード整理、テスト、出力フォーマットの改善、テストカバレッジの測定をカバーしています。最終週は、ドキュメントの作成やPyPIへの公開の可能性を含め、プロジェクトを共有できるように準備することに焦点を当てています。このコースは、基本的なPythonは理解しているものの、周辺の開発プロセスに苦労している個人を対象としています。CLI、パッケージング、またはGitの事前知識は不要であり、より幅広い層がアクセスできるようになっています。作成者は、コースの有用性とユーザーエクスペリエンスを向上させるために、積極的にフィードバックを求めています。
組織は、アクティブな会員を正確に追跡し、選挙の有効性を確保するために、新しい投票会員資格ステータスを提案しています。過去2年以内に理事会選挙で投票した会員は、自動的にアクティブとみなされ、定足数にカウントされます。最近投票していない会員は会員のままであるが、明示的に投票にオプトインするまで定足数にはカウントされません。この変更は、多くの非営利団体で共通する問題である、会員数の増加に伴う定足数達成の困難さに対処することを目的としています。Python Software Foundationと同様に、この新しいステータスは定足数の計算を簡素化します。会員資格ステータスは失われず、会員は引き続きウェブサイトに掲載されます。アクティブステータスは、一般的な会員資格ではなく、定足数の計算にのみ影響します。組織は、会員が情報を得られるように、選挙のリマインダーを送信し、アップデートを投稿する予定です。投票するには、選挙が開かれる前に組織に連絡して、アクティブロールに追加してもらう必要があります。この提案された規約変更に関するフィードバックは、10月7日までにGitHubまたは会員限定フォーラムを通じて募集しています。理事会は、10月8日の可能性のある投票の前に、すべてのコメントをレビューします。
PyPyはバージョン8.0.0をリリースし、重要なアップデートとなりました。このリリースには、Python 2.7、Python 3.11のサポート、およびPython 3.12のベータ版が含まれています。Linuxのビルドボットはmanylinux_2_28イメージを使用するように更新され、glibc2.28が必要になりました。主要な開発は、CPythonの限定ABI(Application Binary Interface)との互換性を目指すPyPyの新しいCレイヤーモデルです。このアップデートは、限定APIを使用する際に、PyPy固有の拡張機能をC拡張モジュールに隠し、PyPyのCヘッダーをCPythonのものと一致させます。インポート機構とエコシステムツールはまだabi3.soオブジェクトを完全に認識する必要がありますが、CythonとPyO3との連携によりシームレスな統合が確保されるよう取り組んでいます。RPythonコード生成は、計算されたgotoとより積極的なインライン化を含む改善が見られますが、パフォーマンスの向上は限定的です。内部のHPyバックエンドは、十分なサポートが得られなかったため削除されました。復活したツールであるpyhdrdumpは、PyPyとCPythonのヘッダーファイルを比較するために利用できます。このリリースでは、PyPy2.7、PyPy3.11(このバージョンでは最後になります)、およびPyPy3.12ベータ版の3つのインタープリターが提供されます。PyPyは、トレーシングJITコンパイラを利用した、CPythonの高速なドロップイン代替です。バイナリビルドはさまざまな一般的なアーキテクチャで利用可能であり、より多くのプラットフォームのサポートはダウンストリームのパッケージャーによって提供されます。
このテキストは、pytestを教えることに焦点を当てたJupyterLabワークショップの作成について説明しています。 ワークショップは、ブログ記事に収まるほど小さいながらも、実際のワークショップのすべての必須要素を含んでいます。 マニフェスト、複数のページ、インタラクティブなアクション、自動チェック、クイズ、およびサポートツールが含まれています。 ワークショップでは、テストの記述、失敗の観察、そしてコードの修正という、pytestの基本的なループを教えます。 この反復的なプロセスは、ワークショップ内の4つの異なるページにわたって構成されています。 重要な機能は、ワークショップのために分離されたPython環境を作成し、学習者のシステムに影響を与えることなくpytestがインストールされることを保証することです。 このアプローチは、以前のカンファレンストークからのコンテンツレッスンを活用して、学習体験を向上させます。 プロセスは、計画と検証可能なステップの定義から始まり、ワークショップとチュートリアルを区別します。 ワークショップは jupyter workshop init コマンドを使用して生成され、ディレクトリ構造とマニフェストファイルが設定されます。 ターミナルアクセス、ファイル書き込み、コード実行、パッケージインストールなどの機能はマニフェストで宣言され、リンターによって検証されます。 マニフェストの environment フィールドは、pytestなどの依存関係を指定し、これらは自己完結型の仮想環境にインストールされます。 これにより、手動での環境設定が不要になり、学習者はpytest自体に集中できます。 マニフェストの env エントリは、頻繁なファイル変更による問題を回避するために、Pythonバイトコードキャッシュも無効にします。 ワークショップでは、学習者がデバッグするための意図的にバグのある関数を含む files/orders.py ファイルを使用します。 ワークショップの各ページは、Markdownと特定のアクションブロックを使用して、ファイルの開き方、コードの記述、コマンドの実行などのタスクを学習者にガイドします。 チェックは verify アクションを使用して実装され、学習者のアクションの結果を自動的に検証し、進捗と学習を保証します。 quiz アクションは、学習者にテストを実行する前に結果を予測するように促し、pytestの動作方法の理解を強化します。 editor-insert アクションにより、テストなどの新しいコードをエディタに直接追加して表示できます。 ワークショップの構造とコンテンツは、インタラクティブで教育的なものになるように設計されており、pytestの実践的な応用に焦点を当てています。
CdXz5zHNQW_hkEwNEOUhk.png
著者は、2つの異なる画像生成バックエンドとやり取りするCLIツールのための共有コントラクトを設計していました。目標は、各バックエンドが独自のSDK呼び出しに変換する汎用的なsubmit(request)関数をCLIが使用できるようにすることでした。当初、著者は抽象メソッドの強制 due to their enforcement of abstract methods のために、抽象基底クラス(ABC)を共有インターフェースとして検討していました。しかし、ABCは継承を必要とし、これはサードパーティのプラグイン可能なバックエンドとの結合を生み出します。typing.Protocolは、構造的タイピングを使用するため、より適した選択肢として登場しました。クラスは、明示的な継承を必要とせずに、正しいシグネチャを持つ正しいメソッドを持つことでProtocolを満たします。このアプローチは、外部実装者をコアパッケージから分離し、プロバイダーが独立して進化できるようにします。Protocolは、プロバイダーが厳格な階層の一部ではなく値として渡される、コンポジションベースの設計を促進します。Protocolはプラグイン境界を記述するのに理想的ですが、プロバイダーが具体的な動作や実装ロジックを共有する必要がある場合は、ABCの方が適しています。ABCは共有メソッドを定義し、具体的なサブクラスが実装しなければならない抽象メソッドを強制することができます。両方を使用することも可能です。公開プラグイン境界のためのProtocolと、プロバイダー間の共有動作のための内部ABCです。著者は、より軽量なコントラクトのためにProtocolをデフォルトで使用し、共有実装が必要な場合や、抽象メソッドの実行時強制が望ましい場合にのみABCに切り替えることを推奨しています。プラグインエコシステムの場合、「形状による適合」(Protocol)は、「継承による適合」(ABC)よりもしばしば好まれます。選択は、主なニーズが形状を定義することであるか、具体的な動作を共有し階層を強制することであるかによって異なります。
2026年のPSF理事会選挙は、グローバルなPythonコミュニティを支援する上での組織の役割について、重要な議論を促進しました。PSFは、立候補者の皆様の奉仕への意欲、そしてコミュニティの熱心な関与と投票参加に感謝の意を表します。新たに選出された理事メンバーであるElaine Wong、Laís Carvalho、Ee Durbin、Georgi Ker、そして再任されたメンバーにもお祝いを申し上げます。退任する理事メンバーであるCheuk Ting Ho、Chris Neugebauer、Denny Perezには、PSFの戦略的ビジョンの形成における多大な貢献とリーダーシップに感謝いたします。選挙は670票の投票があり、定足数に達し、コミュニティの強い関与を示しました。理事メンバーのKwonHan Baeを含む選挙推進者、そして選挙プロセスの改善に尽力したPSFスタッフと理事メンバーに特別な感謝を申し上げます。選挙結果の詳細については、2026年11月10日までPSFウェブサイトでご覧いただけます。PSF選挙チームは、フィードバックを収集し、将来の選挙プロセスを改善するための振り返りを行います。組織は、discuss.python.orgまたはメールを通じて、選挙プロセスに関するコミュニティからの継続的なフィードバックを奨励しています。来年も少なくとも3つの理事席が空くため、関心のある方は詳細を確認し、立候補を検討されることをお勧めします。
CdXz5zHNQW_cy1larHnBn.png
CdXz5zHNQW_vTLavQQ1oQ.png
著者は、教育ワークショップでプレーンなJupyter Notebookを使用する際の制限に対処するために、JupyterLab拡張機能であるjupyterlab-workshopを開発しました。この拡張機能は、指示と学習者が行う実際の作業を分離します。指示はサイドバーパネルに表示され、各ステップはJupyterLab環境内で実行可能な項目となります。これらのアクションには、ターミナルコマンドの実行、ファイルの変更、ノートブックの作成、コードの実行などが含まれます。ワークショップは、学習者の進捗を確認し、次に進む前にタスクの完了を強制することもできます。学習者がコードの実行をただ受動的に見るだけのノートブックとは異なり、この拡張機能はアクションがリアルタイムで実行されるため、積極的な参加を保証します。JupyterLab環境全体や外部ツールとの対話を可能にすることで、ノートブックが単一の言語に限定されるという制約を克服します。この分離により、指示内容と完了した作業が混同されるのを防ぎ、より明確な学習パスを提供します。サイドバーパネルは、ナビゲーション、進捗状況の追跡、実行されたアクションの詳細を提供します。実行可能な各ステップはシミュレートされたものではなく、アクションをクリックするとライブターミナルで実行されるか、指定されたタスクが実行されます。この拡張機能は、ターミナル操作、ファイル管理、ノートブックの操作、インターフェースの操作など、さまざまなアクションをサポートします。ワークショップは、特定のポイントで最適な学習のためにユーザーインターフェースを配置するように設計することもできます。チェックポイントを使用すると、学習者は進捗状況を保存し、エラーが発生した場合に既知の状態に戻ることができます。この拡張機能には堅牢な検証システムが含まれており、Pythonコード、シェルコマンド、またはファイルベースの述語によるチェックが可能です。クイズも統合でき、回答は次のステップにフィードされます。マニフェストファイルは、タスク完了が推奨か必須かを決定します。セキュリティは、学習者が実行前にワークショップに特定の機能の許可を与える信頼メカニズムを通じて対処されます。ワークショップ自体は、マニフェストファイル、ページのMarkdownファイル、および必要なスターターファイルを含むディレクトリとして構造化されています。このプレーンテキスト構造は、バージョン管理を容易にします。ページはMyST Markdownで記述され、アクションはフェンスで囲まれたコードブロックで定義されます。この拡張機能はローカルにインストールすることも、mybinder.orgやGitHub Codespacesなどのサービスを介して使用することもでき、ワークショップは複雑なセットアップなしでさまざまな環境で実行できます。著者は、以前のプラットフォームであるEducatesを使用しないことを選択しました。それはKubernetesを必要とし、小規模なチームや個人にとってのアクセシビリティを制限していたためです。
CdXz5zHNQW_ghHpRchT3T.png
新しいRustの学生が、Fileオブジェクトでread_to_stringを呼び出そうとした際にエラーに遭遇しました。コンパイラは、そのようなメソッドは存在しないと示しました。解決策は、ファイルの先頭にuse std::io::Read;を追加することでした。このインポートは、ファイル操作を意図しているならstd::io::Fileがインポートされると予想していた学生を混乱させました。混乱の核心は、Rustのトレイトシステムにあります。read_to_stringメソッドは、File型自体の固有のメソッドではありません。代わりに、Fileが実装しているReadトレイトによって定義されています。Readトレイトをインポートすると、そのメソッドがRustコンパイラによるメソッドルックアップで利用可能になります。このメカニズムはPythonとは大きく異なります。Pythonでは、メソッドの利用可能性は通常、オブジェクトの型に直接結び付けられています。Rustでは、トレイトは異なる型間で共通の動作を定義する方法を提供し、ポリモーフィズムとコードの再利用を促進します。例えば、FileTcpStreamStdinはすべてReadトレイトを実装しており、同様の読み取り機能を提供できます。したがって、use std::io::Read;は直接関数を使用することではなく、Readインターフェースをスコープに取り込むことです。これにより、コンパイラはそれを実装する型のメソッド呼び出しを解決する際にReadトレイトを考慮することができます。トレイトを理解することは、Rustで特定の無関係に見えるインポートがメソッド機能に必要とされる理由を理解するために不可欠です。このアプローチはコードの重複を避け、ジェネリックプログラミングを可能にします。コンパイラの「trait Read is implemented but not in scope」というエラーメッセージは、このトレイト解決の問題を直接指摘しています。
「沈黙は金なり」と題されたライトニングトークは、ためらいがちな話し手からの参加を促すために、議論に静かな時間を取り入れることを提唱しています。積極的に発言する発表者は、他者のためにスペースを作るために、自分を抑えることの個人的な難しさを認めています。このアイデアは、支配的な話し手が他の人の発言を妨げたグループディスカッションを観察したことから着想を得ています。このトークでは、通常、物理的なスペースに関する「パックマン・ルール」を、会話の時間という概念に適用することを提案しています。中心的なメッセージは、特定の状況で静かにしていることの難しさ、しかし重要性を強調しています。ポーズを作ることで、多様な声が現れる、より包括的な環境を育むことを目標としています。このアプローチは、グループダイナミクスを改善し、すべてのメンバーが自分の考えを共有する機会を得られるようにすることを目指しています。発表者は、このメッセージが説教的ではなく、建設的に受け取られることを願っており、それは自分自身へのリマインダーでもあります。最終的に、意図的な沈黙は、関係者全員からのより豊かでバランスの取れた貢献につながる可能性があります。
RuffというRustで書かれたツールを使用すると、CPythonのコードベースをスクラッチからわずか0.3秒でリントできます。RustはPythonエコシステム内でますます採用されており、Pydantic、Polars、uv、Granianなどの人気ツールに登場しています。RustとPythonのこの統合は、スタンドアロンツール、Pythonによってインポートされるライブラリ、Pythonインタープリタを埋め込むサーバーという3つの主な目的を果たします。焦点は、深いRustの専門知識を必要とせずに、Python開発者がRustにアクセスできるようにすることです。Christopher Trudeauは、このトレンドと彼の新しいコース「Up and Running with Rust」について議論します。PythonとRustの根本的な違いはメモリ管理であり、Pythonはガベージコレクションに依存していますが、Rustはコンパイル時に厳格な所有権ルールを強制します。このトークは、RustがPython開発の強化にどのように活用されているかを検討します。また、Rustとそのアプリケーションについてさらに学ぶためのさまざまなスポンサー付き製品やリソースにも言及しています。このエピソードは、関連プロジェクト、ドキュメント、および関連コンテンツへの広範なリンクを提供します。この議論は、RustとPythonコミュニティ間の成長する相乗効果を強調しています。
Django Software Foundation は、初の Executive Director の募集締め切りを延長しました。アプリケーションは、地球上のどこからでも、2026年9月22日火曜日の終わりまで受け付けられます。この延長は、関心のある候補者が応募書類を提出するための時間をさらに確保するために認められました。すでに応募した方々は、審査プロセスにおいて遅延を経験することはありません。Executive Director は、DSF の能力開発と Django プロジェクトの持続可能な未来の確保において極めて重要な役割を担います。主な責任には、資金調達とパートナーシップの主導、運営の支援、ステークホルダーとの協力が含まれます。理想的な候補者は、資金調達、関係構築、組織運営に長けた経験豊富な非営利団体リーダーです。Django または Python の事前の専門知識は必要ありませんが、オープンソースまたはコミュニティ主導の組織での経験は有益です。財団は、幅広い役割に慣れ、イニシアチブ構築に長けた人物を求めています。潜在的な資金提供者に対して Django の魅力を伝えるためには、強力なコミュニケーション能力とリーダーシップスキルが不可欠です。自身または知人が適任だと考える方は、応募または機会の共有を奨励します。完全な職務内容と応募詳細はオンラインで入手可能です。DSF は、その未来を形作るリーダーを見つけることに意欲的です。
fastlogging-rs は、アプリケーションにおけるロギングのボトルネックに対処するために設計された、高性能な Rust ベースのロギングフレームワークです。Python の組み込みロギングと比較して最大 147 倍、Apache Log4j と比較して 9 倍高速なファイル書き込みなど、大幅な速度向上を実現します。このフレームワークは、ライターがバックグラウンドスレッドで動作するノンブロッキングな非同期アーキテクチャを提供し、メインアプリケーションの遅延を防ぎます。薄いラッパーを介して 8 つのプログラミング言語(Rust、Python、C、C++、Go、Java、C#)をサポートしており、すべてが類似した API を共有しているため、多様な技術スタック間で一貫したロギングが可能です。主な機能には、オプションのファイルローテーション、圧縮、ネットワークロギング用の AES 暗号化、API またはファイルによる設定が含まれます。fastlogging-rs は、サブプロセスからのログメッセージをメインプロセスに自動的に転送します。この最初のリリースである 0.8.1 には、Rust コアとサポートされている言語のバインディングが含まれています。インストールは、Rust の場合は cargo、Python の場合は pip などのパッケージマネージャーを使用して簡単に行えます。このプロジェクトはオープンソースであり、MIT または Apache-2.0 ライセンスの下で提供されており、ソースコードとドキュメントは GitHub で入手できます。ベンチマークは、標準およびローテーションファイルロギングの両方のシナリオで、その優れたパフォーマンスを示しています。fastlogging-rs は、最小限のコード変更で大幅なパフォーマンス上のメリットを提供することを目指しており、既存のロギングフレームワークからの移行を容易にします。
PyCoder's Weekly のこの号では、パフォーマンスからテスト、新機能まで、さまざまな Python トピックを扱っています。セットと辞書は、常に O(1) ではなく、二次時間パフォーマンスを持つ可能性があることが強調されています。Hypothesis を使用したプロパティベースのテストは、エッジケース テストの代替として推奨されています。スポンサー広告では、効率的な Web スクレイピングのための ScrapingBee が紹介されています。Python 3.15 の遅延インポートのプレビューが説明されており、アプリケーションの起動時間の短縮が期待されます。Django Fundraising Working Group のボランティア募集が呼びかけられています。PyPI からのファイルホスティングエラーに関するインシデントレポートが言及されています。動的なフィルタリングのための Q() オブジェクトのような便利な Django の機能が探求されています。Python クリエイターの Guido van Rossum のプロフィールが特集されています。「Making a Python Interpreter in 1024 Bytes」という記事では、コードゴルフが紹介されています。__dict__ を読み取ることで属性アクセスを非最適化することも議論されています。効果的な Python 開発環境のためのヒントが提供されています。リモート Python データジョブのトレンドの分析では、ボードの縮小とリモートワークの増加が明らかになっています。Python タイマー関数と再利用可能な Timer クラスの構築が教えられています。Wagtail の新しい CLI のプロトタイピングが詳細に説明されています。NumPy の ufuncs とその内部構造が提示されています。django-ox や Plotext を含む、いくつかの新しいプロジェクトとコードリポジトリがリストされています。最後に、PyCon Cameroon やさまざまなミートアップなど、今後の Python イベントが発表されています。
CdXz5zHNQW_hpByPwlbht.png
Pythonソフトウェア財団(PSF)は、2026年から2031年までの期間を対象とした戦略計画2026を正式に採択しました。この計画は共同作業で策定され、初期目標は5月に共有され、6月にはコミュニティからの完全な草案が公開されました。寄せられたフィードバックは最終計画に大きく影響し、セキュリティおよび脆弱性管理の新たな目標の盛り込みにつながりました。コミュニティの意見も、翻訳、ローカリゼーション、企業の資金調達の明確化、PSF会員価値の向上に注力する方針に影響を与えました。専用のウェブページが計画の恒久的な拠点となり、優先順位設定やフィードバックの仕組みを詳細に示します。計画の関連性を確保するため、PSF理事会は年次レビュープロセスを設けています。このレビューでは進捗状況の評価、優先順位の変更の評価、スタッフやコミュニティからの継続的なフィードバックを取り入れます。戦略計画の実施はすでに開始されており、2026年の助成金プログラム資金ラウンドがその方向性に沿った最初の取り組みです。PSFは外部の会計事務所と協力し、最新の財務情報を提供しています。コミュニティは年間を通じて、[email protected] およびDiscordの月例PSF理事会オフィスアワーでフィードバックを提供できます。
AI時代における開発者ワークショップの関連性について、スピーカーはAIがステップバイステップのガイドやチュートリアルを提供するのに長けていると指摘しています。しかし、ワークショップの核となる価値は、間違いが結果を伴い、問題解決を必要とする「実践を通じた能動的な学習」にあります。この実践的な苦労は、受動的な読書やAI生成の説明では再現できない方法で理解を深めます。さらに、ワークショップは学習者が予期しない可能性のある問題に触れる機会を提供し、これは実際の開発において重要な側面です。ワークショップの効果は、環境設定の問題、大きすぎるステップ、なぜそうなるのかの説明不足、不十分な検証といった一般的な落とし穴を克服することにかかっています。スピーカーは、すべての参加者の開始点を標準化し、より良いサポートとより複雑な学習シナリオを可能にするホスト環境を提唱しています。AIはワークショップコンテンツの作成を支援できますが、人間の学習プロセスを理解する点では劣ります。AIは正しさのために最適化するのであって、教えやすさのために最適化するのではなく、学習者の混乱を予測することはできません。ワークショップ作成における重要なステップは、実際の人間によるテストです。AI生成の資料はしばしば読みやすくても、実際にはうまくいかないことがあります。AIからのプレッシャーは、好奇心によって推進される自発的な学習シナリオで最も強く感じられます。なぜなら、AIはその好奇心をより効率的かつ無料で満たすことができるからです。しかし、セールスデモや顧客トレーニングのような明確なビジネス上の推進力を持つワークショップは、依然として非常に重要です。最終的に、ワークショップはAIが完全に再現できない学習リズムを育むことに関するものです。
Wing Python IDE はバージョン 12.0.3 をリリースし、大幅な機能強化を行いました。 このアップデートには、Python 3.15 のサポートと、最新の型ヒントのためのソースコード分析の改善が含まれています。 大規模な Python 環境での自動補完は、自動インポートが有効な場合でも大幅に高速化されました。 Wing 12 は Claude Code AI コーディングエージェントを深く統合し、新しい Claude Code ツールと AI ワークフローを管理するための Tasks ツールを備えています。 また、AI エージェントに Wing の強力なデバッグ、テスト、コード分析機能へのアクセスを許可する MCP サーバーも提供します。 新しい AI 駆動型の FIX 機能は、デバッガーのバグや失敗した単体テストを自動的に解決でき、Write Tests はエージェントに単体テストを生成するように促します。 AI Code Actions を使用すると、ユーザーは AI の支援を受けてコードの説明、レビュー、修正、最適化を行うことができます。 IDE には、OS Commands および Debug I/O ツールで ANSI ターミナルエミュレーションのための疑似ターミナルが搭載されました。 ツールがエディタのスプリットに配置できるようになり、ワークスペースの柔軟性が向上し、Tools メニューが使いやすさを向上させるために再編成されました。 Wing 12 は、製品ラインを AI エージェントツールを備えた Wing Pro と、従来の開発のための Wing Classic に簡素化し、Wing Personal は廃止されました。
CdXz5zHNQW_dlloi3F9Xk.png
David Sacks氏のツイートをAI検出ツールPangramがAI生成と判定し、Sacks氏はAI検出ツールを「インチキ」と反論した。Pangramは誤検出率が低いにもかかわらず、LLMライティングアシスタントはしばしば人間の文章をAIと誤って判定する。Pangramは人間の文章で学習し、その後LLMに書き換えや編集をさせることで、AIの文章パターンを識別することを学習する。著者は、既存のDario氏とSam Altman氏の投稿に基づき、David Sacks氏のスタイルで「フロンティアのペース配分」についてツイートを生成するようLLM Opus 5に指示した。生成されたツイートは、OpenAIとAnthropicが持つデュオポリが、商業的および戦略的に利益になるため、フロンティアのペース配分を行うべきだと主張した。また、オープンウェイトモデルが主な危険であるという主張を退け、提案された規制アプローチを批判した。Pangramはこの生成されたツイートを100%AIと評価した。著者はその後、ツイートを人間が手動で書き直し、その構造とアイデアを維持し、Pangramからの人間による評価を目指した。大幅な言い換えとコピーされた文章の削除にもかかわらず、この人間が書き直したテキストもPangramから100%AIの評価を受けた。著者は、初期構造のためにLLMに依存すると、大幅な編集の後でもAI検出スコアが悪くなる可能性があると指摘している。著者は、LLMの使用の影響と、文章作成におけるLLMへの依存度の高まりについての意識を高めたPangramに感謝している。しかし、著者は、大幅な人間による編集を経た文章に対して100%AIという評価が妥当かどうか疑問視している。
Pydantic v2のデータ検証は、pyO3を用いて構築されたpydantic-coreというRust拡張に依存しています。この記事では、RustでカスタムJSONパーサーを作成し、それをPythonに公開する方法を実演します。このプロセスは、Rustモジュールを書き、PyO3マクロで注釈を付け、maturinを使ってコンパイル・インストールを行うことから始まります。この例の核となるのは、JSONツリー構造を表すRustのenumです。関数をPythonに公開するには、PythonやBoundのような特定のPyO3注釈や型が必要です。最も重要なのは、Rustのデータ構造をPythonオブジェクトに戻すことです。この「リターントリップ」には多数のPythonオブジェクトを作成する必要があり、大規模なJSON文書の解析よりもコストが高くなることがあります。この変換はIntoPyObjectトレイトの実装によって処理されます。エラーも翻訳する必要があります。RustエラーはFromトレイトを使ってPython例外に変換されます。スカラーリターン値の場合、境界を越えるコストは無視できるほどです。しかし、大規模な構造物では変換コストが非常に大きく、パフォーマンスを支配することがあります。この境界変換を最適化し、場合によっては怠惰なビューを返すことが、RustからPythonへの成功する移植に不可欠です。したがって、RustとPythonの境界のプロファイリングが不可欠です。
CdXz5zHNQW_y8hcnXdNTs.png
Wrapture はバージョン 1.0.0b1 に到達し、アルファ版からベータ版ステータスに移行し、API の安定性を示しました。プロジェクトは現在、将来の開発に役立てるために、実際のアプリケーションに関するユーザーからのフィードバックを求めています。特に OpenTelemetry エクスポートに注意を払い、属性マッピングが規約に準拠していることを確認してください。コンパニオンインストルメンテーションパッケージもベータ段階にあります。コアインストルメンテーションパッケージはインプロセスターゲットをカバーし、データベースや AWS のような外部サービス用の個別のパッケージも存在します。これらの個別のパッケージは独自のリリース周期を持っています。プロジェクトは、Redis、MongoDB、そしておそらく LangChain のためのさらなるインストルメンテーションを計画しています。一連のブログ記事では、単体テストやアプリケーショントレーシングにおける wrapture の使用について詳しく説明しています。インタラクティブなワークショップは GitHub で利用可能で、ハンズオン学習ができ、mybinder.org またはローカルで直接ブラウザで実行できます。これらのワークショップでは、ユーザーは実践を通じて wrapture の概念を学ぶことができます。著者は、Simon Willison による以前の要約投稿がすでに wrapture の認知度を高めていることを認識しています。現在の投稿は、関連するすべてのリンク、パッケージ情報、およびワークショップリソースを 1 つの場所にまとめることを目的としています。新しい機能である jupyterlab-workshop は、JupyterLab 内でインタラクティブなワークショップを実行できるようにします。
AIが人類の絶滅を引き起こすという考えが最近広まっている。Dario Amodeiのような一部のAIリーダーは、そのような事象の significant な確率を推定している。AmodeiのAI開発のペースに関する投稿は、著名な人物の間で議論を巻き起こした。しかし、著者は多くの懸念を共有しているにもかかわらず、その前提に同意しない。著者は「破滅」を絶滅ではなく、AIシステムが制御不能になるような、botnetのような永続的な迷惑行為と定義している。現在のAIシステムは煩わしいがシャットダウンできるが、将来の高度なエージェントはそうではないと認識している。著者は、AI制御兵器のような存亡の危機ではなく、主要なAIラボ以外の個人へのAIの影響を懸念している。AI開発の「ペース」という概念は、特にこの競争をリードしているアメリカの企業が少数であることから、問題があると見なされている。これらの企業は公共のデータとリソースから恩恵を受け、現在、それらに結びついた第三者評価システムを提案している。著者は、これらの企業だけが強力なAIを制御すべきだという考えを批判しており、特にそれらの地政学的な動機を考慮するとそうである。著者は、オープンウェイトモデルは、核拡散と同様に、広範なアクセス可能性を通じて本質的にAI開発のペースを上げると主張している。現在、一般市民がAI開発を支持しながら、少数のラボからその恩恵を買い戻している状況は、欠陥のある経済的および地政学的なモデルと見なされている。オープンソースプロジェクトはAI企業によって圧迫されているが、中国のラボは能力を普及させ、競争の場を平準化するために重要であると見なされている。著者は、既存の法律が無視され、データが無断で使用されている規制の失敗を指摘している。AIサービスのための出現したトークン経済は、透明性を欠いた麻薬市場に例えられる。理想的には、AI開発は公共の共有財産に利益をもたらすべきであり、規制は知識の蒸留を支援することを義務付けるべきであった。最終的に、著者はAIによる絶滅イベントを予見しておらず、大規模なラボは失うものがもっと多いと考えている。代わりに、主な懸念は、AIが様々な産業に引き起こす可能性のある広範な損害であり、それらをより高価にするものである。ソフトウェアエンジニアリングで明らかになっている、この新しいイノベーションへの「税金」は、他の分野にも広がるだろうと予想されている。
著者は、情報量が多く示唆に富む内容のため、メールニュースレターを読むことを楽しんでいるが、平日は時間がなく、土曜日にコンピューターを使用することを好まない。この問題を解決するため、ニュースレターが自動的に「toprint」フォルダに移動され、お気に入りのものはスターが付けられるシステムが開発された。金曜日の午後に、スターが付いたニュースレターと選択されたスターが付いていないものが印刷され、しばしば両面印刷で1枚あたり4ページにまとめられ、土曜日の朝に読まれる。しかし、この手作業のプロセスは、大量の紙の無駄を生み出し、不要なコンテンツや画像を削除する手間のかかる作業を伴った。この非効率性に不満を感じた著者は、このタスクを自動化するためにPythonパッケージ「newsprint」を作成した。Newsprintはスターが付いたニュースレターを処理し、宣伝コンテンツや不要な画像が削除されたPDFを作成する。画像はインテリジェントに処理され、ニュースレターとページ情報を含むフッターが追加される。このパッケージは目次を生成することもでき、Claude APIキーを使用して、ニュースレター全体の要約とパーソナライズされた洞察を提供することもできる。ユーザーは含めるスターが付いていないニュースレターを選択し、用紙サイズと向きをカスタマイズし、処理されたニュースレターを管理できる。Newsprintはすでに著者の紙の使用量を削減し、読書体験を向上させている。
Wraptureは現在、OpenTelemetryをトレースデータの一流の先として統合しています。すべてのインストールに付属する「wrapture.otel」サブパッケージは、トレーシングバックエンドへのシームレスなエクスポートを可能にします。設定に「[otel]」テーブルを追加することで、ユーザーはトレースを有効にしたり、サービス名を指定したり、個々の信号設定を調整したりできます。この構成により、エラーやリクエストの詳細を含むアプリケーションの動作を詳細に内省することが可能になります。OpenTelemetry環境変数がトレースデータの送信先を決定し、コンソールのエクスポーターで即時デバッグが可能です。各アプリケーションイベントはスパンに変換され、階層的なトレースを形成します。例えば、Flaskリクエストはサーバースパンとなり、内部呼び出しはネストされたスパンを作ります。「KeyError」のようなエラー条件は、ステータスコードや例外の詳細で正確に記録されます。インストゥルメンテーションは引数やその他の注釈付きデータをスパン属性として自動的にキャプチャし、クレジットカード番号などの機密情報は黒塗りされます。これにより、エラーが完全に文書化され、特定の操作と親要求スパンの両方で発生します。複数のプロセスにまたがる分散トレースは、W3Cのトレースコンテキスト伝播によって実現されます。Wraptureは送信リクエストにtraceコンテキストヘッダーを注入し、受信サービスのミドルウェアで解析されます。これにより、traceは異なるサービス間にまたがり、一貫したtrace IDを維持できます。OpenTelemetryのエクスポートが有効になっても、Wraptureは独自の発行されたtrace IDを保持し、継続性を確保します。同じ追跡されたイベントからもメトリクスが生成され、明示的な計測コード変更を必要とせずに集約された洞察を提供します。リクエスト時間や通話時間はHTTPメソッド、ルート、ステータスコードなどの関連情報によって自動的に収集・帰属されます。これらのメトリクスは価値あるパフォーマンスおよびエラー率の情報を提供します。OpenTelemetryでラッピングを使う場合のオーバーヘッドは、OpenTelemetry SDKの直接利用と同等です。ラッピングは完成したスパンを直接構築することでスパン処理を最適化し、SDKの内部オーバーヘッドの一部を回避します。これにより、特に例外が発生する操作ではコストが低減されます。ラッピング設計の基本原則は一貫しており、テストと本番トレーシングの両方でリアルタイムの呼び出しを正確に観察することです。テストテープに送る場合でも、トレーシングバックエンドに送る場合でも、基盤となるメカニズムは変わりません。OpenTelemetryのエクスポートページでは、サンプリングやログ信号統合などの高度な機能の詳細が提供されています。
スタンフォード大学のCode in Placeは、AIコーディングツールの登場後、受講者数が倍増し、プログラミング学習への関心の高まりを示しました。このクラスを運営するChris Piech氏は、人間が依然としてコーディングを学ぶべき理由を説明します。彼はプログラミングをシンタックスと問題解決に分け、AIはシンタックスに優れているが、人間は問題解決スキルを習得する必要があると述べています。AIの潜在的なエラーや構造的な欠陥を見抜くためには、基本的なアーキテクチャの理解が不可欠です。AIへの過度の依存はスキルの低下につながる可能性があるため、プログラマーはAIツールと並行して自身の成長を意識する必要があります。コーディングは、現実世界の意思決定とは異なり、迅速なフィードバックループを備えた優れた問題解決の練習場となります。最も価値のある永続的なスキルは、何が構築する価値があるかを特定し、ユーザーのニーズを理解することです。AIは強力なチューターとして機能し、基本的な概念を教える際に学習を加速させることができます。重要なのは、AIを批判的思考の代替ではなく、学習ツールとして使用することです。人間の判断力、センス、そして何を構築するかを決定する能力は、AI時代において最も価値のあるスキルです。
EuroPython 2026 は、参加者、講演者、ボランティア、スポンサーの皆様のおかげで、7月13日から19日までクラクフで開催されました。カンファレンスでは、魅力的な技術発表と強い仲間意識をもって、Pythonコミュニティが紹介されました。全セッションのビデオ録画とカンファレンスの写真は、皆様がお楽しみいただけるよう、現在オンラインで公開されています。今年のイベントには1,386名の参加者があり、経験豊富なPythonユーザーも多数参加しました。最も人気のあるトピックはCore Pythonで、次いでWeb Development、Data Science & MLでした。2名の新しいEuroPython Society Fellowが、その多大な貢献を称えられて選出されました。EuroPythonのステージで、Python Software Foundation Community Service Awardが初めて授与されました。また、EuroPythonの25歳の誕生日を祝い、長年のコミュニティメンバーが表彰されました。スプリントのハイライトは、コミュニティ精神を育んだ自家製ジェラートトラックでした。参加者のPythonとカンファレンスに関する知識を試す、難易度の高いKahootクイズも実施されました。主催者は、参加者が作成したアートワークも共有し、PyCon NL、PyCon España、Django on the Medとのパートナーシップを発表しました。プラチナスポンサーであるManychat、Microsoft、Vercelをはじめ、すべてのスポンサーに感謝の意を表します。
CdXz5zHNQW_MR1HRatWUi.jpeg
Flaskショップの/orderエンドポイントは遅く、ボトルネックを特定することが目標です。従来のストップウォッチ方式ではコードの変更が必要で、ログ行がリンクされず、断続的な遅延に対処するのが困難です。プロファイラーは詳細すぎるため、リクエスト固有の情報が不明瞭になります。既存の設定を使用すると、最初のトレースで時間の内訳がすぐに明らかになります。リクエストは37.3ms、ビューは36.3ms、サービスは35.9ms、レジャーは35.1msかかりますが、ゲートウェイはわずか8usです。これは、レジャーが遅延の主な原因であることを示しています。「セルフタイム」という概念は、子による遅延とは別に、それ自体が遅延している操作を区別します。Wraptureはこれを計算し、レジャーがそれ自体で遅延していることを示し、サービスとビューはレジャーを呼び出すために遅延していることを示します。wrapture.instrumentationwrapture.timelineを使用したテストでこれが確認されます。OrderService.placeは31.0msのうち173usのセルフタイムを持ちますが、Ledger.recordがほとんどの時間を占めています。このレベルの詳細は、標準的なプロファイラーでは利用できません。長期的な監視のために、Aggregateコレクターは、合計時間、セルフタイム、最小時間、最大時間を含む、多くのリクエストにわたる統計情報を収集します。サーバーに30件のリクエストを送信したレポートは、Ledger.recordがセルフタイムで最大の貢献者であることを確認します。テナントごとの遅延を追跡するために、wrapture.annotateは、インフライトイベントに「X-Tenant」のようなカスタムデータを追加することを可能にします。これにより、トレースをフィルタリングして、どのテナントが遅延したリクエストを経験しているかを特定できます。Counterコレクターは、より安価な代替手段を提供し、期間を保持せずに操作をカウントするだけで、テストスイートでの予算ベースのアサーション(例:N+1クエリ問題の検出)に適しています。次のステップは、これらのイベントをトレーシングバックエンドにフィードすることです。
NumPyとPyQt6を使用したスレッド化されたビデオストリーマーでのクラッシュは、多くの場合、QImageがNumPy配列メモリとどのように相互作用するかに起因します。NumPy配列からQImageが作成されるとき、データはコピーされず、代わりに元のメモリバッファを参照します。これはマルチスレッドアプリケーションでは危険な状況を生み出します。なぜなら、ワーカー スレッドがNumPy配列を変更または破棄した場合、GUI スレッドのQImageが無効になり、クラッシュにつながる可能性があるからです。解決策は、QImageが独自の独立したデータのコピーを持つことを保証することです。これは、QImageで.copy()メソッドを呼び出すことによって達成されます。このコピーのタイミングは重要です。QImageがワーカー スレッドからGUI スレッドに渡される前に、通常はシグナルを介して発行される前に実行する必要があります。さらに、setPixmapの呼び出しなどのすべてのGUI更新は、メイン スレッドでのみ実行する必要があります。シグナルとスロットの使用は、ワーカー スレッドがGUI更新のためにメイン スレッドと通信するための正しい方法です。提供された例は、NumPy配列からQImageを作成し、すぐにコピーし、次にコピーされたQImageをシグナルを介して発行することによってこれを実証しています。メイン スレッドのスロットは、この安全なQImageを受信し、QPixmapに変換し、クラッシュを引き起こすことなくQLabelを更新します。これらのプラクティスを実装することにより、PyQt6での信頼性の高いスレッド化されたビデオストリーミングを実現できます。
PyQt アプリケーションにおけるバックグラウンドスレッドは、QThreadPool または QThread によって管理され、メインウィンドウが閉じられた後も実行を続けます。これにより、アプリケーションがハングしたり、エラーが発生したりする可能性があります。これを解決するには、メインウィンドウクラスで closeEvent メソッドをオーバーライドします。このメソッドは、ウィンドウが閉じ始めるときに自動的に呼び出され、クリーンアップコードを実行する機会を提供します。closeEvent の内部では、すべてのバックグラウンドワーカーに実行を停止するようにシグナルを送る必要があります。QRunnable として実装されたワーカーの場合、これには通常、ワーカーの run メソッドが定期的にチェックする内部フラグを設定することが含まれます。ワーカーに停止をシグナルした後、QThreadPool.waitForDone() を使用して、プール内のすべてのスレッドがタスクを完了するまで実行を一時停止します。これにより、スレッドが突然終了することがなくなり、潜在的な問題を防ぐことができます。最後に、event.accept() を呼び出して、ウィンドウが正常に閉じられるようにします。また、アプリケーションのイベントループの実行を sys.exit() でラップして、プロセスのクリーンな終了を保証することも重要です。このパターンにより、アプリケーションが完全に終了する前に、すべてのバックグラウンド操作が正常に停止することが保証されます。
Webアプリケーションのリクエストをトレースするには、HTTPリクエストの詳細と、その処理中に発生したすべての呼び出しを階層的なツリーとしてキャプチャします。WSGIアプリケーションは、ステータスとヘッダーがコールバック経由で渡され、ボディが呼び出し後に消費されるイテラブルであり、例外が内部で処理されるため、トレースに課題をもたらします。Flaskアプリケーションの例はこれを実証しており、ヘルスチェック、引用、注文のためのルートがあります。トレースの設定には、Flaskのインストルメンテーションを指定するための[[instrument]]エントリが含まれるようになりました。このセットアップにより、リクエストフローの詳細な観測が可能になります。Flaskリクエストが処理されると、トレースはツリーを開始するリクエストラインを示し、それに続いてアプリケーションロジックを表すネストされた呼び出しが表示されます。エラーはFlask内の例外処理を通じてキャプチャされ、インストルメンテーションがリクエストイベントに対してそれらを記録できるようになります。ノイズを管理するために、ヘルスチェックのような特定のパスは無視でき、トレースデータの生成を防ぐことができます。Flask拡張機能のライフサイクルコールバックも、オプションで観測から除外できます。Flaskのインストルメンテーションは、Flaskの実行における主要なポイント、つまりWSGIミドルウェア、ルート処理、例外管理にバインディングを適用することによって機能します。トレースのコアユニットはリクエストイベントであり、ステータス、期間、HTTPの詳細を含むすべての関連データを含みます。この詳細なトレースにより、アプリケーションの時間がどこに費やされているかを分析できます。
このプロジェクトは、Azure Entra ID を認証に使用した、きめ細やかなロールベースアクセス制御 (RBAC) を備えた FastAPI サービスを実装しています。各ルートにアクセス ポリシーをハードコーディングする代わりに、これらのポリシーはデータベース テーブルに格納されます。これにより、管理者はアプリケーション コードを変更および再デプロイすることなく、ユーザーのアクセス許可を変更できます。システムは Azure Entra ID を使用してユーザーを認証し、JWT クレームからロールを取得します。エンドポイント キーと必要なロールのマッピングは、EndpointPermission SQLModel テーブルに格納されます。承認ロジックの中核は、FastAPI の依存関係として使用される require 関数にあります。この関数は、データベースからエンドポイントに必要なロールを取得し、認証されたユーザーがそれらのいずれかを持っているかどうかを確認します。持っていない場合、403 Forbidden エラーが生成されます。エンドポイントのキー文字列は、ルート定義でハードコーディングされている唯一のリテラルです。極めて重要な点として、これらのアクセス許可を管理するエンドポイント自体が、同じ RBAC メカニズムによって保護されており、管理者のみがアクセス ルールを変更できることが保証されています。管理者がアクセス許可管理エンドポイントへの自身のアクセスを誤って取り消すことを防ぐための保護措置が講じられており、ロールの割り当てが決して空にならないことが保証されています。この記事では、一般的な 2 つの Azure 設定の問題を強調しています。v2 ではなく v1 トークンを使用することによる無効なトークン エラー、およびネストされたグループ メンバーシップが直接割り当てのユーザー ロールに反映されないことです。このプロジェクトでは、承認ロジックを効果的にテストするためのガイダンスも提供しています。テストでは、認証およびセッションの依存関係をオーバーライドして、偽のユーザーとインメモリ SQLite データベースを使用できるため、外部依存関係なしで包括的なテストが可能です。この設計は、ポリシーをデータとして外部化することにより、承認を動的かつ管理可能にし、12 ファクター アプリの原則に準拠しています。著者は、コード ロジックと変更可能なポリシーを区別することを強調しています。
PyCoder's Weekly のこの号では、Python 開発者向けのさまざまなトピックを扱っています。Den Odell の新刊「Fast by Default」に沿って、プロファイリングと Python アプリケーションをデフォルトで高速化することについての議論が特集されています。別の主要な記事では、LLM 支援によるフルパイプライン移行を含む、pandas から Polars への移行戦略について説明しています。また、オープンソースのコードレビューアである PR-AF が Code-Review-Bench で非常に優れたパフォーマンスを発揮したという発表もあります。いくつかの記事では、dunder メソッドで NotImplemented を使用するタイミングや、Pydantic と FastAPI を使用したプラグインアーキテクチャの構築など、実践的な Python の使用法について掘り下げています。PyPI.org からの重要な更新では、メタデータリクエストがパッケージダウンロードとしてカウントされなくなったことが指定されており、ダウンロード統計の精度が向上しています。チュートリアルでは、顔認識ツールの構築や、一般的な「NoneType」オブジェクトエラーの修正に関するガイダンスが提供されています。その他の教育コンテンツには、Python デコレータの入門や、非同期 Python を効果的にテストするための洞察が含まれます。開発者は、Django の静的ファイルとメディアファイルを Cloudflare R2 に保存する方法についても学ぶことができます。「Analysis Paralysis Sucks」や「Why OOP Exists」のような示唆に富む記事は、より広範な開発の視点を提供します。Python 3.15 のプレビューでは、デフォルトの UTF-8 エンコーディングの変更がハイライトされており、対応するクイズも掲載されています。この号には、Python から C++ へのトランスパイラである Shedskin や、pandas の多数のエラー例を示す Pandas-silent-bugs といったプロジェクトも含まれています。2026 年 9 月の Python コミュニティ向けの今後のイベントも、さまざまなミートアップや PyCon Cameroon などがリストアップされています。
CdXz5zHNQW_IGTZIgus4k.png
Django Software Foundation は、2026年までに50万ドルを調達するという重要な取り組みである Fundraising Working Group のメンバーを募集しています。この資金調達は、Django Fellows や Django Girls のような既存プログラムの支援、および DSF 初の Executive Director の採用に不可欠です。この目標を達成するには、単純な寄付を超えた戦略的思考、企業関係、有意義なスポンサーシップ、そして Django の価値の伝達に焦点を当てる必要があります。Fundraising Working Group は、新しい Executive Director と緊密に連携し、包括的な資金調達活動を構築します。DSF は、資金調達、スポンサーシップ、パートナーシップ、事業開発、または営業の経験がある個人を探しています。これらの専門家は、機会を特定し、扉を開き、新しい資金調達イニシアチブを開発します。ただし、資金調達の専門知識はグループに参加するための前提条件ではありません。財団はまた、企業がオープンソースをどのように支援しているかを理解している人、企業エンゲージメントに関するアイデアを持っている人、または強力な関係構築スキルと組織スキルを持っている人を高く評価しています。経験豊富な専門家と新しい視点を組み合わせた多様なグループ、仕事を進めることができる人々と学び、貢献することに意欲的な人々を求めています。ワーキンググループは、月例会議とセッション間の非同期作業で運営されます。資金調達の経験に関わらず、関心のある方は応募し、Django Software Foundation が野心的な目標を達成するのを支援してください。
EuroPython 2026 のビデオがオンラインで公開され、基調講演から全編の講演まで 117 件の録画が利用可能です。State of Django 2026 調査によると、Django のコアは安定していますが、周辺のエコシステムは急速に進化しています。AI の統合は一般的になっていますが、開発ワークフローへの応用はまだ洗練されています。ツールは統合が進んでおり、uv と Ruff が大幅に採用されています。型ヒントの使用は増えていますが、チェッカーの選択肢は多様です。注目すべきトレンドは、サーバーレンダリングされたテンプレートと API 専用の Django コミュニティの共存であり、htmx の採用が増加しています。Htmx 4.0.0 がリリースされ、fetch() を使用した書き換えと、明示的な属性継承のような微妙な API 変更が特徴です。新しい追加機能には、組み込みの morph スワップと hx-partial タグが含まれます。Htmx 2.x は 2027 年まで npm でサポートされ、最新の状態が維持されます。「Functionally Zen」という概念は、イディオム的なコード、関数よりもデータ、純粋関数を優先することで、Python のシンプルさを促進します。このアプローチは、副作用を管理するために「純粋なコア」の周りに薄い「不純なシェル」を配置することを示唆しています。最近の追加機能には、uv の新機能と小さな Python インタープリターが含まれます。ステアリングカウンシルの投票も現在受付中です。
著者はClaude Codeを業務で幅広く活用しており、LernerPython.comの重要な部分を開発し、AIチューターをコースやニュースレターに統合しています。これにより、手動でコードを書く量が減り、より多くの成果を生み出し、プロセスを楽しむことができるようになりました。重要な教訓は、Claude CodeのようなAIエージェントは一般的に指示されたことを実行しますが、開発者は意図、仕様、実装の間の潜在的なギャップに注意を払う必要があるということです。AI生成コードを効果的に管理するには、厳格な検証、チェックリスト、および制御された開発環境内でのフォローアップ質問を実装する必要があります。著者のワークフローを大きく変えた4つの実践は、AIの指示に対する契約として機能するCLAUDE.mdファイル、単純なコードの違いよりもテストを優先すること、詳細なテレメトリとロギングの実装、そしてロールバック戦略としての小さなコミットへの依存です。著者はまた、PythonとPandasでClaude Codeを使用するための3つのワークショップを提供しており、入門レベルと上級レベルのトピックをカバーしています。これらのワークショップは実践的であり、コーディングにおけるAIの実践的な応用を教えることを目的としています。ワークショップの受講を検討している方には、説明会も用意されています。
CdXz5zHNQW_nCJNA7OiJQ.png
このテキストは、Pythonプログラムのソースコードを変更せずに、"wrapture"ツールを使用して観測およびトレースする方法を説明しています。当初、トレースはプログラムのエントリーポイントを編集する必要がありましたが、これは継承されたコードや共有コードでは望ましくありません。より柔軟なアプローチでは、個別の設定ファイルwrapture.tomlを使用して、何を観測し、どこにトレースデータを送信するかを指定します。この設定ファイルは、観測ターゲットとその関連メソッド、およびデータ編集ルールを定義します。wrapture.tomlファイルでは、モジュール内の特定のメソッド名またはグロブパターンをターゲットにすることができます。ツールは、python -m wraptureの後にプログラムスクリプトを実行することで実行され、プログラムを実行する前に設定が適用されます。この方法では、ソースコードを変更したアプローチと同じトレース出力が生成されますが、観測ロジックは外部に保たれます。長時間実行されるアプリケーションの場合、トレース出力はJSON Lines形式のファイル、例えばtrace.jsonlにリダイレクトできます。このファイル形式は、引数、結果、例外、タイミングを含む詳細なイベント情報をキャプチャするため、jqのような一般的なツールで簡単に処理できます。トレースをアクティブにしたままにする際の安全上の考慮事項には、ブロッキングを防ぐためのバウンドキューと、ライブオブジェクトを保持しないようにするための引数の要約が含まれます。コマンドラインからの直接実行が不可能な場合は、環境変数を通じてインタプリタの起動時にwraptureを注入するためにautowraptを使用できます。このブートストラップメカニズムは、一般的に本番環境ではなく、開発またはデバッグを目的としています。トレースが注入されると、アプリケーションを再起動することなく、wrapture.bootstrapからアクセス可能な機能を使用して、動的に制御(一時停止および再開、または完全に元に戻す)できます。wraptureの次のステップは、Webアプリケーションに見られるような、より複雑なアプリケーションユニットにこのトレース機能を適用することです。
Wraptureバインディングは、元々は単体テストに使用されていましたが、強力なトレーシングメカニズムとしても機能します。バインディングはメソッド呼び出しを監視し、イベントを発行します。これらのイベントは、テストテープの代わりに「シンク」によって処理されます。これにより、実行中のプログラムのリアルタイムなナレーションが可能になります。この記事では、カード決済が拒否される可能性のあるGateway、Ledger、Notifierを含むOrderServiceを使用してこれを説明します。3つのバインディングが主要なメソッドに適用されます:OrderService.place、Gateway.charge、Ledger.record。簡単なPrinterシンクを使用してこれらのイベントを表示します。出力には、引数、戻り値、例外を含む詳細な呼び出し情報が表示され、インデントによって呼び出しのネストが示されます。重要なことに、カード番号のような機密データは、バインディングレベルのwrapture.redact()キャプチャポリシーを使用して編集できます。シンクが登録されていない場合、バインディングは最小限のオーバーヘッドで、呼び出しあたり約0.5マイクロ秒で実行されます。大量のトレースを管理するために、シンクまたはバインディングレベルでフィルタリングを適用できます。シンクレベルのフィルタリング、例えばwrapture.Depth(1, wrapture.Printer())は、トップレベルの呼び出しのみに出力を制限し、簡潔な概要を提供します。when=を使用したバインディングレベルのフィルタリングは、特定の呼び出しに対してイベントの構築を防ぐ述語を受け取るため、非常に効率的です。ただし、when=は指定されたイベントのみをスキップします。ネストされた呼び出しは引き続き記録されます。呼び出しツリー全体を抑制するには、バインディングにtree=Trueを追加でき、「ここから下は何も」トレースされないことを保証します。バインディングはfiltered_callsも追跡し、ユーザーがどの操作が抑制されたかを理解できるようにします。このセットアップにより、プログラムは最小限のコード変更と、さまざまな監視ニーズに対応するカスタマイズ可能なシンクで、リアルタイムデータを使用して自身の動作を自己記述できます。