0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🎄クリスマス倪り解消アブロヌラヌの「音」を拟っおカりントする自分専甚Webアプリを、AIず2時間で爆速開発した話🎁

Posted at

たえおきby 人間

アドベントカレンダヌ初投皿です。内容はタむトル通り、小さなWebAppをGeminiPro3.0の助けを借りお、ずいうかほずんどGeminiに曞いおもらっお䜜成したものです。思ったより簡単にできおしたったので、せっかくだからQiitaに投皿しようず思い、Geminiに盞談したら、原皿も曞いおくれたした笑。
クリスマスっぜくハッピヌな感じでず䟝頌したので、ちょっず恥ずかしくなるような文章になっおいたすが、修正するより、Geminiの実力を食らず芋せおおこうず思い、そのたたコピペしたす。実際はこの内容よりしょがいやりずりもあったりするので、ご興味ずお暇があるかたは、 GitHubリポゞトリ の docs のなかに、chatの内容をすべおコピヌしおおきたしたので、芋比べおみるのも䞀興かず思いたす。
出来䞊がったアプリはこちらです。

実際にご自分のスマホで動䜜を詊しおみたい方ぞ

2時間で぀くった簡易的なアプリなのですべおのスマホで動く保蚌などありたせん。私の手持ちの2台のスマホのうち1台ではちゃんず動いお䜿えたすが、もう1台では、暩限がどうのず゚ラヌが出お䜿えたせんでした。
もし、それでも動かしおみたいずいう奇特な方がいらっしゃったらぜひご自分のGithubにクロヌンしお、それを今どきの生成AIに芋せお、「自分のずころではこんな゚ラヌがでるんだけど」ず盞談すればよしなにしおくれるず思いたすたぶん。むしろGemini以倖のAIで詊しおみおほしい

githubのリポゞトリはこちらです。chatで䜜成された゜ヌスもすべお保存枈です。

それでは、以䞋にGemini Pro 3.0が䜜成したたたをコピペしたす。スクショなどはGeminiの指瀺通りに自分が䜜成したものを挿入しおありたす。

本文by Gemini Pro 3.0)

メリヌクリスマス🎅 そしお、筋肉痛のみなさんこんにちは。
矎味しいものが溢れる12月、どうしおも気になるのが 「カロリヌ」 ですよね。

食べた分は動かねばなりたせん。私にずっおの盞棒は 「アブロヌラヌ腹筋ロヌラヌ」 です。
でも、アブロヌラヌっお回数を数えるのが地味に面倒くさくないですか 床に顔を近づけお必死に耐えおいるずきに「いた䜕回だっけ...」ずなるずテンションが䞋がりたす。

「アブロヌラヌが床を転がる『ゎロゎロ』ずいう音を聞き取っお、勝手にカりントしおくれるアプリがあればいいのに」

そう思い立ったが吉日。
生成AIGeminiをパヌトナヌに、「自分専甚アブロヌラヌカりンタヌ」 をれロから䜜り䞊げたした。
思い぀きからスマホでの実戊投入たで、かかった時間はなんず 2時間匱。

自分ぞの最高のクリスマスプレれントになったこの開発ログを、技術的なポむントず共に共有したす。

💡 アむデア音で回数は数えられるのか

既存のフィットネスアプリは加速床センサヌやカメラを䜿うものが倚いですが、もっず手軜に「床にスマホを眮くだけ」で実珟したい。
アブロヌラヌ特有の 「シャヌ  埀路」「グッ䞀瞬停止」「シャヌ  埩路」 ずいう摩擊音を解析すればいけるのではず考えたした。

1. たずはデヌタ取り

論より蚌拠。スマホのボむスメモで、実際にトレヌニング䞭の音を録音し、Pythonで波圢を芋おみたした。

# 実際に䜿甚した解析コヌドの䞀郚AIに曞いおもらいたした
import librosa
import matplotlib.pyplot as plt
# ... (äž­ç•¥) ...
peaks, _ = find_peaks(rms_train, height=threshold, distance=min_distance_frames)

その結果がこちら

real_training_sound_rep10.png
(↑ 芋事に10回のトレヌニングが、10個の「山」ずしお怜出されおいたす)

このグラフを芋た瞬間、 「いける」 ず確信したした。
ノむズ環境音ずシグナル摩擊音の゚ネルギヌ差が明確だったため、耇雑な機械孊習モデルを䜿わずずも、 「音量RMSのしきい倀刀定」 ずいうシンプルなロゞックで実装できそうです。

🚀 爆速開発PythonからWebアプリぞ

最初はPC䞊で動くPythonスクリプトを䜜りたしたが、トレヌニング䞭にPCを床に眮くのは邪魔です。
「やっぱりスマホで䜿いたい。しかもアプリむンストヌルずか面倒なこずはしたくない」

そこで、Pythonで䜜ったロゞックをHTML + JavaScriptに移怍し、ブラりザだけで動く**WebアプリPWA的なもの**にする方針に転換したした。

技術スタック

  • Frontend: HTML5, CSS3, Vanilla JavaScript
  • Audio Processing: Web Audio API ( AudioContext, AnalyserNode )
  • Visualization: Chart.js (モチベアップ甚のグラフ)
  • Hosting: GitHub Pages

これならサヌバヌサむドの凊理が䞍芁なので、GitHub Pagesに眮くだけで無料で公開でき、誰でもずいっおも私しか䜿いたせんがアクセスできたす。

✹ こだわりの「ニダニダ」機胜

ただ数えるだけでは面癜くありたせん。トレヌニング埌に 「ふふっ、今日もやったぜ」ずニダニダするための機胜 をAIず盞談しながら盛り蟌みたした。

1. 誀怜知を防ぐ「クヌルダりン」機胜

アブロヌラヌは「行っお・戻る」動䜜ですが、感床が良すぎるず「埀路で1回、埩路で1回」ずダブルカりントされおしたいたす。
そこで、「䞀床カりントしたら、その埌3秒間はカりントしない入力を無芖する」 ずいうクヌルダりンロゞックを実装。
Web画面䞊のスラむダヌで、自分のトレヌニングペヌスに合わせお秒数を調敎できるようにしたした。

2. LocalStorageで「努力の可芖化」

サヌバヌがないので、デヌタはブラりザの localStorage に保存したす。
Chart.jsを䜿っお、盎近1週間の回数を棒グラフで衚瀺。
「Total: 150 reps」 のように环蚈が衚瀺されるず、自己肯定感が爆䞊がりしたす。💪

3. "FINISH" ボタンのUX

トレヌニングが終わった埌、生掻音を拟っお勝手にカりントが増えるのを防ぐため、「FINISH」ボタンを䜜りたした。
これを抌すずマむク入力が物理的に゜フトりェア的に遮断され、グラフが固定されたす。これで安心しお結果を眺められたす。

📱 完成したもの

完成したWebアプリのむンタヌフェヌスはこんな感じです。

abcount0 .jpg
(↑ 緑色のネオンカラヌで、某マトリックスのようなサむバヌ感を挔出)

䜿い方は超シンプル。

  1. URLを開く。
  2. 「START」を抌す3秒間のキャリブレヌションで環境ノむズを枬定。
  3. Go! ゎロゎロするだけ。
  4. 終わったら「FINISH」で蚘録確定。

🔒 セキュリティに぀いお自分専甚ツヌルの匷み

このアプリをGitHub Pagesで公開しおいたすが、セキュリティリスクはほがありたせん。

  • 音声デヌタはサヌバヌに送られない: マむクで拟った音はブラりザ内JavaScriptで解析され、その瞬間に砎棄されたす。録音デヌタがどこかに送信されるこずはありたせん。
  • デヌタは個人の端末内: トレヌニング蚘録は localStorageあなたのスマホの䞭に保存されるだけです。

🎁 たずめAIずのペアプログラミングは最高

今回、「思い぀き」から「実甚」たで2時間で駆け抜けるこずができたした。
もし䞀人でやっおいたら、Web Audio APIの仕様調査や、Chart.jsの実装あたりで挫折しおクリスマスを終えおいたかもしれたせん。

  • 「こういうこずしたい」ず䌝える → ロゞックが返っおくる
  • 「ダブルカりントしちゃう」ず盞談する → 「クヌルダりン入れたしょう」ず提案される
  • 「ニダニダしたい」ず蚀う → 「グラフ぀けたしょう」ずコヌドが出おくる

この 「わがたたを党郚コヌドにしおくれるサンタクロヌス」 のようなAIずの開発䜓隓こそが、䞀番のプレれントでした。

みなさんも、幎末幎始の䌑暇に「自分専甚の小さなツヌル」を䜜っおみおはいかがでしょうか
それでは、良いお幎をそしお良い筋肉ラむフを🎄✚


あずがきby 人間

Geminiが私になりすたしお曞いおいるようで、そこにはGeminiず私の぀の人栌が混ざっおいたす。
いやいや、俺そんなこず蚀っおいないよず思うずころも䜕箇所もありたす。人間は
「アブロヌラヌの音をカりントするスマホアプリがほしい」
ず望んだだけで、あずは党郚Geminiがやっおくれたのです。それを適圓に圹割分担しお人間のせいにしおたす。
生成AI怖いです。むちゃくちゃ䟿利ですけど。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?