このブログを閲覧するためだけのアプリ「RSBlogReader」(Android向け)をリリースしました。
以下よりダウンロードできます。
Google Play および Google Play ロゴは、Google LLC の商標です。
目次
構想・開発1日でアプリを公開した裏話
実際のタイムラインは以下のような感じでした。
日付 | やったこと |
---|---|
2024/03/15 | Google Play Console デベロッパー アカウントが閉鎖されると通知を受け取る(きっかけ) |
2024/03/16午後 | デベロッパーアカウントの維持のためこのブログをアプリ化する構想を思いつく |
2024/03/17午前 | アプリ開発(WindowsPCで.NET MAUIの開発環境をセットアップしてアプリとしてパッケージング) |
2024/03/19 | Google Playのポリシー違反の修正(アプリに問題はなくPlay Consoleで設定したストア掲載情報に問題があった) |
2024/03/23 | バージョン1.0.0をリリース(実際にGoogle Play Storeに公開された日) |
2024/03/25 | バージョン1.0.1をリリース(スプラッシュスクリーンの修正) |
正確には2日に分けて構想・開発して、Play Consoleにアプリを提出してから1週間後に公開されていますが、作業時間で換算するとだいたい1日分くらいでした。
また、きっかけがGoogle Play デベロッパーアカウントの閉鎖の危機という尻を叩かれてのものなのであまり褒められたものではありませんがとにかく早くアプリを作る必要があったのも事実です。
Google Play デベロッパーアカウントは初回登録料が25ドルかかります。 1
私が登録したときはまだ円安の影響はなかったため3千円くらいだったと思います。
これから再登録しようとすると4千円近くかかるので決して安くありません。(Apple Developer Programのメンバーシップ年間登録料99ドル 2 に比べたらはるかに安いですが)
そういった経緯で今回の対応はAndroid向けのアプリになります。
特に広告を打つつもりはありませんが、見てもらえたら励みになります。
全く新しいものを1から作ったわけではなく、今あるこのブログをアプリの中で開けるというシンプルな機能を実装したものです。
そのためほとんど特別な開発はしておらず、今回使用した技術フレームワーク(.NET MAUI)の枠内で動いています。
一部、通常ブラウザで閲覧時に別タブを開くような外部サイトへのリンクについてはアプリ内では開かずにデフォルトブラウザを起動するように調整しています。
使用した技術フレームワーク(.NET MAUI)
クロスプラットフォーム向けのフレームワークにはFlutterやReact Nativeなどもありますが、仕事でも触っていたXamarinの後継フレームワークとして登場した.NET MAUIを勉強がてら採用しました。
他のフレームワークを比較していないのでどれが優れていると一概に言えませんが使い慣れた環境(Visual Studio+C#)で開発できるのは個人的にメリットでした。
将来的にはAndroid以外のプラットフォームでも配信できたらと思います。
空の.NET MAUIプロジェクトからの主な変更点
基本は.NET MAUIの空のテンプレートプロジェクトから実装してます。
変更点は主に以下です。
MainPage.xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MauiApp.MainPage">
<Grid>
<!-- WebViewを配置 -->
<WebView x:Name="webView" Navigating="webView_Navigating" Navigated="webView_Navigated" Grid.Row="0" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" />
</Grid>
</ContentPage>
MainPage.xaml.cs
namespace MauiApp;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
// WebサイトのURLに置き換え
webView.Source = "https://example.com";
}
private void webView_Navigating(object sender, WebNavigatingEventArgs e)
{
// 許可されたドメインかどうかをチェック
string[] baseDomains = new string[] { "https://example.com" };
bool isAllowedDomain = baseDomains.Any(e.Url.StartsWith);
if (!isAllowedDomain)
{
// ナビゲーションをキャンセル
e.Cancel = true;
// 外部ブラウザを開く
Launcher.OpenAsync(new Uri(e.Url));
}
}
}
Webサイトを持ってる人は誰でもアプリを作って公開できる
プラットフォームの特性や環境構築にある程度の理解は必要ですが、Android向けについてはWebサイトを持っている人は誰でもアプリを作って公開できるようになっていると思います。
もちろんサイトの特徴によってはアプリの作り込みが必要な部分もあるかもしれません。
例えば外部サイトへの誘導はこのアプリの場合はデフォルトブラウザを起動するように実装しています。そのあたりは調整が必要になるものと思います。