【ITニュース解説】🧭 Using Want and AbilityKit for Application Redirection in HarmonyOS Next
2025年09月30日に「Dev.to」が公開したITニュース「🧭 Using Want and AbilityKit for Application Redirection in HarmonyOS Next」について初心者にもわかりやすく解説しています。
ITニュース概要
HarmonyOS Nextでは、AbilityKitとWantなどを使い、アプリから他のアプリ(システム設定、外部アプリ、特定機能を持つアプリ)へユーザーをリダイレクトできる。これにより、スムーズなアプリ連携を実現し、ユーザー体験を向上させる。開発者はApp LinkingやstartAbilityByTypeなどを活用する。
ITニュース解説
HarmonyOS Nextにおけるアプリケーションのリダイレクトは、一つのアプリから別のアプリへユーザーをスムーズに誘導する機能だ。これは、モバイルアプリ業界で広く使われており、例えば、アプリ内から電話をかけたり、メールを送信したり、地図アプリで場所を表示したり、ウェブページを開いたりする際に役立つ。開発者はこの機能を使って、ユーザーが特定のタスクを効率的に完了できるように導くことができる。
HarmonyOS Nextでは、このアプリのリダイレクト機能は「AbilityKit」という仕組みを使って実現される。具体的には「Want」や「openLink」といったツールがその中心的な役割を担う。この記事では、これらのツールを使ってどのようにリダイレクトを実現するのか、具体的なコード例(ArkTS言語)を交えながら、それぞれの方法の違いや使い方を詳しく解説する。これにより、アプリの操作性やユーザーの満足度を高める方法が理解できるだろう。
HarmonyOS Nextでのアプリリダイレクトには、大きく分けて二つの主要な方法がある。
一つ目は、「特定のアプリケーションを起動する」方法だ。これは、自分のアプリから他の特定のアプリを直接開く際に使う。この方法にはさらに二つのやり方がある。 推奨されているのは「App Linking」という方法で、検証済みのHTTPSリンクを利用して、他のアプリ内の特定のページを開く。この方法はセキュリティが高く、もし対象のアプリがユーザーのデバイスにインストールされていなかった場合でも、代わりにウェブページを表示するといった柔軟な対応が可能だ。HarmonyOS Nextではこの方法が推奨されている。 もう一つは「Explicit Want」という方法で、これは起動したいアプリの「bundleName(アプリの識別名)」と「abilityName(アプリ内の特定機能の識別名)」を直接指定してアプリを起動する。この方法は現在も動作するが、APIバージョン12以降ではセキュリティ上の懸念から非推奨とされている。そのため、システムに最初から組み込まれているアプリを起動する場合や、同じ開発者が作成した複数のアプリ間で連携する場合にのみ、例外的に利用することが推奨される。
二つ目は、「特定の種類のアプリケーションを起動する」方法だ。この方法では、特定のアプリを指定するのではなく、「メールを送る」とか「地図を表示する」といった、ユーザーが行いたい「意図(インテント)」をシステムに伝える。すると、システムがその意図に対応できるアプリの一覧をユーザーに提示し、ユーザー自身がどれを使うかを選択できるようになる。これにより、ユーザーは自分の好みに合わせてタスクを完了できる柔軟性が得られる。
それでは、AbilityKitを使ったこれらのリダイレクト方法が、実際にどのように実装されるのかを見ていこう。以下のセクションでは、「startAbility」「openLink」「startAbilityByType」といった具体的なメソッドを、目的や状況に応じてどのように使い分けるかを、実践的な例を通して説明する。
実装は主に三つのカテゴリに分けて説明する。 一つ目は「システムアプリケーションへのリダイレクト」、二つ目は「特定のサードパーティアプリケーションへのリダイレクト」、そして三つ目は「特定の種類のアプリケーションへのリダイレクト」だ。
まず「カテゴリ1: システムアプリケーションへのリダイレクト」について説明する。 このカテゴリは、デバイスに最初から組み込まれている機能やプリインストールされたアプリへユーザーを誘導する際に利用する。これにはさらに二つのケースがある。
1.1 「システム設定ページへのリダイレクト」だ。
これは、BluetoothやWi-Fiの設定、あるいは一般的な設定画面など、特定のシステム設定領域へユーザーを案内したい場合に使う。これらの操作は一般的なウェブリンクでは実現できないため、startAbility()というメソッドと、起動したい設定ページを特定するための適切な「Want」という情報を使って行う。例えば、Bluetooth設定画面を開くコードは次のようなものになる。
まず、現在のアプリのコンテキスト(動作環境)を取得し、Wantというオブジェクトを作成する。このWantには、起動したいアプリのbundleName(ここではシステム設定アプリの識別名)、abilityName(設定アプリのメイン機能)、そしてuriとして「bluetooth_entry」(Bluetooth設定画面を指す特別な識別子)を設定する。その後、this.context.startAbility(want)を呼び出すことで、Bluetooth設定画面が起動される。もしユーザーが特定のアプリの権限を拒否した場合に、その権限設定画面へ誘導したい場合はrequestPermissionOnSettingを、通知設定画面へ誘導したい場合はopenNotificationSettingを使うこともできる。
1.2 「デフォルトシステムアプリケーションへのリダイレクト」だ。
一部のシステムアプリには、call.makeCall(電話をかける)やcalendar.addEvent(カレンダーにイベントを追加する)といった、あらかじめ定義されたメソッドが用意されている。また、バーコードスキャンや連絡先選択、ファイル選択といった特定の機能を持つ「ピッカー」と呼ばれるコンポーネントも利用できる。これらを使って、ユーザーが必要なアクションを完了できるように誘導する。例えば、電話のダイヤル画面に特定の番号を表示して呼び出す場合は、次のようなコードになる。
call.makeCall("901234567890")というように、電話番号を引数として渡すだけで、システムが電話アプリのダイヤル画面を開き、指定された番号が入力された状態になる。
次に「カテゴリ2: 特定のサードパーティアプリケーションの起動」について説明する。
自分のアプリから、特定のサードパーティアプリ(例えばWeChatや銀行アプリなど)を直接起動したい場合に利用する。
これは「ディープリンク」と呼ばれる技術を使って実現される。ディープリンクとは、カスタムURLスキーム(例えば「weixin://」のような、ウェブサイトのURLとは異なる形式のURL)を使って、システムに特定のアプリを開くように指示する方法だ。この機能を使うには、まず自分のアプリの設定ファイル(module.json5)に、起動したいアプリのカスタムURLスキームをquerySchemesという項目に追加する必要がある。例えばWeChatを起動したい場合は、"weixin"をリストに含める。
この設定を行った後、context.openLink(link, { appLinkingOnly: false })というメソッドを使って、カスタムURL(例: weixin://home)を渡せば、WeChatアプリのホーム画面を起動できる。起動したいアプリの正確なカスタムURLスキームは、そのアプリの公式ドキュメントで確認できる。
最後に「カテゴリ3: 特定の種類のアプリケーションの起動」について説明する。
このカテゴリは、特定のアプリではなく、「この種類のタスクを処理できるならどのアプリでも良い」という場合に使う。例えば、「お金を送金する」というタスクを処理できるアプリならどれでも良い、といったケースだ。固定されたアプリ名を指定する代わりに、行いたい「アクション」や「シーンのタイプ」を定義する。これにより、システムがそのタスクに最も適したアプリをユーザーに提示したり、自動で適切なアプリを起動したりするため、柔軟性が高く、将来の変化にも対応しやすいアプリを開発できる。
例えば、送金機能を実現するためのユースケースは次のようになる。
まず、現在のアプリのコンテキストを取得し、wantParamというオブジェクトに、処理したい「シーンタイプ」(ここでは1という値で「送金」を表す)や、送金先の銀行カード番号などの情報を設定する。次に、this.context.startAbilityByType("finance", wantParam, abilityStartCallback, (err) => { ... })というメソッドを呼び出す。ここで、"finance"は「金融関連の処理」を表す特別なタイプ名だ。これにより、システムは「金融関連」の処理、特に「送金」に対応できるアプリを探し、ユーザーに提示したり、自動で適切なアプリを起動したりする。abilityStartCallbackは、アプリ起動の結果(成功または失敗)を受け取るためのコールバック関数だ。
HarmonyOS Nextにおけるアプリの起動やリダイレクトは、最初は少し複雑に感じるかもしれないが、その「意図駆動型」というアーキテクチャを理解すれば、非常に強力で柔軟なツールとなることがわかる。システムの設定ページを開く場合でも、既知のサードパーティアプリを起動する場合でも、あるいはタイプに基づいて任意のアクションを処理できるアプリに委ねる場合でも、AbilityKitは適切なツールを提供してくれる。
リダイレクトの戦略を適切に分類し、startAbility、openLink、startAbilityByTypeといった正しいAPIを適用することで、システムポリシーを尊重し、様々なデバイスでの互換性を保ちながら、スムーズなユーザー体験を構築できる。
HarmonyOS Nextが今後も進化を続ける中で、これらの基本的なパターンを習得することは、より連携性が高く、流動的で、ユーザーフレンドリーなアプリケーションを構築するために非常に役立つだろう。