1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Python】高専の微積が辛すぎたので、無限に問題が出る「最強のドリル」を自作してみた

Posted at

はじめに

高専生の皆さん、微積の単位は取れていますか?
過去問を解くだけじゃ演習量が足りないし、市販の問題集は高い...。
しかも「答えを覚えてしまう」ことってありますよね。

「なら、無限に問題が出るアプリを作ればいいじゃない」

ということで、Pythonを使って**「起動するたびに数式がランダム生成される微積ドリル」**を自作しました。
留年回避のための執念のプロダクトです。

作ったもの

♾️ Kosen Math Drill (Infinite Calculus)
SymPyで数式を生成し、TkinterでGUIを作ったデスクトップアプリです。

スクリーンショット 2025-12-21 205046.pngスクリーンショット 2025-12-21 203450.png

こだわりポイント

  • 完全ランダム生成: 係数や関数が毎回変わるため、答えを暗記できません。一生新しい問題が出ます。
  • 高難易度対応: テストで狙われやすい「商の微分」「合成関数」「部分積分」「逆三角関数」も完全網羅。
  • 没入型UI: 集中力を高めるダークモード(Cyberpunk Style)を採用。
  • 解説機能: 間違えた場合、数式を綺麗にレンダリングして正解を表示します。

技術スタック

  • 言語: Python 3.10
  • 数式処理: SymPy
  • GUI: Tkinter (標準ライブラリ)
  • グラフ描画: Matplotlib
  • 配布: PyInstaller でexe化

どうやって「無限生成」しているか?

一番の肝は SymPy を使ったランダム生成ロジックです。
単にランダムな数字を出すのではなく、**「数式の部品」**をランダムに組み合わせています。

import sympy
import random

x = sympy.Symbol('x')

def get_random_func():
    # 1. 基本的な部品を用意(多項式、三角関数、指数関数...)
    parts = [
        x ** random.randint(1, 3),
        sympy.sin(x),
        sympy.cos(x),
        sympy.exp(x),
        sympy.log(x)
    ]
    
    # 2. ランダムに2つ選んで掛け合わせたり、合成したりする
    func = random.choice(parts) * random.choice(parts)
    
    # 3. 係数をランダムにつける
    coeff = random.randint(2, 9)
    return coeff * func

# これを微分・積分問題として出題する
problem = get_random_func()
answer = sympy.diff(problem, x)

このように、部品を定義してガチャのように組み合わせることで、**「人間が解けるギリギリのライン」**の複雑な数式を生み出しています。

ダウンロード(GitHub)

ソースコードと、Windowsですぐに動くexeファイルをGitHubで公開しています。
テスト前の学生も、Python初学者の方も、ぜひ遊んでみてください!

👉 ダウンロードはこちら (GitHub Releases)

おわりに

「欲しいものがなければ自分で作る」。これがエンジニアの醍醐味ですね。
今回はPythonで作りましたが、次はWebブラウザ上で動く**「C言語ポインタ学習シミュレーター」**を作る予定です。

もし気に入ったら、GitHubの Star(⭐️) や、Qiitaの いいね(LGTM) をもらえると開発の励みになります!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?