Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Ten seconds of screen, then look up: a night-sky guide that wants to be put away

2026年10月10日に「Dev.to」が公開したITニュース「Ten seconds of screen, then look up: a night-sky guide that wants to be put away」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

スマホの暗視影響を防ぐ星空ガイドアプリ「Notta Ceca」を開発。夜空を撮影すると、星や星座を認識し、子供向けに分かりやすく解説する。Gemma 4等のAIやオープンソース技術を自宅PCで活用し、オフラインで正確な情報を提供。AIの誤情報を防ぐためのコードチェックも重要となる。

ITニュース解説

このニュース記事は、「Notta Ceca(ノッタ・チェカ)」というユニークな星空ガイドアプリの開発ストーリーを紹介している。システムエンジニアを目指す皆さんにとって、実際の開発者がどのような課題に直面し、それをどう解決していったのか、そしてどのような技術的な工夫を凝らしたのかを知る良い機会になるだろう。

Notta Cecaは、一見すると一般的な星空アプリと似ているが、その目的と機能には大きな違いがある。開発者が最も重視したのは、「暗闇でスマホ画面を見続けること」が、せっかくの夜間視力を損なってしまうという問題への対策だった。夜空に目が慣れるには約20分かかると言われており、一度明るい画面を見ると最初からやり直しになってしまう。しかし、子供から「あの星は何?」と聞かれたとき、ついスマホを手にしてしまうのが現実だ。そこで開発者は、「使ったらすぐにしまいたくなる」星空ガイドをコンセプトにNotta Cecaを開発した。アプリ名「Notta Ceca」はコルシカ語で「月のない夜」を意味し、最も星がよく見える暗い夜を指すという。

Notta Cecaの使い方はシンプルだ。スマホを壁などに固定し、ナイトモードで空の写真を一枚撮影する。するとNotta Cecaがその空の領域を認識し、写真に写っている星や惑星に名前を付け、星座線を描画する。その後、10歳の子どもでも理解できるように「南東を向いて、拳4つ分上に進むと、あの薄い黄色の点が土星だよ。土星から跳ね返った太陽の光がここまで届くのに70分かかったんだ」といった具体的な案内文を生成する。この案内文は音声で読み上げることもでき、さらに画面を真っ黒にして「Look up.(上を見て)」という二言だけを表示するボタンも用意されている。画面表示も、天文学者が使うライトのように、赤地に黒文字のデザインを採用することで、夜間視力を邪魔しないよう工夫されている。この全ての処理は、外部ネットワークに接続することなく、自宅のラップトップ上で完結するように設計されている点も特徴だ。

技術的な仕組みを見てみよう。Notta Cecaは、Pythonで書かれた小さなサーバープログラムと、ウェブブラウザで表示するJavaScriptのページで構成されている。スマホは自宅のWi-Fi経由でラップトップにアクセスし、このページを開く。

このアプリの根幹となる「空の領域認識」は、「プレートソルビング」と呼ばれる技術で行われる。これは、写真に写った星の配置から、どの方向を向いているかを特定する技術で、天文学の分野ではかなり以前からオープンソースで公開されている「astrometry.net」というツールが活用されている。astrometry.netは、写真から最も明るい点を抽出し、それらをいくつかのグループに分けて、拡大や回転に影響されない「形」として記述する。そして、事前に用意された星のカタログから作られたインデックスと照合することで、カメラがどの方向を向いているかを正確に特定し、写真に写る全ての星に名前を付けることができる。

星の名前や色、距離といった情報は、ヨーロッパ宇宙機関(ESA)が公開している「Hipparcos catalogue(ヒッパルコス・カタログ)」や、国際天文学連合(IAU)の公式星名といったオープンデータから取得される。また、惑星の位置については、NASA JPL(ジェット推進研究所)の「ephemeris(天文暦)」と連携する「Skyfield」というライブラリを使用して、写真が撮られた時間と場所に基づいて計算される。

そして、星空の案内文の生成には、「Gemma 4」というオープンソースのAIモデルが使われている。しかし、開発者はAIをそのまま使うのではなく、非常に賢い方法で活用している。

開発者は、AIの能力と限界を理解する中で、いくつかの重要な課題に直面し、それを解決してきた。 まず、空の領域認識における課題だ。最初、開発者が試したのは、一般的な望遠鏡や広角レンズ向けに作られた既製の星インデックスだった。しかし、都市の光の中で数十個の星しか捉えられないスマホカメラでは、うまく認識できなかった。そこで開発者は、astrometry.netがオープンソースであることを活かし、このツールに付属するインデックス作成プログラムを使って、スマホカメラに特化したインデックスを自作した。具体的には、肉眼で見える2,848個の星を収録したHipparcosカタログを元に、スマホの画角に合わせた新しいインデックスを構築したのだ。それでも、「ペガスス座の大四辺形」のような星の少ない領域では認識に失敗した。これは、星が少なすぎて照合に使えるグループが不足するためだった。さらに、土星のような惑星が写真内で最も明るい点であった場合、星カタログには惑星が含まれないため、astrometry.netがそれをノイズと誤認識するという問題も判明した。これらの課題に対し、開発者は、最も明るい2つの点をスキップしながら複数回並行して検索を実行するロジックを追加することで、認識精度と速度を大幅に向上させた。

次に、AIモデル「Gemma 4」の活用における課題と解決策だ。開発者が最初にGemma 4に星空の写真を見せたところ、Gemmaはどの星や星座も特定できず、「自信がない」と正直に答えた。これは、AIモデルが画像認識によって星空を特定する能力がまだ十分ではないことを示している。そこで開発者は、役割分担を明確にした。「コードが真実(ファクト)を知り、Gemmaがストーリーを語る」という設計だ。 具体的には、空の領域認識によって、コードは写真に写っている全ての星や惑星の名前、色、距離、位置といった正確な事実情報を全て把握する。そして、この事実情報をもとに、最も明るい星をいくつか選び、それらを辿るような経路を計算し、案内文の骨子を生成する。この骨子と事実情報がGemma 4に渡され、Gemma 4はそれを10歳の子どもが興味を持つような、魅力的で親しみやすい言葉遣いのストーリーに変換するのだ。 さらに重要なのは、Gemmaが生成した案内文を、コードが厳密に検証する仕組みだ。Gemmaの文章に含まれる方向の指示、星や惑星の名前、具体的な数値(例:光が届くまでの時間や温度)が、コードが持つ事実情報と合致するかを一つ一つチェックする。例えば、「光が200年前に出発した」というGemmaの文章に対し、事実が「199年前」であれば誤差の範囲内として許容するが、「355年前」を「300年前」と記述した場合は、正確性に欠けるとして拒否する。もしチェックに失敗した場合、Gemmaは問題点とともにもう一度文章を生成する機会を与えられ、それでも解決しなければ、Gemmaの代わりにコードが生成した、正確だがシンプルな文章が表示される。この厳格な検証プロセスにより、AIが誤った情報を提示するのを防ぎ、常に正確な情報がユーザーに提供されるようになっている。

このような開発の過程で、開発者は「オープンイノベーション」の価値を強く実感している。 まず、Notta Cecaは一度星のデータさえダウンロードしてしまえば、ネットワークに全く接続せずに動作する。星のカタログ、星認識ツール、AIモデルが全てラップトップ上に存在し、スマホとは自宅のWi-Fiを通じて通信するだけだ。これにより、アカウント登録やAPIキーの取得、写真ごとの料金支払いも不要で、ユーザーのプライバシーも完全に保護される。写真データが自宅のラップトップから外に出ることはなく、GPS情報も不要で、一時的なモノクロ画像ファイルもすぐに削除される。 次に、問題が発生した際に原因を究明し、解決できたのもオープンソースとオープンデータのおかげだ。もし「空を識別するAPI」のようなクローズドなサービスを使っていたら、認識に失敗した際に「見つかりません」という返答しか得られず、何が原因で、どうすれば改善できるのかを知ることはできなかっただろう。しかし、astrometry.netがオープンソースであり、Hipparcosカタログがオープンデータであったため、開発者は星インデックスの構造を理解し、スマホカメラに最適化されたものを自作し、星が少ない領域での失敗原因を特定して解決することができた。 そして、最新のGemmaもオープンモデルであり、数十年もの間オープンにされてきた天文データやツール群と組み合わせて活用できる。オープンソースであるため、開発者はAPI料金を気にすることなく、何百回ものテストを実行し、AIモデルの挙動を詳細に検証できた。これにより、AIが不正確な情報を生成する可能性を徹底的に排除し、システムの信頼性を高めることができたのだ。

このNotta Cecaの開発ストーリーは、システムエンジニアを目指す皆さんにとって、単に技術を組み合わせるだけでなく、ユーザーの課題を深く理解し、利用する技術の特性(AIの得意なこと、苦手なこと)を見極め、オープンソースやオープンデータの力を最大限に活用しながら、一つ一つの課題に対して粘り強く解決策を見つけていく重要性を示している。AIは強力なツールだが、その出力を鵜呑みにせず、コードでその正確性を担保するという発想は、今後の開発において非常に重要な視点となるだろう。

関連コンテンツ

関連IT用語

関連ITニュース