2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python トレンド週刊第14号: 高性能コンパイラ Lpython、Python と JavaScript の相互運用を実現した PythonMonkey

2
Posted at

この記事は2023年8月5日で公開された中国語の記事「Python 潮流周刊#14:Lpython 高性能编译器、Python 与 JavaScript 实现互通」の日本語訳です。主に LLM によって翻訳され、手修正で校正されていますが、もし不自然の点が気づいたら、「記事の改善」機能で、編集リクエストをいただけるとありがたいです。

こちらから最新号まで購読できます(英語のみですので、ご了承ください。)

こんにちは、Python エンジニアのネコです。ここでは毎週、参考になる Python や汎用技術に関する情報をまとめています。一部は英語の内容も含まれており、小見出しにその旨を記載しています。(今回のタイトルは共有項目の一つから取ったもので、すべての内容がそのテーマに関するわけではありませんのでご了承ください。)

Python トレンド週刊では、国内外 250 以上の情報源から注目すべき記事、チュートリアル、オープンソースプロジェクト、ソフトウェアツール、ポッドキャスト、動画、話題のトピックなどを厳選してお届けします。本週刊のビジョンは、すべての読者が Python 技術を高めるとともに、本業や副業の収入アップにつなげられるようサポートすることです。

Telegram チャンネルを開設しました、ぜひご登録ください:https://t.me/pythontrendingweekly

🦄記事 & チュートリアル

1、LPython:新しく、高性能で、マルチプラットフォームに対応した Python コンパイラ

新たに公開されたPythonコンパイラ (現在はアルファ版) は、高性能なPythonの実現を目指すものです。型ヒント 付きのPythonコードを最適化された機械語にコンパイルでき、以下の特徴を持っています:

  • 事前コンパイル (AOT) とジャストインタイムコンパイル (JIT) の両方に対応(JIT)
  • CPythonとの相互運用が可能
  • LLVM、C、C++、WASM、Julia、x86など、複数のバックエンドをサポート

2、Cython 3.0.0 のドキュメント

Cython は Python のパフォーマンス向上に特化したプログラミング言語です。先日、バージョン 0.29.x から一気に 3.0.0 へとメジャーアップデートが行われ、多数のバグ修正と新機能が導入されました。その変更履歴は非常に充実しています。(参考記事: 詳解:五年をかけた Cython 3.0 にはどのような変化があったのか (中国語)では、このバージョンにおける主な変更点がまとめられています。)

3、Python で Pandas と NumPy を使って変動係数を計算する方法

変動係数 (Coefficient of Variation, CoV) は、データセットの平均値に対する相対的な変動の度合いを評価する統計量です。本記事では、変動係数の計算式、その解釈と意義、実際の活用例、そして Pandas および Numpy を用いた具体的な計算方法について解説します。

4、Jupyter における生成AI

Jupyter Notebook が AI 機能に対応し、現在は無料で利用可能です。公式ブログのこのチュートリアルでは、チャットインターフェース上で Jupyter AI を使って様々なタスクを実行する方法を解説しています。AI21、Anthropic、AWS、Cohere、HuggingFace Hub、OpenAI のモデルをサポートしています。

5、Python のパターンマッチング構文

Python 3.10 で導入されたパターンマッチング構文、もう使ってみましたか?この記事では、この構文の基本的な構造や各種パターンの実例を解説し、従来の elif をパターンマッチングで置き換えることが本当に必要なのかどうかについても検討してみます。

6、Rich の Inspect で Python オブジェクトの中身を調べる

Rich は、ターミナルでリッチテキストと美しいスタイルを実現するためのライブラリです (今週の週刊記事の「プロジェクト & リソース」セクションで紹介されています) 。この記事では、Python オブジェクトの属性や利用可能な API を調べることができる inspect() 関数について解説しています。

ファイルオブジェクトの属性とメソッドを確認

7、Python パッケージのバージョン管理にまつわる注意点

少しマニアックな話題ですが、Python パッケージのバージョン番号について取り上げます。実は、Python パッケージのバージョン命名は6つの部分から構成されていることをご存知でしたか?記事の大部分は PEP-440(バージョン識別子と依存関係仕様) の解説にあてられており、最後にはWheelパッケージのバージョン命名規則についても触れています。

8、ファイル I/O 並行プログラミングのパターン

ファイル I/O 操作のパフォーマンス向上に並行プログラミングを活用するには、具体的にどのような手法があるのでしょうか?本記事では、4つの実装パターン(シングルスレッド、スレッドプール/プロセスプール、バッチ処理タスク、プロセスプール内でのスレッドプール利用)を紹介し、状況に応じてより適切なパターンを選択する方法について考察します。

9、Python コードを効率的に読む方法とは?

すべてのプログラマーにとって、コードを読む力は必須のスキルです。では、他人のコードを効率的に読み、理解するにはどうすればよいのでしょうか?この記事では、効果的なコードリーディングの戦略とテクニックをいくつか紹介します。また、コードを「読む側」の視点に立つことは、自らがより読みやすく、理解しやすいコードを書く上でも大いに役立つでしょう。

10、Python から JPype および Pyjnius を用いて Java コードを呼び出す方法

Java と Python にはそれぞれ異なる強みがあります。では、これらを組み合わせて活用するにはどうすればよいのでしょうか?この記事では、JPypePyjnius といったライブラリを用いて Python から Java を呼び出す方法を紹介します。あわせて、各実現方法が抱える課題と制限についても解説します。

11、Python から JavaScript のコードを呼び出す方法

この記事では、PythonMonkey ライブラリの使い方を紹介します。具体的には、Python 環境内で JavaScript コードをロード・実行する方法、および Python から WebAssembly (WASM) を利用する方法について解説します。(著者の他の記事:WebAssembly を使用して Python で Rust コードを実行するWebAssembly を使用して Python から C 関数を呼び出す

12、Textual で ChatGPT の TUI アプリを作る

今週号のニュースレターでは、Textual に関連する記事がいくつか取り上げられています!グラフィカルユーザーインターフェースと比べると、テキストユーザーインターフェースは応答速度が速く、システム要件が低く、自動化も容易という利点があります。今回紹介する記事では、この Textual を使って ChatGPT との対話ツールを構築する方法が解説されています。

ターミナルからChatGPTと会話する様子

13、Python ではじめるベクトルデータベース

Python で話題のベクトルデータベースをどう使う?この記事では、ClickHouse、OpenSearch、pgVector、Pinecone、Redis など、10種類以上のデータベースを用いたベクトルデータのインデックス作成と検索方法を解説します。

14、CPython はどのようにコンパイルされるのか?

CPython は Python の公式実装であるインタプリタです。この記事では、そのコンパイルプロセスについて、構文解析、抽象構文木 (AST)、バイトコード、pyc ファイルの解析といった内容を含め、詳しく解説していきます。

15、新しくリリースされたPythonデバッガーpdbp (Pdb+)のハイライトをご紹介!

筆者は、Python に標準搭載されている pdb や他のデバッガー(ipdb、pdbpp など)の欠点を指摘し、自身が開発した pdbp で行った修正と機能強化、そして基本的な使い方を紹介しています。このライブラリは依存関係が少なく、高機能で、ぜひ試してみることをお勧めします。

🎁Python潮流周刊🎁は、無料で第14号まで公開しています!下記のリンクから、これまでに掲載された全てのバックナンバーをチェックできます:https://pythoncat.top/tags/weekly

もしこの週刊がお役に立ちましたら、応援として寄付をご検討ください!

コーヒーをごちそう

🐿️ プロジェクトとリソース

  1. PyFlo: とても面白い Python 入門学習サイト

このサイトは非常に素晴らしいので、ぜひ体験してみてください!ホームページは学習ロードマップになっており、様々な学習分野やコンテンツカテゴリが示され、いくつかのプログラミングプロジェクト課題も用意されています。各ノードをクリックすると、関連するコンテンツのページへ移動します。(このサイトのアイデアを参考に、日本語読者向けの教育サイトを開発するのも、きっと興味深いものになるでしょう)

一部のロードマップ

2、Pandas Tutor:Pandasの処理ステップを可視化するサイト

Python Tutor をご存知の方も多いと思います。これは、オンラインでインタラクティブな Python プログラミング環境を提供する教育ツールです。ここで紹介する Pandas Tutor もこれと同様のコンセプトを持つツールで、ブラウザ上で Pandas コードを書き、データの変換過程をステップごとに可視化することができます。 (参考までに、この Pandas Tutor を Pyodide に移植する ことで、データサイエンス教育をより広く普及させようとした著者2名の取り組みについて紹介した記事があります)

データ処理の流れを可視化

3、ploomber-sql:SQL と Jupyter でエンドツーエンドのアプリケーションを構築する

これは Read The Docs でホストされているチュートリアルで、SQL と Jupyter を使ったデータ分析の方法を解説しています。データベースの操作、高度なクエリ技法、データ可視化(seaborn、plotly、ggplot などのライブラリを使用)、そしてプロジェクトのパッケージ化・デプロイ・モニタリングといった章で構成されています。このチュートリアルは、スター数 3.1k のオープンソースプロジェクト ploomber によって提供されています。ploomber は、データパイプラインを迅速に構築するためのプロジェクトです。

4. memray: Python 用メモリプロファイラ

これは、週刊記事第12号で紹介した pystack の関連プロジェクトです。Pythonコード、C/C++拡張モジュール、そしてPythonインタプリタ自体におけるメモリ割り当てを追跡可能で、ネイティブモードとリアルタイム表示モードをサポートし、様々な形式のレポートを生成できます。また、Pytestプラグインの pytest-memray を提供しており、テストスイート実行後にメモリ使用状況のレポートを閲覧できます。(スター数 11K)

5、textual-paint:ターミナルで動く MS Paint

MS Paint はマイクロソフト社が開発したシンプルな画像編集ソフトウェアです。このプロジェクトは MS Paint スタイルのテキストユーザーインターフェースの画像エディタで、ターミナル上での画像の開く・保存、MS Paint に含まれるすべてのツールカラーパレットブラシのプレビューなどの機能を実装しています

6、rich: 端末でリッチなテキスト表現と美しいスタイリングを実現

Rich は、ターミナルの表示を単調なものから脱却させ、美しいテーブル、プログレスバー、Markdown、ソースコードのシンタックスハイライト、スタックトレース情報などを表示できるようにします。(スター数 44.2K)

以下のスクリーンショットは、その主な特徴を示しています:

Rich の機能デモンストレーション

7、json-lineage:大規模な JSON ファイルの解析をサポートするツール

これは Rust で開発された JSON 解析ライブラリで、大容量の JSON ファイルをメモリに一度に読み込めないという課題を解決します。その手法は、JSON を JSONL (JSON Lines) フォーマットに変換して処理することで、メモリ使用量を大幅に削減することです。ベンチマークテストでは、500MB のファイルを処理する際、Python の標準 json ライブラリが約 2GB のメモリを消費したのに対し、このライブラリはわずか 1.5MB しか使用せず、処理速度にもほとんど遜色がありませんでした。

8、PythonMonkey: Python 仮想マシンに組み込まれた JavaScript エンジン

以前の記事で既に紹介した PythonMonkey は、Mozilla の SpiderMonkey JavaScript エンジンを Python ランタイムに組み込み、Python をホスト環境として JavaScript を実行できるようにします。このプロジェクトの目標は、Python から JavaScript ライブラリを呼び出したり、その逆に JavaScript から Python ライブラリを呼び出したりすることにあります。もしこの二つの言語のエコシステムをシームレスに連携させることができれば、その可能性は非常に大きいと言えるでしょう!

9、cudf:GPU 数据帧库

cuDF は Apache Arrow の列形式メモリフォーマットを基盤として構築された GPU DataFrame ライブラリで、データの読み込み、結合、集計、フィルタリング、その他の操作を実行するために使用されます。CUDAプログラミングの詳細を理解しなくても利用できる、pandas に似た API を提供しています。(スター数 5.8K)

  1. distill-sd: 軽量で高速な Stable Diffusion

Stable Diffusion に知識蒸留を施して小型化したバージョンは、元の Stable Diffusion と同等の画質を維持しつつ、生成速度が向上し、必要な記憶容量も削減されています。

11、HQTrack:動画内の任意の対象を高精度に追跡

動画内の対象物を高性能に追跡・セグメンテーションするフレームワークです。動画多目的セグメンター (VMOS) とマスク最適化器 (MR) という2つのコンポーネントで構成され、複数のターゲットオブジェクトを同時に追跡しながら、高精度なオブジェクトマスクを出力することが可能です。

12、awesome-mlops: MLOps ツールに関しての厳選されたリスト

これは、MLOps に関する Awesomeリストです。多種多様なプロジェクトやツール、さらに記事、書籍、イベント、ポッドキャスト、ウェブサイトなどのリソースを網羅しています。

🐢 ポッドキャストと動画

1、Talk Python To Me #425:Python メモリプロファイラの最終形、Memray

今回の「プロジェクト&リソース」では Memray をご紹介しています。このポッドキャストでは、2名のゲストをお招きし、このプロジェクトについて掘り下げて議論しました。

🐱スポンサー&ご支援

コンテンツ制作には多くの時間と労力が必要です。もしお役に立てた場合は、ぜひ寄付 または コーヒーをご馳走 でご支援ください!

この週刊を気に入っていただけた方は、他の必要としている方々にシェアして、より多くの方に役立てていただけると嬉しいです~

🐼ご購読はこちら

  • WeChat公式アカウント:Python Trend Weekly の更新だけでなく、その他のオリジナル記事も投稿し、優れた技術記事を転載しています。(友達追加や読者交流グループへの参加も歓迎します)
  • ブログRSS:私の個人ブログです。これまでのオリジナル記事や翻訳した技術記事、そして2009年からの随筆などを掲載しています。
  • Github:今週の週刊の Markdown ソースファイルを取得して、自由にご利用いただけます!
  • メール:Substack で運営しているチャンネルです。メールでニュースレターを購読したい方のご要望にお応えします。
  • Telegram:こちらでは、週刊の更新通知に加えて、より多様な情報を補完する「サブスクリプション」のような役割も果たしています。
  • Twitter:私のフォローリストには、Python 関連の開発者や組織のアカウントを多数フォローしています。
2
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?