これは何?
Javaなエンジニアが必要に駆られてTypeScriptを学習する記録です。
Javaアプリケーションの開発に長年かかわってきており、以下のような
志向に染まっている、ダークサイドに落ちかけているエンジニアです。
(Javaがダークサイドと言っている訳ではありません笑 念の為)
- 志向
- 大規模開発は静的型付けがないとねぇ、、
- スクリプト言語で大きなWebが本当に書けるんすかね、、
- コンパイルないから昔大規模なJavaScript書いてて死ぬかと思った、、
- そもそも性能とか実績とかから見るとごにょごにょ、、
この記事を書こうと思ったモチベーション
ワケあってちょろっとTypeScriptを触ってみたら思いの外、精神的に
安全な気持ちになれるじゃん!これはJavaな人(静的型付けでコンパイルに
守られていて、スクリプト言語に苦手意識のある人たち。いわゆる中年)でも
ちょっとやれば全然イケる、、と思い、筆をとることにしました。
大規模なSI開発や受託開発の現場ではまだまだJavaやC#、PHPなどの古き良き
言語が幅を利かせており、エッジの立った技術の導入に二の足を踏んでいる人たちも
多いと思います。古い言語は悪い言語、というつもりは全くありませんが、昨今の
爆発的な開発言語の増加、技術の分岐を見据えて、少しづつ、いろんなところで得た
学びや発見をお伝えしたいと思っています。
Let's get started!
今回はTypeScriptでサーバを書きながらTypeScriptのいいところを取り上げる、
ということを目標にします。したがって、必然的にサーバはNode.jsを使います初心者編なので、
バージョンとかの細かい話は基本的には端折ります。なお、これからの作業では一部Shellを使います。
みなさまお好みのShell環境を用意していただければと思います笑。筆者の環境は以下の通りです。
- OS : macOS Mojave(10.14.n)
- Editor : VSCode
TypeScriptはMSが開発しているため、特段のこだわりがなければVSCodeを使うのを
お勧めします。本当に何も気にせずに楽にコードが書けます。私もVSCode+Emacs key binding
な環境で快適に作業ができています。
Node.js導入
省略笑
TypeScript導入
globalに導入するのは抵抗があるので、特定プロジェクトに導入する、という形で
進めていきます。
#Projectの初期化
> npm config set init.author.name <name>
> npm config set init.author.email <email>
> npm init -y
これでpackage.jsonが出力されます。package.jsonってのはC,Javaな人向けにいうと
makefile, ant.xml, maven.xml, build.gradleみたいなものです。いわゆる
依存性の解決とか、プロジェクト構成の管理とか、そういうのをやってくれる人です。
#TypeScriptをProjectに導入
npm install --save-dev typescript
npm install --save @types/node
これでProjectでTypeScriptを利用する準備が整いました!おめでとうございます。
npm installってのは他のモジュールを取り寄せるコマンドです。--savaオプションを
つけると実行時も必要、--save-devだと開発時のみ必要、という意味になります。
これらのオプションをつけることによりpackage.jsonに追記してくれます。こんな感じ。
{
"name": "node_type",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "Keisuke Kuzukawa",
"license": "ISC",
"devDependencies": {
"typescript": "^3.5.3"
},
"dependencies": {
"@types/node": "^12.7.2"
}
}
Hello! TypeScript
まず必要となる環境を設定します。コード格納先のディレクトリを作って、
TypeScriptコンパイルに最低限必要となる設定ファイル(tsconfig.json)を作ります。
#ソースコードは./src以下に格納することにします。
> mkdir src
#TypeScriptのコンパイル設定ファイルを作成します。
> cat << EOF > ./tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es2017",
"sourceMap": true,
"types" : ["node"]
},
"exclude": [
"node_modules"
]
}
EOF
次に早速コードを書きます。コードは./src/以下に格納します。
ただのJavaScriptとなんら変わりませんが・・いいんです!今はまずコンパイルして
Node上でTypeScriptが動くようになるまでを目指します。
console.log("Hello! TypeScript!!");
で、コンパイルしましょう。さっきnpm installしたtypescriptのコンパイルコマンドを使います。
(厳密にはTypeScriptからJavaScriptを生成するのはトランスパイルと呼ぶらしいですが、
ここではわかりやすくコンパイルで統一します)
#tscコマンドによりコンパイル実施
> node_modules/.bin/tsc
これだけです。早速実行してみましょう。
# nodeコマンドでアプリを実行します。app.jsを実行している点にご留意
> node src/app.js
Hello! TypeScript!!
おぉ!!!動きましたねー!!!たった1行のコードでも新しい環境でコードが動くと気分がいいですね。
まとめ
私のような中年プログラマでもなんなく進むことができました。みなさまも先入観を持たずに一度、
触ってみれば、楽しめると思います!ぜひ、一緒に遊びましょう!!
to be continued...