Androidソフトウェア開発

Androidスタック[ 1 ]
Google Pixel 99 Proは、開発者向けデバイスシリーズであるGoogle Pixelシリーズの一部である。

Android ソフトウェア開発は、 Androidモバイル オペレーティング システムを実行するデバイス用にアプリケーションを作成するプロセスです。Google は[ 2 ] Androidソフトウェア開発キット(SDK) を使用して「Android アプリはKotlinJavaC++言語を使用して記述できる」述べていますが、他の言語を使用することも可能です。Go 、JavaScriptCC++ 、アセンブリなどのJava 以外の仮想マシン(JVM) 言語はすべて、ツールによって提供される可能性のある JVM 言語コードの支援を必要としますが、API サポートは制限されている可能性があります。一部のプログラミング言語とツールでは、クロスプラットフォームアプリのサポートが可能です (つまり、Android とiOS の両方)。サードパーティ製のツール、開発環境、言語サポートも、2008 年に最初の SDK がリリースされて以来、進化と拡張を続けています。エンドユーザーへの公式の Android アプリ配布メカニズムはGoogle Playです。段階的なアプリリリースや、テスターへのプレリリース版アプリの配布も可能です。

公式開発ツール

Androidソフトウェア開発キット(SDK)には、包括的な開発ツールセットが含まれています。Android SDKプラットフォームツールは、SDK全体から別途ダウンロード可能なサブセットで、コマンドラインツール([ 3 ]adbなど)で構成されていますfastboot。Android Debug Bridge(ADB)は、接続されたAndroidデバイス上でコマンドを実行するためのツールです。Fastbootは、ファイルシステムのフラッシュに使用されるプロトコルです。C / C++で記述されたコードは、Androidネイティブ開発キット(NDK)を使用して、 ARMまたはx86ネイティブコード(またはその64ビット版)にコンパイルできます。

Android オープンアクセサリ開発キット

Android 3.1プラットフォーム(Android 2.3.4にもバックポート)では、Android Open Accessoryのサポートが導入され、外部USBハードウェア(Android USBアクセサリ)が特別な「アクセサリ」モードでAndroid搭載デバイスと通信できるようになりました。Android搭載デバイスがアクセサリモードの場合、接続されたアクセサリはUSBホスト(バスに電力を供給し、デバイスを列挙する)として機能し、Android搭載デバイスはUSBデバイスとして機能します。Android USBアクセサリは、Android搭載デバイスに接続できるように特別に設計されており、アクセサリモードをサポートするAndroid搭載デバイスを検出できるシンプルなプロトコル(Androidアクセサリプロトコル)に準拠しています。[ 4 ]

外部ハードウェア開発

Android デバイスが外部電子機器と対話できるようにするための開発ツールには、IOIO、Android Open Accessory Development Kit、Microbridge、Triggertrapなど があります。

Android エミュレータとサブシステム

Android 開発者チャレンジ

Android Developer Challengeは、Android向けの最も革新的なアプリケーションを見つけるコンテストでした。Googleは総額1,000万ドルの賞金を用意し、ADC IとADC IIに分配されました。ADC Iは2008年1月2日から4月14日まで応募を受け付けました。2008年5月12日に発表された最も有望な50の応募作品には、それぞれさらなる開発のための25,000ドルの賞金が贈られました。[ 5 ] [ 6 ]このコンテストは9月初旬に終了し、10チームがそれぞれ275,000ドル、10チームがそれぞれ100,000ドルの賞金を獲得したことが発表されました。[ 7 ]

ADC IIは2009年5月27日に発表されました。[ 8 ] ADC IIの第1ラウンドは2009年10月6日に締め切られました。[ 9 ] ADC IIの第1ラウンドの優勝者は、上位200のアプリケーションで構成され、2009年11月5日に発表されました。第2ラウンドの投票も同日に開始され、11月25日に終了しました。Googleは11月30日にADC IIの上位優勝者を発表し、SweetDreams、What the Doodle!?、WaveSecureがチャレンジの総合優勝者にノミネートされました。[ 10 ] [ 11 ]

コミュニティベースのディストリビューション

FLACロスレスオーディオのサポートやmicroSDカードにダウンロードしたアプリケーションを保存する機能など、多くのカスタマイズや追加機能を備えたAndroidベースのディストリビューション(つまりファームウェア)を構築して共有するオープンソース愛好家のコミュニティがあります。 [ 12 ]これには通常、デバイスのルート化が含まれます。ルート化により、ユーザーはオペレーティングシステムへのルートアクセスが許可され、電話を完全に制御できるようになります。ルート化には、ハッキングのリスクの増加、文鎮化の可能性が高い、保証が失われる、ウイルス攻撃のリスクの増加など、いくつかの欠点もあります。 [ 13 ]カスタムファームウェアをインストールすることも可能ですが、デバイスのブートローダーもロック解除する必要があります。カスタムファームウェアにより、古い電話のユーザーは、新しいリリースでのみ利用可能なアプリケーションを使用できます。[ 14 ]

これらのファームウェアパッケージは頻繁に更新され、キャリア認定ファームウェアではまだ公式リリースされていないAndroid機能の要素が組み込まれており、制限が少ない傾向があります。CyanogenModやOMFGBはこのようなファームウェアの例です。

2009年9月24日、Googleは、カスタムファームウェア内でGoogleのクローズドソースアプリケーション[ 16 ]の再配布に関する問題を理由に、改造業者Cyanogenに対して停止通告[ 15 ]を発行した。Android OSの大部分はオープンソースであるにもかかわらず、携帯電話にはGoogle PlayやGPSナビゲーションなどの機能を提供するクローズドソースのGoogleアプリケーションが同梱されている。Googleは、これらのアプリケーションは認可された配布チャネルを通じてライセンスを受けた販売業者によってのみ提供されるべきだと主張している。CyanogenはGoogleのライセンスに従い、プロプライエタリソフトウェアなしで改造の配布を継続した。同社は、改造のインストールプロセス中にライセンスを受けたGoogleアプリケーションをバックアップし、プロセス完了後に復元する方法を提供した[ 17 ] 。

Java標準

開発の障害の一つとして、AndroidがJava SEMEといった確立されたJava標準を採用していないことが挙げられます。そのため、これらのプラットフォーム向けに書かれたJavaアプリケーションとAndroidプラットフォーム向けに書かれたJavaアプリケーションとの互換性が保たれません。AndroidはJava言語の構文とセマンティクスを再利用しますが、Java SEやMEにバンドルされている完全なクラスライブラリやAPIは提供していません。[ 18 ]しかし、 Myriad GroupやUpOnTekなどの企業からは、Java MEからAndroidへの変換サービスを提供するツールが複数提供されています。[ 19 ] [ 20 ] [ 21 ]

Androidは独自のGUIクラスを提供しており、Java AWT、Swing、JavaFXは提供していません。また、Java Beans APIも完全にはサポートしていません。[ 22 ]

歴史と市場シェア

Androidは、Googleが主導するOpen Handset Allianceによって開発されました。Androidプラットフォーム向けアプリケーション開発に対する初期のフィードバックは賛否両論でした。 [ 23 ]挙げられた問題点としては、バグ、ドキュメント不足、不十分な品質保証インフラ、公開されている問題追跡システムの欠如などが挙げられます。(Googleは2008年1月18日に問題追跡システムを発表しました。)[ 24 ] 2007年12月、モバイルスタートアップ企業MergeLabの創設者アダム・マクベスは、「機能が不足しており、ドキュメントが不十分で、あるいは単に動作しません…明らかにプライムタイムには準備ができていません」と述べました。[ 25 ]それにもかかわらず、Android向けアプリケーションはプラットフォーム発表の翌週から登場し始めました。最初に公開されたアプリケーションはSnakeゲームでした。[ 26 ]

Android SDKのプレビューリリースは2007年11月12日にリリースされました。2008年7月15日、Android Developer ChallengeチームはAndroid Developer Challengeの参加者全員に、SDKの新リリースが「プライベート」ダウンロードエリアで利用可能になったことを通知するメールを誤って送信しました。このメールはAndroid Developer Challengeの第1ラウンドの優勝者向けでした。Googleが一部の開発者にのみ新SDKリリースを提供し、他の開発者には提供していなかった(しかもこの取り決めは非公開だった)という事実は、当時のAndroid開発者コミュニティ内で広く報道された不満を引き起こしました。[ 27 ]

2008年8月18日、Android 0.9 SDKベータ版がリリースされました。このリリースでは、APIの更新と拡張、開発ツールの改善、ホーム画面のデザインの刷新が行われました。以前のリリースで既に作業を行っている方には、アップグレードの詳細な手順が提供されています。[ 28 ] 2008年9月23日、Android 1.0 SDK(リリース1)がリリースされました。[ 29 ]リリースノートによると、このリリースには「主にバグ修正が含まれていますが、いくつかの小さな機能も追加されています」とのことです。また、0.9バージョンからのAPIの変更もいくつか含まれています。開発以来、複数のバージョンがリリースされています。[ 30 ]

2008年12月5日、Googleは初となるAndroid Dev Phoneを発表しました。これは、SIMロック解除済みかつハードウェアロック解除済みの、上級開発者向けに設計されたデバイスです。これはHTCのDream Phoneの改良版でした。開発者はアプリケーションのテストや使用に一般消費者向けデバイスを使用できますが、専用のSIMロック解除済みデバイスや契約不要のデバイスを選択する開発者もいます。

2013年7月現在、Android向けに100万以上のアプリケーションが開発されており、[ 31 ]ダウンロード数は250億回を超えています。[ 32 ] [ 33 ] 2011年6月の調査によると、発表時点でモバイル開発者の67%以上がこのプラットフォームを使用していました。[ 34 ] Androidスマートフォンの出荷台数は2018年に12億台を超え、市場シェアは85%になると予測されています。[ 35 ]

参照

参考文献

  1. ^ 「アーキテクチャの概要」 . Androidオープンソースプロジェクト. 2025年10月31日閲覧
  2. ^ 「アプリケーションの基礎」。Android開発者
  3. ^ Modesti, Paolo (2021年3月). 「スクリプトベースのアプローチによるAndroidアプリケーション開発の指導と評価」 . ACM Transactions on Computing Education . 21 (1): 1– 24. doi : 10.1145/3427593 . 2022年5月8日閲覧
  4. ^ 「Android開発者ガイド」 . Developer.android.com . 2021年4月17日閲覧
  5. ^ Chen, Jason (2008年5月12日). 「トップ50アプリケーション」 . Android Developers Blog . 2009年9月25日時点のオリジナルよりアーカイブ。 2009年9月4日閲覧
  6. ^ Brown, Eric (2008年5月13日). 「Android Developer Challenge、第1ラウンドの優勝者を発表」 . Linux for Devices . 2008年5月14日時点のオリジナルよりアーカイブ
  7. ^ 「ADC I トップ50ギャラリー」。Android Developer Challenge 。 2009年5月19日閲覧
  8. ^ 「Android Developer Challenge」 . Google Code . 2008年1月11日閲覧
  9. ^ Chu, Eric (2009年10月6日). 「ADC 2 ラウンド1 スコアリング完了」 . Android Developers Blog . 2009年11月1日時点のオリジナルよりアーカイブ。 2009年11月3日閲覧
  10. ^ 「ADC 2 総合優勝者」。Android Developer Challenge2011年1月4日時点のオリジナルよりアーカイブ。 2010年12月5日閲覧
  11. ^ Kharif, Olga (2009年11月30日). 「Android Developer Challenge 2 の受賞者が発表」 . BusinessWeek . 2009年12月4日時点のオリジナルよりアーカイブ2010年12月5日閲覧。
  12. ^ 「Dream android development」 . xda-developersフォーラム. 2009年9月11日閲覧
  13. ^ 「ルート化:利点と欠点」ITCSEフォーラム2014年11月29日時点のオリジナルよりアーカイブ。 2013年9月21日閲覧
  14. ^ 「Android 2.1 from Motorola Droid Ported to G1」 Volt Mobile 、2010年3月10日。 2011年5月31日時点のオリジナルよりアーカイブ。 2011年5月13日閲覧
  15. ^ Wimberly, Taylor (2009年9月24日). 「CyanogenMod in trouble?」 . Android and me . 2009年10月3日時点のオリジナルよりアーカイブ2009年9月26日閲覧。
  16. ^ Morrill, Dan (2009年9月25日). 「Android向けGoogleアプリに関するメモ」 . Android Developers Blog . 2009年10月25日時点のオリジナルよりアーカイブ。 2009年9月26日閲覧
  17. ^ 「現在の状態...」CyanogenMod Android ROM . 2009年9月27日. 2009年11月3日時点のオリジナルよりアーカイブ2009年9月27日閲覧。
  18. ^ van Gurp, Jilles (2007年11月13日). 「Google Android: 第一印象と批判」 . Javalobby . 2008年8月28日時点のオリジナルよりアーカイブ. 2009年3月7日閲覧.率直に言って、Googleがなぜ既存の膨大な実装を無視しようとしているのか理解できません。これは「自社開発ではない」という悪質な例のように思えます。最終的には、普及を遅らせることになるでしょう。モバイルの世界には既にJavaプラットフォームが多すぎるのに、これはまた別の問題です。
  19. ^ 「Myriadの新しいJ2AndroidコンバータがAndroidアプリケーションのゴールドラッシュを促進」 2010年3月19日。 2011年7月4日時点のオリジナルよりアーカイブ2011年5月13日閲覧。
  20. ^ Fruhlinger, Josh (2010年3月23日). 「J2AndroidはAndroidがJavaベースであることを知らないでほしい」 . JavaWorld . 2020年7月13日閲覧.一方で、これはターゲットとするプラットフォームの性質をあまり理解していない開発者を狙った一種の詐欺だと思う人もいるかもしれません。私の最大の不満は、上記リンクの最初の記事を書いたIDG News Serviceの記者、ミカエル・リックネス氏(JavaWorldを発行している同じ会社で働いている)が、この発表の奇妙さを明確にするために、少なくともJavaとAndroidの関係について言及していたはずだということです。
  21. ^ Fruhlinger, Josh (2010年3月31日). 「Myriad CTO: J2Android、MIDletを「美しい」Androidフレームワークに移行」 . JavaWorld . 2020年7月13日閲覧。J2Androidが実際にどれほど普及するかは、実際に見てみないと分かりません。このツールはまだ公開されていません。Schillings氏は「午後に1,000個のMIDletを変換できる」と楽観的な見通しを示していましたが、現在は複数のプロバイダーと協力してバックカタログの変換を進めています。そのため、Androidコードの書き方を学びたくないと考えている方は、しばらく待つ必要があるかもしれません。
  22. ^ Jean Maurice Benjamin Cecilia Menzel (2025). 「現代のAndroid開発標準」 . KaizenKode . KaizenKode.
  23. ^ Paul, Ryan (2007年12月19日). 「Google Android向けアプリの開発:良い面と悪い面が入り混じる」 . Ars Technica . 2007年12月20日時点のオリジナルよりアーカイブ。 2007年12月19日閲覧
  24. ^ Morrill, Dan (2008年1月18日). 「完璧を急ぐことはできないが、今な​​らそれに対するバグを報告できる」 . Android Developers Blog . 2009年9月3日閲覧
  25. ^モリソン・スコット(2007年12月19日)「グーグルのAndroidソフトウェアに不具合発生」ウォール・ストリート・ジャーナル2007年12月19日閲覧
  26. ^ 「First Android Application — Snake」 . Mobiles2day . 2007年11月14日. 2008年5月11日時点のオリジナルよりアーカイブ。 2008年1月7日閲覧
  27. ^ Metz, Cade (2008年7月14日). 「Google、Android SDKでHide and Seekをプレイ」 . The Register . 2008年10月6日時点のオリジナルよりアーカイブ2008年10月23日閲覧。
  28. ^ 「Android — Open Handset Allianceプロジェクト:SDKのアップグレード」 。 2008年9月13日時点のオリジナルよりアーカイブ2008年10月24日閲覧。
  29. ^ 「その他のSDKリリース」 . Android Developers . 2009年9月2日閲覧
  30. ^ 「SDKアーカイブ」。Android開発者
  31. ^ 「Google Playのアプリ数が100万個を突破」 Mashable 2013年7月24日。
  32. ^ 「Android App Stats」 。 2011年1月2日時点のオリジナルよりアーカイブ2010年12月31日閲覧。
  33. ^ Leena Rao (2011年4月14日). 「Google: 30億個のAndroidアプリがインストールされ、ダウンロード数は前四半期から50%増加」 . Techcrunch . 2011年4月25日時点のオリジナルよりアーカイブ。 2011年5月13日閲覧
  34. ^ “Developer Economics 2011” . 2013年9月29日時点のオリジナルよりアーカイブ2011年7月8日閲覧。
  35. ^ 「IDCによると世界のスマートフォン出荷台数は2018年は減少傾向にとどまるものの、2019年以降は成長に転じる見込み」 idc.com 2018年5月30日。 2019年10月17日時点のオリジナルよりアーカイブ。 2018年6月6日閲覧

参考文献