テックコミュニティの運営側で、その技術分野を常に追いかけているエンジニアの方々にお話をうかがうインタビュー企画。ホストは関満徳が務めます。新型コロナ禍のさなか対面での取材を避け、リモートで行います。第4回目のゲストとしてお迎えしたのは、ソフトウェアエンジニアとして活躍する日高正博氏です。
日高氏は、現職のソフトウェアエンジニアとして従事する傍( かたわ ) ら、DroidKaigi代表理事、技術書典 主宰者、PEAKS出版などの活動を精力的にされています。
関: Androidと出会ったのはいつぐらいなのでしょうか?
日高: 2008年末から2009年にかけてです。当時はまだスマートフォンのスの字も出ていないタイミングで、バージョン1.xと早く、実機もなかった時期にエミュレータやSDKに出会いました。
関: なぜiOSではなくAndroidを選んだのでしょうか?
日高: Androidは当初からオープンソースで、ソースコードを読むことができ、開発が自由で、開かれたマーケットとして訴求していました。それがiOSではなくAndroidを選んだ理由です。
関: 仕事でAndroidを使うようになったのはいつごろからなのでしょうか。
日高: Androidと出会った当時から仕事でも使っていましたね。かなり手広く触っていました。当時はAndroidのアプリケーション開発の知見がたまっておらず、ライフサイクルを意識しないあまりアプリが強制終了されるなど未成熟な時代でした。今でこそセキュリティが強化され、権限など制限がたくさん付くようになりましたが、当時は信じられないぐらい自由でしたね。
関: ガラケーとの違いはどう感じていましたか?
日高: ガラケーと比べて、Androidは新しい世界に見えていました。ガラケーで動くアプリはすでに完成された領域で、キャリアが審査・提供していることもあってアプリは強制終了されたりしませんし(笑) 。
Androidは、アプリケーション開発を取り巻く環境も、標準的なデザインも良いとは言えない状況でした。実機が登場したてのころのAndroid端末は挑戦が多く、物理キーもたくさんある機種もあり、新しいからこその楽しさがありました。振り返ればアプリの審査がなかったのも斬新でしたね。審査はなく野放し状態で、何か問題が発生したら都度対応という牧歌的な時代です。今は、機械的な審査に加えて公開のためのポリシーがあります。
Androidを取り巻くエコシステムの成長
関: Android端末が出た当初は、アプリはよく落ちるし、いわゆる野良アプリも多かったですね。そういった状況を乗り越えるために、何が起きたのでしょうか?
日高: そうですね。近年はAndroid端末の中に平均100個以上のアプリが入ることが多く、それぞれのアプリがバックグラウンドで好きに通信をしてしまうとバッテリーがもちません。CPUの進化に比べてバッテリーの進化は早くないですから。そのため、アプリの推奨する動作をGoogle Playストアが規定・管理するようになり、バックグラウンド動作にも制限がかかるような変化が起きました。
これは、Androidが普及したからこそ発生する制限なので、おもしろさがスポイルされたわけではないです。また、変なアプリが完全になくなったわけではありません。セキュリティホールを突こうとしているアプリはまだありますし、品質が低いアプリも残っています。
Androidのエコシステムが成長し、たくさんのアプリが登場しました。公式アプリだけでなく、SDKを使って連携するサードパーティ製アプリもあります。たとえばSNSではTwitter、FacebookなどがSDKを提供しています。ユーザーが自分でどのアプリをインストールするかを選ぶ、いわゆるアタリ・ハズレを引く・引かないという楽しさは今も残っています。
Androidの場合、ユーザーが端末を選ぶところから楽しさというのは始まっています。欲しい機能などこだわりに応じて選択できますが、間違えると不満がたまります。そんなこともあり、各国ごとの需要を満たすべくローカライゼーションが進んでおり、その国で作られたAndroidが普及している状況です。
Androidをこれから学習する方へ
関: Androidの開発環境は、どれを選べばよいのでしょうか?
日高: 言語はKotlin、IDE(Integrated Development Environment 、統合開発環境)はAndroid StudioまたはIntelliJ IDEAという組み合わせを選ぶのがよいでしょう。
関: Androidの最新情報を得るには、どこから得るのがよいでしょうか。
日高: Googleは公式ドキュメントを推奨しています。ただ、公式ドキュメントを読むモチベーションはなかなか上がりにくいかもしれません。日本語での情報が古いなどはよく聞きます。その代わり情報を発信している開発者はたくさんいるので、わからないことはコミュニティで聞けたり、いろんな情報を得たりすることができます。
Androidのバージョンアップ状況
関: Androidのバージョンアップ状況はいかがでしょうか?
日高: 今はAndroid 11がリリースされています。開発環境のAndroid Studioのマイナーバージョンアップは、数週間から月1回ぐらいのペースですね。JDK(Java Development Kit )のようなLTS(Long Term Support )はありません。ほかのプラットフォームと比べるとAndroidの場合は、なくなる機能は少なく非推奨になるぐらいです。ただ、昔のAndroid端末をずっと使い続けられるとサポートも大変なので、Google Playストアからは「公開するアプリで利用するAndroid SDKは最新から1引いたものをターゲットにしてください」とお願いがでています。
関: 昔のAndroid端末は、OSバージョンアップができませんでしたね。
日高: はい、初期のころはOSバージョンアップが難しく、実質的にできない構造となっていました。最近は2世代ぐらいまでならバージョンアップをサポートする動きも出ています。
そもそもAndroidの場合、バージョンアップに対する考え方がiOSやWindowsと違うんですね。なぜかというと、端末ごとにCPUやメモリが異なるため、バージョンアップするとまともには動かないデバイスがたくさんあるのです。私も不便に感じていました。
今は利用者も、もうそういうものだという風に慣れてきた感はあります。ある程度古いOSでも動作するアプリを作るような開発体制が整ってきた、ということもありそうです。
AndroidのUIデザイン
関: AndroidのUIデザインはどのように変わったのでしょうか?
日高: Androidは、アップデートのたびにいろんなコンセプトが出るなど、ブラッシュアップが図られてきました。今は、いかにユーザーに受け入れてもらえるようにしていくか、が主題となっています。もちろんデザインガイドラインは提供されていますが、画面が大きくなると上のほうには指が届かないなどの問題があり、ガイドラインに頼り切らず現実問題に沿って解決していこうよ、というのが新しいエンジニアリングの形になりそうです。
関満徳 氏
関: 個人ですべてをやるのは難しそうですね。
日高: そうですね、スペシャリティも違いますし、モバイル系は開発の担当やデザインの分業が進んでいます。
Androidとクロスプラットフォーム
関: Androidを取り巻くiOSなどとのクロスプラットフォームの状況は、最近どうなっているんでしょうか?
日高: Android周辺のクロスプラットフォームは昔からありますが、今はReact NativeやFlutterを推す声が大きいですね。その中でも一番少ない工数で価値を提供できる手段としてFlutterが選ばれやすいですが、Flutterを扱えるエンジニアも潤沢にいるわけではありません。モバイルにおけるクロスプラットフォームの難点として、モバイルプラットフォーム、iOS、Android、それぞれに熟知していないと、自然なアプリを作るのが難しい。つまり、知らないといけないことが多いのです。
スタートアップのようなエンジニアパワーが希少な会社はクロスプラットフォームでの開発を、DX化の一環でツールを作りたい、お客様向けのアプリをMVP(実用最小限の製品)で作りたいという場合はノーコードでの開発を、iOSとAndroidの両方のエンジニアを抱えている会社はどちらもネイティブでの開発を、という形になりそうです。
ハードウェア向けAndroidの状況
関: IoT向けOSとして出ていたAndroid Thingsはどうなるのでしょうか。
日高: 昔からAndroidが興味を持っていた分野ですが、Android Thingsはうまくいかなかったので撤退しています。Googleは、まずはやってみて、駄目だったら撤退し、また別の形で再チャレンジをするという文化ですよね。この分野については、Google Nestという形で再スタートが始まっています。
自動車向けのAndroid AutoやAndroid Automotive OSもメーカーが開発していますが、まだ採用事例は多くありません。Android TVはモバイルから飛び出て拡張したエンターテインメント分野です。この分野ではクラウドとローカルの使い分けが重要です。TV向けのChromecastでは、アプリはローカルにインストールしてコンテンツはクラウドからストリーミングします。アプリを追加できる体験はこれまでTVにはなかったものです。
今後、5Gが当たり前の世界になれば遅延なども解消されるので、もっとクラウドにマシンパワーを集めるアプローチが現実的になるかもしれません。そうなれば遠隔医療や(クラウドでの)リッチなゲームプレイなども考えられ、スマートフォンを取り巻く環境も変わりそうです。
関: Googleが提供しているAR開発プラットフォームのARCoreはどんな状況なのでしょうか?
日高: AndroidとiOSの両方をサポートしているARCoreは、デバイスごとにカメラの差が大きく、チューニングも異なることから、やりにくい状況ではあります。VTuber向けのアバター活用などもありますがARCoreで成功しているのはPokémon GOの「AR+」ぐらいではないでしょうか。
注目されていたマインクラフトの完全新作ARゲーム「Minecraft Earth」というのがあったのですが、このコロナ禍の状況でリアルで集まるのが難しい状況になってしまいました。
Androidは今後どうなるのか
関: 今後Androidはどんな方向に進化していこうとしているのでしょうか?
日高: Androidを搭載した製品は分野ごとに最適化が進んでいます。Googleのミッションは「世界中の情報を整理し、使う」という点にあり、検索のインタフェースを多面的に押さえたい、というのがあります。その中でもAndroidスマートフォンはユーザーの手のひらを押さえる位置付けですね。Google Nestが家の中を押さえるのも同様です。そんな形で、点から面へ世界中どこでも検索をやろうとしているのがGoogleです。
Androidの主な役割は、スマートフォンの便利さを多分野へ広げていくことです。Googleと他社が競合する部分もでてきますが、いろんな企業と協力して市場を作る姿勢が鮮明です。技術を武器にしたテックカンパニーらしい姿を目指しているのでしょう。
直近の未来はさまざまなデバイスとの連携が中心になりそうです。TVだとGoogle HomeやChromecastと一緒に使ったり、自動車ではAndroid Autoを使ったりという具合です。スマートフォンを使ったサービスで流行ったものはいろいろありますが、あくまで情報提供するインタフェースとしての価値は変わりません。時代によってデジタルコンテンツは変化していますが、生活を豊かにするという面では、Androidもスマートフォンも同じミッションと言えます。
余談ですが、AndroidのコードネームはアルファベットのCからはじまって、今はRまできています[1] 。これが、Zになったらその次はどうなるんだろう? というのはありますね(笑) 。
Androidのコミュニティ状況
関: Andoidのコミュニティは、どんな状況なのでしょうか?
日高: Androidのコミュニティですが、開発者向けのカンファレンスは、国内はコミュニティが中心となるDroidKaigi、海外だとGoogle I/OやAndroid Dev Summitが公式に開催されています。世界各国でもコミュニティイベントがありますが、日本国内だとGDG(Google Developers Groups )主催のイベントが盛んですね。ほかは勉強会といった参加しやすいサイズのものが多いです。
関: Androidで困ったときに質問できるプラットフォームなどはありますか?
日高: Googleが提供しているエキスパートプログラム[2] があり、彼らもイベントに登場します。そこで質問をすると回答が得られるかもしれません。Android開発で活躍している人たちや情報発信をしている人たちは、ブログやポッドキャスト、ニュースをまとめての発信するといった形で情報提供をしていることが多いです。
英語で検索をすれば無料の教材が出てきたりしますが、変化が激しいこともあり、ローカルコンテンツ、とくに日本語のコンテンツはなかなか増えづらいですね。
写真1 日高さん(左)にはリモートで対応いただきました
読者へのメッセージ
関: 最後に、本誌読者のみなさんへのメッセージをいただいてもよいでしょうか?
日高: Androidアプリはスマートフォンの中で動きが完結しますし、触ってみて動くなど、とっつきやすさはあります。今どきのコードを書くにも良い環境が整いつつあります。地に足がついた形でスキルを伸ばせるプラットフォームとも言えます。アプリを世の中に出す体験はなかなかできないので、ぜひチャレンジしてみてください。
特集1
イミュータブルデータモデルで始める
実践データモデリング
業務の複雑さをシンプルに表現!
特集2
いまはじめるFlutter
iOS/Android両対応アプリを開発してみよう
特集3
作って学ぶWeb3
ブロックチェーン、スマートコントラクト、NFT