青チャートで周囲を巻き込んで課題解決したガクチカ【三角関数信号処理FFT】

##  ガクチカ

学生時代、AIを活用した数学の理解に悩む仲間が多かったことから、自ら「青チャート」を軸にしたPython学習会を企画・主導し、グローバル志向のエンジニアリングリーダーとして、実践的な学びの場を構築しました。

学習会では、仲間の声にじっくり耳を傾けるうちに、宿題として出される『青チャート』の問題演習よりも、国語力や対話・コミュニケーションの重要性に自然と関心が向くようになりました。
そこで、周囲の仲間たちを巻き込みながら、三角比や三角関数などの数学用語を「音」として捉え、音声合成 → 波形プロット → FFT（高速フーリエ変換）による周波数解析というプロセスを通して、文系と理系の学びをつなぐ新たな表現・体験の場を提供してきました。

この取り組みに対しては、

「難解だった数学の言葉に“音”という感覚的な入り口が生まれた」

「言葉の響きから三角関数をとらえる体験が新鮮で、発話やプレゼンの力にもつながった」

「数学が“話題”になることで、学びに対するハードルが下がった」
など、想像以上に前向きな声が多く寄せられました。


この取り組みを通じて、私はJupyter NotebookやGitHubの活用はもちろん、LLMや生成AIを駆使したプロンプト設計や、Microsoft Officeツールを含む多様な技術手段を組み合わせることで、DX推進を現場に定着させるマネジメント力と、誰とでも信頼関係を築ける柔軟なコミュニケーション能力を養ってきました。

貴社が現場レベルでのデジタル活用に真剣に取り組んでいる姿勢に深く共感しており、私のこれまでの技術支援の知見と巻き込み力を活かすことで、貴社の優れた技術力を組織全体に広げる橋渡し役として貢献できると考えています。

大きな変革の渦中にある今だからこそ、私は“コミュニケーション × テクノロジー”の掛け算で、貴社とともによりよい社会の実現に貢献してまいります。


面接官「取り組み自体は素晴らしいですが、本来の目的と手段が入れ替わっているように感じます。」

To be continued...



##  面接で提供するPythonコード

```python
# Program Name: trig_term_fft_plot.py
# Creation Date: 20250414
# Overview: A program to synthesize speech from trigonometric terms, plot their waveform, and analyze frequency using multiple Fourier techniques.
# Usage: To run the program, use the command `python trig_term_fft_plot.py` in the terminal

# ライブラリのインストール（必要に応じて実行）
# !pip install gTTS pydub scipy matplotlib numpy
# !apt-get install -y ffmpeg

import numpy as np
import matplotlib.pyplot as plt
import scipy.io.wavfile as wavfile
from scipy.fft import fft, fftfreq
from scipy.signal import welch, spectrogram
from gtts import gTTS
from pydub import AudioSegment
import os
import IPython.display as ipd

# -------------------------------
# 数値とファイルパス設定 / Define constants
# -------------------------------
terms = "サイン コサイン タンジェント 三角比 三角関数"  # 数学用語 / Math terms to speak
# Changed the audio file paths to the current working directory.
audio_mp3_path = "trig_terms.mp3"  
audio_wav_path = "trig_terms.wav"  
lang = 'ja'

# -------------------------------
# 音声合成 / Generate speech
# -------------------------------
tts = gTTS(text=terms, lang=lang)
tts.save(audio_mp3_path)

# MP3 → WAV 変換 / Convert MP3 to WAV
sound = AudioSegment.from_mp3(audio_mp3_path)
sound.export(audio_wav_path, format="wav")

# 再生 / Playback audio
ipd.display(ipd.Audio(audio_wav_path))

# -------------------------------
# WAVファイル読み込み / Read WAV
# -------------------------------
rate, data = wavfile.read(audio_wav_path)
if data.ndim > 1:
    data = data[:, 0]  # モノラル化 / Convert to mono

time = np.linspace(0, len(data) / rate, num=len(data))

# -------------------------------
# 波形表示 / Waveform
# -------------------------------
plt.figure(figsize=(10, 4))
plt.plot(time, data)
plt.title("Waveform of Trigonometric Terms")
plt.xlabel("Time [s]")
plt.ylabel("Amplitude")
plt.tight_layout()
plt.show()

# -------------------------------
# FFT / Basic FFT
# -------------------------------
N = len(data)
frequencies = fftfreq(N, d=1/rate)
fft_values = np.abs(fft(data))

plt.figure(figsize=(10, 4))
plt.plot(frequencies[:N // 2], fft_values[:N // 2])
plt.title("Standard FFT")
plt.xlabel("Frequency [Hz]")
plt.ylabel("Amplitude")
plt.tight_layout()
plt.show()

# -------------------------------
# Welch法によるパワースペクトル推定 / Power Spectral Density (Welch)
# -------------------------------
f_welch, pxx = welch(data, fs=rate, nperseg=1024)

plt.figure(figsize=(10, 4))
plt.semilogy(f_welch, pxx)
plt.title("Welch Power Spectral Density")
plt.xlabel("Frequency [Hz]")
plt.ylabel("Power Spectral Density")
plt.tight_layout()
plt.show()

# -------------------------------
# スペクトログラム表示 / Spectrogram
# -------------------------------
f_spec, t_spec, Sxx = spectrogram(data, fs=rate)

plt.figure(figsize=(10, 4))
plt.pcolormesh(t_spec, f_spec, 10 * np.log10(Sxx), shading='gouraud')
plt.title("Spectrogram (Time-Frequency)")
plt.xlabel("Time [s]")
plt.ylabel("Frequency [Hz]")
plt.colorbar(label='Power [dB]')
plt.tight_layout()
plt.show()


```
## 結果


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4043781/2af00d47-cb19-4d67-8a87-3646adf5c852.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4043781/edd3543d-12b2-4145-8494-4c4608ab0a3c.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4043781/53a34b41-e2df-4f2f-945b-b00dcb955299.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4043781/7d2c4025-a94b-4feb-a699-6b1a8b08d4da.png)