ソフトウェア

Discordはどのようにして40人のエンジニアで1億3000万人以上にサービスを提供しているのか?


Discord」は、主にゲーマーを対象とした音声通話・チャットアプリです。ブラウザ上で動作するほか、WindowsやiOS、AndroidなどほとんどのOSにアプリを配信していることを始め、Slackのようなテキストチャンネルと低レイテンシのボイスチャンネルを合わせ持っていたり、ビデオ通話や画面共有が簡単に行えたりするなどの特徴が人気を呼び、2015年に登場してから3年間で1億3000万人以上が使用するアプリに成長しました。そのDiscordはたった40人で開発されているのですが、どのようにして少人数でありながらさまざまなプラットフォームでアプリを展開できているのかについて公式ブログで解説されています。

Why Discord is Sticking with React Native - Discord Blog
https://blog.discordapp.com/why-discord-is-sticking-with-react-native-ccc34be0d427

Discordのウェブアプリは主に「React」と「Flux」というアーキテクチャを使用して開発されています。DiscordのiOSバージョンはウェブページ向けの画面描画ライブラリ「React」をアプリ上で使用する「React Native」を用いて作成されているのですが、このことが少人数開発の大きなポイントとなっているとのこと。

もともとDiscordのウェブアプリがReactを使用して作られていたため、React Nativeを使用すればウェブアプリのコードの大部分を再利用できるという見込みがありました。そのため、Discordの開発チームはReact.js Conf 2015でReact Nativeが発表されてすぐにReact Nativeを使用してiOSアプリを作ってみたそうです。そしてその簡単さに驚かされたとのこと。また、Androidにも同じコードをほとんど使い回せるので、iOSアプリをAndroidに移植するのにたった2日しかかからなかったそうです。


もっとも、Android版を作成してすぐにパフォーマンスなどに重大な問題があることを発見したため、AndroidではReact Nativeを使用するのはやめたとのこと。しかし、Android版は問題があったとしても、React Nativeを使用したiOSアプリ作成手法はかなり理想のものだと感じられたそうです。

React Nativeを「AndroidとiOSを同時に開発するためのライブラリ」だと捉えている人には奇妙に聞こえるかもしれませんが、iOS版だけであってもReact Nativeを採用することには十分なメリットを感じたとのこと。例えば、ReactとFluxというアーキテクチャはウェブアプリと共通のものなのでデータ構造やライブラリを共通のものにしたり、eslintを初めとするフロントエンド用のツールやインフラを使い回せたりできるほか、React NativeエンジニアがAndroidのことを度外視してiOSアプリに注力できるというメリットが挙げられます。

2018年8月現在、DiscordのiOSアプリは毎日数百万人が使用するアプリになっており、そのレビューは25万件を超えて平均4.8の星がついています。そして、このiOSアプリはたった2人のエンジニアによって開発されています。React Nativeによってチームを少人数に抑え、効率的にDiscordをメンテナンスできています。


React Nativeは実行前に全てのコードを読み込んで解析するためにロード時間が長くなるなど特有の問題点もあるものの、全体を見ればiOSアプリとウェブアプリで大部分のコードを共有できるというメリットが非常に大きなものとなっています。特にFluxデザインパターンのうちstoreとactionと呼ばれる部分のコードは98%が共通化されているなど、React Nativeは信じられないほど効率的なフレームワークということです。

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

・関連記事
インターネット上で流行る画像や言い回しはどのように生まれ拡散していくのか? - GIGAZINE

インディーズゲームの開発者が初めてゲームをリリースした1年間を振り返る - GIGAZINE

F1を支えている輸送の裏側とは? - GIGAZINE

プログラマーたちが使った開発ツール2016年トップ50のランキング「Top 50 Developer Tools of 2016」をStackShareが発表 - GIGAZINE

「給料が多いほど仕事が好き」「よく使うプログラミング言語」「開発環境」「開発者歴」「OS」など世界中の開発者の統計をまとめた「Stack Overflow Developer Survey 2016」 - GIGAZINE

MicrosoftがiOS/Android/Windows/Macアプリの並行開発を可能にする「Xamarin」の買収を発表 - GIGAZINE

in モバイル,   ソフトウェア,   ネットサービス,   ウェブアプリ, Posted by log1d_ts

You can read the machine translated English article here.