カラクリスタ・テック

『輝かしい青春』なんて失かった人の技術系ブログです。

Architect (arc.code) が使いやすい

私は時々、

  • JAMStack (JavaScript, APIs and Markup の意)

を使って何かしらのスクリプトを個人開発する事があり、その際、毎回の事ながら、

さて AWS Lambda に deployment をするためのツールは何を使おう?

と、困る事がよく有りました。

それで、

何か良いツールチェインは無いものか……

と、毎回探していたんですが最近になって、

と言う良さげなツールを awesome-serverless 経由で見つけたので、 今日はその辺りを紹介したいと思います。

Architect とは?

これは一言で言えば、

AWS のエコシステムに特化した、JAMStack 用の Toolchain

で、もう少し詳細に言うと、

AWS Lambda の Node.js Runtime をベースに、AWS の Middleware に特化した開発補助ツール

と言えます。

そして、この Architect を使うと、

  • AWS Lambda + AWS S3 + Amazon DynamoDB + Amazon API Gateway + ...etc

と言ったような構成で開発する時に 面倒な AWS 固有のアレコレを一挙に引き受けてもらえる ので、 本来の開発すべき事柄に集中する事が出来る様になり、それ故に私は今コレを気に入って使っています。

なぜ私は Architect を使うのか

基本的には、

AWS の Serverless 開発で AWS 周りの面倒なことを全部押し付けたい

と言う、ワリと都合の良い理由がメインです。また、その他にも、

  • 個人用 Slack のちょっとしたスクリプトを AWS Lamda で……とか
  • ちょっとだけサーバ処理が必要なスクリプトを作る……とか
  • あるいは、本格的な開発でもガッツリとコストを下げるために……とか

そういった理由でも、 Architect を使っていたりします。

また、上記の理由の他にも、

  • コードの配置位置に、程良い制約が有る
  • Architect 固有で覚えなければならない事が少ない
  • JAMStack を deploy するための便利なコマンド類もキチンと揃っている

と言った様な特長も、私が Architect を気に入っている理由の中に入っています。

Architect が向く事・向かない事

先にも書いた通り、 Architect は AWS の JAMStack へ特化した構成になっていて、 それ故に下記の様な制約も当然発生して来ます:

  • AWS Lambda の Node.js 以外の Runtime に対応していない
  • Architect がすべての AWS Middleware の面倒を見てくれる訳ではない
  • AWS Lambda の Node.js Runtime しばりなので、それ故の制約も当然ある

とは言え AWS Lambda が関わらない部分では他の JavaScript ライブラリと当然の様に組み合わせられるので、 ReactVue と言った様なライブラリを組み合わせる事も可能です。

また Architect が管理する部分以外では既存の AWS 用ライブラリが使えるので、 そう言った意味でもあんまり不自由さは無いんじゃないかな、と個人的には思っています。

Architect の始め方

Architect の Getting Started については、

を閲覧した方が圧倒的に理解が早いのですが、一応ここでも紹介しておくと、 Architect では:

$ cd $WORKDIR
$ npm install @architect/architect
$ cat <<EOF >.arc
> @app
> testapp
> 
> @http
> get /
> EOF
$ ARC_LOCAL=1 npx create 

という様な手順でボイラープレートが生成し、その後は生成されたボイラープレートに従って、 色々と実装して行くという形になると思います。

ただ注意点として Architect では npx を利用して各種スクリプトを実行するので、 @architect/architectグローバルインストールする必要は有りません

と言うか、グローバルにインストールすると他の toolchain と実行ファイル名が被ると思うので、 基本的にはその辺り行わない様にしておいた方が良いです。

以上

と言う事で、今回の話は以上です。

今回書いた様に Architect は AWS Lambda の Node.js Runtime に特化しているで、 他の Runtime 等を扱いたいという場合においては、

と言った辺りを使うと良いかもしれません。

とは言え JAMStack で AWS Lamda を用いるのであれば、 Architect は複雑な事を簡単にしてくれる良いツールだと個人的には思っているので、

一度、Architect を試してみるのも良いんじゃない?

と個人的には思っています。はい。