Web制作で、Stripeをモバイルアプリでも活用!Capacitor Stripeプラグインの2024年の進化
Capacitor Stripeプラグインの紹介
2021年頃から、Capacitor Stripeプラグインのメンテナンスをしている榊原です。
CapacitorはWebアプリをiOS/Androidアプリに変換するためのライブラリで、AppStoreやGoogle Playで公開することができるようになるライブラリです。これにCapacitor Stripeプラグインを組み合わせると、WebアプリからネイティブAPIを使うことによって、こんなことが実現できます。
@capacitor-community/stripe
Stripeを使ったインターネット決済。デジタルサービスについてはアプリ内課金を使わないといけませんが、物品販売等は独自の決済サービスをユーザに提供することができます。自社販売アプリももちろんのこと、うまくプラットフォームをつくることができると、AmazonみたいなサービスをWebアプリベースで提供することができます。
@capacitor-community/stripe-identity
Stripe Identityを使った本人確認。金融はもちろんのこと、何かしらの貸出サービスなどで、トラブルを回避するためにサービスに本人確認機能をつけることは重要です。本人確認付きのSNSや、自転車の貸出サービスなどをアプリで提供することができます。
@capacitor-community/stripe-terminal
現時点では日本未対応ですが、対面決済を行えます。デバイス不要で一番カンタンなものでいえば、TapToPayがあります。これ単体だと、日本ではPayPayも便利ですし、複数のキャッシュレス対応しているstera terminal等がありますが、インターネット決済と本人確認と組み合わせて使うことで、ユーザひとりひとりを特定しながら対面決済ができます。これって結構重要で、例えば取り置きであったり、また予約しての決済がユーザと紐つけて行えるので、すでにサービスを開始している海外ではなかなかに人気です。
現時点では、私はこの3つのプラグインをメンテナンスしており、npmのWeekly Downloads をみると爆発的ではないですが、なかなかに広く利用してもらっています。
2024年、これらのプラグインはどう進化したか
基本的には、少しずつ機能を追加、整理しながら、公式SDKのアップデートを追い続けているのですが、その中でも大きな変更点をご紹介します。
Capacitor v6のサポート
まず1月にCapacitor v6がリリースされました。これは私はとても待ちかねていたリリースで、Capacitor v5では、AndroidのCompileSdkVersionが33でした。ただ、Stripe IdentityのAndroid SDKが、20.35からCompileSdkVersion 34を要求するようになって、Capacitor v5でのサポートをどうするかとても悩ましい状態が続いてたのです。いや、variables.gradleでCompileSdkVersionとAndroid SDKのバージョンを変えることはできるのですが、Capacitorのデフォルトが33である以上は、これをキープしたいなと。
それが、v6になって、AndroidのCompileSdkVersionが34になりました。これによって、最新のStripe IdentityのAndroid SDKをデフォルトにすることができました。すばらしい!
Capacitor Stripe TerminalをRC版に
昨年から細々と @capacitor-community/stripe-terminal
の開発を続けていて、主要なAPIの実装は終わっていたのですが、Stripe TerminalってAPIが多いんですよね。外部デバイスの支払い端末を操作するためのAPIですので、支払いを受けるだけではなく、「支払いを受けたあとにキャンセルする」や、「支払いを受ける時の画面のメッセージを操作する」など、機能が多いです。いや、ここまでなら何も言わないけど、
- 支払い端末のアップデートの確認、アップデートの実行、アップデートの進捗管理
- バッテリー残量の確認
- 支払い端末がないユーザのdebug用にシュミレーターの操作API
- ディスプレイが支払い端末についていない場合、アプリ側で表示できるように支払い端末からのメッセージ取得
等々。これらを一通り実装して、RC版にもってきたのが今年一番力を入れたところでしょうか。ぼちぼちユーザも増えていっているので、そろそろ安定版にしようと思っています。まぁ、日本では現時点で未対応ですが(二回目)
Swift Package Managerのサポート
Capacitor v6から、実験的にSwift Package Managerのサポートが行われています。また、それにともなってiOSのプラグイン構造が刷新され、かなりシンプルになりました。フォルダ構成だけでもこんな感じに。
ios/
├── Plugin.xcodeproj/
├── Plugin.xcworkspace/
├── Plugin/
├── PluginTests/
└── Podfile
ios/
├── Sources/
├── Tests/
└── .gitignore
シンプル。かつ、Xcodeの自動生成系がなくなったことで、期待していない変更もでなくなってめちゃくちゃシンプルになりました。これって、プラグイン開発者自身にとってもなのですが、プラグインコードをGitHubに
公開して、コントリビューションを歓迎してる立場からすると、いろいろな人が見やすくなるのはとてつもなく嬉しいことです。本当これはやってよかった。
Kotlinへの移行
Capacitorは、本体もプラグインテンプレートもJavaで開発されています。Capacitor 1の時はまだKotlinはv1にも達してなかったのかな。当時はそもそもKotlinを採用するということを考えもしなかったので、長らくCapacitor StripeプラグインもJavaでの開発を続けていました。しかし、数年が経ち、またCapacitorドキュメントでも、プラグインでのKotlinの採用方法の紹介が行われるようになりました。
また、Kotlin v2もリリースされ、高速で安定し、何よりも気づいたらStripe Android SDKの型はすべてKotlinで書かれてることに気づきました。今まで、enumなどでKotlinを部分的には採用してたのですが、もうちょっとしたら2025年ですしいいよね!ということで、Capacitor StripeプラグインのAndroidベースをすべてKotlinに移行しました。さっぱりした!!
まとめ
Capacitor Stripeプラグインは、2024年も進化を続けています。Capacitor v6のサポート、Stripe TerminalのRC版リリース、Swift Package Managerのサポート、Kotlinへの移行など、多くの変更が行われています。これらの変更により、Capacitor Stripeプラグインはより使いやすく、開発しやすくなりました。今後も、Capacitor Stripeプラグインはさらなる進化を続けていくことができればと思います。
ぜひ、最新版のCapacitor Stripeプラグインをお試しください!
Discussion