DHHやSvelteの脱TypeScriptから学ぶ、JavaScript本来の柔軟性を取り戻す方法

TypeScriptとJavaScriptの対比から見る柔軟な開発思想の再考 プログラミング言語

近年、Web開発の文脈において「TypeScriptは本当に必須なのか」という問いが再び注目されています。
特にDHH(David Heinemeier Hansson)がTypeScriptに対して慎重な姿勢を示したことや、Svelteが型システムへの依存度を相対的に抑えた設計思想は、単なる流行ではなく設計思想の揺り戻しとして捉えるべき現象です。
ここで語られる「脱TypeScript」とは、単なる排除ではなく、JavaScript本来の柔軟性をどこまで信頼するかという再評価のプロセスです。

従来のフロントエンド開発では、型安全性や大規模開発での保守性を理由にTypeScriptの導入が半ば標準となってきました。
しかし一方で、型定義の維持コストや抽象化の増大が、開発速度や直感的な表現力を損なっているケースも無視できません。
このトレードオフをどう捉えるかが、現在の重要な論点になっています。

JavaScriptは本来、実行時の柔軟性と表現力に強みを持つ言語です。
その特性を過度に静的型で拘束することが、必ずしも最適解とは限りません。
特にSvelteのようにコンパイル時最適化を別の方向で追求するアプローチは、「型で守る」のではなく「設計で守る」という思想への回帰とも解釈できます。

本記事では、DHHやSvelteの思想的背景を手がかりにしながら、JavaScript本来の柔軟性をどのように現代的な開発へ取り戻すかを論理的に整理していきます。
単なるTypeScript批判ではなく、設計判断としての選択肢を再構築する視点を提示します。

DHHとSvelteが示す脱TypeScriptの潮流とJavaScript再評価

DHHとSvelteの思想から見るTypeScript離れの背景とJavaScript再評価

DHHの思想背景と開発哲学

DHH(David Heinemeier Hansson)の開発哲学は、従来から一貫して「複雑性の抑制」と「実用性の最大化」に重点を置いています。
彼が設計したRuby on Railsにおいても、過剰な抽象化や設計上の厳密性よりも、開発者が短時間で価値を提供できる構造が優先されています。
この思想の根底には、ソフトウェア開発における最大のコストはコードそのものではなく、認知負荷であるという明確な前提があります。

TypeScriptに対する慎重な姿勢も、この延長線上に位置付けられます。
静的型付けは確かに大規模開発における安全性を高めますが、その一方で型定義の維持や型システムへの依存が開発速度や柔軟性を制約する場合があります。
DHHの視点では、これらの追加コストがプロジェクトの規模や性質に対して常に正当化されるわけではないという判断が重要になります。

また彼の思想は、フレームワークや言語機能に対する過度な依存を避け、実行時の挙動をシンプルに保つことにもつながっています。
これは結果として、JavaScriptのような動的型付け言語が持つ「曖昧さを許容する設計」を再評価する流れとも一致しています。
つまり、厳密性よりも設計の単純さと変更容易性を重視する姿勢が、脱TypeScript的な議論の一つの軸になっています。

Svelteの設計哲学と型依存を減らすアプローチ

Svelteは従来のフロントエンドフレームワークとは異なり、実行時ではなくコンパイル時に多くの処理を解決するという設計思想を採用しています。
このアプローチにより、仮想DOMのような抽象レイヤーを排除し、直接的なDOM操作に変換されるコードが生成されます。
この設計はパフォーマンス最適化だけでなく、開発者が意識すべき抽象階層を減らすという効果も持ちます。

この文脈において重要なのは、SvelteがTypeScriptへの依存を必須要件としていない点です。
もちろんTypeScriptを併用することは可能ですが、フレームワーク自体が型安全性を外部の型システムに依存して補完する設計ではありません。
その代わり、設計上の制約とコンパイル時の最適化によって、バグの発生源を事前に減らす方向へとアプローチしています。

この考え方は、型システムによる静的保証ではなく、構造的な単純さによって安全性を担保するという発想に近いものです。
結果として、開発者は型定義の整合性よりも、コンポーネントの設計やデータフローの明確さに集中できるようになります。
これはTypeScriptが提供する価値を否定するものではなく、その代替として異なる設計哲学が成立し得ることを示しています。

DHHとSvelteに共通するのは、いずれも「複雑さを外部の仕組みで補うのではなく、設計そのものを単純化する」という方向性です。
この視点は、JavaScriptの柔軟性を再評価するうえで重要な示唆を与えています。

なぜTypeScriptは標準化したのか?導入背景と普及理由

TypeScriptがフロントエンド標準になった背景と普及理由の解説

静的型付け導入の歴史的背景

TypeScriptが広く受け入れられるようになった背景には、フロントエンド開発の規模拡大と複雑化が強く関係しています。
特にSPA(Single Page Application)が一般化した2010年代以降、JavaScriptコードベースは急速に肥大化し、単一チームでは管理しきれない規模へと発展しました。
この状況において、実行時エラーの増加や仕様不整合は開発現場における深刻な問題として認識されるようになります。

従来のJavaScriptは動的型付け言語として高い柔軟性を持っていましたが、その反面、型の曖昧さが大規模開発における不確実性の要因にもなっていました。
特にAPI連携や非同期処理が多用される現代のWebアプリケーションでは、予期しない型の不一致がランタイムエラーとして顕在化しやすくなります。
この問題に対して、コンパイル時にエラーを検出できる静的型付けの必要性が高まりました。

TypeScriptはこの要求に対する現実的な解として登場しました。
既存のJavaScript資産を維持しながら、段階的に型安全性を導入できる設計は、企業にとって導入障壁が低いものでした。
完全な言語置き換えではなく、あくまでスーパーセットとして設計された点が普及の重要な要因です。

生産性と複雑性のトレードオフ

TypeScriptの導入は明確に生産性向上に寄与する一方で、新たな複雑性を生み出す側面も持っています。
型定義の設計、ジェネリクスの適切な使用、外部ライブラリの型情報管理など、開発者が扱うべき概念は確実に増加しました。
これはコードの安全性と引き換えに、認知負荷が上昇する構造的なトレードオフといえます。

例えば、以下のような簡単な関数であっても型設計を伴うことで記述量は増加します。

function add(a: number, b: number): number {
  return a + b;
}

このような明示的な型付けは可読性と安全性を高める一方で、小規模な処理においては過剰な設計となる場合もあります。
特にプロトタイピング段階では、型定義が思考の速度を制約する要因になることがあります。

したがって重要なのは、TypeScriptを採用するか否かという二元論ではなく、プロジェクトの性質に応じてどの程度の型厳密性を許容するかという設計判断です。
大規模かつ長期運用されるシステムでは型安全性が強く機能する一方で、短期的な検証や変化の激しい領域では動的な柔軟性が依然として価値を持ちます。
このバランスをどう取るかが、現代のフロントエンド設計における本質的な課題になっています。

静的型付けと動的型付けの本質的な違いと設計思想

静的型付けと動的型付けの違いと設計思想の比較解説

型システムがもたらす安全性

静的型付けは、プログラムの実行前、すなわちコンパイル時に型の整合性を検証する仕組みです。
この仕組みにより、関数間で受け渡されるデータの型不一致や、存在しないプロパティへのアクセスといった典型的な実行時エラーを事前に検出できます。
TypeScriptが広く支持されている理由の一つも、この「実行前に問題を可視化できる」という性質にあります。

大規模なコードベースにおいては、単一の開発者がすべてのデータフローを把握することは現実的ではありません。
そのため、型情報は暗黙的なドキュメントとして機能し、コードの意図を構造的に表現する役割を持ちます。
この点は特にチーム開発において重要であり、インターフェース設計の明確化やリファクタリング時の安全性向上に寄与します。

例えば、APIレスポンスを扱う際に型を定義しておくことで、想定外のデータ構造が流入した場合でもコンパイル時に検出できます。
これは実行時エラーの削減だけでなく、設計ミスの早期発見にもつながります。
したがって静的型付けは単なる制約ではなく、システム全体の整合性を維持するための構造的な安全装置として機能していると理解できます。

動的型付けの柔軟性と即応性

一方で動的型付けは、実行時まで型の制約を厳密に固定しない設計思想に基づいています。
この特性は、開発初期段階における試行錯誤の速度を大きく向上させます。
特に要件が流動的なプロジェクトやプロトタイピングにおいては、厳密な型定義を設計するコスト自体がボトルネックとなる場合があります。

JavaScriptのような動的型付け言語では、同一の変数に異なる型の値を代入することが可能であり、これにより表現の自由度が高まります。
この柔軟性は、設計変更が頻繁に発生するフロントエンド開発において重要な意味を持ちます。
特にUIロジックのように仕様が流動的な領域では、厳密な型制約よりも即時の変更対応能力が優先されることがあります。

ただし、この柔軟性は同時に不確実性も内包しています。
型の不一致は実行時エラーとして顕在化するため、テストや設計レビューによる補完が不可欠になります。
つまり動的型付けは自由度と引き換えに、開発者側により高い注意力と運用上の規律を要求する設計とも言えます。

このように静的型付けと動的型付けは優劣の関係ではなく、異なる設計哲学に基づくトレードオフとして理解する必要があります。
安全性と柔軟性のどちらを優先するかは、システムの性質と開発フェーズによって変化するため、一律の最適解は存在しません。

JavaScript本来の柔軟性とは何かと現代開発への影響

JavaScript本来の柔軟性と現代開発への影響を整理した解説

実行時の自由度とプロトタイピング速度

JavaScriptの本質的な特徴の一つは、実行時における高い自由度にあります。
変数の型を事前に固定せず、実行時のコンテキストに応じて柔軟に振る舞いを変化させる設計は、初期のWeb環境において極めて実用的なものでした。
この性質は特にプロトタイピング段階で強く作用し、仕様が固まっていない状態でも即座にコードを書き、動作確認を行うことを可能にします。

現代のフロントエンド開発においても、この即応性は依然として重要な価値を持っています。
例えばUIコンポーネントの挙動検証やAPIレスポンスの試験的な統合においては、厳密な型定義や設計制約がむしろ開発速度を低下させる要因になることがあります。
JavaScriptはその制約の少なさによって、開発者が思考をそのままコードに変換できる環境を提供しています。

このような環境では、実行結果を通じて設計を逐次修正することが可能であり、静的解析に依存しないフィードバックループが成立します。
その結果、仮説検証のサイクルが短縮され、アイデアの実装から検証までの距離が大幅に縮まるという利点が生まれます。
これは特にスタートアップや実験的プロダクトにおいて顕著に効果を発揮します。

制約の少なさがもたらす設計自由度

JavaScriptのもう一つの重要な特徴は、言語レベルでの制約が比較的少ないことによる設計自由度の高さです。
オブジェクトの構造や関数の定義方法に厳格なルールが存在しないため、開発者は問題領域に応じて最適な抽象化手法を選択できます。
この柔軟性は、フレームワークやアーキテクチャ設計の多様性を支える基盤にもなっています。

一方で、この自由度は設計の一貫性を損なうリスクも内包しています。
特にチーム開発では、個々の開発者が異なる設計思想を持ち込むことでコードベースが分断される可能性があります。
しかしこの問題は、言語そのものの欠陥というよりも、設計規律やレビュー体制によって補完されるべき領域です。

重要なのは、制約の少なさを単なる無秩序と捉えるのではなく、設計空間の広さとして理解することです。
この広い設計空間は、適切に運用されれば極めて高い表現力を発揮します。
逆に言えば、設計原則が不十分な場合には複雑性が急速に増大するため、自由度と秩序のバランス設計が不可欠になります。

このようにJavaScriptの柔軟性は、単なる言語仕様の特徴ではなく、開発プロセス全体に影響を与える構造的な要素です。
現代開発においては、この柔軟性をどの程度活かし、どの程度制約で補うかという判断が、設計品質を大きく左右します。

大規模開発における型安全性とスケーラビリティの再評価

大規模開発での型安全性とスケーラビリティの再評価ポイント

バグ検出と静的解析の役割

大規模なソフトウェア開発において、バグの早期検出はプロジェクト全体の品質とコストに直結する重要な要素です。
特に複数人が同時にコードベースを編集する環境では、実行時まで検出されない不整合が累積的に影響を及ぼすため、静的解析の価値が高まります。
TypeScriptのような静的型付けシステムは、この問題に対する一つの実用的な解として位置付けられています。

静的解析の本質的な役割は、コードの意味的整合性を実行前に検証することにあります。
これにより、関数呼び出し時の引数不一致や、未定義のプロパティ参照といった典型的なエラーをコンパイル段階で検出できます。
この仕組みは単にバグを減らすだけでなく、コードの意図を明示化し、開発者間の認知差異を縮小する効果も持ちます。

特にAPI連携や非同期処理が複雑化する現代のアプリケーションでは、データ構造の変化に対する追従性が重要になります。
静的型付けは、この変化を型レベルで追跡することで、変更の影響範囲を可視化し、リファクタリングの安全性を高める役割を果たします。
この点において、型システムは単なる制約ではなく、設計情報を保持するための構造的メタデータとして機能していると理解できます。

チーム開発におけるスケール課題

一方で、大規模チーム開発におけるスケーラビリティは、型安全性だけでは解決できない複雑な問題を含んでいます。
コードベースが成長するにつれて、モジュール間の依存関係は指数関数的に増加し、単純な型定義だけでは全体構造の把握が困難になります。

このような状況では、型システムが提供する静的保証があっても、設計レベルでの整合性が崩れる可能性があります。
例えば、各モジュールが独立して型安全であっても、それらの結合が不適切であればシステム全体としての整合性は保証されません。
このギャップは、型安全性の限界として認識する必要があります。

また、チームの規模が拡大すると、コーディング規約や設計思想の統一が難しくなり、コードの一貫性が徐々に低下します。
この問題は技術的というよりも組織的な課題に近く、ツールだけで完全に解決することは困難です。
したがって、スケーラビリティの本質は技術的制約ではなく、設計原則とコミュニケーションコストの管理に依存しています。

このように考えると、型安全性はスケール問題の一部を解決する有効な手段ではあるものの、それ単体で万能な解決策ではありません。
むしろ、設計の明確化、責務分離、レビュー体制といった複合的な要素と組み合わせて初めて、持続可能な大規模開発が成立すると言えます。

TypeScriptを使わない設計思想と代替アプローチ

TypeScript非依存設計と代替アプローチの考え方

設計でバグを防ぐアプローチ

TypeScriptを使用しない設計思想において重要になるのは、型による静的保証に依存するのではなく、設計そのものの構造でバグの発生を抑制するという考え方です。
このアプローチでは、コードの正しさを型システムに委ねるのではなく、責務分離やデータフローの明確化によって保証します。

例えば、関数やモジュールの責務を極限まで限定し、副作用を最小化することで、予期しない状態遷移を減少させることが可能になります。
このような設計では、入力と出力の関係が明確になり、データの流れが単純化されるため、結果としてバグの発生確率が低下します。
これは型安全性とは異なるアプローチですが、同様にシステムの信頼性を向上させる効果を持ちます。

また、設計段階でインターフェースを明確に定義し、コンポーネント間の依存関係を最小化することも重要です。
これにより、変更の影響範囲が局所化され、リファクタリング時のリスクが大幅に低減します。
特にJavaScriptのような動的型付け言語では、この設計規律が品質維持の中心的役割を果たします。

この考え方は、型システムに頼らずともソフトウェアの整合性を維持できるという点で、従来の静的型付け中心の設計とは異なる哲学に基づいています。

軽量設計と開発速度の最適化

TypeScriptを使用しない場合のもう一つの重要な利点は、開発プロセス全体の軽量化と速度向上です。
型定義の作成や型エラーの修正といった工程が削減されることで、初期開発段階におけるフィードバックループが短縮されます。

この軽量性は特にプロトタイピングや実験的開発において顕著に現れます。
仕様が頻繁に変化する状況では、厳密な型設計よりも、迅速な変更対応能力の方が価値を持つ場合があります。
このような環境では、コードの完成度よりも検証速度が優先されるため、動的型付けの特性が有利に働きます。

さらに、開発者が型定義という抽象レイヤーに思考リソースを割かなくなることで、ドメインロジックそのものに集中できるという効果もあります。
これは認知負荷の低減という観点からも重要であり、特に小規模から中規模のチームにおいて生産性の向上に寄与します。

ただし、このアプローチは無秩序を意味するものではなく、むしろ設計規律の重要性が相対的に高まることを意味します。
型による制約がない分、アーキテクチャ設計やコードレビューの精度が品質を左右するため、開発プロセス全体としての成熟度が求められます。

結果として、TypeScriptを使わない設計思想は単なる軽量化ではなく、設計主導型の開発スタイルへの回帰であり、柔軟性と規律のバランスを再定義する試みであると位置付けられます。

Svelteに見るコンパイル時最適化と開発体験の進化

Svelteのコンパイル最適化と現代フロントエンド開発体験

コンパイル中心アーキテクチャの特徴

Svelteは従来のフロントエンドフレームワークとは異なり、実行時に多くの処理を行うのではなく、コンパイル時にアプリケーションの構造を最適化するアプローチを採用しています。
この設計思想により、仮想DOMのような抽象レイヤーを実行時に保持する必要がなくなり、生成されるコードはより直接的かつ軽量なものになります。

このコンパイル中心アーキテクチャの本質は、開発者が記述した宣言的なコードを、事前に最適化された命令的コードへ変換する点にあります。
これにより、実行時のオーバーヘッドが削減され、パフォーマンスが安定しやすくなります。
また、フレームワーク側が状態管理や差分更新の複雑性を吸収するため、開発者はUIロジックそのものに集中することが可能になります。

さらに重要なのは、Svelteが抽象レイヤーを極力削減している点です。
多くのフレームワークでは、コンポーネントの中間表現やランタイムが存在し、それが学習コストやデバッグ難易度の上昇につながることがあります。
一方でSvelteは、コンパイル時にその多くを解消するため、開発者が理解すべき実行モデルが相対的に単純化されます。

このような設計は、パフォーマンス最適化と開発体験の単純化を同時に達成するという点で特徴的であり、現代フロントエンド設計における一つの重要な方向性を示しています。

TypeScript依存度を下げる理由

SvelteがTypeScriptを必須としない設計であることは、単なる技術的選択ではなく、設計哲学の延長として理解する必要があります。
その中心にあるのは、型システムへの依存を最小限に抑えつつ、コンパイル時の最適化によって別の形で安全性と整合性を確保するという考え方です。

従来のフレームワークでは、型定義によってコンポーネント間のインターフェースを厳密に管理するアプローチが一般的でした。
しかしSvelteでは、コンポーネントの構造自体をシンプルに保つことで、型システムに依存せずとも理解可能なコードベースを目指しています。
この結果として、型定義の維持コストや複雑なジェネリクス設計といった負担を軽減することができます。

また、TypeScript依存度を下げることは、開発初期のスピードにも影響します。
型設計に時間を割く必要が減ることで、UIの試作や検証が迅速に行えるようになり、フィードバックループが短縮されます。
特にインタラクティブなUI開発では、この即応性が重要な価値を持ちます。

ただし、これは型安全性を軽視するという意味ではありません。
Svelteのアプローチは、型による静的保証ではなく、構造の単純さとコンパイル時解析によって問題を減らすという異なる方向性です。
この違いは、TypeScriptが提供する価値を否定するものではなく、別の設計軸が成立し得ることを示しています。

結果として、Svelteの設計はTypeScript依存からの完全な脱却ではなく、必要に応じて選択可能なオプションとして型システムを位置付けることで、柔軟性と効率性のバランスを取る構造になっています。

開発体験を改善するツール活用とモダン環境の構築

VSCodeやCursorなど開発ツールによる体験改善と環境構築

VSCodeによる開発効率の最大化

現代のフロントエンドおよびバックエンド開発において、エディタは単なるコード入力ツールではなく、開発体験そのものを規定する中核的な要素になっています。
その代表例がVSCodeです。
VSCodeは軽量でありながら拡張性が非常に高く、言語サーバープロトコルを基盤とした補完機能や静的解析機能を提供することで、開発者の認知負荷を大幅に軽減します。

特にTypeScriptやJavaScriptとの親和性は高く、型情報を利用したインテリセンス機能はコードの意図理解を補助します。
これにより、API仕様の確認や関数シグネチャの把握といった作業がエディタ内で完結し、コンテキストスイッチの回数が減少します。
この点は生産性に直結する重要な要素です。

また、デバッグ機能や統合ターミナルの存在により、開発から実行、検証までのループが一つの環境内で完結します。
この一貫性は特に複雑なフロントエンドアプリケーションにおいて有効であり、環境間の差異による問題を最小化します。

さらに拡張機能エコシステムの豊富さも重要です。
リンター、フォーマッター、Git統合などを統合的に利用することで、コード品質の維持と開発速度の両立が可能になります。
このようにVSCodeは、単なるエディタではなく、開発基盤そのものとして機能しています。

CursorやGitHub CopilotによるAI支援開発

近年の開発環境における大きな変化の一つが、AI支援ツールの実用化です。
特にCursorやGitHub Copilotのようなツールは、コード補完の枠を超え、開発プロセスそのものに影響を与えるレベルに達しています。

これらのツールは、大規模なコードベースや自然言語の指示をもとに、コンテキストを理解した上でコード生成を行うことが可能です。
従来の補完機能が局所的な予測に留まっていたのに対し、AI支援ツールはプロジェクト全体の文脈を考慮する点に特徴があります。

例えば、関数の実装だけでなく、その関数が属するアーキテクチャ全体を推測しながらコードを提案することができます。
これにより、開発者は実装の詳細よりも設計意図の定義に集中できるようになります。
この変化は、コーディングの役割そのものを再定義しつつあります。

ただし、AI支援ツールの導入は単純な生産性向上にとどまりません。
生成されたコードの妥当性検証や設計意図との整合性確認といった新たな責任も発生します。
そのため、開発者にはより高い設計理解とレビュー能力が求められるようになります。

結果として、VSCodeのような統合開発環境とAI支援ツールの組み合わせは、単なる効率化ではなく、開発プロセス全体の構造を変化させる要因となっています。
この変化は、TypeScriptやJavaScriptの選択と同様に、現代のソフトウェア設計における重要な論点の一つと位置付けられます。

結論:JavaScriptの柔軟性を現代開発でどう取り戻すか

JavaScriptの柔軟性を現代開発にどう活かすかの結論

JavaScriptの柔軟性を現代開発において再評価する際、重要になるのは単純にTypeScriptを採用するか否かという二元論ではありません。
むしろ、どのレイヤーで厳密性を導入し、どのレイヤーで柔軟性を保持するかという設計判断の問題として捉える必要があります。
DHHやSvelteの思想に見られるように、複雑性を外部の型システムや抽象レイヤーで制御するのではなく、設計そのものを単純化するというアプローチは、JavaScript本来の特性を再評価するうえで重要な示唆を与えています。

現代のWeb開発では、型安全性や静的解析、さらにはAI支援開発ツールの普及によって、開発者を取り巻く環境は高度に抽象化されています。
この結果として、コードの安全性は向上した一方で、言語そのものの柔軟性や即時性が相対的に失われているという側面もあります。
このバランスをどう取るかが本質的な論点になります。

JavaScriptの柔軟性を取り戻すとは、単に動的型付けへ回帰することではありません。
むしろ、柔軟性をどの層で許容するかを明確に定義し、システム全体として整合性を保つ設計を行うことを意味します。
例えば、UI層では迅速な変更と試行錯誤を許容し、ドメイン層では厳密なルールやテストによって整合性を担保するというように、責務ごとに異なる制約レベルを設けることが現実的な解になります。

また、TypeScriptのような静的型付けを全面的に否定する必要もありません。
重要なのは、型システムを「強制的な枠組み」として扱うのではなく、必要に応じて導入・撤退可能な設計ツールとして扱う視点です。
この柔軟な運用が可能であれば、プロジェクトの成長段階に応じて最適なバランスを取ることができます。

さらに、Svelteのようなコンパイル時最適化を中心としたフレームワークや、Reactのような宣言的UI設計、そしてAI支援ツールの進化は、開発者の役割そのものを変化させています。
コードを「書く」ことよりも、構造を「設計する」ことの重要性が増しており、これはJavaScriptの柔軟性を別の形で再定義する流れとも言えます。

ここで本質的に重要なのは、柔軟性とは無秩序ではなく、適切に制御された自由度であるという点です。
この自由度を維持するためには、以下のような視点が不可欠になります。

  • 言語機能に依存しすぎず設計原則で品質を担保する姿勢
  • 型や静的解析は補助的手段として位置付ける柔軟な運用
  • フレームワークやツールを前提とせず問題領域から設計を始める思考

これらは特定の技術スタックに依存しない普遍的な原則であり、JavaScriptに限らず多くの言語や環境に適用可能です。

最終的に、JavaScriptの柔軟性を現代開発で取り戻すとは、技術選定の問題ではなく設計思想の問題です。
TypeScriptを使うかどうかではなく、どのように複雑性を制御し、どのように変更容易性を確保するかという観点でシステムを設計することが、本質的な答えになります。
この視点を持つことで、初めてJavaScriptの持つ本来の特性と現代的な開発要件を両立させることが可能になります。

コメント

タイトルとURLをコピーしました