この記事は Florina Muntenescu による Android Developers Blog の記事 "Android Dev Challenge: Week 2 - Countdown timer" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
3...2...1… 次のチャレンジの時間です!#AndroidDevChallenge の第 2 週にようこそ。第 1 週は、創造性あふれるたくさんの作品が寄せられ、とても楽しく見せていただきました。第 2 週の作品も楽しみにしています。では早速、今週のチャレンジを出題します。
UI はすべて Compose で作成する必要があります。実装にあたっては、状態とアニメーションに関する Compose ドキュメントを参考にしてください。ハンズオンの学習教材として Compose Pathway を試すこともできます。このチャレンジに役立つトピックを説明した Codelabs が含まれています。
チャレンジに参加するためには、GitHub リポジトリで実装する必要があります。こちらの Github リポジトリ テンプレートをコピーし、README に記載された手順に従ってください。テンプレートには、Compose による基本的な Hello World! と継続的インテグレーション設定が含まれています。
Hello World!
※1 応募に関する詳細は必ず公式ルールをご確認ください。
2 週目の賞品は、皆さんと一緒に作り上げるアート作品です。このチャレンジを成功させた最初の 500 名の方に、Jetpack Compose ポスターと Android ペン一式を差し上げます。ストレス解消のために皆さんだけの塗り絵を作りましょう。さらに、チーム Jetpack が悪しき UI から宇宙を救う物語が描かれた Jetpack Compose の限定マンガポスターもついています。
Jetpack Compose の中核はデベロッパー コミュニティです。プロダクトをさらに使いやすく改善するために、皆さんのフィードバックをお寄せください。
Reviewed by Hidenori Fujii - Google Play Developer Marketing APAC
この記事は Anna-Chiara Bellini、Nick Butcher による Android Developers Blog の記事 "Announcing Jetpack Compose Beta!" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
2021 年 2 月 24 日(日本時間 2 月 25 日)、Jetpack Compose のベータ版をリリースしました。新しい UI ツールキットである Jetpack Compose は、すべての Android プラットフォームでネイティブ アプリを高速かつ簡単に開発できるようにすることを目指して設計されています。Compose が提供するのは、最先端の宣言型 Kotlin API です。これにより、少ないコードで美しくレスポンシブなアプリを作ることができます。Compose は既存の Android アプリや Jetpack ライブラリに組み込めるので、Android のビューと Compose を組み合わせながら、自分のペースで採用できます。
今回のベータ版リリースで Compose の API は確定版になりました。これで本番向けのアプリを構築する際に必要な機能がすべてそろったことになります。ベータ版には、API が安定したという意味合いもあります。つまり、API が変更されたり、削除されたりすることはありません。Compose を学び始め、今後のプロジェクトや機能にどう活用するかについて計画を立てるには、今が絶好の機会です。Compose は今年中に 1.0 に到達する予定です。
Compose チームは、コミュニティの皆さんからのフィードバックも取り入れて、オープンに開発を進めています。2019 年に開発をオープンソース化して以来、30 回のパブリック リリースを行い、外部から寄せられた 700 個以上のバグに対応し、200 件以上の外部からのコントリビューションを受け入れました。皆さんに Compose を使ってアプリを開発していただくことはとても嬉しいことで、いただいたフィードバックや機能リクエストは API の微調整や作業の優先順位を付けることに役立っています。アルファ版リリース以降も、たくさんの機能を追加または改善しています。
ベータ版リリースでは、API の完全性を確保することに重点を置いています。つまり、1.0 やその先に向けて、土台となる API を提供することです。今後は、1.0 リリースに向けてこれらの API の機能を安定させる作業を進める予定です。アプリのパフォーマンスとユーザー補助機能には、特に重点を置いています。
最新の Android Studio Arctic Fox Canary 版は Compose ベータ版をサポートしており、たくさんの新しいツールも搭載しています。
🆕 ライブ リテラル: デバイスやエミュレータで、プレビューのリテラルをリアルタイムにアップデート🆕 アニメーション プレビュー: アニメーションの調査と再生🆕 Layout Inspector の Compose サポート🆕 インタラクティブ プレビュー: Composable を切り離して調査や操作が可能🆕 デプロイ プレビュー: アプリ全体をデプロイすることなく、デバイスに Composable をデプロイ
🆕 ライブ リテラル: デバイスやエミュレータで、プレビューのリテラルをリアルタイムにアップデート
🆕 アニメーション プレビュー: アニメーションの調査と再生
🆕 Layout Inspector の Compose サポート
🆕 インタラクティブ プレビュー: Composable を切り離して調査や操作が可能
🆕 デプロイ プレビュー: アプリ全体をデプロイすることなく、デバイスに Composable をデプロイ
Jetpack Compose は、Android ビューと共存してシームレスに動作するように設計されているので、自分のペースで採用できます。具体的には、Android ビューに Compose UI を埋め込んだり、Compose の中でビューを使ったりすることもできます。相互運用性に関するドキュメントに、たくさんの採用戦略をまとめました。
既存アプリに Compose を追加する際に役立つように、ビューとの相互運用性に加えて、よく使われるライブラリとの統合も行っています。そのため、アプリを書き直したり、アーキテクチャを変更したりする必要はありません。以下の統合が利用可能です。
MDC-Android Compose Theme Adapter ライブラリや Accompanist ライブラリを使えば Material および AppCompat のXML テーマとの統合機能を利用できるので、テーマを重複して定義する必要はありません。Accompanist は、よく使われるイメージ読み込みライブラリのラッパーも提供します。
Jetpack Compose は、 宣言型 UI ツールキットであり、現在のビューシステムからのパラダイム シフトです。つまり、記述するのは、アプリが特定の状態のときに UI がどのように見えるべきか であって、 どのように UI を生成するかではありません。アプリの状態が変わったときは、Compose によって UI がアップデートされるため、UI を操作して目的の状態に変更するという面倒でエラーが起こりやすい作業は必要なくなります。
また、Compose はすべて Kotlin で書かれているので、優れた言語機能を活用して、簡潔で強力かつ直感的な API を提供できます。たとえば、コルーチンを使うと、ジェスチャー、アニメーション、スクロールなど、はるかにシンプルな非同期 API を書くことができます。そのため、ジェスチャーに続いてアニメーションするなど、非同期イベントを組み合わせたコードを簡単に書けるようになります。キャンセルやクリーンアップはすべて構造化され、並列に行われます。
皆さんや皆さんのチームが Jetpack Compose に関するあらゆることを学習できるように、Jetpack Compose Pathway をアップデートしました。これは、動画やハンズオン Codelabs、重要なドキュメントを厳選した一覧であり、Compose を始める際に役立ちます。本日は、新しく作成またはアップデートしたガイド ドキュメントも公開します。たくさんのスクリーンキャストや新しい Animation Codelab を通じて、Compose で開発を始める方法を詳しく学ぶことができます。アーキテクチャ、ユーザー補助機能、テストに関するガイドから、アニメーション、リスト、Compose の思想に関する詳しい説明まで、作業をより早くするために役立つガイドも準備しました。
さらに、実際に動作する Compose をすぐに見てみたい方のために、8 つの公式サンプルアプリも提供しています。シンプルなものから複雑なものまで、すべて異なる API やユースケースを扱っています。詳しくは README をご覧ください。
Compose を始める準備ができ、賞品も獲得したい方は、#AndroidDevChallenge に挑戦してください。Jetpack Compose で優れたアプリをすばやく作成する技術を身につけられるよう、4 週間にわたって日本時間の木曜日朝、週単位のチャレンジを出題します。各チャレンジでは、「インサイトを開放する」をテーマに、アニメーションやマテリアル テーマ、Composable やリストなど、毎回 Compose の新しい領域を扱います。毎回のチャレンジの勝者に新しい賞品があり、Pixel 5 を含む 1000 個以上の賞品を準備しています*。2 月 25 日から始まっている第 1 週のチャレンジの詳細は、こちらをご覧ください。
Jetpack Compose はベータ版に到達し、1.0 に向けた確定版の API や機能が完成しています。アプリで Compose を採用した方は、ぜひフィードバックをお寄せください。Kotlin Slack の #compose チャンネルで行われているディスカッションへの参加もお待ちしています。
*毎週のチャレンジに新しい賞品が設定されています。Google Pixel 5 が賞品になる週で、Google Pixel 5 が利用できない国にお住まいの方には、同程度の価値がある電子ギフトカードをお送りします。詳しくは公式ルールをご覧ください。
Reviewed by Yuichi Araki - Developer Relations Team and Hidenori Fujii - Google Play Developer Marketing APAC
この記事は Hoi Lam による Android Developers Blog の "Quality to match with your user’s expectations" を元に翻訳・加筆したものです。詳しくは元記事をご確認ください。
10 年以上前に Android がリリースされてから、このプラットフォームは成長を続け、ユーザーの期待も高まるばかりです。それに伴い、ユーザー エクスペリエンスから、マテリアル デザイン、プライバシーの重要性と進化に至るまで、さまざまな改善が行われてきました。その一方でデベロッパーの皆さんが、常にアプリでよりすばらしいユーザー エクスペリエンスを提供していきたいと考えていることは承知しています。同時に、どの領域に最初に取り組むべきかを判断するのが難しいことも、私たちは把握しています。そこで、Android Developers のウェブサイトにアプリの品質セクションを新たに設けて、アプリの品質の重要な内容についての最新情報や関連リソースを提供します。
今回の最初のリリースでは、Android の最新リリースや、アプリ エコシステムの現在のトレンドを踏まえて、アプリの中核品質チェックリストを更新しました。このアップデートのいくつかのポイントを示します。
常に最新の状態を保てるように、今後は四半期ごとにこのリストを更新したいと考えています。また、他のフォーム ファクタの品質チェックリストも更新する予定です。
現在は、Android で高品質なアプリを簡単に構築できるように、追加のツールやベスト プラクティスに関する作業を進めています。引き続き改善を続けていきます。ご期待ください。
Google は、国際女性デーを祝して、社会の男女格差を埋めるために努力を続ける女性たちに注目します。その取り組みの一貫として、Google Play ストア にて人気のアプリやゲームの開発に携わっている女性の声を取り上げています。
日本からは、注目の女性経営者としてバンダイナムコ、宇田川南欧さんのインタビューを掲載しています。
ゲーム業界のキャリアにおいて女性であることや、宇田川さんが影響を受けた女性についてなど幅広いトピックスをカバーしています。
同社初の女性取締役であり、「ドラゴンボールZ ドッカンバトル」などの作品を統括される宇田川さんの印象的なお話を、ぜひご覧ください。
その他にも、Supercell や Kabam といったグローバル企業で活躍されている女性のインタビューも掲載中です。
こちらも併せてご覧ください。
この記事は Ting-Yuan Huang、David Winer による Android Developers Blog の記事 "Announcing Kotlin Symbol Processing (KSP) Alpha" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
2021 年 2 月 10 日(日本時間 2 月 11 日)、Kotlin Symbol Processing(KSP)のアルファ版をリリースしました。このまったく新しいツールは、Kotlin で軽量コンパイラ プラグインを作成するためのものです。KSP は KAPT に似た機能を提供しますが、最大 2 倍高速に動作し、Kotlin コンパイラ機能に直接アクセスできます。さらに、マルチプラットフォームの互換性を考慮して開発されています。
KSP は、Kotlin 1.4.30 以降のリリースと互換性があります。オープンソースのコードとドキュメントは、KSP GitHub リポジトリでご確認ください。
Kotlin デベロッパーから最も多く寄せられるリクエストは、ビルド速度の高速化です。多くのデベロッパーは、毎日何十回もアプリのデプロイを繰り返しています。そのため、遅いビルドが終わるのをじっと待たなければならないのは、大きな時間の無駄になる可能性があります。Kotlin コードのコンパイルで特に難しい点は、Kotlin にネイティブのアノテーション処理システムがないことです。Android では Room などにアノテーション プロセッサが多用されていますが、これは Java のアノテーション処理との互換性に依存しており、Kotlin Annotation Processing Tool(KAPT)を通して行われます。しかし KAPT では、中間 Java スタブを生成し、それを Java アノテーション処理システムで処理しなければならないので、高速に実行できるとは限りません。
KSP を設計するにあたって、Kotlin のアノテーション処理を一から構築するとしたら、それはどのようなものになるかについて検討しました。KSP は、Kotlin コードを直接解析する強力でシンプルな API を提供します。そのため、KAPT のスタブ生成によって生じていたビルド速度の遅さを大幅に改善できます。実際に、Room ライブラリを使った初期のベンチマークでは、KSP は KAPT に比べてほぼ 2 倍高速であることが実証できています。
実際に動作する KSP がどのようなものかを確認するには、GitHub から KSP Playground プロジェクトをダウンロードしてください。以下の内容が含まれています。
test-processor
workload
ビルダーを実装するすべてのロジックは test-processor 内にあります。コンシューマー(workload)側で KAPT と KSP を使用する際の唯一の違いは、次のようにビルドファイルに 2 行分の差異があることだけです。
これが KSP の目指すところです。ほとんどの Android アプリのデベロッパーは、内部処理について心配する必要はありません。この 1 行を変更しさえすれば、KSP をサポートするライブラリは通常のアノテーション プロセッサのように見えます。違うのは、最大 2 倍高速になることだけです。ただし、KAPT と KSP を同じモジュールで利用すると、内部的にビルドが遅くなる可能性が高くなります。そのため、アルファ版の期間中は、KSP と KAPT は別々のモジュールで利用したほうがよいでしょう。
KSP に対応するアノテーション プロセッサが増えるにつれて、ほとんどのモジュールは KAPT の完全互換に近い形で KSP を利用できるようになるはずです。現在は、こちらの表でどのアノテーション プロセッサが KSP をサポートしているかを確認できます。KSP をサポートするライブラリや KSP のサポートを実装するライブラリがこの表にない場合は、提案と合わせてプルリクエストをお送りください。
現在アノテーション処理を利用しているライブラリ作成者の方は、ライブラリを KSP に対応させる方法がクイックスタートや README ガイドに掲載されていますので、ご覧ください。
KSP がアルファ版になったので、ライブラリ作成者にとっては、詳しい内容を確認して KSP Issue Tracker から API に関するフィードバックを送り始める絶好のタイミングです。リリースに関する最新情報は、Kotlin Slack の #ksp チャンネルに定期的に投稿しています。昨年 6 月のデベロッパー プレビュー以降、100 以上のバグや問題に対応してきました。その中には、Kotlin ライブラリ デベロッパーのすばらしいコミュニティの皆さんから報告いただいたものもたくさん含まれています。
Java は Oracle および/またはその関連会社の登録商標です。
この記事は The Jetpack Compose Team による Android Developers Blog の記事 "Android Dev Challenge: lift off with Jetpack Compose" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Jetpack Compose は、Android でネイティブ UI を作成する最新のツールキットです。強力なツールと直感的な Kotlin API によって、少ないコードですばやくアプリを作成できます。
本日 Jetpack Compose ベータ版をリリースしました。そこで、Jetpack Compose を使い始める皆さんのお役に立てるように、新たに #AndroidDevChallenge を開催します。Compose の機能を学び、導入する準備を始める絶好のチャンスです。
#AndroidDevChallenge では、Jetpack Compose で優れたアプリをすばやく作成する技術を身につけられるよう、これから 4 週間にわたって週単位のチャレンジを出題します。各チャレンジでは、「インサイトを開放する」をテーマに、アニメーションやマテリアル テーマ、Composable やリストなど、毎回 Compose の新しい領域を扱います。毎回のチャレンジの勝者に新しい賞品があり、Pixel 5 を含む 1000 個以上の賞品を準備しています*。最初のチャレンジは本日より始まります。
毎週提示される新しいチャレンジには、それぞれのルールとタスクがあります。本日より、毎週水曜日(日本時間木曜日)に、課題と締め切りについての詳しい説明を含むブログ投稿を公開します。いずれのチャレンジも、Text や List などの基本的な Composable から状態やアニメーションまで、Compose のメンタルモデルやさまざまな Compose API に親しむために役立ちます。
Text
List
チャレンジに参加するためには、GitHub リポジトリで実装する必要があります。すぐにスタートできるよう、Compose による基本的な Hello World! と継続的インテグレーション設定を含む Github リポジトリのテンプレートを作成していますのでご利用ください。
#AndroidDevChallenge 初回のチャレンジは、子犬の里親探しアプリの作成です。このアプリでは、概要画面で子犬の一覧を、詳細画面でそれぞれの子犬の詳細を表示する必要があります。エントリは、太平洋標準時 3 月 2 日 23 時59 分(日本時間 3 月 3 日 16 時 59 分)までにこちらから送信してください。
UI はすべて Compose で作成する必要があります。審査対象はアプリの UI レイヤーのみです。実装にあたっては、レイアウト、リスト、テキスト、ナビゲーションに関する Compose ドキュメントを参考にしてください。ハンズオンの学習教材として Compose Pathway を試すこともできます。このチャレンジに役立つトピックを説明した Codelabs が含まれています。
🐶 よりも 🐱 のほうが好きな方も大丈夫です。ペットの里親探しアプリであれば、どんな種類でも歓迎します。
多数のご応募をお待ちしています。
最初のチャレンジの賞品は、Compose で飛び回る際の相棒としてぴったりな、LEGO ブロックの Jetpack Compose スーパーヒーロー限定トロフィーです。チャレンジを成功させてエントリを送信した最初の 500 名には #AndroidDevChallenge 初週の勝者である証として、Android フィギュアのコレクションにこのトロフィーを追加できます。
refContentProvider()
releaseWakeLock()
JobScheduler.schedule()
この記事は Luli Perkins による Android Developers Blog の記事 "#AndroidDevJourney spotlight - January edition" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
#AndroidDevJourney は、デベロッパー コミュニティの皆さんが、それぞれの Android デベロッパーとしての歩みを Google のソーシャル プラットフォームで共有できるようにするためにスタートしました。2021 年 1 月 から 6 月まで、Android Developers Twitter アカウントで新しいデベロッパーを取り上げていきます。本記事では、多くの皆さんから寄せられたインスピレーションあふれる情報から、さらにピックアップした内容をお届けします。
始まりは 2009 年の Google Developer Day でした。そこで、初めての Android デバイス、HTC Magic を手にしたのです。当時は大学生で、個人的に JavaFX でアプリケーションを書いていたので、Java にはなじみがありました。その後まもなく、そのアプリを Android へ移植し始めました。卒業後はソフトウェア会社に入り、仕事で Android アプリの開発を希望しました。ただ、その会社ではチャンスはなさそうでした。そこで、Android アプリを開発する小さな会社を作ったのです。
たくさんあります。1 つ選ぶとすれば、Android Studio でしょう。私は、Android アプリの開発を始めた時 Eclipse を使っていたので、Android Studio のすばらしさにはいつも感謝しています。加えて、Kotlin、RecyclerView、ConstraintLayout などがなければ日々の業務を円滑にすすめることはできないでしょう。
なくてはならない Android Studio のショートカットは、Command + B(宣言または使用場所)です。これを使うと、宣言と使用場所を行き来できます。Android プラットフォームでもライブラリでも、ソースコードを読む場合にとても役立ちます。
公式ドキュメントを読むこと、そしてプラットフォームや使っているライブラリのソースコードを読むことです。短時間で Android について学習する手段の 1 つは、最初から最後まで、つまり公式にリリースするまでアプリを作ってみることです。
また、特にアプリの構造全体に関わる部分では、ライブラリに依存しすぎないようにします。ライブラリより長続きするアプリになるかもしれませんからね。
Android デベロッパーの道を歩み始めたきっかけは、学部の 4 年生のときでした。GreenAppleSolutions というスタートアップ企業でインターンに参加したのです。そこで Android プロジェクトに最初から関わる機会があり、初めてのプロジェクトが Play ストアで公開されました。Android の面白さに気づいたのは、このインターンの期間中です。コードで書いたことすべてが、その場で自分のデバイスに表示されるのです。そこから Android が大好きになり、Android をキャリアパスにすることを決めました。
私は Android Lint の大ファンです。非推奨の呼び出しや API を手動で見つける手間を何度も省いてくれました。ベスト プラクティスに従う上でも役立つので、コードが最適化され、安全になり、パフォーマンスも高くなります。
2 つあります。
モバイルに関わる仕事は 2010 年に iOS から始めました。その後 2011 年に大学で携わった最後の土木関係のアプリのプロジェクトチームには、Mac を持っている人が誰もいなかったので Android を使いました。当時は政府関係者にテクノロジーを教えており、コーディングはそれほど行っていなかったのですが、このプロジェクトの後、ジュニア Android デベロッパーの仕事につきました。それ以降、このプラットフォームにとても惹かれて、離れられなくなりました。
Eclipse + ADT で Java を使ったり、Holo や ActionBarSherlock、あるいは初歩的なマテリアル デザインを使ったりしていましたが、Google I/O ’13 に参加した際、Google が Android Studio を発表しました。わからないことだらけではありましたが、関連する知識を数多く学べただけでなく、出会った人にも大いに助けられ、洞察に満ちた体験でした。
それ以来、10 年以上モバイルの仕事を続けており、そのほとんどは Android をに関わるものです。多くのブラジルのテック企業や有力新興企業の Android プロジェクトを手伝い、2016 年には Android の Google Developer Experts になりました。
また、デベロッパーやデザインのコミュニティも好きなので、できるかぎり関わるようにしています。私は GDG サンパウロの元オーガナイザーで、Kotlin Meetup サンパウロと Android Dev BR を創設してオーガナイザーを務めています。後者はブラジルとポルトガル語圏における最大の Android コミュニティで、7,500 名以上のメンバーが参加しています。
さらに、全国的なスタートアップ企業コミュニティにも関わっており、ACE Startups とブラジルの Google For Startups Accelerator プログラムでメンターを務めています。
Android Studio には、私が多用しているシンプルで強力なショートカットがあります。その機能とは、同じ語句の複数カーソル選択なのですが、Ctrl + G(macOS)、Alt + J(Windows + Linux)で同じ語句の増分選択、Ctrl + Cmd + G / Shift + Ctrl + Alt + J ですべての同じ語句の選択ができます。つまらないことのように思えますが、このショートカットはコーディングを進める上で、特にリファクタリングを行う場合は非常に役立ちます。私は毎日使っています!
私のアドバイスは、この 2 つの言葉に要約されます。学習と共有です。
学習では、できるだけ多く学ぶようにします。公式ドキュメントやコミュニティのドキュメントとして公開されているすばらしいコンテンツだけでなく、実際に手を動かす実習を欠かさず、失敗からも学びましょう。インターネットには多くの無料コンテンツがあり、Google や私のような GDEs(Google Developer Experts)によるコンテンツもあります。実習を続け、オンラインで知識を得るようにしましょう。
そして、学んだあとは共有することです。今の私があるのは、学習中に自分で見つけられなかったことを共有できたからです。ですからぜひ、皆さんの知識を共有してください。
Android コミュニティはすばらしく、あなたの大きな力になってくれます。Twitter や Reddit などで、使っている API やライブラリの作成者と実際に話せるのです。情報の共有は、ブログ記事を書いたり、ポッドキャストを録音したり、動画を収録したりなど、さまざまな方法が使えます。
インターネットという強力な学習と共有のツールを使って学習し、共有してみてください。機会があれば、もちろん私もサポートします!:)
Android デベロッパーになったのは、2015 年、初めて起業について考えていたときでした。学校に戻る余裕はなかったので、会社を始めて腕を試してみることにしました。ウェブ アプリケーションを作成しましたが、顧客はニーズを満たすためにネイティブ アプリも必要だと言って譲りませんでした。最初は経験豊富な人を探したのですが、最終的に Android アプリの作り方を自習することにしました。そして 2017 年には、共同創業者の Christian と一緒に自社の Android アプリ Qoins を Google Play ストアに公開しました。それ以来、たくさんの Android ユーザーにご利用いただき、何度か資金を調達しました。
仮想デバイスで Android ビルドをテストできるのは本当に助かります。さまざまな種類のデバイスで動作する Android アプリを作るには、さまざまなシナリオを考えなければなりません。Firebase Test Labs などのツールやその他の仮想デバイス サービスを使えば、自分が持っている物理 Android デバイスでは行えない特別なシナリオを作成し、実際にテストすることができます。
失敗しても大丈夫です。それもプロセスの一部なのです。
Android に関わるようになったのは 2014 年の初めです。その前は、在庫システムを構築している小さな会社でジュニア Java デベロッパーとして働いていました。ですが、その仕事に興味が持てず、Java の知識を活用して大きな仕事をする機会を探していました。初めて買ったスマートフォンは Nokia でしたが、そのアプリを見てどうやって作っているのだろうと思いました。調べてみたところ、実はアプリが Java で書かれていることを知りました。そこから私の挑戦が始まりました。
初めてのアプリ、Simple Math を作ったことを覚えています。フラグメントはなかったので、アクティビティだけで作りました。その後の進化には驚かされますね。Simple Math は 500 回ダウンロードされ、評価は 4.5 でした。それが、もっとアプリを作りたいというモチベーションになりました。その後、Grow With Google Scholarship(2018 年)を受けることができ、それでキャリアが一気に加速しました。1 年間の奨学金を受けているとき、Google Play ストアに 2 つ目のアプリ Budgeting Buddy を公開し、5,000 回以上のダウンロードと評価 4.5 を獲得しました。現在は Android エンジニアとして Streem に勤務しています。
Android について大好きなところは、これほどの進化を遂げ、年を重ねるごとにテクノロジーやメンテナンス性能が改善されてきたことです。特にエミュレータについての改善が著しいです。
欠かせないと思うショートカットは、[Options + Command + L] と [Options + Command + O] です。プルリクエストの処理をするときに、とても役立ちます。学んだコツの中でも特に素晴らしいのは、git のローカル履歴オプションです。本当に助かっています。自分が変更内容を忘れてしまったとしても、これがあれば大丈夫です。
モバイルに完全に移行したとき、私は生涯、この学習曲線に適応しなければならないと感じました。その考えがずっと役立っています。最新情報や推奨事項、それが必要になる理由を学び続けることで、他より一歩先んじることができます。たとえば、Room ができたことはすばらしい進化でした。今では、Dagger や Hilt などもあります。そこから転じて、新しいデベロッパーに助言するとすれば、学ぶことを厭わなければ Android 開発を楽しめる、ということです。
Android Developer コミュニティは、多様な人が参加し、そしてあらゆる背景や人生の段階にあるデベロッパーを歓迎しています。コミュニティの活動に興味をお持ちの方や、コミュニティに参加する方法を詳しく知りたい方は、developer.android.com や Android Developers のTwitter アカウント、Android Developers YouTube チャンネルをぜひご覧ください。
Google Developer Groups プログラムに参加すると、皆さんと同じようにテクノロジーに興味をもっている地元のデベロッパーと出会うことができます。GDG のミートアップ イベントでは、さまざまな技術トピックについてのトークが行われ、ハンズオン形式のワークショップで新たなスキルを習得できます。こちらから、お住まいの地域のコミュニティをぜひこちらから探してみてください。
2014 年に創立された Google の Women Techmakers は、コミュニティや広報、リソースを通じて、テック業界で活躍するすべての女性をサポートすることに全力を注いでいます。10 万人以上の女性デベロッパーが参加しており、すべての女性がテクノロジーで活躍できる世界を作るために、世界中のコミュニティと連携しています。
Google Developers Experts プログラムは、高度な経験をもち、イベントでの講演、コンテンツの作成、イノベーションあふれるアプリの開発を通してデベロッパーや企業、テック コミュニティを積極的にサポートしている、テクノロジー エキスパートやインフルエンサー、思想的リーダーによるグローバル ネットワークです。エキスパートは、イノベーションあふれるアプリの開発や公開を手伝うことで積極的に貢献し、世界中のデベロッパーやスタートアップ企業のエコシステムをサポートしています。プログラムの詳細はこちらからご覧ください。
Google Play で配信しているゲームにおける定期購入の売り上げは 2019 年から急伸しています。定期購入を導入すると定期的な収益を確保する以外にも、ユーザーのエンゲージメントを高めることでゲームの世界観を広げ、ファンを増やす効果があることがわかりました。
日本の Google Play におけるゲームの定期購入売上成長率
では、定期購入の機能をうまく使いこなしているゲームタイトルはどのような部分を大事に考え、サービスの設計をしているのでしょうか。
ゲームに定期購入を導入する際には、まず解決したい課題を明確にすることが大切です。その上で、魅力的な定期購入の特典設計をし、ユーザーの購入意欲を喚起して継続してもらうための施策を講じます。
ゲームにおいて解決したい課題は、ゲームによって異なり、例えば以下のように多岐にわたります。
次に、設定した課題を解決するために定期購入をどのように組み入れ、どのような価値を提供するべきかを検討し、短期的な特典、中期的な特典、長期的な特典の 3 つを組み合わせたサービス設計を行います。
その他、解決したい課題が複数ある場合、条件や特典、期間などを変えた複数の定期購入を提供することも効果的です。KLab株式会社の「 BLEACH Brave Souls」は、定期購入プランの「ブレソル満喫パス」と「キャラ獲得パス」を提供し、異なる目的に合わせて課題の解決を実現しています。それぞれのパスに短期、中期、長期(満 3 ヶ月継続)の特典を設定しており、また、両方のパスを同時に購入することも可能です。
単独の定期購入プランでもゲームを楽しめる設計になっていながら、組み合わせて利用することでさらにゲームプレイを充実できるようにすることで、ユーザーの満足度を下げない仕組みになっています。
ガンホー・オンライン・エンターテイメント株式会社が手掛けるパズルロールプレイングゲーム「 パズル&ドラゴンズ」は 2019 年 12 月に定期購入プランの「パズドラパス」を導入しました。「パズドラパス」では通常課金メニューとは異なる特典とサービス設計を意識しており、また、1 週間の無料トライアル期間を設けることで、加入意欲を高める施策を講じています。
株式会社スクウェア・エニックスが手掛ける「 星のドラゴンクエスト」は、2019 年 7 月より定期購入プラン「星パス (月額版)」を提供しています。
14 日間限定シーズンパス「星の冒険者パスポート」の月額版として位置づけ、シーズンパスよりもより魅力的な特典を付与しています。また、こちらも初回の星パス (月額版) を無料で提供し、かつ、シーズンパスをすでに購入済みのユーザーにも無料で購入できるよう設計することで、定期購入プランの購入ハードルを下げました。
「モンパス」は、ロイヤルユーザーとのタッチポイントとなる機能を持った定期購入プランとして設計され、定期購入を継続しているユーザーに毎日、1 か月ごと、3 か月ごとと異なる特典を設けることで、継続意欲を上げ解約率を下げる効果を高めています。
定期購入ユーザーを増やすには、加入率と継続率を高め、解約率を削減することが必要です。また、定期購入を解約したユーザーへ再度の購入を促すことも重要です。定期購入プランの特典設計の他に、各社の定期購入は、加入率を向上する 無料試用とお試し価格や、ユーザーの予期しない解約を防ぐ猶予期間、 アカウントの一時停止機能などを活用しています。
上記 3 タイトルの定期購入ユーザーと非購入ユーザーと比べると、定期購入ユーザーのログイン率が高くなる、または、よりゲームをプレイする傾向があることがわかりました。
「パズル&ドラゴンズ」と「星のドラゴンクエスト」では、定期購入ユーザーのログイン率が非購入ユーザーと比較して高くなりました。「パズル&ドラゴンズ」の場合、「パズドラパス」を 3 か月継続購入しているユーザーと、非購入ユーザーを中央値で比較すると 30 ポイントほどログイン率が高く、同程度のゲーム進行度のユーザーのみ抽出した際にも、購入ユーザーは 20 ポイントほどログイン率が高くなりました。「星のドラゴンクエスト」の「星パス (月額版)」 購入ユーザーは、非購入ユーザーよりも、ログイン率が 1.2 倍高くなりました。
ログイン率が上がることで、ゲームプレイの継続率やクエストクリア回数の向上にも繋がります。「星のドラゴンクエスト」の「星パス (月額版)」 購入ユーザーは、非購入ユーザーと比べ、クエストクリア回数が 2.6 倍、マルチクリア回数は 3.2 倍になりました。「モンスターストライク」の「モンパス」を購入したユーザーは、モンパス購入前と比較して、一日あたりのプレイ回数が 20% ほど増え、エンゲージメント促進に寄与しています。
ゲームに定期購入を導入することで、ユーザー数やエンゲージメントを高め、ビジネスの成功につなげることができます。Google Play は、定期購入の価格設定オプションを簡単にコントロールしたり、定期購入の内容を変更するための複数のオプションが用意されています。 詳しくはこちらをご覧ください。
Posted by Toru Shimazaki - Google Play, Partner Development Manager
この記事は Ben Weiss による Android Developers - Medium の記事 "Using WorkManager in multi-process apps" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
📝 WorkManager 2.5.0 をリリースしました。マルチプロセス環境で簡単に使えるようになり、さらに、安定性の改善もいくつか行われています。複数のプロセスを管理するアプリでバックグラウンド作業を確実に管理する必要がある場合は、新しい WorkManager 2.5.0 をお使いください。
利用するためには、コードにいくつかの変更を加える必要がありますので、詳しくご説明します。また、本記事の最後に、今回のバージョンの WorkManager ライブラリにおけるその他の動作の変更点および最新の追加機能を記載していますので併せてご覧ください。
新しいマルチプロセス アーティファクトでは、ジョブのスケジュール管理を 1 つのプロセスに統合することで、パフォーマンスを向上させています。この機能を使うには、まずアプリに追加します。
implementation "androidx.work:work-multiprocess:2.5.0"
これで、WorkManager が WorkRequest をキューに追加するために使う専用のプロセスを選び、プロセス内スケジューラを実行できるようになります。
Configuration.Provider を使って設定する方法は次のようになります。
class MyApplication() : Application(), Configuration.Provider { override fun getWorkManagerConfiguration() = Configuration.Builder() .setProcessName("com.example:remote") .build()}
注: setProcessName のパラメータには完全修飾プロセス名を渡す必要があります。具体的には、アプリのパッケージ名にコロンを付け、その後にホストのプロセス名を指定します。例: com.example:remote
work-multiprocess を使う場合は、WorkManager の代わりに RemoteWorkManager を使って作業リクエストを管理できます。RemoteWorkManager は、常に専用プロセスにアクセスして作業をキューに格納します。これにより、呼び出し側のプロセスで誤って新しい WorkManager を初期化してしまうことはなくなります。プロセス内スケジューラも、同じ専用プロセス内で実行されます。
このように WorkManager を設定し、RemoteWorkManager を使って作業をスケジュールすることで、ジョブを高速に管理し、マルチプロセス アプリの信頼性を高めることができます。指定するプロセスで WorkManager インスタンスが 1 つだけ実行され、ファイルベースのロックを使わなくてよくなるため、SQLite 接続の数を大幅に削減できることに加え、プロセス間でジョブを調整する必要がなくなるためです。
これまでは、ActivityManager が JobService のインスタンスを作成してジョブを開始することができなかった場合、ベースとなるプラットフォームのバグの影響で、そのジョブは破棄され、何の通知も行われませんでした。今回より、WorkRequest オブジェクトとジョブを調整して Application インスタンスが作成されると、WorkManager はすべての WorkRequest についてスケジューラ ジョブが存在することを確認します。
アプリがクラッシュする原因の 1 つは、デバイスのストレージ不足であることがわかりました。これが起きるのは、主に最初からストレージ容量が少なかったデバイスです。しかし、アプリが大量の作業をスケジュールする場合、WorkManager がデバイスのストレージ不足の原因になることもありました。
完了したジョブはデフォルトで 7 日間内部 WorkManager データベースに記録されていました。今回、それが 1 日間に短縮されたので、データベースのサイズが大幅に減少します。
バッファの期間は短縮されますが、ジョブを記録する期間は keepResultsForAtLeast() API を使って制御できます。
WorkManager と ListenableFuture を併用すれば、テストがさらに簡単になります。TestListenableWorkerBuilder Kotlin 拡張機能が、ListenableWorker を拡張したすべてのクラスを受け取れるようになり、テストの柔軟性が向上しています。
今回のリリースには、新機能に加えていくつかのバグの修正も含まれています。これにより、WorkManager の安定性、信頼性、パフォーマンスが向上します。すべての変更点と修正されたバグは、リリースノートで確認できます。
WorkManager を含め、いくつかの Jetpack ライブラリは GitHub からの貢献を受け付けています。Alan Viverette が、プロセス全体について説明しているブログ記事(英語)を書いています。
2.5.0 リリースで修正されたバグのほとんどは、パブリック Issue Tracker で寄せられたものです。
修正につながる問題を登録するコツは、再現できる問題を登録することです。問題の再現に役立つように、WorkManager のサンプルを使うか、問題の説明に手順を記載して独自のサンプルコードを提供することをお勧めします。
ぜひこの機会に作業に着手し、アプリでこのライブラリのバージョンをアップデートしてください。
この記事は Eric Bahna による Android Developers Blog の記事 "Expanding the reach of your Android Auto apps" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
昨年 12 月、Google Play ストアで新しい Android Auto アプリをクローズド テストに公開できる機能を開放しました。続いて 2021 年 1 月 28 日より、Google Play ストアで、ナビゲーション、駐車場、充電スポットのアプリをオープン テストトラックに公開し、アプリのユーザーを増やせるようになりました。
オープンテストでは、アプリをダウンロードできるユーザー数に制限はなく、メールアドレスの一覧を管理する必要もありません。このオープンテストは、正式にアプリをリリースするまでの重要なマイルストーンです。アプリを実際の車ですべてのユーザーに使ってもらうことに一歩近づきますので、ぜひ Android for Cars App Library を使い、Play Console でオープン テストトラックを選択してアプリを公開してください。
Android Auto アプリに関する今後の予定についてお知らせします。
現在、このライブラリを Android Jetpack に追加する作業を進めています。これにより、他の Jetpack API との整合性が向上し、新機能が見つけやすくなります。Jetpack ライブラリが利用できるようになると、既存のライブラリからのアプリ移行が簡単になり、名前空間を変更していくつかの API 呼び出しを調整するだけの作業で完了します。Jetpack でライブラリを安定させた後は、その新しいアプリを Google Play ストアの本番環境トラックに公開できるように準備を進めればよいのです。
Jetpack ライブラリを待たずとも、オープン テストトラックに公開することはできるようになっています。以下の手順で公開してみましょう。
多くのデベロッパーの皆さんが開発した自動車向けアプリを、実車でテストすることを楽しみにしています。
2019 年 6 月、同社の開発チームは Android アプリの主要な開発言語が Kotlin に移行しつつあると判断し、Kotlin の導入を検討し始めました。Kotlin が採用された決め手は、Kotlin メインの Jetpack ライブラリを活用できること、コード量を減らしてメンテナンスの負担を軽減できること、構文の表現性が高く理解しやすいことなどでした。
同社の開発チームには Kotlin を使った開発経験があるエンジニアや、また、Java に精通しているエンジニアがいるため、Kotlin でのコーディングに難しさを感じることはありませんでした。Kotlin は Java との相互運用性が 100% なので、既存のコードベースを維持しながら、雨雲レーダーやニュース検索といった新機能を Kotlin で記述することができました。この雨雲レーダーでは、コルーチンを使用して画像のダウンロードとキャッシュを管理し、コルーチン ディスパッチャでタスクの管理を抽象化することで、raw スレッドの管理で陥りやすい罠を回避しています。
開発チームは、一部の Java コードをリファクタリングし、Kotlin の null 安全性機能も活用しています。Kotlin の構文では、可変性、null 可能性、初期化を特定できるため、早い段階でエラーを捕捉できます。これにより、コード変更の検証にかかる時間を 10% 短縮することができました。Kotlin の簡潔で効率的な構文を使用することで、コードベースの読みやすさが向上してメンテナンスが容易になり、実装から公開までの全体的な生産性が向上し、コード行数の 20% 削減に成功しました。
SmartNews アプリのコードはすでに全体で 45 % ほどが Kotlin に移行しています。新機能はすべて Kotlin で記述することにしているほか、既存のコードのリファクタリングを進めてさらにメンテナンス性を高めることにしています。
Kotlin を実装し、ボイラープレート コードを削減していくと、開発チームのモチベーションが向上してきました。開発メンバーがアイデアをより効率的に表現できるようになり、各自が読みやすいコード記述を心がけるように変化しました。同社でエンジニアリング マネージャーを務める大橋英雄氏によると、Kotlin はエンジニアの募集や採用にも効果的とのことです。
「応募者から最も多い質問のひとつが、"Kotlin は使っていますか?どれくらい活用していますか?" というものです。多くのエンジニアが Kotlin への移行に関心を寄せており、弊社としてもこの動きを支援したいと考えています。」
スマートニュース株式会社 Android エンジニアリングマネージャー 大橋英雄氏
SmartNews アプリへの Kotlin の導入は、アプリ開発だけに限らず、エンジニアのモチベーション向上や採用への良い反響を得ることができました。Android Developers の事例も併せてご覧ください。
Posted by Tamao Imura - Developer Marketing Manager, Platforms and Ecosystems
この記事は Miguel Guevara による Android Developers Blog の記事 "How we’re helping developers with differential privacy" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
Google は、イノベーションとプライバシーは車の両輪だと考えています。その一環として2021 年 1 月、オンラインのユーザーの安全を確保するための私たちの取り組みについてブログでお知らせしました。その中では、差分プライバシー(ディファレンシャル・プライバシー / differential privacy )などの先進的なプライバシー技術に言及しておりました。
毎年 1 月 28 日は、データ プライバシーの日です。そこで、それに合わせて、Google のプロダクトに差分プライバシー技術を適用し、この技術を世界のデベロッパーや企業に広めていこうという新しい取り組みをここに詳しく紹介させていただきます。この取り組みにより、個人情報を確実に保護しつつ、データや知見に広くアクセスできるようになります。
差分プライバシーは高度な匿名化技術で、初めて Chrome に導入されたのは 7 年ほど前になります。そして現在では、Google マップや Google アシスタントなどのプロダクトに日々活用されています。昨年、世界が COVID-19 と闘う中、COVID-19 コミュニティ モビリティ レポート(英語)を公開しました。差分プライバシーを使っているこのレポートは、世界の公衆衛生当局、エコノミスト、政策立案者がコミュニティにとって重要な決定をする際に活用していますが、いかなる時点においても、個人を特定できる情報は利用できないことが保証されています。
Google Play Console では、今年中に差分プライバシーの手法を用いたアプリの新たな指標やベンチマークをデベロッパー向けに提供する予定です。この機能がリリースされると、デベロッパーは個人が特定または再特定できないことが保証される方法で、日々のアクティブ ユーザー数、アクティブ ユーザーあたりの収益など、アプリがどのくらいユーザーを惹きつけているかを表す指標に簡単にアクセスできるようになります。
このようなアプリの新たな指標に差分プライバシーを加えることで、デベロッパーに有用な知見を提供し、アプリの改善に役立ててもらうことができます。その一方で、ユーザーのプライバシーやデベロッパーの機密性が損なわれることはありません。今後は、差分プライバシーを使った指標を増やすことを計画しています。
Google のプロダクトにおけるプライバシー保護技術は進化を続けていますが、デベロッパーがこの技術を利用できるようにすることも重要です。そこで、2019 年に差分プライバシー ライブラリをオープンソース化し、世界中のデベロッパーが自由にアクセスして簡単にデプロイして活用できるようになりました。それ以降、たくさんのデベロッパーや研究者、団体が Google の差分プライバシー アルゴリズムを利用して、プライバシーが保護される方法で責任をもってデータを使い、新しい問題の解決に取り組んでいます。そのような企業の 1 つに、フランスの新興医療企業 Arkhn があります。Arkhn は、差分プライバシーによって複数の部門にまたがる病院のデータを安全な方法で収集、照会、分析できるようになり、それを活用して人工知能で医療業界に革命を起こすというミッションを掲げています。
Arkhn のようなデベロッパーのチームに、高度な差分プライバシー ライブラリを広く提供するため、 2021 年 1 月 29 日(現地時間 1 月 28 日)、OpenMined との新たなパートナーシップを結びましたのでお知らせします。
OpenMined は、プライバシー保護技術を研究し、その活用法を世界中に広めることに注力しているオープンソース デベロッパー グループです。Google は、今後 OpenMined と協力し、差分プライバシー ライブラリの Python デベロッパー専用のバージョンを開発する予定です。Python デベロッパーは、Google の差分プライバシー対応インフラストラクチャと同じ仕組みを活用することで、ワールドクラスのプライバシーを備えた他にはない新しい方法でデータを扱うことができます。
昨年と同様、デベロッパーが既存の差分プライバシー ライブラリをさらに簡単に使えるようにする作業も継続します。たとえば今月には、Google で日々何千件ものクエリに利用されている、新しい差分プライバシーに対応した SQL データベース クエリ言語拡張機能をオープンソース化しました。アナリストがこのようなクエリを活用すれば、ビジネスに関する知見を得たりプロダクトのトレンドを確認したりできます。これは、プライバシーが守られたデータ分析を広め、世界中のデータ サイエンティストが個人のプライバシーを保護および尊重しつつ、強力な洞察を得られるようにするための一歩です。
2 年前、TensorFlow Privacy(GitHub)をローンチしました。TensorFlow Privacy はオープンソース ライブラリです。これを使うと、デベロッパーがプライバシーに配慮した機械学習モデルを簡単にトレーニングでき、研究者は TensorFlow Privacy を使ってより安全なプライバシーを保証し、機械学習の水準を高めることができます。
昨年は、このライブラリを拡張して TensorFlow 2 をサポートするとともに、Keras モデル インターフェースと TensorFlow の既製 Estimator の両方をサポートしました。また、ウォータールー大学の研究者と連携してパフォーマンスを向上させています。これにより、新しいリリースでは一般的なワークロードのトレーニングが 4 倍以上高速になりました。
さらに、プライバシーを考慮した機械学習のトレーニングはコストが高くなってしまい、現実的ではない可能性があることがわかっています。そこで、機械学習モデルはどの程度プライベートなのかを理解するための調査を開始し、昨年、それに役立つ仮想攻撃ライブラリをオープンソース化しました。このライブラリを使うと、機械学習モデルの全体的なプライバシーの保護状況を確認できます。
その後は、プリンストン大学やシンガポール国立大学の研究者と連携。ライブラリのスコープを拡張して生成モデルや非ニューラル ネットワーク モデルをテストする新機能を追加しています。
先日、スタンフォード大学医学部の研究者がこの機能をいくつかのモデルで試しました。そのテストから、モデルの中でのプライバシーに関する動作が明らかになりました。その中には、それ以前はできなかったことも含まれています。
また、差分プライバシーと堅牢性のトレードオフに関する新しい研究を発表しました。これは、AI 倫理の中核にあるもう 1 つの特性である、プライバシーと安全性に関わることです。
健全なオープンソース エコシステムを育み、広げていく一方で、Google 製品を使うユーザーをアルゴリズムによって保護するために、Google は高度なプライバシー保護を行う取り組みに投資をしております。私たちは、世界中のあらゆる人がトップレベルなプライバシー保護を享受すべきだと強く確信しています。そのためにさまざまな組織と協力してそのミッションを果たしてまいります。