無能がFlutterを独学し始める話【3/5:必要なファイルをDL・インストールする】3/5-2:Android仮想デバイス(エミュレータ)を作成する

本記事をご覧いただき、誠に有難うございます。

投稿主の無能と申します。

前回はAndroid Studioをインストールし、FlutterとDartのプラグインを追加して、Flutterの新規プロジェクトが作成可能になるところまで進めました。
今回は、Android StudioでAndroid仮想デバイス(エミュレータ)を作成していきたいと思います。


Android仮想デバイス(エミュレータ)とは?

本記事をご覧頂いている皆様は、開発に使用出来るAndroid端末を何台お持ちでしょうか?
普段使っている1台しか持ってないよ、という方もいれば、普段使いのスマホに加えてゲーム用にハイスペックのゲーミング用スマホを1台持っている、タブレットは電子書籍や料理のレシピ用で、別に普段使いの端末が1台、または家族で考えると自分用、配偶者用、子供用と複数台ある…などと、ご自身のスタイルに合わせてAndroid端末の所持数も多種多様に変わって来ると思います。

仮に、自分が開発したアプリを、所持している全ての端末にインストールするとします。

えっ…面倒臭い。
と言うのが、十中八九初っ端の感想になると思います。
まあご想像の通り、面倒ですよね。
だって自分のAndroid端末ならいざ知らず、仮に家族用の端末であれば持ち主に許可を得てアプリをインストールして貰うだけでも敷居が高いのに、更にアプリの使用感の感想が欲しい…なんてレビューをお願いするなんて更にハードルが高過ぎる…という事もあり得ます。
ましてやそれが友達や見ず知らずの第三者だったりしたら…と考えると、上記の家族の例よりも遥かに信じられない労力が必要になります。

上記はあくまで考え得る一例ですが、類似した状況はどこにでもあると思います。
そんな状況を(ある程度)解消してくれるのが、Android仮想デバイス(以下エミュレータ、またはエミュ)になります。

エミュレータとはその名の通り、「お使いのPC上にAndroid端末を作り、現実の端末と同様の動作するように設定した仮想端末」のことを指します。
例えばノートPCでエミュレータを作成・起動した場合は、何千~何万円の現実の実機を増やすことなく、自分が想定した仮想端末、または想定に近い仮想端末をお使いのPCに実現させてくれます。
その仮想端末に、直接開発した・開発中のアプリを起動させ、アプリの使用感や挙動を確認出来るようになります。

またエミュレータは1台だけではなく複数作成し保存することができ、画面の大きさやエミュレータのスペックなども割と細かく設定できます。
このエミュレータによって、目的の端末と同等、または近しい仮想端末で動作検証が可能になる、という感じです。

エミュレータの動作は?

エミュレータの動作は、仮想と言えども実機の操作感と何ら変わりません。
タッチ操作可能なPCのディスプレイであれば、そのままディスプレイ上で仮想端末の操作が可能ですし、タッチパネルでは無くとも、マウスでの操作でもドラッグなどの操作は若干面倒ではありますが、実機のタッチ操作と変わりません。

直感的な動作という点では、数年前から話題に出てきたChromeBookや、2022年現在だとWindows11が、現行の従来のデバイスよりも、より直感的に操作できるOSとして、大方スマホに近い操作感なのではないかと思います。
(無能のPCはWindows11へアップデート可能ですが、インストールしているアプリが動かなくなる可能性があるので10のままです)

但し、エミュレータはお使いのPC上に実際の実機にかなり近い形で作成・起動するので、PCのリソースがかなり割かれます。

仮に無能のPCで、残ったリソースでSoC(CPU)が高性能でRAMが4GBのエミュレータを作成したとすると、PCはファンが回り続けバッテリーはマッハで減るでしょうw

また考えられる懸念として、お使いのPCのリソースに対して明らかにオーバースペックとなるエミュレータを作成・起動した場合は、目に見えて挙動が遅延したり検証中のアプリが落ちたり、はたまたエミュレータの高負荷の影響でPCがもたついたりフリーズしたり、エミュレータのUI構成自体が落ちたりします。

このような状態にならないように、お使いのPCのスペックに対してある程度余裕を持ったエミュレータを作成することが推奨されます。
PCにメモリ増設やHDD換装などのハード的な拡張が困難な場合は、諦めて使用しているPCで余裕を持てるような低スペックのエミュレータで我慢した方が良いかも知れません。

最近の端末事情としては、エントリーモデルと呼ばれるものでもRAMは4GB、HDDが32GB以上のスペックが標準になってきています。
もし目的の端末が想像しにくい場合は、エントリーモデル辺りのスペックを基準にして、エミュレータの基準を決めるのも選択肢の一つになるかも知れません。

実際にAndroidエミュレータを作成する

では、ある程度エミュレータの注意点を踏まえたところで、実際にエミュレータを作成してみましょう。

Android Studioを起動して「More Actions」を押下し、中の項目にある「AVD Manager」を選択します。

「More Actions」内の「AVD Manager」を選択

この「AVD Manager」はAndroid Virtual Device Managerの略となっていて、エミュレータを一元管理できる機能となっています。

すると「Your Virtual Devices」の画面になります。
今は一台もエミュレータを作成していないので「+ Create Virtual Device」ボタンが中央にあるだけとなっていますが、本記事以降に作成したエミュレータが存在する場合は、この画面に作成済みのエミュレータ一覧が表示されるようになります。

では中央の「+ Create Virtual Device」ボタンを押下し、新しいエミュレータを作成していきましょう。

中央の「+ Create Virtual Device」ボタンを押下し、エミュレータを新規作成

エミュレータの外側を決める

「Select Hardware」では、エミュレータの機種選択画面となります。
現バージョンのデフォルトでは「Pixel 2」となっています。
このエミュレータの機種は、お使いのPCと相談して想定に近い機種を自由に選択して下さい。
また選択肢に想定に近い機種が無い場合は、左下の「New Hardware Profile」を押下すると新規で項目に無いエミュレータを作成することが出来ます。

今回は候補内の「Pixel 3a」を作成していきます。
「Pixel 3a」を選択し「Next」を押下します。

「Select Hardware」画面
エミュレータの候補が一覧になっている

候補の中に想定に近しい機種が無い場合は、「New Hardware Profile」から新規で仮想デバイスの詳細を決める決めることができる

今回は「Pixel 3a」を作成する
「Pixel 3a」を選択し「Next」を押下

エミュレータの内側(システムイメージ)を決める

次に「System Image」画面になり、エミュレータに搭載するAndroid OSのバージョンを指定します。

タブが3つに分かれていて、左から「Recommended(推奨するイメージ)」、「x86 Image(PCでも動作可能なイメージ)」、そして「Other Images(Recommended・x86を含み、且つPC搭載のCPU:いわゆるIntel・AMD以外でも動作可能なイメージ)」の3つに分類されています。
※この3つのタブのジャンル分類については、あくまでも無能の主観によるものです。
 正確な情報はご自身でお調べください。

ここではRecommendedタブの中から選びたと思います。

「System Image」画面のRecommendedタブ
今回はこのタブからエミュに搭載するAndroid OSのバージョンを選択する

x86 Imageタブ

Other Imagesタブ

2022/1月の現時点では、Recommendedタブ内の最新OSはAndroid 11.0(APIレベル30)で、最下位のAPIレベルは24で、Androidのバージョンでは7.0となっています。
現在Android12も発表されている状態ですが、開発側となるGoogleとしては、安定して動作しているAndroid 11.0(APIレベル30)の開発を推奨しているのでしょう。
またRecommendedタブでは、APIレベル24以前のAndroidバージョンは開発非推奨になっているようで、APIレベル24以前のイメージがRecommendedタブでは候補として挙がっていません。

開発のターゲット選定の選択肢の1つとなるAPIレベル毎の使用割合とスペックに関しては、右側下部の「Questions on API level?」にある「API level distribution chart」で確認できます。

APIレベル毎の使用割合とスペックに関しては、右側下部の「Questions on API level?」にある「API level distribution chart」リンクで確認可能

APIレベル毎の詳細を見ることが出来る

想定しているスペックと現状の使用割合を比較して、ターゲットにするAPIレベルを決めるのも、今後の開発を含めると考える必要が出てくる可能性があります。
あまり古いバージョン(APIレベルが低いバージョン)になると、非推奨となる端末が増えてくることが予想されることや、アプリが正常に動作しないことや端末が低スペックなことが原因でアプリの動作が重くなる、アプリが(途中または最初から)落ちる等が考えられます。
かと言って、最新過ぎるバージョンだと端末自体が高価なため、そもそもの母数が少数だったり…などと色々考える事が出てきます。
様々な視点で対象(ターゲット)となるAPIレベルを決めて開発を進めることが、ストレスが少ない開発になるかと思います。

対象のAPIレベルを決めたら、そのAPIレベルのシステムイメージをDLします。
今回はAPIレベル26のoreo(オレオ:Androidバージョン8.0)をDLしたいと思います。

あくまでも、繰り返しではありますがここでのAPIレベルは、個人の主観や作りたいモノ・やりたい事が主体になります。
「そんなに最新バージョンの機能は使わない」とか「オフラインでも使える、汎用性のあるアプリを幅広いターゲットに向けて作りたい」や「低スペックの端末でも有用なアプリを作りたい」など、開発者の方向性に合わせて選択することが重要です。

ではAPIレベル26を選択します。
すると、そのバージョンのお菓子に扮したドロイド君が右側に表示されます。
この「Release Name」にある「Download」のリンクよりシステムイメージをDLします。

閑話休題
-ここから-
これは豆知識程度のモノですが、Androidは「P」までのバージョン毎に、お菓子の名前がそのバージョンの頭文字として命名されています。

実際にAPIレベル26(Oreo)の一つ前のAndroid7.xのバージョンはNougat(ヌガー)となっていて、初期のCからPまで、順に(日本では馴染みの無いものでも)お菓子の名前になっているので、覚えておくと楽しいかも知れません。

因みに、お菓子の名前はコードネームとなっており、開発者は割と知っていてもAndroid端末の販売時等には殆ど表沙汰になっていなかったものなので、自己満足に近いものかも知れません。

Androidバージョンの変遷についてはWikipediaなどを参照してください。
(Wikipedia:Android(オペレーティングシステム)→https://ja.wikipedia.org/wiki/Android_(%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0)#%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3)
-ここまで-

APIレベル26(Androidバージョン8.0)を選択し、リンクからDLする

するとシステムイメージに関するライセンスの同意画面になります。
ライセンスに同意しないとDL出来ませんので、下部にあるチェックボックスの「Accept」を選択します。

ライセンス同意画面の下部にある「Accept」を選択する

すると無効だった「Next」ボタンが有効になるので押下します。

「Accept」で下部のNextボタンが有効になるので押下する

同意するとシステムイメージのDLが開始されます。

選択したシステムイメージのDLが開始される

このイメージのDLは結構時間を要しますので、気長に待ちましょう。
因みにDLが完了すると自動的に解凍し、イメージがそのまま利用可能な状態となるので、特に必要な操作はありません。
完了したら右下の「Finish」を押下します。

Finishを押下

すると、システムイメージの選択画面に戻ってきます。
戻ると先程まで表示されていた「Download」のリンクが消えています。
これでDLが完了しエミュレータのイメージとして使用可能になりました。
そのまま「Next」を押下します。

この手順は異なるシステムイメージでも全く同様の手順となりますので、例に倣って目的のイメージをDLしてください。

システムイメージ選択画面に戻る。
DLが完了したイメージはエミュレータのシステムとして選択可能となり、「Download」が消えている

エミュレータの詳細を設定する

次はエミュレータの詳細設定画面になります。
ここまでは、ガワと基本を決めた状態になっているので、ここまで決めた項目を基にエミュレータの詳細を設定していきます。

エミュレータの詳細設定画面

先ずはエミュレータの名前です。「AVD Name」という項目です。
任意なので、自分が複数のエミュレータを判別しやすい名前が良いと思います。

今回は「Pixel3a-8.0(26)」と言った「機種名-Androidバージョン(APIレベル)」の規則で命名したいと思います。

命名規則は複数台のエミュレータを使い分ける際に、どのエミュレータがどういうものか判別しやすくなるものなので、名前を見れば一発でわかるようにご自身を含む関係者の判別しやすい名前をつけるのが良いです。

AVD Nameを「Pixel3a-8.0(26)」として命名する

次はエミュレータの向きの設定です。
「Startup orientation」の項目で縦向き(Portrait)または横向き(Landscape)のどちらかを選択します。
今回は縦向き(Portrait)を選択します。

普段Android端末を使うときは縦向きで使うことが多いと思いますが、画面上の見やすさなどを考慮して基本は横向きにしたい、即ちアプリの動作時は横向きがデフォルトにしたい、などの要望があると思います。

これは「どのような状況で」「どのようにアプリを使用するか」「ユーザーがアプリを使う時間はどの位を想定しているか」…などの細部に渡るアプリ使用状況の想定をして、端末の向きを決めます。

普段使いの延長でサッと使える場面でアプリを使って欲しいと想定するとき、普段使っている画面の向きが縦向きの場合は、勿論縦向きを想定すると思います。
また違うシチュエーションで言えば、腰を落ち着けてじっくり端末を操作する場面…例えばゲームを操作する時のような場面を想定すれば、30分~1時間、またはそれ以上のアプリの使用時間が考えられます。このような場合は、画面も両手で触れると考えられるので横向きの方が好ましくなります。
またデバイスがタブレットに変われば、表示の向きも使い方の想定により異なりますし、スマホ以外のデバイスであれば、猶更想定する場面がより広範囲になる、または限定的な場面になったりと、正に「考えたらキリがない」という状態になります。

このように、いつ誰が何処でどの様にどの位アプリを使用するかを想定して、好ましい画面設定を選ぶ必要が、開発者側に委ねられます。
最初は汎用的なものではなく、アプリの使用用途や使うと想定される年齢層、デバイスを限定しておいた方が良いかも知れません。
また数多あるアプリを実際に使用してみて、画面構成を気に入ったアプリのものを目標にするのも、一つのアプリ開発の目安になるかも知れません。

「Startup orientation」の項目で
・縦向き(Portrait)
または
・横向き(Landscape)
のどちらかを選択する

3項目めはグラフィックのパフォーマンスについてです。
こちらはデフォルトのまま選択不可になっているのでそのまま進みます。

「Emuiated Performance」の項目
デフォルトで選択不可となっている

4項目めはエミュレータにフレーム(デバイスの画面以外の外側)を表示するかどうかの設定項目です。
チェックを入れると、デバイスのフレームが実機さながらに表示されます。
チェックを外すとデバイスのフレームが表示されず、操作可能な画面部分のみが表示されます。
今回はチェックを入れて(フレームを表示して)作成します。

これで設定は完了ですが、更に細かく詳細を設定したい場合は、下部の「Show Advanced Settings」で詳細項目を開いて、カメラやネットワーク状況、CPUやRAM、ブートの仕方やHDDの容量など、細部の設定が行えます。

Show Advanced Settingsにて細部の設定が可能になる

このままFinishを押下して設定を完了すると、仮想端末が作成されます。
先程「+ Create Virtual Device」となっていた中央部分に、今作成した仮想端末(エミュレータ)が作成されました。

先程設定した仮想端末(エミュレータ)が作成され、起動できる状態になった

もし新規で他のエミュレータを作成する場合は、左下の「+ Create Virtual Device」を押下します。
または、作成済みのエミュレータの内容を変更したい場合は、Actionsを押下してメニュー内の「Edit」で、削除したい場合は「Delete」で可能です。

作成したエミュレータを起動してみる

では、このエミュレータを起動してみましょう。
作成したエミュレータを選択し、Actionsの再生ボタンを押下して起動してみましょう。

エミュレータを選択しActionsの再生ボタンを押下すると起動する

起動中

エミュレータが起動した

無事、エミュレータを作成して起動することが出来ました。
お疲れさまでした。

エミュレータを作成し起動が確認できた時点での「flutter doctor」で診断結果を確認する

これで開発…はまだ出来ない状態です。
実際にflutter doctorで診断結果を見てみましょう。

エミュレータ起動後のflutter doctorの診断結果

エミュレータを作成したことで、未完了項目を一つクリアしました。
あと一つ未完了になっています。
ゴールとなるスタートラインはもう少しです。頑張りましょう。


まとめ

本記事では
  • Android StudioでAndroid仮想デバイス(エミュレータ)を作成
  • 作成したエミュレータを起動し、動作を確認する
  • flutter doctorでエミュレータ作成後の診断結果を確認する
という事を行いました。

次はflutter doctorの診断結果で未完了となっている、最後の1項目をクリアしていきます。

本記事もご覧頂き、誠に有難うございます。
ではまた。


コメント