開発者コンソール

Amazon Q Developerを使用してFireアプリ開発の生産性を向上させる方法

Share:
Fire tablet How to Fire TV
Blog_Header_Post_Img

AIは開発者の間で最も注目されているトピックとなっています。では、開発者のスキルレベルに関わらず、AIは実際のアプリ開発でどのように活用できるのでしょうか? そこで今回ご紹介するのがAmazon Q Developerです。

 

Qは、一般提供されているAmazon開発者ツール群の中でもひと際便利な機能を備えています。よく使用されるIDE(Android Studioを含む)のほとんどに統合可能なAmazon AI搭載コーディングアシスタントで、直接CLI上で使用することもできます。コンテキストアウェアな提案を行い、ユーザーによるコードの効率的な記述、テスト、理解を支援するよう設計されており、以下をサポートします。

 

  • コードの生成
  • テストの記述
  • レビューとリファクタリング
  • APIの統合
  • その他

 

QはAmazonとオープンソース両方のコードでトレーニングされているため、FireタブレットやFire TV向けのアプリを構築するチームにとって特に便利です。Fire TVが初めてのReact Native開発者でも、生産性を向上したいベテランのFire開発者でも、Qを利用すれば手間を省いてアプリの構築に集中できます。

 

では、Qの機能と便利な使い方について詳しく見ていきましょう。

Android StudioでQの利用を開始する方法

Qは、Android Studioの生産性を大幅に向上させます。利用を開始するには、最新バージョンのAndroid Studioをダウンロードしてインストールします。このガイドではMeerkat Feature Drop(2024.3.2)(英語のみ)を使用します。

プラグインのインストール

Android Studioを開き、[File] [Settings]Macの場合は [Android Studio] [Settings]に移動します。[Plugins] 設定を探し、上部の [Marketplace] をクリックします。「Amazon Q」を検索します。 [Install] をクリックします。

Android Studio panel screenshot

プラグインのインストール後、Android Studioを再起動する必要がある場合があります。これで、アプリの右下隅にAmazon Qのツールメニューが表示されるようになります。メニューをクリックし、続けて [Get Started] をクリックします。

Android Studio panel screenshot

プラグインに、AWS Builder IDで接続するオプションが表示されます。[Connect] をクリックします。

Android Studio panel screenshot

ブラウザが開き、AWS Builder IDでログインして認証を受けるか、IDがない場合は新しいプロフィールを作成するよう求められます。認証が済むと、Android StudioでQにフルアクセスできるようになります。Amazon Qのツールメニューには以下の項目が表示されます。

Android Studio panel screenshot

Android Studioのチャットパネルの有効化

Android Studio向けAmazon Qプラグインの主要な機能の1つに、チャットパネルがあります。この機能をAndroid Studioで有効にするには、起動ランタイムを「JetBrains Runtime JBR with JCEF」に変更する必要があります。

1. [Help] [Find Action…] に移動します。

Android Studio panel screenshot

2. 「Choose Boot Java Runtime for the IDE」と検索します。

Android Studio panel screenshot

3. 現在の起動ランタイムはデフォルトの「JetBrains Runtime」になっています。利用可能なランタイムの一覧から「JetBrains Runtime JBR with JCEF」というランタイムを選択します。

Android Studio panel screenshot

4. [OK] をクリックします。Android Studioが該当する起動ランタイムをインストールし、ユーザーにIDEを再起動するよう求めます。

5. [Restart now] をクリックします。
 

[Open Chat Panel] をクリックすると、以下の画面が表示されます。

Android Studio panel screenshot

これで、Amazon Q Android Studioが利用可能になりました。

活用例

Qには、よりスマートかつ迅速なコーディングを支援し、ユーザーが効率的に作業を進められるようにするための幅広い機能が用意されています。ここでは、Amazon Q Fireアプリを活用できる実際のシナリオをいくつかご紹介します。

シナリオ1: APIの統合

Fire OSアプリ開発のために初めてAmazonのSDKを使用する場合は、Qを使用すると簡単に開発を開始できます。機能のスキャフォールドを作成して、アプリ構築の基盤とすることができます。

 

たとえば、Fireタブレットアプリを構築するとしましょう。アプリ内課金(IAP)機能を実装して、プレミアムコンテンツのための定期購入を促進したいと考えています。そのためには、Appstore SDK IAPを操作する必要があります。まず、Qで/devコマンドを実行して必要な条件などを記述します。

Android Studio panel screenshot

Qによって、必要なコードを生成するための一連の手順が表示されます。

Android Studio panel screenshot

続けて、新しいファイル、変更、削除の提案とともに、Qがレビューしたすべてのファイルが表示されます。

Android Studio panel screenshot

変更の提案すべてが表示された後、変更を受け入れるか、調整をリクエストする必要があるかを確認されます。

Android Studio panel screenshot

そのまま続けるよう指示すると、提案されたファイルすべてがQによって即座に作成され、SDK IAPの使用を開始するためのコードが提供されます。

Android Studio panel screenshot

さらにレイアウトも生成されるため、IAPについて検討する中で生じるUI/UXに関する懸念にも対処できます。

Android Studio panel screenshot

こちらはあくまで参考例です。Fire TVアプリを構築する場合やIAPではなくLogin with Amazonを統合する場合にも、Qが役に立ちます。

シナリオ2: トラブルシューティング

Amazon Qは、開発を開始するためのコードを記述するだけでなく、ユーザーが作業を進める中で問題が発生した場合や行き詰まった場合にも有用です。QはオープンソースのコードベースとAmazonのプロパティおよびアプリに関連するコードでトレーニングされているため、Fire固有のSDKとAPIで大きな効果を発揮します。

 

エラーが表示された場合や対処方法がわからない場合は、アプリの記述を手伝ってくれる友達や先生に対して質問するようにQに質問してみましょう。

 

このシナリオでは、AWS Amplifyを使用してFire TV対応アプリの開発のバックエンドに関する問題点に対処しているとします。

Android Studio panel screenshot

Amplifyでバックエンドのデータリソースの構成を設定しましたが、Javaアプリ向けのGraphQLクライアントコードを生成する必要もあります。Amplify(Gen2)CLIにはそのためのコマンドラインがあるようですが、詳しいことはわかりません。

 

ここでQに質問してみましょう。開いているファイルとプロジェクト構造に基づいてコンテキストが検出され、クライアントコードを生成するためのコマンドが提案されます。

Android Studio panel screenshot

シナリオ3: ライブラリの比較

どのライブラリをアプリに統合すればよいか、確信を持てないことがあります。

 

たとえば、Fireタブレットアプリを構築しているときに、Android LeanbackライブラリとJetpack Composeに対するFire OSのサポートの相違点が明確でないとします。そのような場合、Qがその相違点について詳細に説明します。

Android Studio panel screenshot

さらに、Qはベストプラクティス、ガイダンス、コード例も紹介します。

Android Studio panel screenshot

シナリオ4: コンポーネントとUIレイアウトファイルのスキャフォールディング

レイアウトとフラグメント用のXMLの記述が必要であるなど、UIに問題があって開発プロセスが遅れている場合、Qに手間のかかる作業の処理を依頼して時間を節約することができます。

 

たとえば、アプリに新しいアクティビティ画面を導入する必要があるとします。アプリの動作やアプリに表示する内容は決まっていますが、それを適切なファイルとコードに変換する作業が面倒です。この場合も、Qの/devコマンドが頼りになります。

Android Studio panel screenshot

Qは、ユーザーからのリクエストに基づき、必要なコードを生成する手順の概要を示します。

Android Studio panel screenshot

必要なActivityクラス、フラグメント、XMLレイアウトすべての作成といったタスクがQによって実行されました。

Android Studio panel screenshot

Amazon Qを使用してこれらのコンポーネントおよびレイアウトのコードのスキャフォールディングを行うことで、設定作業を繰り返し行う必要がなくなり、ニーズに応じて設計を改良するための確固とした基盤を得ることができます。

シナリオ5: 単体テストの生成とデバッグ

Qで/devリクエストを使用して、単体テストのコードを生成することもできます。以下の例では、PurchasingListener実装向けのテストが5つ生成されています。

Android Studio panel screenshot

単体テストが必要なレガシーコードにも使用できます。たとえば、Fire TV統合SDKサンプルアプリ(英語のみ)を使用した例を参照してください。

Android Studio panel screenshot

Qはテストの依存関係をいくつか検出しますが、テストフォルダやファイルは検出しません。

Android Studio panel screenshot

Qは、特定された問題点に基づき、プロジェクトの主要な部分すべてを対象とした包括的なテストセットを作成できます。

Android Studio panel screenshot

Qは、プロジェクトの最新のテスト範囲について詳しく説明するサマリーファイル(マークダウン記法)も作成します。

Copied to clipboard
# Test Coverage Summary

This document provides an overview of the test coverage for the Fire TV Integration SDK Sample App.

## Unit Tests

### SDK Package Tests
- **FireTvIntegrationSDKUtilsTest**
  - Tests the `hashProfileId` function to ensure it correctly hashes profile IDs
  - Tests the `isFTVIntegrationSDKSupportedOnDevice` function for both supported and unsupported devices

- **FireTvPlaybackReporterTest**
  - Tests reporting of different playback states (PLAYING, PAUSED, EXIT, INTERSTITIAL)
  - Tests that no events are reported when the feature is not supported

- **FireTvWatchlistReporterTest**
  - Tests adding items to the watchlist
  - Tests removing items from the watchlist
  - Tests setting the entire watchlist
  - Tests that no actions are performed when the feature is not supported

- **MyAmznDataIntegrationServiceTest**
  - Tests retrieving and reporting recent playback events
  - Tests retrieving and reporting watchlist entries
  - Tests handling of non-watchlist types

### Util Package Tests
- **ExoPlayerUtilsTest**
  - Tests reporting of current player state for different scenarios (playing normal content, playing ads, paused, ended)
  - Tests reporting when the player exits playback

### Account Package Tests
- **AccountRepositoryTest**
  - Tests setting and getting login state
  - Tests setting and getting active profile
  - Tests the LiveData functionality for active profile

### Client Package Tests
- **MyCustomerDataApiClientTest**
  - Tests retrieving customer watch activity
  - Tests retrieving customer purchased content
  - Tests retrieving customer rented content
  - Tests retrieving customer recorded content
  - Tests retrieving customer subscriptions
  - Tests retrieving customer watchlist

### Model Tests
- **VideoModelTest**
  - Tests Video data class properties and equality
  - Tests WatchlistItem data class properties and equality

- **CustomerDataApiReturnTypesTest**
  - Tests conversion of CustomerPurchasedContent to AmazonContentEntitlement
  - Tests conversion of CustomerRentedContent to AmazonContentEntitlement
  - Tests conversion of CustomerRecordedContent to AmazonContentEntitlement
  - Tests conversion of CustomerListEntry to AmazonCustomerListEntry
  - Tests conversion of CustomerSubscriptionEntitlement to AmazonSubscriptionEntitlement
  - Tests conversion of CustomerTitleWatched to AmazonPlaybackEvent
  - Tests enum conversions for MyPlaybackState and MyEntitlementType

## Instrumentation Tests

- **MainActivityTest**
  - Tests that MainActivity shows SignInFragment when not logged in
  - Tests that MainActivity shows VideoBrowserFragment when logged in
  - Tests the FragmentReplacementListener functionality

## Infrastructure Changes

- Added necessary test directories (`test` and `androidTest`)
- Updated `build.gradle` with additional testing dependencies:
  - Mockito for mocking dependencies
  - PowerMock for mocking static methods
  - AndroidX Test libraries for instrumentation tests
  - Architecture Components testing for LiveData testing
- Modified `AccountRepository` to make it testable by adding a method to set the instance for testing

## Future Improvements

- Add more instrumentation tests for fragments and UI components
- Add integration tests for the interaction between components
- Implement code coverage reporting to identify areas that still need testing
- Add UI tests using Espresso for testing user interactions

テストを実行してエラーが発生した場合は、コードのデバッグと改良に関するサポートを依頼してください。Qを利用して、機能テストや統合テストなど、その他のテストを記述することもできます。

Android Studio panel screenshot

Qがコンテキストと目標を確実に理解できるよう、プロンプトは明確かつ具体的なものにしてください。

Android Studio panel screenshot

このような明確なプロンプトを使用することで、コンポーネント間のインタラクションに対応する包括的なテストセットをQで作成できます。

Android Studio panel screenshot

シナリオ6: 別のプログラミング言語へのコードのリファクタリング

古いJavaアプリを最新のKotlinにリファクタリングする必要がある場合も、 Qを利用すれば作業の生産性と効率を高めることができます。

 

Javaで記述されたこちらのサンプルリポジトリ(英語のみ)で、LWA SDKをAndroidアプリに統合する方法をご確認ください。コードをリファクタリングし、Kotlinに移植する作業をQに手伝ってもらいましょう。

Android Studio panel screenshot

Qはプロジェクトをレビューしてコードベースをリファクタリングする最適な方法を把握してから、それらの変換を適用します。

Android Studio panel screenshot

以下の例に示すように、QがJavaファイルを同等のKotlinファイルで置き換えます。

Android Studio panel screenshot

シナリオ7: 潜在的な脆弱性の特定と修正

Qを使用して、コードの潜在的なセキュリティ上の脆弱性を特定して修正することもできます。チャットパネルで/reviewコマンドを実行するか、アプリの右下にあるAmazon Qツールで [Full Project Scan] をクリックします。

Android Studio panel screenshot

Qがコードベースに対してフルセキュリティレビューを実行します。その処理の一部に利用されるのがAmazon Q Detector Library(英語のみ)です。これは、よくあるセキュリティの問題を特定できるように設計された、複数のキュレーション済みコード分析検出機能をまとめたライブラリです。

Android Studio panel screenshot

Qはコードベースをスキャンし、潜在的な問題を特定してから、重大度に応じて分類します。検出した問題ごとに詳細な説明を行い、問題のあるコードのブロックを指摘すると同時に修正方法を提示します。

Android Studio panel screenshot

コマンドラインのAmazon Q

Amazon Q Developer CLI(英語のみ)により、IDEを超える生産性を実現できます。コードの生成、SDKのサポート、テストの記述など、IDEと同様に操作できますが、ターミナル内で操作するため利便性に優れており、高速です。

Copied to clipboard
$ q

To learn more about MCP safety, see https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-mcp-security.html

Welcome to 

 █████╗ ███╗   ███╗ █████╗ ███████╗ ██████╗ ███╗   ██╗     ██████╗ 
██╔══██╗████╗ ████║██╔══██╗╚══███╔╝██╔═══██╗████╗  ██║    ██╔═══██╗
███████║██╔████╔██║███████║  ███╔╝ ██║   ██║██╔██╗ ██║    ██║   ██║
██╔══██║██║╚██╔╝██║██╔══██║ ███╔╝  ██║   ██║██║╚██╗██║    ██║▄▄ ██║
██║  ██║██║ ╚═╝ ██║██║  ██║███████╗╚██████╔╝██║ ╚████║    ╚██████╔╝

╭───────────────────────── Did you know? ─────────────────────────╮
│                                                                 │
│         You can use /editor to edit your prompt with a          │
│                       vim-like experience                       │
│                                                                 │
╰─────────────────────────────────────────────────────────────────╯


/help all commands  •  ctrl + j new lines  •  ctrl + k fuzzy search
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
> I need to work with the Leanback Library for an Amazon FireTV App that I'm building. Where should I start?

To start working with the Leanback Library for your Amazon FireTV App, I'll guide you through the essential steps:

The Leanback Library is part of the Android TV support libraries specifically designed for creating TV-optimized interfaces, which is perfect for your FireTV app.

Here's how to get started:

1. Set up your development environment:
   • Make sure you have Android Studio installed
   • Install the necessary SDK components for TV development

2. Create a new Android TV project:
   • In Android Studio, create a new project with the "Android TV Activity" template
   • This automatically includes the Leanback dependencies

3. Add Leanback Library dependencies to your existing project:
   • Open your app's build.gradle file and add:

gradle
dependencies {
    // Leanback library
    implementation 'androidx.leanback:leanback:1.0.0'
    
    // Optional but recommended for Leanback apps
    implementation 'androidx.leanback:leanback-preference:1.0.0'
    implementation 'androidx.leanback:leanback-paging:1.0.0'
}

4. Configure your AndroidManifest.xml:
   • Ensure your app is marked as a TV app
   • Add required Leanback theme

xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yourapp">
    
    <uses-feature
        android:name="android.hardware.touchscreen"
        android:required="false" />
        
    <uses-feature
        android:name="android.software.leanback"
        android:required="true" />
        
    <application
        android:banner="@drawable/app_banner"
        android:theme="@style/Theme.Leanback">
        
        <!-- Activities -->
        <activity
            android:name=".MainActivity"
            android:theme="@style/Theme.Leanback">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

5. Implement key Leanback components:
   • BrowseFragment: Main navigation interface
   • DetailsFragment: For showing detailed content
   • PlaybackFragment: For media playback
   • SearchFragment: For search functionality

6. Follow Fire TV specific guidelines:
   • Optimize for D-pad navigation
   • Implement proper focus handling
   • Design for 10-foot UI experience

Would you like me to provide a simple code example for implementing a basic BrowseFragment to get you started with the UI structure?

まとめ: Fireアプリの開発をスマートに

Amazon Q Developerを利用することで、開発の手間を省き、より効率的にアイデアを現実のものとすることができます。

 

FireタブレットやFire TV向けのアプリの開発者は、Qを利用して簡単に開発を開始し、コードの質の改善、繰り返し作業の自動化、ワークフロー全体の効率化を実現できます。Android Studio IDEまたは直接コマンドラインでQをお試しいただき、このソリューションが開発プロセスにいかに適しているかをご確認ください。

関連記事

ニュースレターを購読してみませんか?

最新のAmazon開発者向けニュース、業界の動向、ブログの記事をお届けします。