-
Pythonのstringprepモジュールで学ぶUnicode文字列の事前準備
stringprep(文字列準備)とは インターネット上でさまざまな識別子を扱う際には、それらが等しいかどうかを比較する必要があります。しかし、比較の手順はアプリケーションの分野によって異なり、たとえば大文字と小文字を区別しないケースなども存在します。こうした情報を確認し、文字列を適切に正規化するために使われるのが stringprep(文字列準備)です。 RFC 3454では、Unicode文字列をネットワーク上へ送信する前に施すべき「準備」の手順が定義されています。この準備プロセスを経た文字列は、一定の正規化された形式を持つことになります。 RFCでは一連のテーブルが定義されており、これら
-
PythonのGNU readlineインターフェース:履歴管理と主要関数を徹底解説
readlineモジュールは、UNIX環境向けに提供されているPython標準ライブラリの一つです。このモジュールを利用すると、Pythonインタープリタから履歴ファイルの読み書きを簡単に行えるようになります。単体で使用できるほか、rlcompleterモジュールと組み合わせてタブ補完機能を実現することも可能です。さらに、このモジュールの設定は、組み込み関数input()のプロンプトや対話型シェルの動作にも影響を与えます。 なお、macOS(Mac OS X)環境では、readlineモジュールはlibeditライブラリによって実装されています。そのため、GNU readlineとは設定方法が
-
Pythonでデルタ(差分)を計算するには?difflibモジュールの使い方を解説
デルタ(差分)を計算したい場合、Pythonの標準ライブラリであるdifflibモジュールを利用するのが便利です。このモジュールには、シーケンス同士を比較するためのさまざまなクラスや関数が用意されており、テキストファイル同士の比較はもちろん、HTMLファイルの差分検出など幅広い用途に活用できます。 difflibモジュールを使用するには、まずPythonコードの先頭でインポートを行います。 import difflib 以下に、difflibモジュールでよく使われる主要なクラスと関数を紹介します。 クラス:difflib.SequenceMatcher このクラスは、任意の型を持つ2つのシー
-
GNU readlineのPython補完関数:rlcompleterモジュールの使い方
Unixのreadlineモジュールには、タブ補完(Tab Completion)の仕組みが備わっています。この機能をPythonで利用するには、標準ライブラリの「rlcompleter」モジュールを使用します。rlcompleterは、Pythonの対話モード(インタラクティブシェル)における入力補完を実現するためのモジュールです。 rlcompleterモジュールのインポート このモジュールを利用するには、まず以下のようにインポートします。 import rlcompleter Completerクラスとは rlcompleterモジュールには「Completer」というクラスが定義さ
-
Pythonの日付と時刻の基本!datetimeモジュールの型・定数・主要メソッドを徹底解説
Pythonで日付や時刻を操作するには、標準ライブラリのdatetimeモジュールを使用します。このモジュールには、日付・時刻オブジェクトとして「naive(ナイーブ)」と「aware(アウェア)」という2種類のタイプが存在します。 naive(ナイーブ)オブジェクトは、他の日時オブジェクトと明確に区別するために必要な情報(タイムゾーン情報など)を十分に持たないオブジェクトです。UTC(協定世界時)やローカル時刻といった基準を明示的に含まないため、その意味はプログラマー自身が管理する必要があります。 aware(アウェア)オブジェクトは、夏時間(DST)などのアルゴリズム的・政治的な時刻調整
-
Python collectionsモジュールのコンテナデータ型入門|deque・Counter・ChainMapの使い方
Pythonの標準ライブラリであるcollectionsモジュールには、dictやlist、setといった汎用的な組み込みコンテナの代わりに使える、目的に特化したコンテナデータ型が複数用意されています。 代表的なコンテナは以下のとおりです。 番号コンテナと説明 1namedtuple()名前付きフィールドを持つタプルのサブクラスを作成します 2dequeリスト型のデータを利用した両端キューです 3Counterハッシュ可能なオブジェクトの出現回数を数えるdictのサブクラスです 4ChainMap複数のマッピングを1つのビューとしてまとめます 5OrderedDict要素が追加された順序を
-
Pythonのcollections.abcで学ぶコンテナの抽象基底クラス
Pythonには、コンテナ型のための抽象基底クラス(Abstract Base Classes: ABC)が標準ライブラリとして用意されています。これらは collections.abc モジュールにまとめられており、Container、Hashable、Generator、Set、MutableSet、Awaitable など、さまざまな抽象基底クラスが定義されています。collections.abcモジュールのインポートこのモジュールを使用するには、まず次のようにインポートします。import collections.abc抽象基底クラスの活用例抽象基底クラスは、独自のコンテナクラスを開発
-
Pythonのヒープキューアルゴリズム(heapqモジュール)徹底解説
ヒープデータ構造は、優先度付きキュー(プライオリティキュー)を実装するために利用できます。Pythonでは標準ライブラリの heapq モジュールとして提供されており、このモジュールは最小ヒープ(min-heap)を構築します。つまり、値が小さいほど優先度が高いとみなされ、新しい要素を挿入するたびに、ヒープ構造が自動的に再構成されます。 heapqモジュールを使用するには、まずインポートします。 import heapq heapqモジュールには、以下のようなヒープ操作用のメソッドが用意されています。 heapq.heapify(iterable) イテラブルなデータセットをヒープ構造に変換し
-
Pythonのbisectモジュール完全解説:二分挿入アルゴリズムでソート済みリストを効率的に操作する
Pythonには、bisectという標準モジュールが用意されています。このモジュールを使用すると、二分挿入(バイセクション)アルゴリズムを活用でき、ソート済みリストに対して「どこにデータを挿入すればリストがソートされた状態を保てるか」を高速に調べたり、実際に適切な位置へ要素を挿入したりすることができます。 二分探索をベースとしているため、線形探索のように先頭から順番に比較する必要がなく、大規模なデータでも非常に効率的に動作する点が大きな特徴です。 このモジュールを利用するには、まず以下のようにインポートします。 import bisect bisectモジュールには、主に以下の6つの関数が
-
Pythonの弱参照(weakref)モジュールの使い方を徹底解説
Pythonで弱参照(Weak Reference)を作成するには、標準ライブラリの weakref モジュールを使用します。弱参照はオブジェクトを生存させ続ける力を持たない参照であり、その主な用途として、大きなオブジェクトに対するキャッシュやマッピングの実装が挙げられます。 weakrefモジュールのインポート このモジュールを使うには、まず以下のようにインポートします。 import weakref なお、すべてのオブジェクトが弱参照をサポートしているわけではありません。例えば tuple や int といった一部の組み込み型は弱参照に対応していません。そのため、通常は独自に定義したク
-
Pythonの浅いコピー(シャローコピー)と深いコピー(ディープコピー)の徹底解説
Pythonにはcopyという標準モジュールが用意されており、これを使うことで「浅いコピー(シャローコピー)」と「深いコピー(ディープコピー)」を実現できます。まず押さえておきたい重要なポイントとして、Pythonでは代入文(=)はオブジェクトそのものをコピーしません。代入はターゲット変数と元オブジェクトの間に参照(バインディング)を作るだけです。つまり、別の変数に代入しても、実体は同じオブジェクトを指しているため、片方を変更するともう片方にも影響が及びます。copyモジュールを使うには、以下のようにインポートします。import copycopy.copy(x):浅いコピー(シャローコピー)
-
Pythonのpprintモジュールでデータ構造を見やすく整形して出力する方法
Pythonのコンソールで複雑なデータ構造を出力する際には、pretty printer(pprint)モジュールを活用すると便利です。通常のprint関数では1行に詰め込まれてしまう長いデータも、このモジュールを使えば適切な位置で改行され、インデント付きの読みやすい形式で表示されます。 pprintモジュールを使用するには、まず以下のようにインポートします。 import pprint pprintモジュールの主なメソッド pprintモジュールには、用途に応じて使い分けられる複数のメソッドが用意されています。それぞれ詳しく見ていきましょう。 1. pprint.pformat(objec
-
Pythonでrepr()を代替するreprlibモジュールの使い方
Pythonでは、大量のデータを表示する際に、出力が長くなりすぎるのを防ぎたいケースがあります。そんなときに役立つのが reprlib モジュールです。このモジュールを使うと、組み込み関数 repr() のようにオブジェクトを文字列化しつつ、表示サイズに制限をかけることができます。 reprlib を利用するには、まず次のようにインポートします。 import reprlib reprlib モジュールには、用途に応じて使えるクラスやメソッドがいくつか用意されています。 reprlib.Repr クラス Repr クラスは、フォーマット処理を行うためのクラスです。組み込みの repr()
-
Pythonで列挙型(Enum)を使う方法:基本と実例をわかりやすく解説
Pythonでは、列挙型(Enum)を標準ライブラリのenumモジュールを使って簡単に実装できます。列挙型の各メンバーは「名前」と「値」の両方を持っており、どちらからでもアクセスできるのが特徴です。 enumモジュールを利用するには、まず次のようにインポートします。 import enum 列挙型の主な特徴 Pythonの列挙型には、プログラムをより読みやすく、安全にするための便利な特性がいくつかあります。 文字列形式やrepr形式で表示できる type()メソッドで列挙型の種類を確認できる nameキーワードでメンバーの名前を取得できる 列挙型は反復処理(イテレーション)に対応している
-
Pythonのmathモジュール完全ガイド|定数・数値関数・べき乗・三角関数の使い方
Pythonのmathモジュールとは Pythonのmathモジュールは、数学計算のための関数や定数をまとめた標準ライブラリです。このモジュールの関数は整数型や浮動小数点型(実数)のオブジェクトを対象としており、複素数には対応していません。複素数を扱いたい場合は、代わりにcmathモジュールを使用します。 mathモジュールを利用するには、まずコード内でインポートします。 import math mathモジュールの主な定数 mathモジュールには、計算式の中でそのまま使える便利な定数が用意されています。 番号定数と説明 1pi円周率πの値を返します(3.141592…)。 2E自然対数
-
【Python入門】hashlibモジュールで実現するセキュアハッシュとメッセージダイジェスト
Pythonでセキュアハッシュやメッセージダイジェストを扱うには、標準ライブラリのhashlibモジュールを使用します。このモジュールは、SHA1、SHA224、SHA256、SHA512といった主要なセキュアハッシュアルゴリズム、さらにはRSA社が開発したMD5アルゴリズムに対して、共通のインターフェースを提供します。古い方式は「メッセージダイジェスト」、新しい方式は「セキュアハッシュ」と呼ばれます。 hashlibモジュールを利用するには、まずPythonコード内でインポートを行います。 import hashlib このモジュールには、md5、sha1、sha224、sha256、
-
Pythonで学ぶHMAC:メッセージ認証のためのキー付きハッシュ入門
HMAC(Keyed-Hashing for Message Authentication)とは HMACは、暗号学的ハッシュ関数を利用してメッセージ認証を行うためのフレームワークです。MD5やSHA-1など、さまざまなハッシュアルゴリズムと組み合わせて使用できる汎用性の高い仕組みです。 その基本的な考え方は、実際のデータと秘密鍵を組み合わせてハッシュ値を生成するというものです。最終的な出力には秘密鍵そのものは含まれないため、同じ秘密鍵を共有している受信側だけが、メッセージが改ざんされていないかどうかを検証できます。 この機能を利用するには、Pythonコード内でhmacモジュールをインポート
-
Pythonのsecretsモジュールで安全な乱数とトークンを生成する方法
暗号学的に安全な乱数を生成したい場合は、Python標準ライブラリのsecretsモジュールを利用します。このモジュールは、セキュリティ強度の高いパスワードやアカウント認証用のトークンなど、機密性の高いデータを作成する際に特に有効です。 一般的なrandomモジュールは予測可能な擬似乱数を返すため、認証用途には適していません。その点、secretsモジュールはOSが提供する高品質な乱数源(CSPRNG)にアクセスします。 secretsモジュールのクラスや関数を使用するには、まずコード内でインポートします。 import secrets 乱数の生成 secretsモジュールは、オペレーティ
-
PythonのwebbrowserモジュールでWebページを開く方法を徹底解説
PythonでWebベースのドキュメントをユーザーに表示したい場合、標準ライブラリの「webbrowser」モジュールが非常に便利です。このモジュールは、Webドキュメントを扱うための高水準インターフェースを提供しており、数行のコードで簡単にブラウザを操作できます。 UNIX系システムでは lynx や Netscape、Mosaic といったブラウザに対応しており、Windows や macOS では OS 標準のブラウザが自動的に使用されます。 このモジュールを使用するには、まず以下のようにインポートします。 import webbrowser webbrowser モジュールには、複数の
-
Pythonで使えるPOSIXシステムコール入門:posixモジュールの基本と使い方
Pythonのposixモジュールは、UNIX環境でのみ動作する標準モジュールで、オペレーティングシステムが持つ低レベルな機能を直接利用できるようにします。posixモジュールとosモジュールの関係通常、このモジュールを直接インポートすることは推奨されていません。代わりにosモジュールを使用するのが一般的です。osモジュールは、UNIX環境においてposixモジュールのスーパーセット(上位互換)として機能します。UNIX以外のシステムではposixモジュールは利用できませんが、osモジュールであれば一部の機能が制限されるものの、どのプラットフォームでも使用可能です。移植性を考慮したコードを書く