🤖

DroidKaigi 2022 セッションレポート #2

2022/10/18に公開

株式会社TOKIUMでAndroidエンジニアをしている渡邊です!このシリーズでは、10月5日(水)-7日(金)の3日間に渡り開催されたDroidKaigi 2022にて、聴講したセッションの中でも印象に残ったモノをいくつか紹介しています。

私自身、DroidKaigiへの参加は今回が初めてであり、非常にワクワクしながら当日を迎えました!

この記事では、以下の2セッションについてご紹介します。

長期運用アプリのリファクタリングを考える

解説

株式会社メルペイのAndroidエンジニア shinmyさんによる、リファクタリングに関するセッションです。

アプリを長期運用するためには、担当者の入れ替わりや機能開発が容易である状態を保つ必要があることから、リファクタリングの重要性について説明されました。続いて、実際にアプリ アーキテクチャ ガイドに沿った設計でJetpack Composeを導入するデモが行われました。リファクタリングは ①理解・整理 ②分離 ③置き換え の3つのフェーズに分け、各フェーズで考慮すべきポイントについて、具体的なコードやアーキテクチャ図を用いて丁寧に解説いただきました。

感想

理解・整理フェーズでは、コードを崩しては組み立てることを何回か繰り返していました。この方法は斬新であり、同時にかなり実用的だと感じました。

私自身、ゴッドアクティビティをアーキテクチャガイドに沿ってリファクタリングした経験がありますが、複雑な既存コードの理解を進めながら、整然とコミットするのは難しいと感じていました。実際には、リファクタ対象となるコードの全体像を理解してはじめて、リファクタリングの算段を立てることができるからです。

したがって、shinmiyさんが勧める「何回か組み立て直す」前提でリファクタリングする方法は理にかなっており、今後試してみたいと思いました💪

また、置き換えフェーズでは、ActivityからJetpack ComposeへのUIのリファクタリングが登場しました。こちらは、今後Jetpack Composeを導入する方にとって、とくに参考になる内容でした!

Why Projects Succeed: Lessons Learned from the Android OS

YouTubeのvideoIDが不正ですhttps://youtu.be/5pq5pR2cD3c?t=1629

解説

Google LLCから、AndroidグラフィックチームのChet HaaseさんとAndroidツールキットチームのRomain Guyさんによる、Android OSの開発秘話に関するセッションです。

Android OSが誕生してから現在30億台の端末に普及するまでの歴史を紹介し、プロジェクト成功の要素を分析するという内容でした。

セッションの前半はAndroid OSの歴史についてです。Androidの原点は、2003年にFotoFarm社がデジカメ向けOSとして着想したものです。しかし資金調達に難航したため、モバイル端末向けOSに方向転換し、2005年にはGoogleによる買収が成立しました。本格的な開発が始まったのはその後です。カーネルとドライバを始めとして、UIフレームワークやSDK、バックグラウンドで実行されるあらゆるサービスの開発、さらにアプリ用のマーケット(今日のGoogle Play ストア)の整備なども行いました。そして2008年9月にAndroid 1.0をリリース。ほぼ同時期に、初のAndroidスマートフォンであるT-Mobile G1もリリースされました。競合ひしめく中、Androidは2010年から急成長を遂げ、やがてスマートフォンとフィーチャーフォンを含めたモバイル端末向けOSの市場シェアでトップに躍り出ました。

セッションの後半では、Android OSプロジェクトの成功について以下の3つの観点から解説がなされました。

  • チーム
    Android OS開発チームには、モバイル端末の開発経験が豊富なメンバーが多数いたため、OS開発における課題を予見し、解決する力が備わっていました。また、チームはGoogleの他部署から独立しており、Android 1.0のリリースに向けて各々のタスクに集中する環境が整っていました。以上から、適した人材を確保することや、リソースを集中し正念場に耐えるような組織体制を整えることの重要さについて説明されました。
  • 意思決定
    Android OSに持たせる機能選定や、アプリ開発に参入しやすくするためのツール選定、オープンソースでOSを開発するという事業判断など、数々の重要な意思決定のもとに成功が実現しました。以上から、一貫したビジョンに基づいて意思決定を行い、プロダクトのリリースまで走り続けることの重要さについて説明されました。
  • タイミング
    高性能なモバイル端末が普及したことや、競合iPhoneの登場によってタッチスクリーンが当たり前の機能としてユーザに認知されたことなど、外部要因に後押しされた側面もありました。以上から、コントロールできない運の要素もあることを認め、競争を受け入れ、その上でプロダクトを市場に投入するタイミングを見極めることの重要さについて説明されました。

感想

エンジニアのみならず、プロダクト開発や組織づくりに関わるすべての方にとって学びになる内容だったと感じています。

また、毎日Androidアプリを開発している私にとって、本セッションは驚きの連続でした!

もっとも衝撃的だったのは、投資家に向けてピッチを行った2004~2005年時点では、チームはモバイル端末向けのOSと呼べるものを持っていなかったことです。代わりに、わずか3000行のJavaScriptコードとデスクトップマシン上のエミュレータを用いてOSのデモを行い、出資や買収のオファーを勝ち取っています。アイディアを伝えるには、これで十分ということでしょう💡

Android OS開発チーム初期メンバーの一人はこのように語ったそうです。

While you're busy polishing it in the lab, somebody's going to come out with something and make you irrelevant. - Ficus Kirkpatrick
(ラボでアイディアをこねくり回しているうちに、成果物をもった他の人が現れて、あなたは見向きもされなくなるだろう。)

チャンスを手繰り寄せるためにはスピードの追求が不可欠であることを、改めて思い知りました🚀

全体を通して

私自身Android専門のエンジニアとして働き始めたのはごく最近のことで、今回のカンファレンスで得た知見は、すべてが新鮮に感じられました。とくにリファクタリングやチームビルディングに関するセッションは、自社にもそのまま適用できそうな話が多く、大変勉強になりました。また、セッション後の Ask the Speaker の時間や懇親会で他社のエンジニアと意見交換ができたのも、今回の大きな収穫です。

運営スタッフの皆様、スポンサー企業様、今回のカンファレンスで知り合うことができた皆様、本当にありがとうございました!

株式会社TOKIUM テックブログ

Discussion