mori– Author –
-
Python樹林
Pythonの実行時間計測:time.perf_counter()とtime.process_time()の違いと使い分け
プログラムのパフォーマンスを評価する際、「処理にどれくらいの時間がかかったか」を正確に計測することは重要です。Pythonの標準ライブラリである time モジュールには、時間を計測するための関数がいくつか用意されていますが、目的に応じて適切なもの... -
Python樹林
Pythonの型ヒント応用:複数の型を許容するUnion(|)と任意の型を受け入れるAny
Pythonのタイプヒントを使用していると、「この変数は整数が入ることもあれば、文字列が入ることもある」といったケースや、「どんな型のデータが来るか特定できない」といったケースに遭遇します。 このような柔軟な型定義を行うために、Pythonには Union... -
Python樹林
Pythonの型ヒント:リスト(list)や辞書(dict)の中身まで型を指定する方法
Pythonでリスト(list)や辞書(dict)といったコレクション型の変数を定義する際、単に items: list と型ヒントを書くだけでは不十分な場合があります。 「リストであることは分かるが、その中身は数値なのか文字列なのか?」という情報がないと、要素を... -
Python樹林
Pythonのタイプヒント入門:変数や関数に型情報を付与して可読性を高める方法
Pythonは「動的型付け言語」であり、変数の型(整数、文字列など)を宣言せずにコードを書ける手軽さが魅力です。しかし、大規模な開発やチーム開発においては、「この関数にはどんなデータを渡せばいいの?」「戻り値は何?」といった混乱が生じやすく、... -
Python樹林
Pythonで高機能なコマンドラインツールを作る:argparseモジュールの使い方
単純にコマンドライン引数をリストとして受け取る sys.argv とは異なり、Pythonの標準ライブラリ argparse を使用すると、「ヘルプメッセージの自動生成」「引数の型チェック」「オプション引数の処理」といった高度な機能を簡単に実装できます。 本格的な... -
Python樹林
Pythonコードの改善:アンチパターンから学ぶ、より読みやすく効率的な記述方法(Pythonic)
Pythonには「Pythonic(パイソニック)」と呼ばれる、Python特有の機能や慣習を活かした「推奨される書き方」が存在します。他のプログラミング言語の癖をそのまま持ち込んだり、冗長な記述を続けたりすることは「アンチパターン」と呼ばれ、可読性や保守... -
Python樹林
Pythonのコーディング規約:PEPとPEP 8(スタイルガイド)の基本ルール
Pythonは「読みやすさ」を重視して設計された言語です。誰が書いても同じような、読みやすいコードになるように、Pythonコミュニティには**「PEP 8(ペップエイト)」**と呼ばれる標準的なコーディング規約(スタイルガイド)が存在します。 この記事では... -
Python樹林
PythonでINI設定ファイルを読み込む:configparserのget, getint, getbooleanの使い方
アプリケーションの設定情報(データベースの接続先、デバッグモードの有無、タイムアウト時間など)を外部ファイルに分離することは、開発の基本です。 Pythonでは、古くから使われているシンプルな形式である INIファイル を扱うための標準ライブラリ co... -
Python樹林
Pythonのunittest実行ガイド:コマンドラインからテストを一括・個別実行する方法
unittest で作成したテストコードは、Pythonスクリプトとして直接実行する(if __name__ == "__main__": を書く)だけでなく、コマンドラインから python -m unittest コマンドを使用することで、より柔軟に実行できます。 このコマンドを使うと、ディレク... -
Python樹林
Python unittestの前処理と後処理:setUp, tearDown, setUpClass, tearDownClassの完全ガイド
単体テストを行う際、テストを実行する前にデータベースに接続したり、テスト用の初期データを用意したりといった「前処理」が必要になることがよくあります。また、テスト終了後には、作成した一時ファイルを削除するなどの「後処理」が必要です。 Python... -
Python樹林
Pythonのunittest入門:標準ライブラリによる単体テストの書き方とアサーションメソッド一覧
品質の高いコードを維持するためには、作成した関数やクラスが意図通りに動作するかを検証する「テスト」が不可欠です。Pythonには、標準ライブラリとして unittest モジュールが組み込まれており、追加のインストールなしで本格的な単体テストを行うこと... -
Python樹林
Pythonのloggingでログをファイルとコンソールの両方に出力する方法:Handlersの活用
アプリケーションを開発・運用する際、ログ情報は非常に重要です。開発中はコンソール(画面)でリアルタイムに動作を確認したい一方で、本番運用時や後からエラー解析を行うためには、ログを「ファイル」として永続的に保存しておく必要があります。 Pyth... -
Python樹林
Pythonのlogging:ログ出力フォーマットのカスタマイズと変数一覧
ログ出力において、単にエラーメッセージを表示するだけでは不十分な場合があります。「いつ」「どのファイルの」「どの行で」発生したかというメタ情報があって初めて、ログはデバッグや監視に役立つ情報となります。 Pythonの logging モジュールでは、... -
Python樹林
Pythonのloggingモジュール入門:print関数を使わずにログを出力すべき理由と基本設定
開発中のデバッグや、本番環境での動作確認において、「プログラムがどこまで進んだか」「変数の値はどうなっているか」を確認するために print() 関数を使用することはよくあります。 しかし、本格的なアプリケーション開発においては、print() ではなく... -
Python樹林
Pythonの if __name__ == “__main__”: の意味と使い方:直接実行とインポートの制御
Pythonのスクリプトを書いていると、ファイルの末尾によく以下のような記述を見かけることがあります。 if __name__ == "__main__": main() これは「おまじない」として定型的に書かれることが多いですが、実際には「そのファイルがスクリプトとして直接実... -
Python樹林
Pythonのパッケージ作成入門:ディレクトリ構成とinit.pyによるインポートの制御
プログラムの規模が大きくなり、モジュールファイル(.py)の数が増えてくると、それらを一つのディレクトリ(フォルダ)にまとめて整理したくなります。 Pythonでは、複数のモジュールをディレクトリ単位でまとめたものを**「パッケージ(Package)」**と... -
Python樹林
Pythonの独自モジュール作成とインポート:プログラムを複数ファイルに分割する方法
Pythonでプログラムの規模が大きくなってくると、すべてのコードを1つのファイル(.py)に記述するのは管理が難しくなります。 そのような場合、機能ごとに関数やクラスを別々のファイルに分割し、必要に応じて読み込む(インポートする)のが一般的です。... -
Python樹林
WordPressで「更新に失敗しました。返答が正しい JSON レスポンスではありません。」エラーが出た原因と対処法(タイトルの危険キーワードが原因だった例)
概要:突然出た「返答が正しい JSON レスポンスではありません。」エラー WordPressのブロックエディターで投稿を保存しようとしたところ、突然、次のエラーが表示されました。 更新に失敗しました。 返答が正しい JSON レスポンスではありません。 それま... -
Python樹林
Pythonで文字列を式として実行する方法:動的実行の基本とセキュリティリスク
Pythonには、文字列として表現されたコード(式)を、実際のプログラムとして解釈・実行するための組み込み関数が存在します。 この機能は非常に強力であり、ユーザー入力に応じた計算や、動的な条件判定などに利用できます。しかし、その強力さゆえに、使... -
C#樹林
【C#】LINQのSelectManyで階層構造のリストを平坦化(フラット)にする
オブジェクトが別のコレクションをプロパティとして持っている場合、それらをまとめて一つのリストとして扱いたい場面があります。これを「平坦化(Flatten)」と呼びます。 通常のSelectメソッドでは「リストのリスト(入れ子構造)」になってしまい扱い... -
C#樹林
【C#】LINQのGroupJoinで親データと子データを階層的に結合する
データベースやログ解析などのシステム開発において、「親となるデータ」と、それに紐付く「複数の子データ」を結合し、扱いやすい階層構造にまとめたいケースがあります。 C#のLINQにあるGroupJoinメソッドを使用すると、SQLの「左外部結合(LEFT OUTER J... -
C#樹林
【C#】LINQのJoinメソッドで2つのリストを結合する(内部結合)
リレーショナルデータベース(RDB)において、テーブル同士を共通のIDで紐付ける「JOIN(結合)」は頻繁に行われる操作です。C#のLINQにおいても、Joinメソッドを使用することで、メモリ上の2つのコレクションに対して同様の結合操作を行うことができます... -
C#樹林
【C#】LINQのGroupByメソッドでデータをキーごとにグループ化する
業務アプリケーション開発において、売上データやログデータなどを特定の条件(カテゴリ、日付、ステータスなど)ごとに分類して処理したい場面は頻繁に発生します。 C#のLINQに含まれるGroupByメソッドを使用すると、こうしたグループ化処理を宣言的かつ... -
C#樹林
【C#】LINQのExceptメソッドで2つのリストの差分(差集合)を抽出する
2つのコレクションを比較し、「片方にあって、もう片方にはないデータ」を抽出したい場合、数学でいう「差集合(Relative Complement)」の考え方が必要になります。これは、リストAからリストBに含まれる要素を引き算するイメージです。 C#のLINQには、こ... -
Python樹林
Pythonで環境変数を取得する方法:os.environとos.getenvの使い分けと安全な設定管理
Webアプリケーションやスクリプトを作成する際、データベースのパスワードやAPIキーといった機密情報をソースコードに直接記述することは、セキュリティ上の大きなリスクとなります。 こうした情報は、OS側で管理される**「環境変数」**として保存し、プロ... -
Python樹林
Python処理の一時停止:time.sleep()関数の使い方と秒数指定
スクリプトを実行する際、APIへのリクエスト間隔を調整したり、定期的な処理の間に待機時間を設けたりする必要が生じることがあります。 Pythonでは、標準ライブラリの time モジュールに含まれる sleep() 関数を使用することで、プログラムの実行を指定し... -
Python樹林
Pythonのinput()関数:キーボードからのユーザー入力を受け取る方法
コマンドラインツールや対話型のスクリプトを作成する際、プログラムの実行中にユーザーからの入力を受け取りたい場面があります。 Pythonでは、組み込み関数の input() を使用することで、キーボードからの標準入力を簡単に取得できます。 この記事では、... -
Python樹林
Pythonスクリプトを終了させるsys.exit():終了ステータス(Exit Code)の制御
Pythonスクリプトをコマンドラインやシェルスクリプト、あるいは他のプログラムから呼び出して実行する場合、「その処理が正常に終わったのか、それともエラーで終わったのか」を呼び出し元に伝える必要があります。 この伝達手段として使われるのが**「終... -
未分類
Pythonスクリプトにコマンドライン引数を渡す方法:sys.argvの基本的な使い方
Pythonスクリプトを実行する際、プログラムの中で固定された値を使うのではなく、実行時に外部から値を渡したい場合があります。これを「コマンドライン引数」と呼びます。 例えば、python script.py data.txt のようにファイル名を指定したり、処理モード... -
Python樹林
Pythonのassert文(アサーション):デバッグ効率を高める条件チェックと注意点
プログラミングを行っていると、「この時点での変数は必ず正の値であるはず」「リストの中身は空ではないはず」といった、**「プログラムが正しく動作していれば絶対に成り立つはずの前提条件」**が存在します。 この前提条件をコードの中に記述し、もし満...