プログラミング言語のなかでも、最もポピュラーであるJavaScript。その後継言語として近年注目されているのがTypeScriptです。
日本ではまだ導入事例が少ないものの、JavaScriptから移行しやすいこともあり、今後はTypeScriptで開発を行なうプロジェクトは増えていくでしょう。
この記事では、TypeScriptやフレームワークの概要と併せて、TypeScriptで使えるおすすめのフレームワークについて解説します。
TypeScriptは、JavaScriptのスーパーセット(上位互換)として、2012年ごろに開発されたプログラミング言語です。開発元のMicrosoftだけではなく、Google・BMWなど多くの企業で使用されています。
TypeScriptはAltJS(Alternative JavaScript)の一つで、コンパイルすることでJavaScriptが生成されます。基本的に構文・ライブラリはJavaScriptと同じなので、JavaScriptのライブラリをTypeScriptで実行することも可能です。
JavaScriptは、大規模なプロジェクトでは「コーディングが複雑になりがち」「実行時のエラーが起きやすい」などの弱点がありました。そこでTypeScriptでは拡張機能が追加され、JavaScriptのデメリットを改善することができたのです。
なお、TypeScriptの詳細については以下で説明しているので、併せてご覧ください。
関連記事:TypeScriptとは?特徴や導入するメリットについて解説
フレームワークとは、システム・ソフトウェア開発に必要な機能がある程度用意されたツールのことです。
開発現場では、エンジニアがゼロからすべてをコーディングすることはあまりなく、実際にはフレームワークを活用しながら効率的に進めていきます。
フレームワークを活用することで、ベーシックな部分に関しては開発作業を行なう必要がなく、開発工数を大幅に削減できます。手作業でコードを書く量が少なくなるうえ、フレームワークとして用意されている箇所に関してはコーディングのミスなどがないため、全体的なミスやエラーの防止にもつながるでしょう。
また、フレームワークを使えば書き方の統一が可能です。フレームワークを活用しない場合、各エンジニアが自由にコーディングできるようになるので、場所によって書き方が異なる可能性があります。書き方が統一されていないプログラミングは読みづらく、修正作業が発生したときに対応しにくくなるなどのデメリットが考えられます。
以上のようなことから、多くの開発現場では各プログラミング言語に合わせたフレームワークが利用されているのです。
関連記事:ソフトウェア開発のプログラミングとは?プログラミング言語の種類を解説
TypeScriptはJavaScriptとの互換性が非常に高いため、JavaScriptベースのフレームワークもよく使用されます。ここからはJavaScriptとの関連性が深いものも含めて、TypeScriptで使用される3つのフレームワークについて見ていきましょう。
2016年ごろにGoogleによって開発された、TypeScriptベースのフロントエンドフレームワークです。「フルスタックフレームワーク」と謳っており、AngularがあればWebフロントエンド開発で困ることはないように設計されています。
なお、Angularとは別に「AngularJS」というフレームワークもありますが、AngularJSはJavaScriptベースです。Angularの元になっているフレームワークではありますが、全くの別物なので混同しないよう注意してください。
Googleが「フルスタックフレームワーク」と謳っているように、基本的にAngularさえ用意すればWebフロントエンド開発は可能です。また、TypeScriptでの開発を標準仕様としているので、静的型付けなどのTypeScriptの特色を最大限活かせるでしょう。
さらに、TypeScriptはコンポーネントベースで設計されているため、以下4種類のファイルにコーディングを行ない、開発を進めることも特徴です。
・「.htmlファイル」:コンポーネント内のUIを構築するファイル
・「.cssファイル」:コンポーネント内のUIを構築するファイル
・「.tsファイル」:リクエスト・状態の変化などを記述するファイル
・「.spec.tsファイル」:テスト用の内容を記述するファイル
最大のメリットは、やはりAngular1つあればフロントエンド開発ができる点です。状態管理・ルーティング・UI構築など、フロントエンド機能の開発に必要なものはAngularに含まれています。そのため、別途でライブラリなどを追加する必要がなく、スムーズに開発を進められるでしょう。
また、コマンドラインツールを活用すれば、上述のコンポーネントの作成も容易にできるため、スピーディーに作業できます。
デメリットとして挙げられるのは、学習コストが比較的高い点です。 AngularはTypescriptベースのフレームワークのため、静的型付けなどTypescriptの仕様を理解していないと扱うのが難しく、また独自構文もあります。
Angularのみで開発が完結できるようになっている反面、Angular独自の機能・仕様を理解しないと作業が進められない、ともいえるでしょう。
2014年ごろに、AngularJSの開発者の一人によって開発された、フロントエンドフレームワークです。「AngularJSの良い所だけを抽出した、軽量なフレームワーク」を目指して設計されており、日本・中国などのアジア圏で比較的人気があります。
元々はJavaScriptベースのフレームワークで、拡張機能によってTypeScriptでも使用できる設計でした。しかし、「Vue3.0」からはTypeScriptベースに変更され、拡張機能を使わずにTypeScriptで記述できるようになりました。
Vue.jsの大きな特徴として、単一ファイルコンポーネントが挙げられます。単一ファイルコンポーネントとは、同一のファイル内にJavaScript・css・htmlを記述できる機能です。これにより情報の整理が容易になるため、各コンポーネントの関係性を把握しやすくなります。
Vue.jsの設計はかなりシンプルで、独特の機能などもあまりないので学習コストが低いことが大きなメリットです。日本語での情報も多く、トラブルや不明点があっても解決しやすいでしょう。
また、軽量かつ拡張性が高い点もメリットに挙げられます。Vue.jsの必要な部分だけを使い、別途追加したライブラリと組み合わせて開発を進めることも可能です。
Vue.jsの特徴でもある単一ファイルコンポーネントは、記述量が少ない小規模なプロジェクトにおいては恩恵を感じられます。しかし、大規模なプロジェクトの場合は一つのファイル内に記述するコードが膨大な量になるため、かえって読みづらくなるでしょう。
Facebook(現:Meta)によって開発された、UI構築のためのUIライブラリです。厳密にはフレームワークではありませんが、Facebook・Instagram・Netflixなど、さまざまなシステムのフロントエンド開発に採用されています。
JavaScriptベースのライブラリですが、拡張機能を活用すればTypeScriptでも使用可能です。
Reactは、JavaScriptを拡張した「JSX」という構文に、JavaScriptのロジックやhtmlなどを記述していきます。
また、ReactはあくまでもUIライブラリなので、デフォルトではUI構築に関する最小限の機能しか使用できません。そのため、開発するシステムやソフトウェアの内容に応じて、エンジニアが別途で機能を追加していくことが想定されています。
ReactではJavaScriptの拡張構文であるJSXを使用するため、JavaScriptと同じ要領でロジックの記述ができたり、コンポーネントを関数の戻り値に対して指定できたりと、JavaScriptの特色を最大限活かせます。
また、Angular・Vue.jsに比べて、柔軟なコンポーネントの記述が可能です。したがって、再び利用しやすいコンポーネントを作成することもできるでしょう。
その他、デフォルトの機能に対して必要な機能を適宜追加する形になるので、無駄な容量を使うことなく、軽量であることもメリットです。
Reactで使うJSXは、JavaScriptの拡張構文とはいえ、独自の記述方法や考え方を理解しなければ扱えません。そのため、習得にある程度時間がかかる点がデメリットです。
また、機能追加・変更などのアップデートが頻繁に行なわれるため、その都度新しい仕様について把握する必要がある点もデメリットの一つでしょう。
上記の他にも、バックエンド開発用のNest.jsというフレームワークもあります。
Nest.jsは、Node.js上で動作するオープンソースフレームワークで、Angularに近い仕様です。
ここまでフロントエンド開発用のフレームワークを紹介してきましたが、実はTypeScriptはバックエンド開発にも使用できます。場合によってはフロントエンドをReact、バックエンドをNest.jsなどで構築すれば、1人のエンジニアがフロントエンド・バックエンド両方を開発することもできるでしょう。
Nest.jsはJavaScriptで構築されていますが、TypeScriptも完全にサポートしています。そのため、TypeScriptでも開発しやすいことが特徴です。
また、Nest.jsはオブジェクト指向プログラミング・リアクティブプログラミング・関数プログラミングの組み合わせにより、構成されます。
Nest.jsはAngularに影響を受けて開発されているため、Angularの扱いに慣れているエンジニアであればスムーズに学習できるでしょう。
また、あらかじめ決まった構成でシステムを構築できるため、人による実装方法の違いなどの抑制にもつながります。その結果、開発後のメンテナンスがしやすいこともメリットです。
その他、テストフレームワークがデフォルトで用意されていたり、Expressの機能・ライブラリを使えたりと、さまざまなメリットがあります。
Nest.jsのデメリットとして挙げられるのは、他のフレームワークと比較してユーザーがまだ少なく、日本語での情報が見つけにくいことです。そのため、トラブルシューティングの際に、時間がかかってしまうこともあるでしょう。
JavaScriptのスーパーセットとして開発されたTypeScriptは、近年数々の大手企業でも採用されているなど注目を集めている言語です。TypeScriptを使って効率的に開発を進めるには、プロジェクトに適したフレームワークを活用することが重要といえます。
TypeScriptで使われるフレームワークには、Angular・Vue.js・Reactなどがありますが、それぞれの特徴やメリット・デメリットを把握しておくことで、TypeScriptでのスムーズな開発につながるでしょう。
DeFactoryでは、システム開発の立ち上げ支援・各フェーズのフレームワーク活用法もサポートしています。その他、アイデア着想、ユーザーヒアリング、テストマーケティング、アジャイル・MVP開発と、システム開発における立ち上げ支援を全力サポートいたします。
また、経験豊富なエンジニアと事業開発経験者で、開発だけでなく事業設計から「一気通貫」した伴走を行ないます。 事業開発や立ち上げを検討しているご担当者様がいらっしゃいましたら、問い合わせページから資料請求や無料相談などお気軽にご連絡くださいませ。