
「らじすな for iOS」のソースコードを Github にアップロードしました。
ほぼ制約をつけてないので(MITライセンス)、興味ある方は自由にコンパイルしてiPhoneに入れて試してみて下さい。
サーバ上のAPIと連携して稼働するので、自前でサーバーを持ってないと(レンタルサーバーでもPython3.7が動けば可)アプリ単体では動きません。
APIは、ラジオ局や番組データをJSONで取得するための処理を書いています。番組音声データはサーバ処理ではなくアプリ側にて ffmpeg ライブラリを利用して m4a の音声データとして iPhone にダウロードしています。
アプリバージョンは v3.0.1-R8 となります。(2025/11現在での最新版)
ソースコードの利用に制限はつけていませんが、ほぼこのまま利用する場合は個人利用に留めておいて下さい。
(アップルストアのRegulationは通らないので公開はできません)

サーバ側のプログラムを少し調整して、SurfTideΔ のニュース画像を、対象ニュースソースのDomain画像を表示するようにしました。
これは iOS/Android ともに更新対象となりますが、サーバ側の修正なのでアプリのアップデートはありません。
SurfTIdeXのニュース画像と同じになります。

SurfTideΔ for Android v1.3.6-R55 にアップデートしました。
オープンテストが完了し、リリース申請しているので数日中にアップデート可能となります。
後発の「SurfTideX」が最新のタイドアプリになるのですが、未だにこちらの方の利用者も多いので、最新のAndroid16に対応させました。

天気と風と波 for iOS v1.2.4-R31 にアップデートしました。
既に AppStore にて公開済みです。
一部のOSバージョンで、天気図表示がクラッシュしていたのを修正しました。
合わせてサーバー側プログラムも修正し、沿岸の風と波画像も表示できるよう修正しました。
今回もアイキャッチはAI画像です。わりと気に入ってるので(笑)

SurfTideX for Android v1.4.3-R48 にアップデートしました。
Android15でステータスバーとコンテンツが重なっていた不具合を修正しました。あわせてAndroid16にも対応しました。
オープンテストが完了し、リリース申請しているので数日中にアップデート可能となります。
このバージョンアップに合わせて、サーバー側のプログラムも更新しました。
天気予報図(24時間後と48時間後)データの取得が出来なかったのを修正しました。
沿岸の風と波データが取得できなかったのを修正しました。これらはいずれも気象庁サイトの変更にともなう修正となります。
これらは iOS 版にも影響のある更新となります。
ツッコミどころ満載のAI画像ですが、面白いのでアイキャッチ画像にしてみました(笑)

しばらく不具合を放置していたのですが、iOS/Android版共に修正しました。
とくにiOS版は、OSのバージョンによっては天気図表示でクラッシュしていたのを修正しました。
天気図(24hと48hの天気予報図)が表示されない理由は、気象庁サイトの情報が変わったのが原因で、サーバ側のプログラムを修正して対応済みです。
iOS版は v1.2.4-R32 を現在申請中で、来週中には一般公開されると思います。
Android版は、旧バージョンでも天気図は表示されるようになっていると思いますが、Android16に対応したバージョンは v1.3.8-R38 となり、こちらも来週中には一般公開となります。
天気図の問題は、SurfTideXの天気図にも影響がありますが、サーバ側のプログラム修正でこちらも既に対応済みとなります。アプリは現行バージョンのままでアップデートの必要はありません。Android版はAndroid16に対応したバージョンを近々リリースします。(こちらも来週中を予定)

「らじすな」をサイドローディングできるようにしました。
ストア版と違い広告の表示はありません。しばらくはダウンロード数制限無しの完全フリー版とします。
iOS版のレギュレーションをクリアするのが難しく、またAndroid版もアップデートするたび意味不明のエビデンス動画再提出を求められるしで、もうめんどくさくなって自由に配布できるサイドローディングに切り替えることにしました。
なのでストア公開は中止しています。

Apple Watchによるコントローラーも実装完了です。 Watchアプリの名称は「らじすなRimo」。
「らじすな」のコントローラーの位置づけなので、単体では動作しません。iPhoneの「らじすな」を操作するアプリになります。
アプリでダウンロードしている番組の、選択/再生/停止ができます。番組の一覧は iPhone側の設定を引き継ぎます。
対象となる WatchOSのバージョンは 8以上ならOKです。低く設定したのは実機で最新のOSが 8.7しか持ってないので…
もっとも相当シンプルな実装なので、最新のOSは不要なんですけどね。
さて、申請がどうなることか…
Android版があったってのもあるんですが、ほぼ1ヶ月で作りきったのは AI のおかげ。
UI以外のロジック部分は、KotlinからSwiftに、ほぼAIにコンバートしてもらったし、UIもそこそこ理解して手伝ってくれます。
文句言わない便利なアシスタントがいるみたいですね。たまに上から目線ですけど。
やっぱそのうちターミネーターできちゃうな!

iPhoneの機能は全て実装が終わりました。
ダウンローダーも平行処理が可能になって、かなり時短になりました。
iOSのバックグラウンド処理の制限がキツイので、機種にもよりますがダウンロード中にサスペンドすると数秒〜数分でOSが処理を停止します。
一応、メッセージでフォアグラウンドを保つようにユーザーに通知していますが、実は上記のバックグラウンド処理の制限を受けない方法もあります。
MediaPlayerで再生している場合、サスペンドしてもiOSはアプリをそのまま稼働状態に保ってくれる仕様です。この仕様のため、番組を再生しながらダウンロードすると結構長いダウンロード処理でも問題なくバックグラウンドでダウンロードできます。
この後、Apple Watchでのリモート操作を実装します。一般公開はこの実装が終わってからです。
現在、TestFlightにてBetaテスト中です。

電車の中で見回すと、まぁほぼ9割以上は iPhone なんですねー…
自分用のデバイスはAndroidに変えてから既に3年、実機で残っている一番新しい iPhone は mini12 で、これはこれで気に入ってはいたのですが、仕事用とプライベートの2台持ちが面倒になって、simが2枚入る安いAndroidに変えちゃったんです。
あまりにも高すぎる iPhone はもう買わないだろうなぁ〜
とわいえ、世の中 iPhone だらけで、Androidアプリのダウンロードはちっとも伸びないし(もともと他の自前アプリもだけど)まぁ iOS版も書いてみるかなぁ〜と。
今回も、めんどくさいところはほぼ AI にお願いして、自分の作業は AI で出来ないところの調整位。マジに数年前では考えられない位サクサクとアプリが作れちゃいます。
以前は、Google検索してサンプル検証してとかだったけど、開発で Google検索なんて全くといっていい程使わなくなっちゃいました。
Background処理とか、Androidとはかなり違うので UI/UX も若干変えてますが、ほぼほぼAndroid板と同じにいけるかと。
とりあえず、シングルタスクでのダウンロードは動いているのですが、DLに時間がかかりすぎるので、効率を上げるためのダウンロード並行処理はこれから実装してみます。
番組の再生処理とか、イアフォン制御とか、ロック画面への表示とかは、Android版に比べると嘘みたいに簡単に実装できますね。Androidではえらい苦労した(主にはAIが)とこなので、最初に iOS版作ったらAndroid版は投げ出してたかもです(笑)