オープニングとloggerの適切な使い方

author:

sion908

date:

2026/05/15

event:

5月15 NaITE LT会

アジェンダ

このプレゼンの概要です

  • おまえだれよ

  • 会の目的

  • LT: loggerの話 - info, warning, errorの適切な使い分け - printとの違い - 実務レベルでの出力先の違い

  • まとめ

お前誰よ

紫苑 (徳久泰河)

  • Sion908 (ついった, GitHub, etc) [1]

  • 生息地(長崎, ぐんまー)

  • 長崎大学大学院工学研究科電気電子工学 修了

  • 株式会社デザイニウム

  • webアプリケーション, 3DCG, 写真

  • 高校教員免許(数学、工業)

  • NaITE, UE長崎, JAWS-UG長崎

株式会社デザイニウム

  • 福島県会津若松市

  • MaaS,地域通貨を含む、都市OSの一端や、除雪クラウドなどのDX化などを行う

  • 東京の拠点では、ARやXRも行っている

corp_home

NaITE (長崎IT技術者会)

  • 長崎になんらかの縁や関わり、興味があるIT技術者を中心とした技術コミュニティ

  • ソフトウェア品質技術やソフトウェア開発技術の話題を中心に活動

  • 勉強会, もくもく会, QDG(Software Quality and Development Gathering), ToCセミナー

  • https://nagasaki-it-engineers.connpass.com/

  • 次回イベント: 2026.06.26(金) LT会 in リコーITソリューションズ

NaITEロゴ

UE長崎

  • Unreal Engineと3D表現に興味を持つ人たちの長崎発クリエイティブ・コミュニティ

  • 「島を繋ぎ、長崎を一つのクリエイティブ・ギルドへ」

  • UEやメタバースの技術を使って、長崎の島々をつなぐ

  • Webサイト: https://ue-ngs.sion908.tech

  • 次回イベント: 2026.06.14(土) もくもく会 in coto

UE長崎ロゴ

JAWS-UG 長崎

  • Amazon Web Services(AWS)のユーザーグループ

  • AWSに興味がある方、初心者からエキスパートまで幅広い層が集まるコミュニティ

  • 基礎的な内容から実践的な活用まで、参加者同士で知見を共有

  • Discordサーバーで継続的な交流

  • 次回イベント: 2026/06/13(土) AWS BuilderCards 体験会 in CO-DEJIMA

  • Webサイト: https://jawsug-nagasaki.connpass.com/

JAWS-UG長崎アイコン

会の目的

この勉強会の目的

  • 知識の共有の場

  • お互いの経験から学ぶ

  • AI時代でも「人間の知識」の価値を再確認

  • 次回のテーマについて意見を聞きたい

X(Twitter)でシェアしてね!

QRコード

スキャンして投稿!

LT: loggerの話

info, warning, error 適切に使えてるか?

ログレベルの使い分け

import logging

logger = logging.getLogger(__name__)

logger.debug("デバッグ情報")      # 開発時のみ
logger.info("正常な処理")         # 通常の動作記録
logger.warning("警告")            # 将来問題になりうる
logger.error("エラー")            # 重大だが処理継続
logger.critical("致命的エラー")  # プログラム続行不能

よくある間違い

  • すべて print() で済ませてる

  • エラー時だけログ出力してる

  • debugレベルを本番で出力してる

  • ログにコンテキストが足りない

  • 「なんか動かない」→ログがない

  • 「いつエラーが起きた?」→タイムスタンプがない

  • 「どのユーザー?」→ユーザーIDがない

Pythonのprintとの違い

printの問題点

  • 標準出力に固定

  • レベル管理がない

  • フォーマットが自由すぎる

  • 本番環境での制御が困難

  • ログローテーション未対応

loggerのメリット

  • 出力先を柔軟に設定可能

  • レベル別の出力制御

  • 構造化されたフォーマット

  • ファイル、Syslog、クラウドなどに対応

  • ログローテーション自動化

実務での違い

# print: ただ出力するだけ
print("ユーザー作成: tanaka")

# logger: 構造化された情報
logger.info(
    "ユーザー作成完了",
    extra={
        "user_id": "12345",
        "username": "tanaka",
        "ip": "192.168.1.1"
    }
)

実務レベルでの出力先の違い

開発環境

  • コンソール出力(StreamHandler)

  • DEBUGレベルまで表示

  • 色付きで見やすく

本番環境

  • ファイル出力(FileHandler, RotatingFileHandler)

  • INFOレベル以上

  • JSONフォーマットで解析容易

  • ログ集約サービスへ転送(Fluentd, CloudWatchなど)

設定例

# サイズベースのローテーション
from logging.handlers import RotatingFileHandler

handler = RotatingFileHandler(
    'app.log',
    maxBytes=10*1024*1024,  # 10MBでローテーション
    backupCount=5            # 5世代分保持
)

# 時間ベースのローテーション
from logging.handlers import TimedRotatingFileHandler

handler = TimedRotatingFileHandler(
    'app.log',
    when='midnight',  # 毎日深夜にローテーション
    backupCount=30    # 30日分保持
)

ログ集約の重要性

  • 複数サーバーのログを一箇所で管理

  • エラー検知とアラート

  • トラブルシューティングの効率化

  • ユーザー行動の分析

まとめ

会の目的

  • AI時代でも知識は重要

  • AIの回答を判別する能力が必要

  • 勉強会を知識共有の場として活用

loggerのまとめ

  • printではなくloggerを使おう

  • ログレベルを適切に使い分けよう

  • 実務では出力先とフォーマットを意識しよう

  • ログは「未来の自分」へのメッセージ

さいごに

次回のテーマについて、皆さんの意見をお聞かせください。

  • React/Vue/Angularの深掘り?

  • データ分析の実践?

  • セキュリティ基礎?

  • その他、興味のある分野?

よろしくお願いします!