Blog

機械学習モデルを組み込んだ Web アプリを Python 初心者が作ってみた

機械学習モデルを組み込んだ Web アプリを Python 初心者が作ってみた

Machine learning app development

アイディアがある?

Hitekはいつでもあなたに同行する準備ができています。

「Python で機械学習を学び始めたけど、実際に動くものを作りたい!」

そんな思いから、私は機械学習モデルを組み込んだ Web アプリの開発に挑戦しました。Python 初心者でも、Flask や Streamlit を使えば意外と簡単に実装できることがわかり、その過程で得た知見をシェアします。

この記事では、
機械学習モデルの構築(Scikit-learn を使用)
Web アプリ化(Flask と Streamlit の比較)
デプロイ方法(Heroku と Render の選択肢)
について、実際のコード例を交えながら解説します。

もし「自分も作ってみたい!」と思ったら、ぜひ最後まで読み進めてください。


1. なぜ機械学習モデルをWebアプリに組み込むのか?

機械学習モデルを Jupyter Notebook 上で動かすだけでは、実用的な価値は限られます。しかし、Web アプリとして公開すれば、誰でも簡単に予測機能を利用できるようになります。

例えば、

  • 画像分類アプリ(犬 vs 猫の判別)
  • テキスト感情分析ツール(レビューのポジティブ/ネガティブ判定)
  • 株価予測ダッシュボード

といったサービスが作れます。

Python には FlaskStreamlit といった軽量な Web フレームワークがあり、初心者でも比較的簡単に実装可能です。


2. 機械学習モデルの構築(Scikit-learn で簡単分類器を作る)

まずは、シンプルな機械学習モデルを準備します。ここでは Iris データセット(アヤメの分類) を使い、Scikit-learn でモデルを訓練します。

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
import joblib

# データ読み込み
iris = load_iris()
X, y = iris.data, iris.target

# モデル訓練
model = RandomForestClassifier()
model.fit(X, y)

# モデル保存
joblib.dump(model, 'iris_model.pkl')

これで、iris_model.pkl というモデルファイルが生成されました。


3. Web アプリ化(Flask vs Streamlit)

【Option 1】Flask で作る(カスタマイズ性が高い)

Flask は軽量な Web フレームワークで、自由度が高いのが特徴です。

from flask import Flask, request, render_template
import joblib

app = Flask(__name__)
model = joblib.load('iris_model.pkl')

@app.route('/', methods=['GET', 'POST'])
def predict():
    if request.method == 'POST':
        data = request.form
        features = [float(data['sepal_length']), float(data['sepal_width']),
                   float(data['petal_length']), float(data['petal_width'])]
        prediction = model.predict([features])[0]
        species = ['Setosa', 'Versicolor', 'Virginica'][prediction]
        return render_template('result.html', species=species)
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)

Flask のメリット

  • デザインを自由にカスタマイズできる
  • REST API としても利用可能

Flask のデメリット

  • HTML/CSS の知識が必要
  • デプロイ設定が少し複雑

【Option 2】Streamlit で作る(超簡単、コード数行で完成)

Streamlit はデータサイエンティスト向けに作られたツールで、Python だけでインタラクティブな Web アプリが作れます。

import streamlit as st
import joblib

model = joblib.load('iris_model.pkl')

st.title('Iris 分類アプリ')
sepal_length = st.slider('がく片の長さ', 4.0, 8.0, 5.0)
sepal_width = st.slider('がく片の幅', 2.0, 5.0, 3.0)
petal_length = st.slider('花びらの長さ', 1.0, 7.0, 4.0)
petal_width = st.slider('花びらの幅', 0.1, 2.5, 1.0)

if st.button('予測'):
    prediction = model.predict([[sepal_length, sepal_width, petal_length, petal_width]])[0]
    species = ['Setosa', 'Versicolor', 'Virginica'][prediction]
    st.success(f'このアヤメは **{species}** です!')

Streamlit のメリット

  • コードがシンプルで初心者向け
  • リアルタイム更新が可能
  • デプロイが楽(Streamlit Cloud を使えば無料公開可能)

Streamlit のデメリット

  • デザインの自由度が低い
  • 大規模アプリには向かない

4. Web アプリを公開する(Heroku vs Render)

完成したアプリを公開する方法として、HerokuRender がおすすめです。

サービス 無料枠 デプロイの容易さ Python サポート
Heroku ◯(クレジットカード登録必要) 良好
Render ◯(クレジットカード不要) 優秀

Render の方が無料枠が使いやすく、最近では Heroku の代替として人気です。


5. まとめ:Python 初心者でも Web × AI アプリは作れる!

今回の取り組みでわかったのは、「機械学習モデルを Web アプリにするのは思ったより簡単」 ということです。

  • モデル構築 → Scikit-learn で OK
  • Web アプリ化 → Flask(カスタマイズ重視) or Streamlit(手軽さ重視)
  • 公開 → Heroku か Render でデプロイ

もし興味があれば、Google Colab で試してみてください。「動くものを作る」 ことで、学習のモチベーションも上がりますよ!

「次はどんな AI アプリを作ろう?」 と考えながら、ぜひ挑戦してみてください。

その他のニュース
Lên đầu trang