「地獄のアプリケーションの開発」を経験した前Uberのエンジニアがその真実を言う – GIGAZINE

1 min read



大規模なソフトウェア開発は、多くの人々が参加し、巨額の資金がかかりますが、どのような場合内外の要因によって開発現場が地獄化する場合もあります。最近では、みずほ銀行の基幹システム開発書籍化されるほど苦難の道を歩んだのは、IT業界で知られていますが、そのような「地獄の開発現場」かつてUberにも存在した全UberのエンジニアであるMcLaren Stanley氏が当時の状況を振り返っています。

の発端は、Loren Brichter氏の「長い間、Webアプリケーションは、OSにインストールして使用するアプリケーションのように快適に動作するように挑戦していたが、過去数年の間に、その立場は完全に逆転してしまいました。むしろ、今日のアプリケーションは、不利な程度です」とツイートした。

「Uberアプリのサイズは331MBです」というBrichter氏のツイートにStanley氏は「Uberアプリがそれほど大きな理由は、クイックです。目標-Cバージョンのアプリケーションのサイズは、Swiftのバージョンの3分の1でした。 」と答えてください。


この交換をはじめとStanley氏は、「これまで巻き込まれた不幸の中で最悪の開発現場の悲劇」の話を始めました。時は2016年にまで遡ります。Uberは当時急成長していたが、一方、アプリケーション開発の問題も抱えていた組織の成長と一緒にアプリケーションの構造は、複雑になっており、バグやデザインの悪化を見ることができようになった。これらの問題を解決するために、「アプリケーションを最初から開発を再」という決定が下さ “先々 5年間Uberモバイル開発を担当するのに十分な「アーキテクチャの設計が開始されたとStanley氏は述べています。

iOSアプリの開発言語でSwiftが選択にありましたが、Swiftは多くの問題を抱えていたために使用が禁止されたもの。 しかし、アーキテクチャチームはSwift問題はほとんどObjective-Cとの相互運用において、純粋なSwiftアプリを開発すれば問題はないと判断した。 また、AndroidアプリとiOSアプリのアーキテクチャを統一しようとする意図で、最終的にSwift開発言語として使用することが決まったとのこと。


アプリの開発開始から数ヶ月の間には、プロジェクトの成功のように考えたそうです。 しかし、コアチームの開発で全社的な開発プロジェクトの方向を転換し始めたあたりで歯車が狂い始めたStanley氏。 当時Swiftコンパイラが非常に遅い速度で役に立たず、アプリケーションのビルドにかかる時間が長くなりしまった結果、デバッグなどがまったく動作しなくなってしまったこと。 また、当時のSwiftは、ライブラリを動的にのみリンクすることができないため、アプリケーションを起動するために、最大12秒かかるようになってしまったStanley氏は述べています。

Stanley氏は、チームの監督に「プロジェクトを終了する必要がある」必要がある」としたが、既に計り知れない人的資源と資金を費やしてしまっており、元に戻すことができる状況がありません。また、プロジェクトを放棄することは引越しやその上司、さらに役員の責任問題も発展します。だから、開発チームは反撃を図るため適材適所の人材配置し、致命的な問題に対処し始めたこと。この時点で、すでに予定されていたアプリのリリースは数週間経過していたため、チームは、企業秘密保持契約を結んで開発に助けを求めたが、その企業も問題を解決することができません。チームは、コードの25%に相当する部分の書き換えを強要したもの。


チームの努力で、さまざまな問題の解決の糸口をつかむ開始したが、モバイルデータ通信を利用したアプリケーションのインストール時に存在していた100MBのサイズ制限を克服することができなかったStanley氏。 iOS 9以降でサポートされるOSを合わせると新機能アプリケーションのサイズを圧縮することができたが、当時iOS 8の利用者は、数千万人という大規模なものであり、トリミングする大きすぎます。 しかし、チームは技術的な問題でやむを得ずiOS 8のサポートを中止し、iOS 9以降をサポートするという決定を下しました。

アプリのリリースは盛大に行わ最初は好評を博していました。 しかし、新しいアプリケーションは、ユーザーがピックアップポイントを手動で指定しない場合、「最後にGPSの位置情報を取得した場所 “ピックアップポイントになる仕様だったので、現在位置と他の位置のピックアップポイントになってしまい、ユーザの評価はますます悪くなって行ったとのこと。 チームは仕方なく、バックグラウンドで位置情報を取得できるように、アプリケーションの仕様を変更したが、これはUberは、ユーザーから「悪い会社」扱いされ始めたとStanley氏は回顧します。

ユーザーは、これらの仕様変更を受けてUberアプリの位置情報取得を許可しないようになってしまいましたが、アプリが位置情報の取得を前提に設計されていたため、状況はますます悪化した。 また、ドナルド・トランプ大統領が発表したイスラム圏の入国とシリア難民受け入れの停止を定める大統領令のデモがジョン・F・ケネディ空港で開かれたときUber」ドライバが抗議を利用て利益」を防止するために割増賃金を一時停止すると発表ししたが、この決定が「デモを拡散させようとしている」と世界に取る “#DeleteUber「活動に発展。Uberの非難は徐々に強くなり始めました。

Uberアカウントの削除を促す「#DeleteUber」がトレンドになった理由は? – GIGAZINE


これらの外部要因だけでなく、内部的にも「Swift派」と「Objective-C波」派閥割れが発生したとのこと。Swift売るSwiftに執着して、問題を否定し、Objective-C波は解決策を提示せずに文句だけ放つされて、会社は緊張状態にあったとStanley氏は述べています。

アプリケーションのサイズの問題もまだ完全解決には至っていませんでした。 週に1.3MBの速度でアプリケーションのサイズが増加しており、週間後にはまた、モバイルデータ通信による制限に達したしまうタイミングで内部データの科学者が制限対象になった場合の影響を分析する。 その結果は、Stanley氏が「破滅的だった」と評価通りUberアプリを初めてダウンロードするほとんどの人が携帯電話のデータ通信を利用しているということでした。

チームは、アプリケーションのサイズを何とか減らすためにコードを行単位調べ、不要な機能を削除しました。 チームは限界に達し、疲弊していたが、誰も問題に集中していたもの。 このような状況は、「優秀なエンジニアが光り始めたとき、「だったStanley氏は語っており、事実、エンジニアのインスピレーションでアプリケーションのコンパイル最適化されて11MBどんなアプリサイズ圧縮に成功。 チームは他にも様々な問題を解決していきましたが、Uberの成長速度は、素晴らしいアプリのサイズはますます大きくなっていきました。


結局は、Appleのダウンロード制限を150MBまで緩和してSwiftコンパイル時にアプリケーションサイズの最適化オプションを提供することで、開発の余裕が生まれたこと。 「もしAppleが制限を緩和していない場合、我々はコードをObjective-Cでの再構築を余儀なくされたもの」とStanley氏は述べています。

Stanley氏は「中間の多くの人が燃えています。多くの費用が投入されて痛恨の失敗となりましたが、それでも新しいアプリの開発に価値があったと思います。新しいUberに入社したエンジニアは、アーキテクチャの一貫性を愛して、その背後にある失敗を知ることができません」と、当時の失敗を肯定的に評価する。 Stanley氏は、この経験から「完璧なプログラミング言語は存在しないので、長所と短所を理解派閥戦争に発展していないこと」「障害ポイントを設定して到達した場合、間違いにご注意する」「批判だけで解決方法を提示していない人はならない」「一つの仕事に忠実で大きな問題を起こさない」とアドバイスを提供しています。

この記事のタイトルとURLをコピー

Nakama Shizuka

"フリーランスの学生。微妙に魅力的な料理の達人。トータルベーコンの先駆者。旅行の第一人者。自慢のオーガナイザー。"

You May Also Like

More From Author

+ There are no comments

Add yours