19天気をオフラインで予測できるスマホアプリを作るスマートフォン天気Swiftオフラインはじめにカラッと晴れた日、気持ち良いですね。撮影こんな日は、バイクでのお出かけが捗ります。この後大雨に打たれることに・・・こんな辛い思いをしたくないということで、オフラインで動作する晴雨計アプリを作ります。オフラインなので、災害時やイベントでの回線混雑時など、ネットワークに接続しづらいあらゆる状況でも使用できるかもしれません。本記事では、新しい技術を活用するといった内容ではありませんが、スマホ内蔵のセンサを使用することにより一風変わったアプリが作れるということが伝わればと思っています。本記事はDeNA20新卒アドベントカレンダーとして執筆させていただいています。このような執筆のきっかけをいただけて感謝です。※高精度な天気予測を目指すものではありません。私は気象の専門家でもありませんのであしからず。GPSなど多種多様なセンサが内蔵され、オフライン環境下でも、身の回りの情報を取得することができます。これらセンサのうち、気圧センサは天気予測に使えるかもしれません。天候と気圧は密接な関係があると言われているためです。上昇気流により雲が発生している間は、地上では空気が薄くなります。そのため、一般的には、気圧が下がると雨が降ると言われています。実際に気圧計が17世紀に発明されて以降、気圧は天気予報のバロメータとして漁師や農家に重宝されてきたそうです1。現在でも、登山用の一部の時計に気圧ベースの天気予測機能を搭載した製品が販売されています。気圧のみを使用する晴雨予測の一つの弱点として、高度の変化に比例して気圧も変わってしまうことが挙げられます。スマートフォンは持ち歩いて使うため尚更影響を受けます。幸いなことに、スマートフォン搭載のGPSにより、高度情報を取得できます。下記の式2により気圧センサの値を海面気圧に補正して、高度による気圧変化の影響を低減します。天気の予測には機械学習を使いたいところですが、修論で時間がなかなか取れないため、今回は決めうちで気圧と天気を紐付けます。下図は、気象庁公開3の奈良における2018年まるまる1年間の気象データを元に作成した、降水量毎の平均海面気圧です。基本的に、降水量が増えるに従って、平均気圧が低くなっているのがわかります。雨が降り始めるのは、降水量0mmと0.5mmの間であると考えられるので、それぞれの平均気圧である1016hPaと1011.8hPaの中間である1013.9hPaを基準としてこれより低ければ雨、高ければ晴といった具合に設定することにします。気象庁の公開している過去の気象データはこちらから表示・ダウンロードできます。}位置情報取得権限を得るにはInfo.plistに次の内容の追記が必要です。次の様なUIのアプリが完成しました!それぞれの機能は次の通り。気圧に応じて、該当する天気アイコンが出現します。天気アイコン下のバーは気圧を表します。気圧(海面補正済)を表示します。過去の気圧変化をベースに天候の変化を予測します。今回は気圧が上昇していれば雨→晴、下降していれば晴→雨と表示しているだけです。最大で過去12時間の気圧の変化をグラフで表示します。GitHubはこちら。二日しか試していませんが、晴れと曇りは割と当たっているような?まだ、雨の日に試すことができていませんので、追って結果を掲載できればと思います。今後についてまずはリリースする。次に、急激な気圧下降時に通知してくれる機能などを追加したい。最終的には気圧を入力として、数時間後が晴・曇り・雨かを出力とする機械学習モデルを取り入れたりもしてみたい。おわりにスマホだけでの天気予測は実用的な精度が出ないかもしれませんが、取り組みとして、面白いなと感じて頂けたのであれば幸いです。スマホは身近なセンサの塊でもあり、色々と遊ぶことができますので、皆さんも是非試してもらえると!さてQiita投稿を終えたところで、修論を書きに大学に戻ります。このアプリで天気が晴れであることを確認してから向かうこととします。upLoginユーザーは見つかりませんでした。