Gitpodでdenoの環境をつくってみたお話
つい先日SVGでお絵描きする機会がありまして、それでDenoくんの絵描き歌を思い出したんです
ゔぇ〜じぇか〜ぶ〜ぅ〜♬ゔぇ〜じぇか〜ぶ〜♬
ってやつ
いつみた記事かと思って探せば2019年の12月ですって
当時は絵描き歌でヴェジェ曲線を使うことをゴリ押ししてる様に笑った記憶があります
とはいえ、denoを触ったことないのにネタだけこすっているのもなんか違うなということで、gitpodでdenoのサーバーを立てて、ハローワールド的なことをするまでやってみた。そんな記事
そもそもDenoとは
Node.jsの作者が、Node.jsのよくない部分を改善して作ったサーバーサイドでのJavaScriptの実行環境のこと
Node.jsのすごい版。実行環境なので、.js
ファイルを.py
みたいに実行できるようだ。なるほど
マスコットの恐竜はかわいい系。雨に打たれるアンニュイなかわいい系
このサーバーサイドで動かすJavaScript環境を、Gitpodで作ってなんか動かしてみよう
gitpodで Denoを実行する
gitpodの標準のコンテナにDenoをインストールするための設定ファイルはこんな感じ
Denoのコンテナを持ってきて展開するより、gitpod標準コンテナを開いてDenoに必要なファイルをインストールしたほうが、起動するまでが速かったのでこの方式で環境を作ります
ports:
- port: 8888
onOpen: open-preview
tasks:
- name: install_deno
before: |
curl -fsSL http://deno.land/x/install/install.sh | sh
export DENO_INSTALL=/home/gitpod/.deno
echo export DENO_INSTALL=/home/gitpod/.deno >> ~/.bashrc
export PATH=$DENO_INSTALL/bin:$PATH
echo export PATH=$DENO_INSTALL/bin:$PATH >> ~/.bashrc
init: |
deno upgrade
command: |
deno run source/welcome.ts
vscode:
extensions:
- denoland.vscode-deno
上から、8888番でポートを開いて、tasks
でDenoのインストール、パス通し、アップグレードとwelcome.ts
の実行までを行います
実行するとこんな感じ
welcome.ts
がconsole.log
でがぉー
と鳴きました
がぉー
。恐竜なので、がぉー
実際に.ts
で書いたファイルをCLIチックに動かすことができた。なるほど。これがDenoによる実行環境ということか
Webページのホスティング
さて、Denoを使って.ts
ファイルをコンソール上で動かすことができたわけだけれども、実際にWebページとして公開させるにはserve
ライブラリが必要らしい
Pythonでいう、flask
のイメージ
インポートの仕方はこう
import { serve } from "https://deno.land/std@0.50.0/http/server.ts";
import
のあとにパスを入れてモジュールを持ってくる。下手にインストール用のコマンドとか打たなくていいわけだ
この中身で何やってるのかちゃんとわかる具合、好き
インポートした後はポートを開いて、非同期にリクエストを処理していく関数を記述するわけだ
const server=serve({port: 8888});
let cnt=0;
for await (const req of server){
cnt+=1
console.log(cnt)
console.log("127.0.0.1:8888")
req.respond({body: `<h1>がぉー、Deno!</h1><p>更新カウント: ${cnt}</p>`});
}
このコードでは、サーバーにリクエストがあるたびにcnt
を+1
していってサーバーサイドで動いていることを確認しながらがぉー
と鳴いている
実際に作ったhello_http.ts
ファイルを以下のコマンドで実行させた
deno run --unstable --watch source/hello_http.ts
変数cnt
が、コンソールから描画に渡されて、更新するたびにカウントが増えていった
なるほど、これがサーバーサイドでのjsか
おわりに
サーバーサイドでのjs実行環境のDenoをGitpod上に作ってみたのが今回のおはなしでした
gitpod、これ一回だけ設定ファイル作るだけで同じ設定のワークスペースをいくつも作れるの、単純に偉いなて思ったりする
環境構築の差で動く動かない問題あるうえに妙に時間がかかる問題を打破したいと思う今日この頃でした
おまけ
冒頭で紹介した記事の絵描き歌に沿って15分で描いたDenoくん.svg
なお、CSSでなんかはしていない
Discussion