「収支管理」アプリをリリース

収支管理アプリは、収支を簡単に管理できる家計簿のようなアプリです。余計な機能はできるだけ取り除き、必要な機能のみに絞ることでシンプルなアプリに仕上げました。

機能は、カレンダーによる収支の一覧画面、通帳のように収支を一覧で確認できる画面、グラフによる収支の推移がわかる画面、バックアップ機能やタグ仕訳など。

iOS版のダウンロードはこちらから

Android版のダウンロードはこちらから


Flutterを使用したため、iOSとAndroid両方一度に開発することができました。iOSとAndroidで若干挙動が異なるところはありましたが、各プラットフォームでネイティブ開発していたこともあり、それほど苦労することもなくリリースできました。

まず、初めてFlutterを使ってみた感想は、ライブラリが充実していてUIの構築がとても簡単にできること、欲しいと思ったライブラリが既に用意されているので、爆速で開発できる点です。そして、ホットリロードによりコードの更新がリアルタイムに反映できる点もすばらしいと思いました。

アーキテクチャは、レイヤードアーキテクチャを採用しました。これは、UI層→アプリケーション層→ドメイン層→インフラストラクチャ層のように各層で、ロジックを分離する方法です。UI層からインフラストラクチャ層のように依存関係を一方向にすることで、各層の影響を限定的にすることが可能です。

例えば、インフラ層にデータベース入出力するロジックを実装した場合で考えます。テスト時だけデータベースを書き換えたいというケースにおいて、データベースの入出力するロジックをDIで入れ替えるということが簡単にできるわけです。

今回使用したライブラリなどは、状態管理にRiverpod、SQLiteへのアクセスdrift、リリース後の管理にFirebase、サブスクリプションの管理にRevenueCatを使用しました。

初めてサブスクリプションの実装にあたって、Firebaseで処理するか迷いましたが、iOSとAndroid両方に対応するのが少し面倒だったことや、サーバ側でデータをなるべく持ちたくなかったこともあり、RevenueCatを使うことにしました。

RevenueCatはサブスクリプション以外のアプリ内課金を管理するのにも便利そうです。月間$2,500までは無料で使えます。(それ以降は1%の手数料とのこと)

Flutterの開発部門の人員削減の話など出ているのが少し不安なところです。あとは、ライブラリについても更新されていないパッケージなども見かけますので、メリットとデメリットを考えて採用するのがよさそうです。

適時開示情報のAndroidアプリをリリース

iOSでリリースしていた適時開示情報アプリのAndroid版をリリースしました。

Google Playからのダウンロードはこちらから

適時開示情報アプリは、TDnet・EDINETの適時開示情報をほぼリアルタイムでプッシュ通知で配信するサービスです。適時開示情報以外にも決算予定日のプッシュ通知も可能です。

アプリからは過去3年間の適時開示情報の検索や、決算予定日をカレンダーで見やすい一覧表示で確認できます。また、ウォッチ機能でお気に入りの株式銘柄の適時開示情報を一覧で確認することもできます。


今回、Android版はKotlinとJetpack Composeを利用し、ネイティブアプリとして開発しました。先行リリースしていたiOS版と同等の機能とUIにすることを目標として取り掛かりました。

iOS版ではマテリアルデザインを採用していたため、UIの構築もスムーズに進めることができました。KotlinはSwift似ている部分が多いため、言語についてもそれほど問題となりませんでした。Androidはさまざまなメーカーが端末を販売しているため、レイアウトまわりなど苦戦しそうなイメージでしたが、Jetpack Composeがその部分を上手いこと吸収してくれるため、想像より作りやすく感じました。

アーキテクチャは、さまざまありますが今回は初めてということもあり、無難にMVVMの構成とし、使用したライブラリなどは、Hilt、Retrofit、Firebase、Glance(ウィジェット部分)としました。iOSでの開発と違い、当然使用しているライブラリやアーキテクチャも違うため、いろいろ勉強になる部分もありとても新鮮でした。

iOS、Androidと別々の言語でネイティブアプリとして開発してしまうと、管理がとても大変になりますので、今後はFlutterやCompose Multiplatformも取り入れていきたいところです。

SSL化しました

Let’s EncryptがようやくPublic Beta Programになったので、SSL化してみました。
IdenTrust社のクロスルート証明書であるため、ほとんどのブラウザに対応しているのもいいですね。
無料で個人のサイトでも手軽にSSL化できるようになったので積極的に使っていきたいです。

証明書の発行方法もGitからダウンロードしたスクリプトを実行するだけというのもいまどきな感じ。
DebianならApacheなどへの導入もすべて自動で出来るようですが、CentOSではすべて自動化は無理なようです。近いうちに正式リリースされると思うので、そのときには自動化できるようになっていることでしょう。

証明書の有効期限は90日で、60日毎の更新を推奨しているようです。これはリリース後も変わりません。
期限を短くすることで秘密鍵の危殆化や誤発行による被害を抑えられるというメリットがあるようです。発行はスクリプトによる自動化させることで更新はたいした手間でなくなるとのこと。なかなか新しい試みですね。

しばらく使ってみて様子をみていこうと思います。

Let’s Encrypt
Let’s Encrypt 総合ポータル