Site icon imageTomoMemo.dev

Memo on programming. Provided by Tomo with passion.

[Python]モジュール・パッケージ・ライブラリについて

Icon in a callout block
Python 100Days Challenge Day10

開発しているとよく聞くモジュール、パッケージ、ライブラリについて学んでみる。

モジュール・パッケージ・ライブラリの定義

モジュール
  • プログラムを整理するためのファイル
  • .pyがモジュール
    • このファイル内には関数、class、変数などが入っている
    • モジュールを使うことでコードを再利用したり、他のプロジェクトで使いやすくしたりできる

moduleの語源はラテン語のmodulus(「小さな単位」という意味)に由来する。

パッケージ
  • モジュールをまとめたもの
    • ディレクトリとして存在し、その中に複数のモジュール(Pythonファイル)が入っている状態を指す
    • パッケージには、特別なファイル __init__.py が含まれていることが多く、これがそのディレクトリがパッケージであることを示している

packageの語源はフランス語のpacage。(荷物を集めたり、包装する、という意味で使われていた)

ライブラリ
  • ライブラリ
    • プログラミングを簡単にするための「道具」。
    • 例えば、料理をするときに使う調味料や調理器具のセットがいわゆるライブラリ。これを使えば、同じ料理を一から作るよりも簡単に美味しい料理が作れる。
    • : React.js, Next.js

    つまり、ライブラリにある道具(関数やクラス)を使って、自分の作りたい機能をすばやく作り上げることができる。フレームワーク内でライブラリはあらかじめ準備されていることが多い。例えば、LaravelはjavaScriptのライブラリ、Vue.jsやReact.jsの環境構築ができる。(Next.jsもできるかも?知らんけど)

標準ライブラリを使ってみる

Pythonにはあらかじめ準備されているプログラムが存在する(標準ライブラリ)。

今回はmathライブラリ、datetimeライブラリ、randomライブラリを使ってみる。

mathライブラリは計算ができる。

import math

# 円の面積を計算する
def calculate_circle_area(radius):
    return math.pi * radius ** 2 # math.piとはmathモジュールにあるpi定数を使っている(円周率の値を持つ→3.14159)

# 半径5の縁の面積を計算する
radius = 5
area = calculate_circle_area(radius)
print(f"半径{radius}の円の面積は{area:.2f}です。")

> 半径5の円の面積は78.54です。

datetimeライブラリを使って日付と時間の操作をしてみる。

from datetime import datetime, timedelta

# 現在の日付と時間を取得する
now = datetime.now()
print(f"現在の日時: {now}")

# 7日後の日付を計算する
future_date = now + timedelta(days=7)
print(f"7日後の日時: {future_date}")

# 文字列から日付をパース
date_str = "2024-07-01"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d")
print(f"パースした日付: {parsed_date}")

> 
現在の日時: 2024-07-16 08:33:07.429348
7日後の日時: 2024-07-23 08:33:07.429348
パースした日付: 2024-07-01 00:00:00

randomライブラリを使って乱数を生成してみる

import random

# 0から10までのランダムな整数を生成する
random_int = random.randint(0, 10)
print(f"ランダムな整数": {random_int})

# リストからランダム要素を選択
fruits = ['apple', 'banana', 'cherry']
random_choise = ramdom.choice(fruits)
print(f"ランダムに選ばれたフルーツ: {dandom_choice}")

> 
ランダムな整数: 7
ランダムに選ばれたフルーツ: cherry

外部ライブラリを使ってみる

外部ライブラリとは標準ライブラリに含まれていない追加の機能やツールを提供するために、第三者によって開発されたライブラリのことを指す。

今回はrequestライブラリを使う。このライブラリはHTTPリクエストを簡単に送信できるライブラリ。

pip install requests

import requests

# Gitthub APIからユーザー情報を取得する関数
def get_github_user_info(username):
    url = f"https://api.github.com/users/{username}"
    response = requests.get(url)
    
    if response.status_code == 200:
        return response.json()
    else:
        return None

# ユーザー名を指定して情報を取得する
username = "octocat"
user_info = get_github_user_info(username)

if user_info:
    print(f"ユーザー名: {user_info['login']}")
    print(f"公開リポジトリ数: {user_info['public_repos']}")
    print(f"フォロワー数: {user_info['followers']}")
else:
    print(f"ユーザー {username} の情報が取得できませんでした。")

参考までにGitHub APIのユーザー情報の例はこうなる

{
  "login": "octocat",
  "id": 000001,
  "node_id": "MDQ6VXNlcjU4MzIzMQ==",
  "avatar_url": "https://avatars.githubusercontent.com/u/583231?v=4",
  "gravatar_id": "",
  "url": "https://api.github.com/users/octocat",
  "html_url": "https://github.com/octocat",
  "followers_url": "https://api.github.com/users/octocat/followers",
  "following_url": "https://api.github.com/users/octocat/following{/other_user}",
  "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}",
  "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}",
  "subscriptions_url": "https://api.github.com/users/octocat/subscriptions",
  "organizations_url": "https://api.github.com/users/octocat/orgs",
  "repos_url": "https://api.github.com/users/octocat/repos",
  "events_url": "https://api.github.com/users/octocat/events{/privacy}",
  "received_events_url": "https://api.github.com/users/octocat/received_events",
  "type": "User",
  "site_admin": false,
  "name": "The Octocat",
  "company": "@github",
  "blog": "https://github.blog",
  "location": "San Francisco",
  "email": null,
  "hireable": null,
  "bio": null,
  "twitter_username": null,
  "public_repos": 8,
  "public_gists": 8,
  "followers": 1111,
  "following": 1,
  "created_at": "2011-01-25T18:44:36Z",
  "updated_at": "2023-07-04T08:42:23Z"
}

Memo on programming by Tomo.

Powered by Tomo with passion.