夜空を見上げながらスマホで星座確認!AIと一緒にアプリ作ってみた話

キャンプに役立つAI技開発

こんにちは、moreai.campです。

キャンプの夜、焚き火の横で寝転がって夜空を見上げる瞬間って最高ですよね。

「あの明るい星なんだろう?」「あの並びって何座?」

毎回そう思いながら、結局調べずに終わってた。

そんなある日、思い立ちました。

「だったら自分で作ればいいじゃん」


AIに作ってもらいました

正確に言うと、AI(Claude)と一緒に作りました。

プログラミングはある程度できるんですが、「スマホのセンサーを使って星の位置を計算する」なんて、どこから手をつければいいかさっぱりわからない。

そこでClaudeに相談してみたところ…

「作れます!」

ということで、会話しながら開発スタート。


できたもの

完成したのがこちら👇

https://moreai23.github.io/stargazer/

iPhoneのSafariで開くだけで使えます(無料・アプリインストール不要)。

できること:

  • 📍 GPSで今いる場所を自動取得
  • 🧭 スマホを向けた方向の星座・星・惑星を表示
  • 🌕 月・木星・火星なども表示
  • 🌌 天の川の表示
  • 📷 カメラに星を重ねるARモード
  • ⭐ 気になる星をタップすると詳細情報が出る

開発中にはまったこと

ここからはちょっとだけ裏話を。

iPhoneがセンサーの許可を出してくれない問題

最初に作ったアプリ、iPhoneで開いたらセンサーの許可ダイアログが出ない

Claudeと原因を調べたら、iOSの仕様でタップした瞬間に許可を求めないとダメらしい。コードの書き方を一行変えただけで解決。こういうとき「なんでだろう?」って一緒に考えてくれるのがAIの助かるところ。

ChromeじゃなくてSafariで開いてください

最初Chromeで試したら動かなかった。調べたらiOSのChromeはセンサーへのアクセスが制限されているらしい。Safariで開き直したら問題なく動いた。

(今はChromeでも動くみたいです)

月の位置が一ヶ月ズレてた

実際の夜空と比べたら月の位置が約23度ズレてた

他の天文アプリと比較して数値を報告したら、Claudeが「計算式が古すぎる」と原因を特定。ジャン・ムース(天文学者)の高精度計算式に変えたら誤差が1度以内に改善。こういう専門知識をさっと出してくれるのはありがたい。

上を向くと星が暴走する問題

これが最大の難関でした。

月の方向から上に向けていくと、突然180度逆方向に星が飛んでしまう。

Claudeと何度も試行錯誤したけど、これはiOSのセンサーAPIの根本的な制限で、完全には解決できないことが判明。最終的に「仰角35度以上は方位を固定する」という割り切った仕様に落ち着いた。

「WEBアプリの限界ですかね?」

と聞いたら

「WebAPIの制約です。ネイティブアプリが使うARKitなしには難しいです」

と正直に教えてくれた。そういう正直さも助かる。


GitHubって何?という方へ

作ったアプリはGitHub Pagesという無料サービスで公開しています。

私もGitHub初挑戦でしたが、Claudeに手順を一つずつ教えてもらいながらなんとか公開できました。

「FTPは何度も使ったことあるのに、GitHubになるだけで苦労しました」

と言ったら

「GitHubを覚えると、作ったWebアプリを無料で公開・バージョン管理ができます。FTPの経験があるのですぐ慣れますよ」

と励ましてもらった笑


実際にキャンプで使ってみた

薄曇りの夜にキャンプで試してみました。

木星はちゃんと表示された!月の方向もほぼ合ってた。

ただ高い空(仰角35度以上)は方位が固定されてしまうので、真上の星は確認しにくい。地平線近くの星座確認には十分実用的です。

焚き火の横でスマホを向けながら「あれが木星か〜」ってなるの、なかなか楽しいですよ。


使い方

  1. iPhoneのSafariで https://moreai23.github.io/stargazer/ を開く
  2. 「START」をタップ
  3. 位置情報・センサーの許可を「許可」
  4. スマホを空に向けて動かすと星座が表示される

📷 ARモードを使うときは右上の「AR」ボタンをタップ。カメラに星が重なって表示されます。

コンパスがズレる場合はスマホを8の字に振って校正してみてください。


おわりに

「自分でアプリを作る」なんて以前は大変だったけど、AIと一緒なら結構なんでも作れるんだなと実感しました。

キャンプ仲間に見せたら「すごい!」って反応してもらえて素直に嬉しかった。

夜空に興味があるキャンパーさん、ぜひ試してみてください🔭✨

https://moreai23.github.io/stargazer/


このブログ記事もClaudeに手伝ってもらいました 😄


【追記】精度アップデートしました!

公開後、Claudeに「精度があがるか見直してください」とお願いしたところ、コードを総点検してくれて4つの改善ポイントが見つかりました。

見つかった問題と修正

① 太陽の計算式が古かった(誤差 約1.7度)

太陽の位置計算をより高精度な計算式(Meeus法)に変更。実は惑星の位置は太陽を基準に計算しているので、木星や火星の精度も一緒に向上しました。

② 北斗七星の星の座標が入れ替わってた

ドゥベとメラク(北極星を探すときの目印になる2つの星)の座標データが入れ替わっていることが判明。北斗七星の柄杓の形が微妙に歪んでいたのが直りました。

③ 月の「視差」を補正

月は地球にとても近いので、地球の中心から見た位置と、地上の私たちから見た位置が最大1度ズレます。この補正を追加しました。

④ 大気の「屈折」を補正

地平線近くの星は、大気のレンズ効果で実際より約0.5度浮き上がって見えます。夕日が地平線に沈むとき、実はもう物理的には沈んでいる…という現象と同じです。これも補正に加えました。

AIによるコードレビューのすごさ

今回おもしろかったのは、Claudeが自分で書いたコードを自分で検証して、実際に計算を実行しながら誤差を数値で確認していたこと。

「太陽の位置、正解とどれくらいズレてる?」を実際に計算 → 1.7度のズレを発見 → より良い計算式に変更 → 再計算して0.1度以内を確認

という流れを自動でやってくれました。星の座標の入れ替わりミスまで見つけてくれたのは正直驚きです。

計算精度はこれでほぼ限界まで来たので、あとはスマホのコンパスの精度次第。気になる方はぜひ最新版を試してみてください🔭

https://moreai23.github.io/stargazer/

コメント

タイトルとURLをコピーしました