名古屋出身ソフトウェアエンジニアのブログ

Python

2024 年でも使える Python 2 コードフォーマッター

Civilization IV の Mod 開発のため、Python 2 のコードを扱える自動フォーマッターを探していました。 結論を言うと Black を使うと良いです。 これ以外だと、まともなものは見つかりませんでした。 ただし、Black は初安定版リリースと同時に Python 2 を陳腐化させたので、ちょっと前のプレリリース版を使うほかないです。 …

Python でジェネリック型の型パラメータを実行時に取れるようにする Mixin 作った

Python でジェネリック型の型パラメータをランタイム時に取得できる抽象を提供するライブラリ Reification を作りました。前回記事「Python のジェネリック型から実行時に型パラメータを取得する方法」の内容を綺麗に実装した感じです。 このライブラリを使用すると、ジェネリックなクラスにランタイムでその型パラメータを認識させ、それに基づいた動作をさせることができます。具体的なユースケースとしては、コードの動的型検査の強化や、型パラメータを動作上の意味付けとして利用することなどが考えられます。 …

Python のジェネリック型から実行時に型パラメータを取得する方法

Python の型ヒントには、ジェネリック型も存在します。しかし、現在の Python の実装では、ジェネリック型のインスタンスやクラスには、実行時に型パラメータの情報は一切残っていない(型消去的動作)です。 本記事では、Python のジェネリック型の型注釈で実行時に型パラメータを取れるようにする方法を紹介します。 …

pip-licenses で Python プロジェクトの OSS ライセンスをまとめて確認

OSS を活用したクラウドサービス開発では、使用する OSS のライセンス管理が重要です。中でも、クラウド提供を頒布行為とみなす AGPL ライセンスの OSS が混入すると法律的な問題に発展する可能性があるため、これを確実に避ける必要があります。 今回は Python 開発において、ライセンス管理を助けてくれるツール pip-licenses について具体的な使用方法を紹介します。 …

Mypy による型チェック入門

元所属していた研究室の方が Mypy を使っているのを観測し、今はどの程度使えるようになっているのか、使用感などを体験してみることにしました。 …

Debian に Python をソースからインストールする

VPS の Debian に最新の Python をインストールする必要があり、初めて Python をソースからビルドしました。 ビルド自体は非常に簡単で、既存の Python を壊さず共存インストールまでできるので良かったのですが、依存パッケージの選定にやや苦労したのでメモを残します。 …