初のAndroidアプリケーション公開までの道のり vol.1 車速連動ボリュームコントロールアプリ
の続きになります。なんだかんだと順調?に開発実装が進んでいる気がします。。。
■設計ができてもアプリが出来上がる訳ではない
前回の投稿で思い付いた音量調整アプリですが、すぐに開発開始って訳にはいきませんでした。なにせその頃はまだプログラミングを再開していません。なんとなく「こうしたアプリを自分で作れたらいいな~」くらいの感覚。
その頃にはこうしてITエンジニア復帰に向けて会社を退職するなんて露ほども思ってませんでした。人生わからんもんです。
他にWebアプリケーションとして展開しつつある「SmartRandomPlayer」と併せて、ポートフォリオ作成として真っ先に構想したプログラムになります。
なにより、自分が使いたいアプリです。設計はほぼ固まっていましたので、あとはAndroidで実装する言語等の選定をしなければなりませんでした。
■競合アプリケーション、あったんだ…
そうした中で、ふと「そもそも速度連動の音量調節アプリってすでにあるんじゃ?」という疑問が湧きました。このアプリの仕組みを思い付いた時に、一番に思わなきゃいけないことなのに。まったく…
なんせAndroid(スマホアプリ)という競争の激しいレッドオーシャンゾーンです。当然私なんぞの発想など他の方がとっくに思い付いていても不思議ではないです。
しかし時代は変わったものです。以前ならPlayストアでちまちま検索したりしてたでしょうが、今やAI検索の時代です。メインAIのClaudeで、私のアプリのコンセプトを話しながら同じ機能を持つ先行アプリが無いかを調査してもらいました。
便利ですね。日本語圏以外からも広く探してきてもらいました。
Androidアプリ
・Speed Volume (com.eddy.speedvolume)
速度に応じた線形音量調整
シンプルな設定画面
評価:動作は安定だが調整が大雑把
・Auto Volume Control
3段階の速度ゾーン設定
バックグラウンド動作対応
評価:段階切り替え時に音量が急変する
・Volume by Speed
GPS精度の問題多数報告
基本機能のみ
評価:アップデートが止まっている
iOSアプリ
・Speed of Sound
iOS向けでは最も高機能
カスタムカーブ設定可能
評価:価格が高め(有料アプリ)
レポートはもっと詳しくまとめられており、こちらからの質問にも答えられる物でした。裏取りしてみたらハルシネーションは無いです。明確な指示でしたので、AIも迷わなかったのでしょう。
そして意外にも私の発想した、「ウェーバー・フェヒナーの法則」を取り入れたボリュームの対数補間を使った滑らかなカーブ調整機能を実装しているアプリは、ほぼ無いことが分かりました。
詳細な調査は実際にアプリをインストールして使ってみないといけないでしょうが、まぁそうしたところで、私の方針が劇的に変わるでもないし、そもそもポートフォリオの一環ですから、マネタイズのために必死になることもないと思い、自分の設計で我が道を進むことにしました。
しかし、本当にAIのネット上の検索機能は進化しました。もちろん、調査対象がネット上だけでなく、またハルシネーションの事を考えると、完全にAIを信用することはできませんが、限定条件と適切なプロンプトを組み合わせると、本当にちょっとしたリサーチレポートを出してくれます。これでまだリサーチに特化したエージェントモードだと精度が上がるのですから恐れ入ります。 コンサルを生業にしている人たちが危機感を持つのは無理もないですね。ネット中心のリサーチでそれらしい成果物をクライアントに提供していたコンサルは淘汰されるでしょうね。
■Capacitor(キャパシター)という選択肢
Capacitorとは、Ionicチームが開発したクロスプラットフォームアプリ開発フレームワークです。Web技術(HTML/CSS/JavaScript)で書いたコードを、iOSやAndroidのネイティブアプリとして動作させることができます。
Cordovaの後継として位置づけられており、より現代的なアーキテクチャとTypeScriptサポート、そして優れた開発体験を提供。Webアプリ開発の知識をそのまま活かしてモバイルアプリが作れるので、個人開発者にとって非常に強力なツールです。
…
このアプリケーションの実現には、スマホ搭載のGPS機能を使うことが前提になります。
利用ユーザーがどれだけのスピードで移動しているかを検出する必要があるからです。もっとも別のアプローチ方法もあるようで、外界のノイズ音を拾って音量調節をするアプリもあるようですが、どうもあまり精度が無い模様です。
私の主目的である「ネックスピーカーを付けてバイク乗車時に音楽を聴く」というレアシチュエーションに対応させるにはGPS機能対応はマストです。
となると自然に開発言語はAndroidアプリ開発でのネイティブ言語であるjava/Kotlinになるものと思っていました。しかし別件でAIと雑談をしていると、上記のCapacitorでプラグインシステムでネイティブ機能にアクセスできるそうです。
プラグインは、AndroidはJava/Kotlin、iOSはSwift/Objective-Cで書かれたネイティブコードをJavaScriptから呼び出せるようにする橋渡し役です。PythonのpipやNode.jsのnpmと同じような仕組みで、必要な機能をnpmパッケージとして配布・インストールできます。
これを使えばGPS機能をフレームワークのCapacitorに実装できるのです。馴染みの全くないAndroidネイティブ言語をとりあえず使わなくて良さそうですし、なんといっても私の出身畑であるWeb技術がベースです。
Kotlin頑張って使いこなさなきゃと思っていた私は、少し肩透かしに思いながらも、時代はどんどん進んでるんだなと実感しました。
だが、そんなCapacitorのプラグインシステムでもどうにもならんことがあることを知るのは後の話でした…
と、切りが良いので今回はここまでで。しかし、AIとの雑談で思わぬ技術的なヒントを貰えることが最近本当に多く、問題もありつつ、本当にエンジニアパートナーとしての存在をAIは発揮しつつありますよね。
ただ、文章作成は…正直イマイチ。私の過去のブログエントリーを学習して、書き手ヤーマンのペルソナで、それっぽい文章を作り出してますが、「なんか違う」感が拭えません。
意図的な外しテクニックは構造的にAIには無理ですし、人間にできないことはまだ沢山ありますよ。皆さん。
※開発中画面
