株式会社アイスタイルは今年創業25周年を迎え、@cosmeを初めとする多種多様なサービスを提供する中で、開発における第1推奨言語をTypeScriptと定めました。
アイスタイルでは、主に@cosmeの開発に伴って、バッチ、BFF、API基盤、フロントエンド開発に至るまで、多岐に渡るシーンでTypeScriptでの開発が行われてきました。
この記事では、@cosmeメディアにおけるPC総合トップの基幹リプレース、全体のバッチリプレースなどの経験があるメディア開発グループ・エンジニアのmuratakが、弊社でTypeScriptを選定した理由をCTO・寺田の監修のもと皆さんと一緒に振り返ってみたいと思います。
この記事を通しましては、言語の技術選定で迷っている方の参考になりましたら幸いです。
■総論
アイスタイルでは今年に入って開発に利用する推奨言語の規定を定め、ウェブ開発領域においては、第1推奨言語をTypeScript、第2推奨言語をJavaとしています。
■きっかけ
アイスタイルでは旧来から、適材適所の思想でプロダクトやチームの個別の裁量、判断で言語選定をおこなってきたという背景があります。
ただ、その結果として以下のような問題に悩まされることになったのです。
・極小数のチームで利用していた言語が、人の入れ替わりなどにより、さらに使える人や使う箇所が縮小しメンテナンスが困難になっていった
・障害対応や技術学習においてチーム間の分断が生まれ、チームを横断しての協力やスキル向上のボトルネックになっていた
これらの状況の打開策として、
アイスタイルで利用する言語をある程度絞り込む決定がなされました。
※ただし選定の一旦のスコープはウェブアプリケーション領域に限定し、前提や特性が大きく異なるネイティブアプリケーション領域やデータ分析・機械学習領域においては別検討とした
■選定の仕方
アイスタイル全社で用いる言語選定の方法として、
以下のStep 1〜 3を踏んで最終的な決定がなされました。
・Step1:すでに利用履歴がある言語を基本的な候補とした
※前提となる課題ポイントから考えて、これまで使ったことのない新規言語に切り替える必要性や需要はなく、切り替える場合冗長なコストになってしまうため完全新規言語は候補に含めなかった
・Step2:学習コスト、可読性、堅牢性、市場規模、トレンドなど一般的評価観点で全14観点の評価項目を定め、候補となる各言語に対してスコアリングをおこなった
・Step3:さらにアイスタイルの事業観点や開発組織の業務観点など比較的定性評価に近いポイントで追加の濃淡付けをおこなった
■Step3をもうちょっと深堀り
その1. 事業観点
アイスタイルの主力事業としてメディア事業、EC事業、マーケティング支援事業などがあるが、メディアとECに関しては検索流入が重要ポイントになります。
ウェブアプリケーションとしてUIやユーザービリティを向上していくにはおのずとJavaScriptの活用が必要になってきますが、レンダリングをJavaScript任せにしてしまうとSEO観点では不都合になってしまう恐れがあると考えました。
つまり、GoogleのクローラーはJavaScript処理可能と公式アナウンス(参考:https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics) はある一方で、Google以外の検索にも幅広く対応するという観点では、
プリレンダリングされたページ構成のほうが好ましいと考えました。
この相反する需要を同時に満たすためにサーバーサイドJavaScript(NodeJS)によるSSRが最適であると判断がなされました。
その2. 組織観点
アイスタイルでは開発組織内を担当事業領域などでいくつかのチームに分けていますが、各チームでフロントエンド系システムとバックエンド系システムを同時に担当していることも多々あります。また、高頻度でチーム間の異動があるというわけではありませんが、いろいろな領域の経験を詰むことはスキルアップやキャリアアップに繋がると考え、組織内の人材の流動性をある程度確保したいと考えています。そのためあえてバックエンドシステムはこの言語、フロントエンドシステムはこの言語、のように分離して規定をせず、全システム統一での推奨規定としました。
※前述の通りウェブ系かネイティブアプリ系かデータ分析/機械学習系かはそれ以上に特性の違いが大きいのでウェブ系としての統一規定としています。
その3. 段階的移行、ギャップ低減の観点
別の観点で、JavaScriptとTypeScriptを比較した場合、Step2の評価によりTypeScriptのほうが有利(アイスタイルへのマッチ度が高い)であると評価しましたが、JavaScriptとTypeScriptはそもそも共存や段階移行が可能であり、もともとPHPが過半数を締めていた状態から学習や順応面でなるべく無理なく移行ができるよう、JavaScript化フェーズを挟んでTypeScript移行することを可とした背景があります。
※PHPとJavaScriptで比較した場合、どちらも動的型付け言語であり、さらにES6以降はclassが利用できるためPHPエンジニアにとってJavaScriptシフトのハードルは低いと見積もりました。
また、すべてのケースにおいてTypeScriptが最適であるとは限らないと想定し、Step2でTypeScriptと並んで総合スコアが高く、TypeScriptとの特性の比較がある程度補完関係にあったJavaを第2推奨言語としました。
■結論
結論として、TypeScriptは(アイスタイルとしての)客観的スコアリングでも総合評価が高く、JavaScriptからTypeScriptに(≒動的型付け言語から静的型付け言語に)段階的に移行可能である点、SSRによりSEOフレンドリーである点を鑑みてアイスタイルの事業展開や現開発組織体制に一番マッチしていると判断し、第1推奨言語に選定がなされました。
■終わりに
アイスタイルでは引き続きTypeScriptを第1推奨言語として選定して開発を推し進めていくとともに、今後社内だけではなく、国内外におけるJavaScript/ TypeScriptコミュニティへの貢献と、技術を通じた価値創造の可能性を広げていきたいと考えています。
アイスタイルは今後も、国内外の技術コミュニティとの関わりを大切にしながら、より良いサービスの提供を目指してまいります。