プログラミング

[開発記録]TypeScript+Express+Postgresqlで、簡易的なAPIサーバを構築した話① -Nodeインストール-

今回から、Githubでの開発記録を残していきます。記念すべき?第一本目はTypescript、Express 、PostgreSQLを取り扱います。
いきなり読者が限られる内容ですが、楽しんでいって、どうぞ。

目的

Tanarはシステムのインフラ運用保守、構築、アーキテクチャ設計を主にやってきたのですが、「開発もやってみましょう」との鶴の一声で突然開発に参加することになりました。

右も左もわからない状態ですが、開発にあたり「TypeScriptでExpressなPostgreSQL付きの開発環境を構築しておいてね」、とのお言葉をいただいたので、ひとまずローカルでやってみました。

Goalは、下記の通りです。

  1. ローカルPC上でTypeScript+Express+PostgreSQLをセットアップし、DB操作を伴うAPIサーバを構築する。
  2. 構築手順を本記事に投降する。
  3. 最終的な成果物をGithub上に公開する。

今回は、ローカル環境構築の第一回目です。
Nodenvというパッケージを用いてLTSのNode.jsをインストールし、併せてパッケージ管理に利用するyarnをインストールします。

興味のある方は見て行って、どうぞ。

用語説明

TypeScript

JavaScript互換のオープンソースのプログラミング言語で、Googleさんが作っています。

JavaScirptは理念上、後方互換性に重きを置いているのですが、その分使いにくい仕組みがいくつも残ってしまっています。この点を解決するためにTypeScriptが作られました。

近年のプログラムの多くがTypeScriptをベースに作られています。

Express

Node.jsのWebフレームワークです。
JavascriptやTypeScriptを使って、RestfulなAPIサーバを構築する際に利用します。

PostgreSQL

DBのエンジンです。MySQL、Oracle等の主要なDBエンジンと同程度の知名度ですね。データベースでデータを管理するために利用します。今回はDockerを利用して、PostgreSQL専用のDockerコンテナを起動し、その中でPostgreSQLのエンジンとDBが稼働するように設定を行います。

環境

OS: Ubuntu(WSL2)
Docker on WSL

環境構築

TypeScriptインストール

① Homebrewを利用し、anyenv/nodenvをインストール

anyenv : https://github.com/anyenv/anyenv

$ brew install anyenv
$ exec $SHELL -l
$ anyenv install --init
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(anyenv init -)"' >> ~/.bashrc
$ anyenv install nodenv
$ exec $SHELL -l

※nodenv:nodeのバージョンを管理するためのOSSです。

下記を.bash_profileの最下層に挿入

if [ -f ~/.bashrc ] ; then 
. ~/.bashrc 
fi

② anyenv/nodenvセットアップ

$ mkdir -p $(anyenv root)/plugins
$ git clone https://github.com/znz/anyenv-update.git $(anyenv root)/plugins/anyenv-update
$ mkdir -p "$(nodenv root)"/plugins
$ git clone https://github.com/nodenv/nodenv-default-packages.git "$(nodenv root)/plugins/nodenv-default-packages"
$ touch $(nodenv root)/default-packages

③ default-packagesを編集

sudo vim $(nodenv root)/default-packages

下記を追記し、保存。

yarn 
typescript 
ts-node 
typesync

④ nodeインストール

$ nodenv install -l
$ nodenv install 16.13.1
$ nodenv global 16.13.1

以上、次回に続きます。