新着:HeliusがLight Protocolを買収
Solana Mobileアプリの公開方法:実践ガイド
ブログ/開発

Solana Mobileアプリの公開方法:実践ガイド

インテグレーションエンジニアXの0xSolanaGirl
読了時間:8分

アプリストアは、暗号資産アプリのパブリッシャーにとって決して使いやすいものではありません。Apple App Storeのガイドラインでは、アプリ内購入での暗号資産の使用が禁止され、Apple経由の支払いには30%の手数料が課されます。さらに、ブロックチェーンを通じて提供されるアプリ内インセンティブも禁止されており、開発者には厳しい制限があります。こうした要因から、モバイルdAppを公開する独立系開発者はほとんどいません。Solana Sagaは、制限的なポリシーなしでマイクロトランザクションを利用できる、手数料無料の分散型アプリストア「dApp store」を導入し、モバイルdApp業界に変革をもたらしました。Solana Mobileにより、開発者は従来のアプリストアに伴う手間やコストを負うことなく、dAppを構築してdApp storeに公開できます。

一方、ユーザーは引き続き報酬を獲得し、Sagaならではの特典を楽しんでいます。新しいdApp「Chonky dApp」がdApp storeで公開されました。Heliusを活用したこのdAppは、公開後12時間以内にdApp storeから7,500台以上のユニークデバイスへダウンロードされました。Chonky dAppはdApp store限定で提供され、Saga Genesisウォレットに接続するとChonkyの分配分を請求できます。

Chonkyは1週間足らずでdApp storeに公開され、このガイドの手順を実際に検証しました。素材の準備からdApp storeへの申請まで、Solana Mobile dAppを公開する手順を解説します。このガイドは、開発者が公開プロセスの要件を理解し、現実的な公開スケジュールを見積もれるようにすることを目的としています。

必要なもの

このガイドに従って公開に必要な素材を用意し、リリース可能なAndroidパッケージキット(APK)を作成します。以下は、公開手順に向けて収集・準備する必要があるもののチェックリストです。

チェックリスト

  • リリース可能なビルド
  • Android Build Tools
  • バージョン情報
  • Sentryなどのエラー報告ツール
  • dAppおよびdApp store用アセット
  • Helius RPC URL
  • アプリ署名キー 
  • パブリッシャーキー
  • 規約および契約 
  • ライセンス
  • プライバシーポリシー
  • 著作権

アプリストアで公開する際には、パブリッシャーと利用者に適用される利用規約があります。これはユーザーを保護し、パブリッシャーの責任を制限するうえで重要です。Solana dApp storeのパブリッシャーは、公開前にパブリッシャーポリシー、dApp公開契約、dApp store利用規約に同意します。

公開プロセスでは、パブリッシャーがエンドユーザー使用許諾契約(EULA)、プライバシーポリシー、著作権表示を用意する必要があります。開発者はこれらの文書を準備し、オンラインで閲覧できるようにしてください。公開プロセスで文書へのリンクが必要になります。プライバシーポリシージェネレーターや著作権表示のサンプルなどのリソースを参照するか、ChatGPTを使って文書を作成できます。

準備

dAppのリリース準備は、リリース用に構成されたビルドから始まります。 

まず、リポジトリを整理します。コンソールログを削除し、エラー報告ツールを使用してdAppを監視してください。また、環境変数を確認し、本番環境向けに更新する必要があります。

次に、すべてのアセットが正しいサイズであることを確認し、不要なファイルを削除します。dApp storeのプレビュー画像は1080p(1920px × 1080px)で、すべて横向きまたはすべて縦向きに統一する必要があります。dApp storeのアイコンは最大512x512pxで、正方形のファイルにする必要があります。

dApp storeへの公開には、Solanaキーペアが必要です。solana-keygenで新しいキーペアを生成し、後で使用するためにSolanaを入金してください。このキーペアは安全に保管してください。キーペアを入手した人は誰でも、dAppの以後のリリースをdApp storeに申請できるようになります。

リリース用アプリをビルドする際は、アプリキーでビルドに署名する必要があります。新しいアプリには新しい署名キーが必要です。デバッグ用と同じキーは使用しないでください。公開用キーと同様に、アプリキーを持つ人は誰でもアプリを更新できます。ターミナルを開き、次のコマンドを貼り付けて、keystoreを使用したアプリ署名キーを生成します。

コード
keytool -genkey -v -keystore release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

現在のディレクトリにrelease-key.keystoreとstorePassword(keyPasswordとしても機能します)を作成します。次のコード例を使用して、build.gradleにリリース用のsigningConfigsとbuildTypesを作成します。

コード
signingConfigs {
        release {
            storeFile file('release.keystore')
            storePassword 'password'
            keyAlias 'release-key'
            keyPassword 'password'
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }
        release {
            signingConfig signingConfigs.release
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            debuggable false
        }
    }

同じファイルで、アプリのlocale(s)を設定し、versionCodeとversionNameを更新します。applicationIdを変更できるのは、これが最後です。

リリース署名を設定すると、dAppを本番環境向けにビルドできるようになります。dAppディレクトリで次のコマンドを実行し、デバッグ環境と重複するリソースを削除して、リリース用にアセンブルします。

成功すると、コマンドによって**/android/app/build/outputs/apk**フォルダーにAPKが生成されます。

コード
yarn react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/build/intermediates/res/merged/release/ && rm -rf android/app/src/main/res/drawable-* && rm -rf android/app/src/main/res/raw/* && cd android && ./gradlew assembleRelease && cd ..

公開手順

dApp storeへの公開には、ストアのCLIツールを使用する必要があります。このセクションでは、dApp storeで公開するためのSolana Mobileのセットアップ手順をまとめます。

  1. dApp storeのCLIツールをインストールします。
  2. config.yamlを作成して検証します。
  3. App、Publisher、ReleaseのNFTをミントします。
  4. 申請して公開します。

公開用ディレクトリで、次のコマンドを実行します。

コード
pnpm init
pnpm install --save-dev @solana-mobile/dApp-store-cli
npx dApp-store init

initializeコマンドにより、config.yamlファイルが作成されます。このファイルでは、dAppがdApp storeにどのように表示されるかを設定します。入力するセクションは、publisher、app、releaseの3つです。

これらのセクションにはすべてアドレスフィールドがありますが、初回リリース時には空欄にしておきます。公開手順を進めると、各セクションのNFTが作成され、アドレスが自動的に更新されます。

以下は空のconfig.yamlのリファレンスです。入力済みのバージョンは、dapp-publishing GitHubで確認できます。

コード
publisher:
  name:
  address:
  website:
  email:
  media:
    - purpose: icon
      uri:
app:
  name:
  address:
  android_package:
  urls:
    license_url:
    privacy_policy_url:
    copyright_url:
    website:
  media:
    - purpose: icon
      uri:
release:
  address:
  media:
    - purpose: icon
      uri:
    - purpose: screenshot
      uri:
    - purpose: screenshot
      uri:
    - purpose: screenshot
      uri:
  files:
    - purpose: install
      uri:
  catalog:
    en-US:
      name:
      short_description:
      long_description:
      new_in_version:
      saga_features:
solana_mobile_dApp_publisher_portal:
  google_store_package:
  testing_instructions:

アプリを更新する際は、releaseセクションを変更できます。dApp storeにプレビュー画像とアイコンを表示するには、mediaフィールドを入力します。ファイルをインストールできるように、APKへのパスも指定する必要があります。これらのファイルを公開用リポジトリに配置し、その相対パスをURIとして指定してください。アプリの説明はcatalogで編集でき、google_store_packageやsaga_featuresなどのフィールドは任意です。

config.yamlへの入力が完了したら、SolanaキーペアとAndroid Build Toolsへのパスを指定して次のコマンドを実行し、公開内容が有効かどうかを確認します。

Android Build ToolsをAndroid Studioと一緒にインストールした場合は、Android Studioを開き、ツールのドロップダウンをクリックしてSDK Managerを選択するとパスを確認できます。

SDKツールタブに移動し、Android_SDK_Build_Tools 34をクリックしてビルドツールへのパスを表示します。パスは次のようになります:C:\Users\user\AppData\Local\Android\Sdk。

コード
npx dApp-store validate -k path_to_keypair -b path_to_android_sdk_build_tools

dApp storeに公開するため、config.yamlの各セクションに対してNFTを作成します。

まず、Publisher NFTを作成します。これは一度だけ行う操作なので、以後のリリースではこの手順は不要です。mainnet_beta_rpc_urlをHelius RPC URLに置き換えてください。

コード
npx dApp-store create publisher -k path_to_your_keypair -u mainnet_beta_rpc_url

App NFTの作成も一度だけ実行するコマンドです。このコマンドはApp NFTを作成し、そのミントアドレスをconfig.yamlに記録します。

コード
npx dApp-store create app -k path_to_keypair -u mainnet_beta_rpc_url

次のコマンドを使用してRelease NFTを作成します。dApp storeに新しいリリースを申請するたびに、新しいRelease NFTを作成する必要があります。コマンドを実行するたびに、ミントアドレスは自動的に更新されます。

コード
npx dApp-store create release -k path_to_keypair -b path_to_android_sdk_build_tools -u mainnet_beta_rpc_url

3つのNFTがすべて正常に作成されると、アプリをdApp storeに申請できるようになります。

以下のコマンドで公開し、準拠していることを確認するために--requestor-is-authorized --complies-with-solana-dApp-store-policiesフラグを渡します。

コード
npx dApp-store publish submit -k path_to_keypair -u mainnet_beta_rpc_url --requestor-is-authorized --complies-with-solana-dApp-store-policies

dAppをdApp storeに申請すると、Solana Mobileチームからpublisherセクションで使用したメールアドレスに連絡があります。または、#dapp storeチャンネルでSolana Mobileチームに連絡することもできます。通常の審査期間は、新規アプリの申請で2~3日、更新で1日です。

リリース後の振り返り

初めて公開する人にとって、dApp storeへの公開は難しく感じられるかもしれません。しかし、適切なツールがあればプロセスを簡単にできます。Chonky dAppのリリースでは、省電力モードやバッテリー節約モードでウォレットのモーダルが動作しない、待ちきれないユーザーが署名リクエストをキャンセルするといったモバイル特有の問題はあったものの、Sagaユーザーは初回の試行でエアドロップを請求できました。dAppを公開すると、エラーをリアルタイムで監視し、ユーザーの行動を記録するエラーログの重要性が明らかになります。ログツールを活用して、重要な利用状況の情報を取得してください。現時点では、Solana Mobileは閲覧数やアプリのダウンロード数などのデータを収集していないため、開発者がアプリに適切なログ機能を実装する必要があります。 

モバイル対応とは、ユーザーを第一に考えることです。UX設計から署名ワークフローまで、モバイル開発者はデジタルインターフェースをスムーズに操作できる統合された体験を追求します。ユーザーの関心を得ることが難しい世界で、アプリはホーム画面に居場所を確保しようとします。しかし、主要なアプリストアの厳しい公開ポリシーにより、魅力的な報酬を提供する暗号資産アプリをモバイルで実現できるアプリはわずかです。Solanaのブロックチェーン技術は、大規模にユーザーへ報酬を提供することを可能にします。Solana Mobileは、ユーザーと暗号資産ネイティブアプリとの関わり方を切り拓く最前線に立てる好位置にあります。2025年にSaga Chapter 2が登場する予定の今こそ、Solana dApp store向けのdAppを構築する絶好の機会です。

このレシピから独自のdAppを作るヒントを得られたら、Heliusブログを購読し、Solana開発者向け教育の記事をご覧ください。Sagaを所有していて、Solana Mobile Stackを使った開発を始めたいですか?Typescriptに慣れているAndroid開発初心者には、Solana Mobileでのトークンゲーティングチュートリアルがおすすめです。DiscordのHelius Hacker Societyに参加し、Solanaのモバイル開発者向けコンテンツを引き続きご確認ください。ご質問があれば、Helius ForumでHeliusがサポートします。

その他のリソース

Heliusを購読

Solana開発の最新情報や新しい記事の公開通知を受け取れます

拡大画像