著者:副業の宮殿|製造業に携わる現役エンジニア。技術士試験対策書籍をKindleで複数出版。技術ブログ「副業の宮殿」にて製造業DX・AI活用の情報を発信中。

TDDとは何か

TDD(Test-Driven Development:テスト駆動開発)は、実装コードより先にテストを書く開発手法です。「Red→Green→Refactor」のサイクルを短く回すことで、設計品質とコード品質を同時に高めます。

TDDの3ステップサイクル

1. Red   → 失敗するテストを書く
2. Green → テストが通る最小の実装をする
3. Refactor → 動くコードをきれいにする

実践例:電卓クラスをTDDで作る

Step 1: 失敗するテストを書く

# test_calculator.py
import pytest
from calculator import Calculator

def test_add_two_numbers():
    calc = Calculator()
    assert calc.add(2, 3) == 5

def test_add_negative_numbers():
    calc = Calculator()
    assert calc.add(-1, -2) == -3
pytest  # → FAILED(まだ実装がないので当然)

Step 2: 最小の実装

# calculator.py
class Calculator:
    def add(self, a: float, b: float) -> float:
        return a + b
pytest  # → PASSED

Step 3: リファクタリング

この例ではすでにシンプルなので不要。より複雑な機能でリファクタリングが活きます。

pytestの基本

import pytest

# フィクスチャ:テスト前後の共通処理
@pytest.fixture
def calculator():
    return Calculator()

def test_divide(calculator):
    assert calculator.divide(10, 2) == 5

def test_divide_by_zero(calculator):
    with pytest.raises(ZeroDivisionError):
        calculator.divide(10, 0)

# パラメータ化テスト
@pytest.mark.parametrize("a,b,expected", [
    (1, 2, 3),
    (0, 0, 0),
    (-1, 1, 0),
])
def test_add_parametrized(calculator, a, b, expected):
    assert calculator.add(a, b) == expected

カバレッジ計測

pytest --cov=src --cov-report=html

目標は80%以上のカバレッジです。100%を目指すのは費用対効果が低いことが多いです。

TDDを続けるコツ

  • テストは実装と同じリポジトリで管理する
  • テストは文書でもある(テスト名で振る舞いを表現)
  • 「あとでテストを書く」は幻想——先に書く習慣を

TDDは最初は遅く感じますが、慣れると設計の改善スピードが上がり、結果的に開発が速くなります。

設計業務の品質向上に役立つデジタルツール活用術

機械設計の品質と効率を向上させるデジタルツールの活用方法を解説します。①CAD/CAE統合活用:Fusion 360・SolidWorksなどの3D CADに内蔵されたシミュレーション機能を活用することで、試作前に応力・変位・固有振動数を確認できます。試作回数の削減と設計品質の向上が同時に実現します。②クラウドPDM(製品データ管理):Autodesk Vault・OnshapeなどのクラウドPDMを使うことで、チーム間での最新図面管理・変更履歴・承認ワークフローが効率化されます。③AIアシスト設計:TopologyOptimization(トポロジー最適化)機能を使うと、AIが重量を最小化しながら必要な強度を確保する最適形状を提案します。④デジタル標準書・手順書:紙の図書室をデジタル化し、QRコードで設計標準・品質規格にいつでもアクセスできる環境を整備することで、設計ミスの防止につながります。

品質問題の再発防止に使える根本原因分析(RCA)の手法

製造現場での品質問題を二度と起こさないためには、表面的な対策だけでなく「根本原因」まで掘り下げた分析が必要です。代表的な根本原因分析手法として①なぜなぜ分析(5 Why):問題に対して「なぜ?」を5回繰り返して真因を特定する手法。シンプルで現場で広く使われています。②フィッシュボーン(特性要因図):4M(人・機械・材料・方法)の視点で原因を網羅的に整理します。③フォールトツリー分析(FTA):トップ事象から論理的に原因を樹状展開する手法。複雑な故障モードの分析に向いています。根本原因が特定できたら「是正処置(再発防止)」と「予防処置(類似問題の未然防止)」の両方を実施することがISO9001の要求事項でもあります。QC7つ道具・FMEAとRCAを組み合わせることで、品質改善活動の深度と効果が大幅に上がります。

機械エンジニアが知っておくべき電気・制御の基礎知識

現代の機械システムは機械・電気・制御が不可分に統合されています。機械系エンジニアであっても、電気・制御の基礎知識を持つことで設計の幅が広がり、トラブルシューティング能力も向上します。覚えておきたい電気の基礎:①オームの法則(V=IR):電圧・電流・抵抗の関係。②3相交流の基礎:工場設備のモーターはほぼ全て3相200Vまたは3相400V。③センサーの信号形式:アナログ(4-20mA・0-10V)とデジタル(PNP/NPN)の違い。④安全回路の概念:非常停止・安全リレー・安全PLC。制御の基礎:①PLC(シーケンサ)の役割:センサー入力→論理演算→アクチュエーター出力の制御処理。②サーボモーター制御:位置・速度・トルクのフィードバック制御の基礎概念。③HMI(タッチパネル):現場でのオペレーター操作インターフェース。これらの基礎知識があることで、機械設計の段階から電気・制御側の要件を反映した設計ができ、開発期間の短縮につながります。

材料選定での失敗を防ぐ「設計標準化」の重要性

製品開発において材料選定の失敗(耐食性不足による腐食・強度不足による破断・熱膨張差による締結不良等)は、市場でのクレームや安全問題につながります。これを防ぐための最も有効な手段が「材料選定の標準化」です。自社・部門で使用可能な材料を承認材料リストとして整備し、新規材料の使用には承認プロセスを設けることで、設計者個人の知識不足によるミスを組織の仕組みでカバーできます。標準化の内容は①材料規格(JIS・ISO・ASTM等)と対応する社内コード②用途別の推奨材料(一般構造用・耐食用・高温用・電気絶縁用等)③禁止材料(RoHS規制物質・アレルギー誘発物質等)④代替材料とその理由。材料データベースをCADシステムやPDM(製品データ管理)と連携させることで、設計者がリアルタイムに参照できる環境を整備することが理想的です。

エンジニアとして技術力を高め続けるための学習戦略

技術の進化が加速する現代において、エンジニアとして市場価値を維持・向上させるには戦略的な学習が不可欠です。効果的な技術習得のための3つのアプローチを紹介します。①インプットとアウトプットの循環:技術書や論文を読むだけでなく、習得した技術を実際に使った成果物(プロジェクト・ブログ記事・社内発表)を作ることで、知識が定着します。「作ることで初めて本当に理解できる」が技術習得の本質です。②T字型スキルの構築:1〜2つの専門分野を深く・その周辺分野を広く学ぶT字型スキルが、現代エンジニアに求められるプロファイルです。機械設計なら「設計×材料×制御×AI活用」のような複合スキルが付加価値を生みます。③実務での適用を意識した学習:「この知識を明日の仕事にどう使うか」を常に意識することで、学習の優先順位が明確になり、習得スピードが上がります。技術士試験の受験も、体系的な知識習得と資格取得を同時に達成できる有効な手段です。

製造現場のAI活用で変わる仕事の未来

製造業においてAI・IoT・ロボティクスの活用が急速に進んでいます。エンジニアとして、これらの技術変化に適応するための視点を整理します。AIが代替しやすい業務は①定型的なデータ入力・集計②パターン認識型の品質検査③単純な報告書の作成です。一方、AIが苦手とする業務は①現場の文脈・暗黙知を必要とする判断②クライアントや社内の人間関係を踏まえた調整③新しい課題に対する創造的なアプローチです。AIを「自分の能力を増幅させるツール」として使いこなすエンジニアが、今後最も価値を持つ存在になります。ChatGPTやClaude Codeを使った設計計算・技術文書作成・データ分析の効率化を積極的に取り入れることが、AI時代のエンジニアとしての第一歩です。