プロダクトの変遷でアーキテクチャーがどう変わったか
前口上
Web開発においてとりうるアーキテクチャーにはいくつかパターンがあります。
サーバー構成をモノリスかマイクロサービスかで分ける場合もありますし、データベースを内製で持つか外部のmBaaSに任せるかで変わる場合もあるでしょう。認証部分をOAuthに切り出したり、全文検索部分だけ外部サービスを使うこともありますね。
とある時は新しい技術Aを使うことがいけてるという時があれば、少し経つとその技術が終わったことにされる場合もあります。
こういった技術のトレンドにはその時にビジネスチャンスが広がったプロダクトのトレンドに影響されていることも多く、サーバー・クライアント比率の観点で見るとうまく整理できることに気づいたのでまとめてみます。
System of RecordとSystem of Engagement
のっけから人様の資料で恐縮ですが一休のCTOのIto Naoyaさんの資料がよくまとまっているので載せておきます。
資料の要旨を書いておくと
- システムはSystem of RecordとSystem of Engagementの二つに分類できる
- 立ち上げ期はSystem of Record、成熟期はSystem of Engagementの要求比率が高い
になります。
System of Recordはバックエンド重視の業務システムの世界です。システムへの深い理解が必要で、立ち上げ期は棚に商品を載せることを優先した方が死なずに済むということです。
System of Engagementはフロントエンド重視の開発です。ユーザーの使いやすさが大事になります。そのWebサービスのジャンルでできることが頭打ちになってしまうと、こちらの開発比率が上がります。
誤解してもらいたくないのはあくまで傾向があるというだけで全てのシステムがどちらかに分類できるわけではありません。日本は中国などに比べて競合が少ないと言われることが多いですが、最近はどのサービスでも競合が数個は競合がいるようには思います。
最初の0→1の段階からSystem of Record、System of Engagement両方が高いレベルで要求されるような血を血で洗う開発もあるかもしれません。
アプリ開発はSystem of Engagement
ところでIT企業の開発は別にWebサービスだけではありません。新しく出たハードウェアだったり、技術的ブレークスルーによってプロダクトのトレンドが年々移り変わってきています。
以前DXについて語った資料に少し付け加えたのでおいておきます。
一番特徴的なのはスマートフォンの登場なのではないでしょうか。アプリの開発はどちらかというとSystem of Engagementだと思います。
ヤフオクの牙城にメルカリが食い込んだようにすでにあるジャンルをアプリ化することで競合優位性が築けました。
Firebaseのような外部データストアはSystem of Engagement優位なクライアント重視の開発でバックエンドの開発を減らせる魅力的なオプションだったように思います。
B向けSaaSは(どちらかというと) System of Record
一方でここ数年のプロダクトトレンドで一番大きかったのはSaaSだと思います。世界情勢が不安定になって少しお通夜な雰囲気が出ていますが計測しやすく将来性があります。
SaaSは所詮ビジネスモデルでしかないので色んなサービスがあるのですが、王道はB向けのサービスです。業種を絞るか絞らないかでホリゾンタルSaaS、バーティカルSaaSと分けたりします。
どちらかというとSaaSは業務システムよりでSystem of Recordであることが多いです。建築向けSaaSなら建築の知識を不動産向けSaaSなら不動産の知識を要求されます。
そしてここがポイントなのですが、社用スマホを支給している会社もあるものの、ビジネス用途というと第一に支給されるのはパソコンで意外とスマホ対応をかっちりやらない業態も多いです。
つまり、スマートフォン登場時はC向け重視・クライアント重視だったものが、SaaS時代ではB向け重視・サーバー重視になったのではないかというのが自分の仮説です。端末対応だけが競合優位性ではないです。
サーバーかクライアントで捉えてみる
先程の図に書いたプロダクトトレンドをサーバー重視かクライアント重視かで捉えてみましょう。
ソーシャルゲームの開発はサーバー重視でしょうか、クライアント重視でしょうか。古典的な据え置きゲームがWeb APIでの通信を使わなかった部分を使うようにしたのがソシャゲだったように思います。半々程度でしょうか。
IoTの開発はどうでしょうか。どちらかというと愚直にデータを送信する用途が多く、エッジにハードウェアがいることが最重要なクライアント重視、バックエンドはmBaaSであることが多かったように思います。
機械学習は自動運転などではエッジが重要なものの、Web開発のパーソナライズなどでは集計できたり、全てのユーザーのデータを一気に見れることが大事でサーバー重視だったように思います。
VRの開発はどうでしょうか。メタバースだと同期が重要ですがVR機能単体で見ると光学系が大事でクライアント重視な気はしますね。
IT業界のプロダクトトレンドを追うとサーバー重視かクライアント重視か、System of RecordよりかSystem of Engagementよりかは時系列で随時入れ替わっている感覚があります。ARグラス時代にはまたSystem of Engagement重視になるかもしれないですね。
SaaS時代にRailsはオワコンか
こうして見るとSaaSはSystem of Recordよりであることが多く、業務理解の深さを競合優位性にしている関係でバックエンド重視、古典的MVCフレームワークに回帰してきたのがSaaS時代のトレンドであったように思います。
アプリやIoTの開発で将来的にSystem of Recordを要求されるような複雑さが不要なシステムではFrebaseのようなNoSQLよりの外部データストアが合理的だったかもしれません。
一方でWebで閉じたシステムの開発では0→1においてSystem of Recordが優位であることが経験的に知られており、その先でもSystem of Recordの深さで勝負することが決まっているようなWebサービスではRDBMSとMVCフレームワークを選択することが合理的であるように思います。
RailsやLaravel, DjangoといったMVCフレームワークはしばしば終わったことにされますが、重要性が再認識され回帰してきたのがSaaS時代のトレンドではなかったのかと。
組織のアーキテクチャーを考えるシーンが増えたのはバックエンドに偏重したから
これはそのまま組織運営の難しさにも反映されます。
単純に資金調達の額が増えて大規模な開発が日本のスタートアップでも増えてきたというのもあるのですが、例えば20人の開発部があって、アプリ開発時代は10:10でアプリとバックエンドが別れていたかもしれません。
機械学習がビジネス上優位だったときではどうでしょうか。アプリ、Web開発、機械学習で8:8:4などで別れていたかもしれないですね。
モジュラーモノリス化やチームトポロジーを考える企業が増えてきたのは極論全振り20人でWeb開発をするような会社が増えてきたからのようにも感じます。
SPA単体は競合優位性になりうるか
ここまでバックエンドを主に論じてきたのでWebフロントエンドについても触れておきましょう。
Webフロントにおけるここ10年での進化は何かと言われると何を思い浮かべるでしょうか?ReactやVue.jsによるSPAがそれだったと思います。モバイルアプリと同じようにSPAによるUXの向上は一つの優位性でしょう。
一方で色々乱立していたフレームワークがReactやVue.jsに集約されてきたように感じます。TypeScript化やReact Hooksなどの進化はあるのですがReactが最初に出た2013年からそろそろ10年みたいです。
知財の判例を見返すと、HTMLに類似性があったサイボウズ事件でも著作権侵害が認められなかったみたいなんですよね。 SPAによるUXの向上は一つの優位性ではあるのですが、結構コピーされても裁判に勝てないというのが過去の判例みたいです。
中国の資金調達状況を見るとブラウザで動くCADソフトなんかが出てきたりしていて、ステートのやりくりの仕方はどの会社も段々とコツをつかんできて、WebAssemblyを使ったパフォーマンスが要求されるようなものが今後は優位性になっていくのかもしれません。
まとめ
まとめです
- システムはSystem of RecordとSystem of Engagementの二つに分類できる
- アプリ開発はSystem of Engagement
- SaaS開発は(どちらかというと) System of Record
- プロダクトトレンドがサーバー重視かクライアント重視かは時系列で随時入れ替わっている
- チームトポロジーを考える企業が増えたのはWeb開発に全振りしたから
- SPAは優位性だが業務システムは著作権上不利かも