はじめに
結論から言うと、「開発プロジェクトで扱う開発言語をTypescriptに一本化してみる」というものです。
背景
開発プロジェクトでは、Webアプリだけ作ることなないでしょう。サーバサイド(マイクロサービス)やお手軽なツールも作るはずです。そして開発する各アプリ・ツールは、用途に合ったフレームワークや開発言語を採用していると思います。
Webアプリであれば、React, Vue, Angularといったフレームワークとなり、開発言語はJavascriptもしくは、Typescriptとなります。
サーバサイドであれば、Django, Spring Boot, ASP.NET フレームワークなり、開発言語はPython, Java, .NET(C#等)となります。
ツールやバッチとなると、、、選択肢は多いですが、サーバサイドで採用した開発言語に合わせたり、稼働OSによって選択肢を絞り込むことになるのではないでしょうか。
以前から継続しているプロジェクトならば仕方ないですが、新規プロジェクトでは一つにまとめたい!
そのために、調べたことを以下に書いてみます。
開発言語の採用例
現時点で、自分が新規に開発するならば、以下の構成パターン①②で作るのが良いかと考えています。
それでも、Typescriptと(Java or Python)となってしまいます。
というわけで、パターン③というモチを描いてみました。
(既にやってるよ!という方はいっぱいいるかもしれませんけど(笑))
構成 | GUI | Service | Tool/Batch |
---|---|---|---|
パターン1 | Angular/React/Vue - Typescript | Spring Boot - Java | Spring Boot - Java |
パターン2 | Angular/React/Vue - Typescript | Django - Python | Python |
パターン3(New!) | Angular/React/Vue - Typescript | NestJS - Typescript | oclif - Typescript |
ウムウム!全部Typescriptにまとめられてスッキリです。
また、表に表現してませんが、Electronを使えばマルチプラットフォームなデスクトップアプリも作れますし、nexeでも同様のパッケージ化もできますよね。
あと、サーバとクライアントで同じソースを共有できると、元々サーバでしていた処理をクライアント側に変更したり、、といった最適化もしやすいですよね。PWAの考え方に似てますね。
実現性の確認
それでは全部Typescriptで作れるか?簡単に確認していきたいと思います。
確認はHello World!程度と考えています。(またWindows10 で実施しています)
GUI(Angular)
@angular/cli を使ってみました。
npm i @angular/cli -g
ng new hello
cd hello
ng serve --open
Service(NestJS)
npm i -g @nestjs/cli
nest new hello
cd hello
npm run start
http://localhost:3000
をブラウザ(chrome)で開いてみると以下が表示されます。
Tool/Batch(oclif)
npm i oclif
npx oclif multi mynewcli
cd mynewcli
bin\run --version
mynewcli/0.0.0 win32-x64 node-v10.15.3
パッケージ化(ocliif+nexe)
npm i nexe -g
npx oclif multi mynewcli
cd mynewcli
nexe bin\run
.\run.exe --version
mynewcli/0.0.0 win32-x64 node-v10.15.3
パッケージ化(nestjs+nexe)
npm i nexe -g
nest new hello
cd hello
nexe dist\main.js
main.exe
http://localhost:3000
をブラウザ(chrome)で開くと同様に応答があります。
所感
まだ"Hello World"しか試せていませんが、全部Typescriptで作れそうです。
ただ、DjangoやSpring Bootの代替として使えるか?もう少し検証が必要そうですね。