MENU
やすひら
やすひらと申します。
長靴を履いたタヌキ(ITエンジニア)です。
モノ作りの楽しさを発信中。
X(旧Twitter)のフォローもお願いします。

[Python入門]Pythonとは? | Pythonでのソースコードの書き方を徹底解説

Pythonは、読みやすく書きやすいプログラミング言語です。
スクリプト型のため、素早く実行することができ、初心者から上級者まで幅広い層のエンジニアに活用されています。
Pythonは、様々な用途で利用されているため、プログラミングでPythonを扱うことができれば、幅広い分野で活用することができます。
本記事では、Pythonのソースコードの書き方について紹介します。

やすひら

Pythonのソースコードの書き方を紹介します

この記事でわかること
  • Pythonとは
  • Pythonの環境構築
  • Pythonのソースコードの書き方
目次

Pythonとは

Pythonは、スクリプト型のプログラミング言語です。
読みやすく、書きやすいコードを意識して設計されており、初心者からプロフェッショナルまで幅広い層に利用されています。
Pythonはオープンソースなので、無料で利用できます。

Pythonの特徴

Pythonは、以下の特徴があります。

  • 簡潔で読みやすい文法
  • 豊富なライブラリ
  • 多様なOSで動作可能
  • 多様な用途で利用可能

Pythonは、読みやすく書きやすいため、エンジニアにとって扱いやすいプログラミング言語です。
豊富なライブラリが提供されているため、ゼロから開発しなくても、多くの機能を実装することができます。
Web開発、データサイエンス、人工知能など、様々な分野で利用されているため、汎用性の高いプログラミング言語です。

Pythonの環境構築

Pythonを利用するためには、環境を構築する必要があります。

Pythonのインストール

まず、Python自体をインストールします。

コマンドライン

sudo apt install python3

Pythonがインストールされていない場合は、インストールする必要があります。
OSインストール時にインストールされている場合は、本手順は不要です。

Pythonライブラリのインストール

Pythonでは、豊富なライブラリが提供されています。
必要なライブラリをインストールして、利用可能にすることで、プログラミングで動作できる機能を拡張することができます。

コマンドライン

pip install [ライブラリ名]

Pythonライブラリはpipコマンドでインストールすることができます。

Pythonのバージョン管理

Pythonは、常にバージョンアップされています。
インストールされているPythonのバージョンを管理することで、適切な開発ができるようにします。

コマンドライン

python3 --version

–versionオプションで、Pythonのバージョンがわかります。

Pythonのソースコードの書き方

Pythonのソースコードの書き方を紹介します。

基本機能

Pythonの基本機能を紹介します。

データ型

Pythonで扱えるデータ型を紹介します。

データ型表記方法意味
整数型int整数を表現できます。
浮動小数点型float小数点を含む数値を表現できます。
文字列型str文字列を表現できます。
ブーリアン型bool真(True)または偽(False)を表現できます。
リスト型list複数の値を配列で保持します。
タプル型tuple変更不能な複数の値を保持します。
辞書型dictキーと値のペアを保持します。

Pythonでは、様々なデータ型を扱うことができます。

変数定義

Pythonでは、データを変数で管理します。

構文

[変数名] = [値]

ソースコード

age = 10

変数と値を記述することで、変数を定義することができます。

演算

Pythonでは数値計算することができます。

計算内容演算子
足し算+
引き算
掛け算*
割り算/
割り算(整数)//
余り計算%
べき乗**

ソースコード

a = 5 + 3  # 8

Pythonでは、ビット計算も行うことができます。

計算内容演算子
AND演算&
OR演算
XOR演算^
NOT演算~
左シフト演算<<
右シフト演算>>

ソースコード

b = 0b1100 & 0b1010  # 0b1000 (8)

Pythonでは、数値計算やビット計算を行うことができます。

繰り返し制御

Pythonでは、for文やwhile文で繰り返し制御(ループ処理)が実行できます。

for文の繰り返し制御を紹介します。

構文

for [要素] in [イテラブル]:
    実行する処理

ソースコード

for i in range(5):
    print(i)

while文の繰り返し制御を紹介します。

構文

while [条件]:
    実行する処理

ソースコード

count = 0
while count < 5:
    print(count)
    count += 1

繰り返し制御を行うことで、何度も同じ処理を実行することができます。

条件制御

Pythonでは、if文で条件制御を行うことができます。
扱える条件演算子を紹介します。

演算子意味
==等しい
!=等しくない
>より大きい
<より小さい
>=以上
<=以下

if文で条件制御を実行できます。

構文

if [条件]:
    実行する処理

ソースコード

a = 20
if a >= 18:
    print("18以上です")

if文で条件処理を制御します。
if-else/if-elif文でも、条件制御を行うことができます。

例外処理

Pythonでは、予期せぬエラーを例外処理として制御することができます。
基本的な例外処理を紹介します。

構文

try:
    実行する処理
except [例外の種類]:
    例外が発生した場合に実行する処理

ソースコード

try:
    result = 10 / 0
except ZeroDivisionError:
    print("0で割ることはできません")

try-except文で例外処理を制御します。
try-except-else/try-except-finally文でも例外処理を制御することができます。

関数定義

Pythonでは、関数を定義することができます。

構文

def 関数名([引数1], [引数2], ...):
    関数の処理
    return 戻り値

ソースコード

def greet(name):
    return f"Hello, {name}!"

print(greet("yasuhira"))  # 出力: Hello, yasuhira!

関数を定義することで、コードの再利用性を高め、プログラムを効率的に記述することができます。

クラス定義

Pythonは、オブジェクト指向プログラミングをサポートしており、クラスを定義することができます。
クラスとは、オブジェクト指向プログラミングで利用する、属性(データ)とメソッドを組み合わせたブロックです。
基本的なクラス定義について紹介します。

構文

class [クラス名]:
    def __init__(self, [引数1], [引数2], ...):
        self.属性1 = 引数1
        self.属性2 = 引数2
        ...

    def [メソッド名](self, [引数1], [引数2], ...):
        メソッドの処理

ソースコード

class Tanuki:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        return f"Hello, I am {self.name}, I am {self.age} years old."

yasuhira = Tanuki("yasuhira", 10)
print(yasuhira.greet())  # 出力: Hello, I am yasuhira, I am 10 years old.

データとメソッドをクラスとして定義することができます。

モジュール制御

Pythonでは、他のプログラムからインポートして、利用できる仕組みがあります。
モジュールを利用することで、ソースコードが簡素化して、メンテナンスがしやすくなります。

構文

import [モジュール名]

ソースコード

import math

print(math.sqrt(16))  # 出力: 4.0

モジュールをインポートして、利用することができます。

標準機能

Pythonで利用できる標準機能の使い方を紹介します。

コメント

Pythonではソースコードにコメントを記述することができます。

ソースコード

# ユーザーの名前を入力
name = input("Enter your name: ")

コメントを記述して、ソースコードの可読性を向上することができます。

ファイル読み込み/書き込み

ファイル読み込み/書き込みは、ファイルオープンでファイルを開いて制御します。
ファイルオープンのモードを紹介します。

モード意味
r読み込みモード
w書き込みモード
a追記モード

ファイル読み込みの方法を紹介します。

ソースコード

# ファイルを読み込みモードで開く
with open('hogehoge.txt', 'r') as file:
    content = file.read()
    print(content)

ファイル書き込みの方法を紹介します。

ソースコード

# ファイルを書き込みモードで開く
with open('hogehoge.txt', 'w') as file:
    file.write('Hello, world!')

モードを選択してファイルオープンして制御します。

ライブラリ機能

Pythonで利用できるライブラリの使い方を紹介します。

スリープ処理(time)

スリープ処理は、指定時間待つ処理です。

ソースコード

import time

time.sleep(5)  # 5秒間スリープ

指定時間スリープします。

日時取得

日時を取得することができます。

ソースコード

from datetime import datetime

# 現在の日時を取得
now = datetime.now()

# フォーマット指定で表示
formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_time)

日時を取得できます。

子プロセス管理(subprocess)

子プロセス管理は、外部プロセスを実行することができます。

ソースコード

import subprocess

result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)

外部プロセスを実行できます。

乱数処理(random)

乱数処理は、乱数を使って制御することができます。

ソースコード

import random

# 1から10までの整数の乱数を生成
random_integer = random.randint(1, 10)

乱数を生成することができます。

ログ出力(logging)

ログを出力できます。

ソースコード

import logging

# ファイルにログを保存
logging.basicConfig(
        filename='debug.log',
        level=logging.DEBUG,
        format="%(asctime)s %(levelname)s %(filename)s:%(lineno)d %(funcName)s %(message)s",
        datefmt="[%Y-%m-%d %H:%M%S]"
        )

logging.debug('デバッグメッセージを出力')
logging.info('情報メッセージを出力')
logging.warning('警告メッセージを出力')
logging.error('エラーメッセージを出力')
logging.critical('重大なエラーメッセージを出力')

ログを出力できます。

スレッド処理(threading)

threadingでスレッドを並行処理します。

ソースコード

import threading

def task():
    print("タスクが実行されました")

# スレッドの作成
thread = threading.Thread(target=task)

# スレッドの開始
thread.start()

# メインスレッドが終了するまで待機
thread.join()

スレッドを作成して実行できます。

SFTPファイル転送(paramiko)

paramikoでSFTPファイル転送します。

ソースコード

import paramiko

# 認証情報
host = '111.111.111.111'
port = 65535  # ポートを指定
username = 'user'
private_key = '/home/user/.ssh/id_rsa'  # 認証鍵ファイル

# ローカルファイルとリモートの保存先
local_file = '/home/user/hogehoge.txt'
remote_path = '/home/user/hogehoge.txt'

# SFTP接続を確立
try:
    key = paramiko.RSAKey.from_private_key_file(private_key)
    transport = paramiko.Transport((host, port))
    transport.connect(username=username, pkey=key)

    # SFTPセッションを開く
    sftp = paramiko.SFTPClient.from_transport(transport)

    # ファイルをアップロード
    sftp.put(local_file, remote_path)
    print(f"File {local_file} has been successfully uploaded to {remote_path}")

finally:
    sftp.close()
    transport.close()

SFTPでファイル送受信ができます。

GUI処理(tkinter)

tkinterでGUIを作成します。

ソースコード

import tkinter as tk

root = tk.Tk()
root.geometry("400x400")

root.mainloop()

GUI画面が作成できました。

音楽ファイル再生(playsound)

playsoundライブラリは、音楽ファイルを再生できます。

ソースコード

from playsound import playsound

playsound("sample.wav")

playsoundで音楽ファイルを再生できます。

音楽ファイル制御(pygame)

Pygemeライブラリは、ゲームを作成できるライブラリですが、音楽ファイルを制御できます。

ソースコード

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import time
import pygame

class MusicPlayer:
    def __init__(self):
        pygame.init()
        pygame.mixer.init()
        self.paused = False

    def play_music(self, file_path):
        try:
            pygame.mixer.music.load(file_path)
            pygame.mixer.music.play()
        except Exception as e:
            print("Error:", e)

    def stop_music(self):
        pygame.mixer.music.stop()
        print("Music stopped")

    def pause_music(self):
        pygame.mixer.music.pause()
        self.paused = True
        print("Music paused")

    def unpause_music(self):
        pygame.mixer.music.unpause()
        self.paused = False
        print("Music resumed")

    def status_music(self, file_path):
        if pygame.mixer.music.get_busy() and not self.paused:
            status = True
        else:
            status = False

        return status

Pygameで音楽ファイルを制御できます。

録音制御(pyaudio)

PyAudioライブラリで、録音制御ができます。

ソースコード

import pyaudio
import wave
import numpy as np

# 録音の設定
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 1024
SILENCE_THRESHOLD = 500  # 無音のしきい値(音量)
SILENCE_DURATION = 30  # 無音と判定する持続時間(フレーム数)

# 音声を録音する関数
def record_audio():
    audio = pyaudio.PyAudio()

    stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE,
                        input=True, frames_per_buffer=CHUNK)

    print("Recording started...")

    frames = []
    silence_frames = 0
    recording = False

    while True:
        data = stream.read(CHUNK)
        audio_data = np.frombuffer(data, dtype=np.int16)

        # 音声が無音かどうかを判定
        if np.abs(audio_data).mean() > SILENCE_THRESHOLD:
            if not recording:
                print("Voice detected, recording...")
                recording = True
            frames.append(data)
            silence_frames = 0
        else:
            if recording:
                silence_frames += 1
                if silence_frames > SILENCE_DURATION:
                    print("Silence detected, stopping...")
                    break
            frames.append(data)

    stream.stop_stream()
    stream.close()
    audio.terminate()

    # 録音結果を保存
    wf = wave.open("output.wav", 'wb')
    wf.setnchannels(CHANNELS)
    wf.setsampwidth(audio.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(b''.join(frames))
    wf.close()

    print("Recording finished and saved as 'output.wav'")

if __name__ == "__main__":
    record_audio()

音声認識(Whisper)

Whisperライブラリで、音声認識ができます。

ソースコード

import whisper

# Whisperモデルのロード
model = whisper.load_model("base")

# 音声ファイルのパス
audio_path = "input.wav"

# 音声認識を実行
result = model.transcribe(audio_path, language="ja")

# 結果を表示
print(result["text"])

音声認識(Faster Whisper)

Faster Whisperライブラリで、音声認識ができます。

ソースコード

from faster_whisper import WhisperModel

# モデルの読み込み
model = WhisperModel("base", device="cpu")

# 音声ファイルのパス
audio_file = "output.wav"

# 音声認識の実行
segments, info = model.transcribe(audio_file, language="ja")

# 結果を表示
print(f"Detected language: {info.language}")
for segment in segments:
    print(f"[{segment.start:.2f}s - {segment.end:.2f}s] {segment.text}")

音声合成(Open JTalk)

Open JTalkライブラリで、音声合成ができます。

ソースコード

import subprocess

def open_jtalk_tts(text):
    open_jtalk=['open_jtalk']
    mech=['-x','/var/lib/mecab/dic/open-jtalk/naist-jdic']
    htsvoice=['-m','/usr/share/hts-voice/mei/mei_normal.htsvoice']
    speed=['-r','1.0']
    outwav=['-ow','output.wav']
    cmd=open_jtalk+mech+htsvoice+speed+outwav
    subprocess.run(cmd,input=text.encode())

if __name__ == '__main__':
    open_jtalk_tts("テスト")

音声合成(VOICEVOX)

VOICEVOXライブラリで、音声合成ができます。

ソースコード

from pathlib import Path
import voicevox_core
from voicevox_core import AccelerationMode, AudioQuery, VoicevoxCore

speaker_id = 2

open_jtalk_dict_dir = './open_jtalk_dic_utf_8-1.11'
out = Path('output.wav')
acceleration_mode = AccelerationMode.AUTO

def voicevox_core_tts(text, speaker_id):
    core = VoicevoxCore(
        acceleration_mode=acceleration_mode, open_jtalk_dict_dir=open_jtalk_dict_dir
    )
    core.load_model(speaker_id)
    audio_query = core.audio_query(text, speaker_id)
    wav = core.synthesis(audio_query, speaker_id)
    out.write_bytes(wav)


if __name__ == "__main__":
    voicevox_core_tts("テスト", 2)

まとめ

Pythonのソースコードの書き方を紹介しました。

Pythonのソースコードは
  • 環境構築が必要
  • 構文を用いてプログラミングができる
  • ライブラリを用いてプログラミングができる

Pythonでは、基本構文やライブラリを用いてプログラミングを行います。
本記事では、各制御のサンプルプログラムを紹介していますが、リンク先の記事により詳細なプログラミング方法を紹介しています。
本記事が、プログラミングの参考になれば嬉しいです。

  • URLをコピーしました!
目次