6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

全部Typescriptで作りたい

Posted at

はじめに

結論から言うと、「開発プロジェクトで扱う開発言語を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

screenshot.png

Service(NestJS)

npm i -g @nestjs/cli
nest new hello
cd hello
npm run start

http://localhost:3000をブラウザ(chrome)で開いてみると以下が表示されます。

screenshot.png

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の代替として使えるか?もう少し検証が必要そうですね。

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?