TypeScriptはJavaScriptを拡張して開発された言語で、JavaScriptの後継となる次世代のプログラミング言語として注目されています。
この記事では、TypeScriptがどのようなプログラミング言語なのかをはじめ、JavaScriptとの違いや共通点、TypeScriptでシステム開発するメリットなどを解説。TypeScriptを使ったシステム開発をご検討中の企業やご担当者様は、ぜひ参考にしてください。
目次
初めてプロジェクト担当者になった方向け
プロが教える「IT基礎知識・用語集」プレゼント
TypeScriptの特徴とは
TypeScriptはJavaScriptを拡張して開発された新しいプログラミング言語で、2012年10月にMicrosoft社によって公開されました。
TypeScriptの特徴は、JavaScriptとの互換性が高く、さらに大規模の開発でもエラーが起きにくいように設計されている点。また、TypeScriptで書いたコードをコンパイルするとJavaScriptのコードに変換されるため、JavaScriptの開発・実行環境があればすぐに使える柔軟性の高さも魅力です。
Googleの標準開発言語に承認されてからは世界的に注目を集めており、日本国内でも将来性がある言語の1つとして期待されています。
ここからは、TypeScriptがJavaScriptの後継言語として注目されている理由やJavaScriptとの違い、フレームワークの関係などについて詳しく解説していきます。
●JavaScriptの後継言語として注目
TypeScriptはMicrosoft社がJavaScriptの上位互換として開発した言語で、JavaScriptの機能を維持しながら、より優れた機能を備えているのが特徴です。JavaScriptの代わりになるものという意味を持つ造語「AltJS」の1つで、JavaScriptの後継となる次世代のプログラミング言語として注目されています。
●JavaScriptとの違い
JavaScriptの上位互換として開発されたTypeScriptには、JavaScriptにはない優れた拡張機能が備わっています。JavaScriptとの大きな違いは「型付け方法」と「インターフェースの有無」の2つ。それぞれの違いについて詳しく見ていきましょう。
動的型付けか静的型付けか
JavaScriptの型付け方法が動的型付けなのに対し、TypeScriptでは静的型付けが採用されています。
JavaScriptが採用している動的型付けは変数を利用する際のデータ型の宣言をする必要がなく、プログラム側が自動で型を決定するのが特徴です。コードの記述量が少なく、型の変動が激しい状況や小規模なプログラムへの実装に適しています。一方でデータ型が自動で決まるため、実際のデータ型と合致しているかがプログラムを実行するまでわからず、実行時エラーを防ぎにくいというデメリットがあります。
JavaScriptの動的型付けによるバグの多さを解決しようと開発されたのがTypeScriptです。TypeScriptが採用している静的型付けは、事前にデータの型を宣言してから開発を行うのが特徴で、コンパイル時にエラーが出力されるほか、エディタ機能でも型のエラーを確認できることで、実行時エラーを大幅に削減できるというメリットがあります。
未然にエラーを防止できるTypeScriptはグループで開発する際に有利なため、規模の大きなWeb開発で利用されるケースが増えています。これからTypeScriptかJavaScriptのどちらを勉強すべきか悩んだ際には、TypeScriptを選ぶのがおすすめです。
インターフェースの有無にも違いがある
TypeScriptにはインターフェースが搭載されていますが、JavaScriptには搭載されていません。
一般的に使用されるインターフェースには2つの異なる領域の接点という意味がありますが、プログラミングにおけるインターフェースとは「実際の処理機能は持たないものの、プログラムに対して特定の約束や振る舞いを付与する機能」のことです。インターフェースの使用によって、多重継承をはじめとする型やクラスだけでは実現できない処理を実装できるメリットがあります。
●TypeScriptとJavaScriptのフレームワークの関係について
JavaScriptのフレームワークは、TypeScriptでも引き続き利用可能です。フレームワークは開発作業を効率化させることができるため積極的に利用しましょう。ここではJavaScriptで代表的な3つのフレームワークを紹介します。
AngularJS
AngularJSは、Googleをはじめとする複数の企業や個人のコミュニティによって開発されたJavaScriptフレームワークです。また、AngularJSはTypeScriptを標準で採用しています。
ページ数の少ないWebアプリケーションや管理画面系のアプリケーションの作成に向いていており、開発するうえで必要な機能がすべて揃っているのが特徴です。学習するのが難しいフレームワークですが、機能単位で実装が簡単であることから初心者でも扱いやすいといえます。
React
Reactは、Meta(旧Facebook)を中心としたコミュニティによって開発されたJavaScriptのフレームワークです。拡張機能を利用する必要がありますが、TypeScriptを使用できます。
MVC(Model-View-Controller)のViewに特化しており、UI(ユーザーインターフェース)構築に適したコンポーネント(部品)を簡単に作成できることが特徴です。作成したコンポーネントを組み合わせて構築を行い、部品化するため、再利用しやすい特徴もあります。
Vue.js
GoogleでAngularJSの開発に携わったEvan You氏が開発した、JavaScriptフレームワークです。Vue3.0は拡張機能を使用せずにTypeScriptを利用できます。
MVVM(Model-View-ViewModel)を採用しており、ファイルサイズが非常に軽量で動作も速く、自由度が高いのが特徴です。シンプルで学習しやすいため、使い始めやすいフレームワークといえます。
●TypeScriptとJavaScriptの共通点
TypeScriptの基本構文はJavaScriptと共通しており、if文やfor文などのJavaScriptのコードをTypeScriptとして使用できます。また、JavaScriptと同じライブラリを使用することも可能。JavaScriptとの互換性が高いため、JavaScriptの知識がある方ならTypeScriptに詳しくなくても基本的なコーディングを行えるほか、TypeScriptを短期間で習得できます。
TypeScriptでシステム開発するメリット
JavaScriptでシステムを開発してきた方にとって、TypeScriptを導入するメリットがなければそのまま慣れ親しんだJavaScriptを使いたいものです。そんな方のために、ここではTypeScriptでシステム開発するメリットについて詳しく紹介します。
●JavaScriptより短く読みやすいコードが書ける可能性がある
TypeScriptは、オブジェクト指向型言語として開発されています。かつてJavaScriptでは使えなかったクラスの生成が可能なため、JavaScriptよりもシンプルにソースコードを記述可能です。
コードが冗長で読みづらいと、バグの原因になることがあります。シンプルなコードは書きやすく、バグの回避につながるため大きなメリットです。なお現在ではJavaScriptもクラスが使えるようになっています。
●JavaScriptとの互換性がある
TypeScriptは、JavaScriptのフレームワークやライブラリを使用できるため、JavaScriptの開発環境や実行環境があれば、別途構築せずにそのまま使えます。JavaScriptで作られたファイルを呼び出して使うことも可能です。
また、コンパイルで、TypeScriptファイルからJavaScriptファイルに変換されます。
●エラーを防止できる
TypeScriptは、変数のデータ型をコード内で宣言できる静的型付けの言語です。型と値が異なるとコンパイルエラーが発生するため、バグを未然に防止できます。
JavaScriptではプログラムを稼働させるまでエラーに気づきにくい問題がありましたが、TypeScriptではコンパイル時にエラーに気づける仕組みとなっています。
●JavaScriptの知識があれば覚えやすい
通常、新しい言語の学習には数ヶ月程度を要しますが、JavaScriptを扱ったことがある方であればTypeScriptも簡単に使い始められます。
●アップデートに合わせてコンパイルされる
JavaScriptは言語のアップデートが毎年行われており、ブラウザによってはJavaScriptの最新の仕様に対応していないことがあります。そのため、対応が追いついていない一部のマイナーなブラウザやスマホ版のブラウザなどではコードが動作しない可能性があるので注意が必要です。
一方で、TypeScriptならコンパイルによって最新のJavaScriptを旧来のJavaScriptに変換できるので、ほぼすべてのブラウザで動作するコードを実装できます。ブラウザ対応などに時間をかける必要がなく、開発に集中できるのはTypeScriptの大きなメリットです。
TypeScriptにもデメリットがある
JavaScriptよりも使い勝手が良いTypeScriptですが、もちろんデメリットもあります。主に「利用者人口がまだ少ない」「学習に時間がかかる」の2つで、比較的新しいプログラム言語によくあるデメリットです。それぞれのデメリットについて、解説します。
●利用者人口がまだ少ない
JavaScriptよりも便利なTypeScriptですが、使用している開発者の数がまだ多くありません。JavaScriptの後継言語として注目されているので、TypeScriptを利用する方はこれから増えていくと予想されますが、JavaScriptを上回るのはまだまだ先のことになると思われます。
●学習に時間がかかる
TypeScriptは日本語で書かれた情報があまりなく、利用者人口も少ないため、わからないことや困ったことがあっても解決策を調べるのに時間がかかる可能性があります。また、TypeScriptだと動かないコードもあったり、複雑な設定ファイルによりエラーが大量に出力されて頭を抱えてしまったりするケースもあります。
TypeScriptでできること
TypeScriptを使って開発できるシステムやアプリの種類には、大規模なシステムやアプリケーションの開発をはじめ、Webアプリの開発やゲームの開発、モバイルアプリの開発が挙げられます。TypeScriptを使ったシステム・アプリ開発について、具体例を交えながら紹介します。
●大規模なシステムやアプリケーションの開発
型定義によって変数の型を明示的に定義できるTypeScriptはバグを防ぎやすいことから、大規模なシステムやアプリの開発に適しています。
例えばMicrosoftではWindowsを開発する際にTypeScriptを広範囲に利用しており、メモ帳やパワーポイントなどの大規模なWindowsアプリ開発においてTypeScriptによる静的型のチェックがコードの品質向上に貢献。また、TypeScriptの型定義が開発者同士の円滑なコミュニケーションにもつながっており、アプリケーション開発の効率化を実現しています。
そのほかにも、Amazonが提供しているクラウドサービス「AWS」の開発にも、TypeScriptがさまざまなサービスで利用されています。TypeScriptの利用によってコードの品質と開発速度の向上を実現しているほか、AWSの各種サービスを利用するためのSDKをTypeScriptで記述することにより、開発者がAWSを扱う際の効率性アップにも貢献。このようにAWSの開発・運用ともにTypeScript化することで、クラウドサービスの強化を図っています。
●Webアプリの開発
TypeScriptはWebアプリを開発するうえでのフレームワークとの相性が良いことから、サービスの向上と開発の効率化を図るためにさまざまな企業で使用されています。
例えばビジネスチャットアプリのSlackにもTypeScriptが使用されており、開発効率の大幅な向上に貢献。フロントエンドのコードベースのほとんどをTypeScriptで記述することで、複雑なUIの実装をしやすくしているのも注目したいポイントです。加えて、型定義によってエラーを防ぎ、検証コストの低減にもつながっています。
Netflixでも動画配信サービスのフロントエンド開発においてTypeScriptを採用しています。Netflixの視聴ページではいくつものUIコンポーネントが連携して動作しているため、TypeScriptの導入により、コードの可読性と保守性が向上し、迅速なバグ修正が可能となっています。これにより、ユーザーエクスペリエンスの向上に寄与しています。
●ゲームの開発
TypeScriptは各種ゲームエンジンとの相性が良いため、ゲーム開発にも利用されています。
国内外で人気のあるゲーム作品を数多く発表している任天堂でも、ゲーム開発スタジオにTypeScriptを導入。任天堂がゲーム開発にTypeScriptを導入した理由としては、最近のゲームはコード量が膨大になっており、従来のJavaScriptでは品質管理が難しくなっているためと考えられます。
また、任天堂ではゲーム開発だけでなく、自社のWebサイトにもTypeScriptのコードを使用しています。
●モバイルアプリ開発
React Nativeなどと組み合わせることにより、安定したモバイルアプリ開発ができます。
TypeScriptを使ったモバイルアプリ開発の例として、宿泊予約アプリ「Airbnb」があります。Airbnbの開発ではコードベース部分にTypeScript、アプリの見た目や動きにかかわるUI部分にはReact Nativeと使い分けているのが特徴です。TypeScriptの型定義によって複雑なUIでも実装しやすくなっているほか、品質の向上やバグの減少にも貢献しています。
また、Android版とiOS版のネイティブ実装をReact Nativeで共通化できるため、開発コストの大幅な削減も叶えています。
TypeScript開発を行う環境構築の流れ
TypeScriptのコードはJavaScriptにコンパイルしてから実行するため、TypeScriptコンパイラが必要です。ここではNode.jsを利用してTypeScriptコンパイラをインストールする手順を紹介した後に、開発環境の構築と簡単なプログラムの実行をするところまで紹介します。
●PC環境を整える
Node.jsをインストールします。以下の公式サイトからインストーラーをダウンロードしましょう。
参照:Node.js公式サイト
●npmコマンドを使ってインストールする
TypeScriptコンパイラをインストールします。コマンドプロンプトやターミナルなどを開き、以下2つを実行してください。OSや環境によって「sudo」コマンドを先頭につける必要があるため注意しましょう。
$ npm install -g ts-node
$ npm install
-g typescript
次にインストールが完了したかを確認するため、以下のコマンドを実行してください。
$ tsc –v
「Version x.x.x」と表示されれば、TypeScriptのコンパイラのインストールは完了です。
●TypeScriptで「Hello, World!」を表示してみる
では、簡単なプログラムで動きを確認してみましょう。下記のソースコードを書いて、helloworld.tsというファイル名で保存します。
const message:string = ‘Hello, World!’;
console.log(message);
作成したhelloworld.tsファイルを、JavaScriptファイルにコンパイルします。コマンドプロンプトやターミナルなどを開き、次のコマンドを実行しましょう。
$ tsc helloworld.ts
helloworld.jsというJavaScriptファイルができたら、コンパイル完了です。続いて動作確認もコマンドでしてみましょう。
$ node helloworld.js
コマンドプロンプトもしくはターミナルで「Hello, World!」と表示されたら成功です。これがTypeScriptのソースをJavaScriptにコンパイルする手順です。
●プロジェクトフォルダを作成する
次にTypeScriptで開発を行うためにすることが開発環境の構築です。最初にフォルダを作りましょう。ここではフォルダ名を「test_type」で作ります。
コマンドプロンプトやターミナルなどで以下を実行してフォルダを作成します。
$ mkdir test_type
$ cd test_type
$
npm init –y
●ツール類のインストールを行う
次に開発で必要なWebpackなどのツールをインストールしていきます。コマンドプロンプトやターミナルなどで以下を実行しましょう。
$ npm install typescript ts-loader webpack webpack-cli webpack-dev-server –save-dev
●設定ファイルを準備する
設定するファイルは3つあります。最初にpackage.jsonを開いてください。「npm build」「npm start」コマンドが使えるようにするために、以下を書き込んでいきます。
書き込む前のpackage.jsonの中身は以下のとおりです。
{
"name": "test_type",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit
1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"ts-loader": "^4.0.0",
"typescript": "^2.7.2",
"webpack": "^4.0.1",
"webpack-cli": "^2.0.10",
"webpack-dev-server": "^3.1.0"
}
}
「scripts」が以下のコードになるよう書き足します。
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack --mode=development",
"start": "webpack serve --mode=development"
},
次に、webpackの設定を行います。webpack.config.jsの中身を以下のとおりに記述してください。
const path = require("path");
module.exports = {
entry: {bundle: "./src/app.ts"},
output: {
path: path.join(__dirname,"main"),
filename: "[name].js"
},
resolve: {extensions: [".ts",".js"]},
devServer: {
static: {directory: path.join(__dirname, "main")}
},
module: {
rules: [{test:/\.ts$/,loader:"ts-loader"}]
}
}
最後はTypeScriptコンパイラ用の設定ファイルです。まだファイルはないため、コマンドで生成しましょう。
tsc –init
tsconfig.jsonが生成されます。生成したファイルを編集する必要はありませんが、以下のソースがコメントアウトしていないかだけ確認しましょう。
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"strict": true,
"esModuleInterop": true
}
}
以上で設定ファイルの準備は完了です。
●準備完了後TypeScriptプログラムを作成する
設定が終わったため、簡単なプログラムを作成してみましょう。まずはメインとなる2つのフォルダを「test_type」フォルダ直下に作っていきます。ここでは「main」と「src」を作ります。
次に「main」フォルダ直下にindex.htmlファイルを作成します。ソースは以下の内容を記述しましょう。
<!DOCTYPE html>
<html lang='ja'>
<head>
<meta charset="utf-8">
<title>ブラウザで表示する例</title>
</head>
<body>
<div id="output"></div>
<script src="bundle.js"></script>
</body>
</html>
次に「src」フォルダ直下にapp.tsファイルを作成して、以下のコードを書いてみます。
import {Item} from './item';
var elem = document.getElementById('output');
var myCat = new Item('ミケ',8);
myCat.say(elem);
次は「src」フォルダ直下にitem.tsファイルを作成し、以下のコードを書いてみます。
export class Item {
constructor(private name:string, private age:number){}
public say(elem : HTMLElement | null) : void {
if(elem){
elem.innerHTML = '家で飼っている猫の名前は' + this.name + ' です。年齢は' +
this.age + '才になりました。';
}
}
}
これでTypeScriptプログラムの作成は完了です。コマンドプロンプトやターミナルなどで以下のコマンドを実行してみましょう。
npm start
ブラウザでhttp://localhost:8080/にアクセスしてみてください。簡単なテキストが表示されれば成功です。
効率的に学習するポイント
TypeScriptを効率的に学習する方法として、参考書や本による学習、スクールや勉強会の参加、オンライン学習などが挙げられます。ただし、TypeScriptは比較的新しいプログラム言語のため、プログラミングスクールで取り扱っていないこともあります。
独学でTypeScriptを習得するにしても、何から手をつければいいのかわからないという方も多いはず。TypeScriptを短期間で効率的に習得したいのであれば、次のポイントを意識しながら勉強を進めてみてください。
- JavaScriptについての基礎知識を押さえておく
- 公式ドキュメントを読み込む
- 実際にコードを書いて実行してみる
- TypeScriptのコミュニティで情報収集をする
それぞれのポイントについて詳しく見ていきましょう。
●1.JavaScriptについての基礎知識を押さえておく
TypeScriptはJavaScriptのコードを踏襲しているため、JavaScriptの基礎知識を押さえておけば学習コストをある程度抑えられます。特に押さえておきたいJavaScriptの基礎知識は次の4つです。
-
JavaScriptの基本構文:変数の宣言、関数の定義、ループ・条件分岐など
-
データ型・オブジェクト:JavaScriptのプリミティブ型やオブジェクトに関する知識
-
関数・スコープ:関数の定義方法やスコープ、クロージャなどの概念の理解
-
非同期処理:JavaScriptでよく使用される非同期処理に関する基本的な理解
これらの基礎知識を押さえておくと、TypeScriptを効率的に学習できます。さらにHTMLやCSSに関する基本的な知識も、TypeScriptを使ったWeb開発において非常に有用です。
●2.公式ドキュメントを読み込む
TypeScriptの知識を深めるためのリソースとして活用したいのが、TypeScriptの公式ドキュメントとして提供されているTypeScript Handbookです。TypeScript HandbookにはTypeScriptの基本から応用まで幅広いトピックが網羅されており、基本的な型の使用方法や関数・クラスの型付け、インターフェースとジェネリクスの活用、高度な型の概念などを学べます。
初心者から上級者までカバーできる内容になっているため、TypeScriptを理解するのに最適な学習リソースです。
●3.実際にコードを書いて実行してみる
TypeScriptに関する知識を深めたら、次は実際にコードを書いて実行してみましょう。実際にコードを書いてみることで理論だけでは得られない知識や経験を積め、記憶にも残りやすくなります。コードを書く際は、公式チュートリアルやWebで公開されているオンラインリソースを利用するのがおすすめです。
まずは初心者でも取り組みやすい小さなWebアプリの作成からはじめ、徐々に複雑なWebアプリへとステップアップしていきましょう。エラーハンドリングやデバッグの方法も学べるので、実際の開発現場で求められるスキルの習得に役立ちます。
●4.TypeScriptのコミュニティで情報収集をする
TypeScriptのデメリットとして、使用している開発者の数がまだ少なく、日本語で書かれた情報も少ないため、わからないことや困ったことを解決するのに時間がかかるという点が挙げられます。そういった問題を解決するには、TypeScriptのコミュニティに参加するのがおすすめです。
ほかの開発者とTypeScriptに関する情報を共有したり、質問したりすることができるため、自力で調べるよりもスムーズに疑問を解決しやすいでしょう。
TypeScriptの将来性
日本ではJavaScriptを利用している開発者が多く、TypeScriptを利用している開発者人口は少ないのが現状です。ただ、2017年にTypeScriptがGoogle社内の標準開発言語に選ばれたことを受け、国内でもTypeScriptを導入する企業が徐々に増えてきています。
TypeScriptを導入する企業が増えればTypeScriptを使える開発者の需要も高まることが予想されるため、将来性を期待できる次世代のプログラミング言語です。
まとめ
TypeScriptは比較的新しいプログラミング言語のため、困ったことがあった際に調べても解決策が出てこなかったり、学習が進まなかったりする可能性があります。一方で、JavaScriptの問題点だったバグの発生のしやすさを解消できるというメリットもあります。そのほかにもJavaScriptの開発環境や動作環境があれば簡単に導入でき、フレームワークやライブラリなどを引き続き使えるのも魅力です。
TypeScriptを使いこなせれば幅広いジャンルの開発に取り組めますが、TypeScriptを使える開発者の数はまだ多くないのが現状です。自社で人材を確保するのが難しい場合は、外注するという方法もあります。ただ、外注するにしても「どの開発会社を選べばいいのかわからない」「開発会社の選定になるべく時間をかけたくない」などのお悩みを抱えているご担当者様も多いでしょう。
発注ナビであれば全国5000社以上の開発会社の中から、ご要望や案件内容に合った開発会社を最短1日でご紹介することが可能です。外注する開発会社の選定にお悩みのご担当者様は、発注ナビへのご相談をぜひ一度ご検討ください。
システム開発の最適な発注先をスムーズに見つける方法
システム開発会社選びでお困りではありませんか?
日本最大級のシステム開発会社ポータルサイト「発注ナビ」は、実績豊富なエキスパートが貴社に寄り添った最適な開発会社選びを徹底的にサポートいたします。
ご紹介実績:21,000件(2024年8月現在)
外注先探しはビジネスの今後を左右する重要な任務です。しかし、
「なにを基準に探せば良いのか分からない…。」
「自社にあった外注先ってどこだろう…?」
「費用感が不安…。」
などなど、疑問や悩みが尽きない事が多いです。
発注ナビは、貴社の悩みに寄り添い、最適な外注探し選びのベストパートナーです。
本記事に掲載するシステム会社以外にも、最適な開発会社がご紹介可能です!
ご相談からご紹介までは完全無料。
まずはお気軽に、ご相談ください。 →詳しくはこちら
初めてプロジェクト担当者になった方向け
プロが教える「IT基礎知識・用語集」プレゼント
■TypeScriptに関連した記事