LoginSignup
4
3

More than 5 years have passed since last update.

Angular5 で俺式 KOAN スタック Webアプリ構築(概要)

Last updated at Posted at 2018-03-20

Angular5で「俺式KOANスタック」でWebアプリ構築するための個人的な備忘録記事。

KOAN に辿り着くまでの経緯

事の始まりは、Angularを覚えたての自分が、Angularを使ったバックエンドまで開発するWebアプリを作っていた時のこと。
(当時は、いわゆる「Angular2」で開発していた。)
Webアプリ開発のBoilerplate(=ひな型)の1つである「MEANスタック」という言葉を知ったことがきっかけ。

MEAN(ミーン)とは

MEANスタック」とは、MongoDB, Express, AngularJS, Node.js のAcronym(=略)で、Webアプリ開発に用いられるソフトウェアの組み合わせのこと。
『この4つを組み合わせて、体裁の整ったWebアプリを構築できまっせ』ということ。
MongoDB開発者の Valeri Karpovni 氏により、2013年4月30日にWeb上で提唱され、2014年以降、徐々に有名になっていったものらしい。
Valeri Karpovni 氏のブログには、本来の「MEAN」の思想が残されている。
The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js

Express から Koa へ移行

Expressは、Node.jsのWebフレームワークとして非常に有名だが、当時は開発してたら何だかんだでExpressではコールバックを書かなければいけない処理が目立ってきたので、「他に何か無いかな〜?」って探していたら、ちょうど注目を浴び始めていた「Koa」を知った。

MEANスタックで書いていたWebアプリをKoaで置き換えてみたら、書きやすくて見通しの良いソースコードになったので、これを機にKoaで構築する方向に切り替えていった。

Koaが出た当初は大して注目されなかった様だが、最近ではKoaの「v2」も出てきて、Express使うよりKoaの方が機能も優秀になっている感じになってきたので、Koaを中心に「MEANスタック」みたいなこと出来ないかと考えていた時に、新たに出会ったのが「KOANスタック」だ。(この辺で同時に、Angularも「2」から「4」へ移行することにした)

※ ちなみに、最近調べたExpressの記事みると、コールバック書かなくても出来るみたいなので、もうKoaじゃなくてもいいかもね。

KOAN(コーン)とは

KOANスタック」とは、Koa, AngularJS, Node.js の略で、MEAN同様、Webアプリ開発のひな型の1つ。
「KOAN」を提唱しているGitHubをみると、上記に加えてMongoDBも含めた構成になっている。

俺式 KOAN スタックでWebアプリ構築

今回は、MongoDBはとりあえず置いておいて、Koa, AngularJS, Node.js の3つでWebアプリを構築でする構成にした。
フロントエンドについては、これまで個人的に使わなかったAngular開発支援ツール「angular-cli」を使用して「Angular5」で構築する。 angular-cli に設定を書くので、手動でWebpack等はいじらない方向性。
バックエンドについては、こちらもTypeScriptで記述して、他にも必要なライブラリを適宜入れていく。
WebフレームワークはKoaの「v2」を使用し、フロント〜バック間のインターフェースは、フロントエンド側/バックエンド側どちらからも読み込める中間クラスを作成し、そこにインターフェースや汎用処理をまとめてWebアプリを構築する。

尚、コーディングに使用するエディタは最近気に入っている「Visual Studio Code」。フリーだけど結構優秀。

実際のWebアプリ構築手順

実際に構築した内容をメモっとく。(作業のリンクから、実手順の記事に飛べます)
パッケージ構成は書きませんので、実際に作って「ふ〜ん」という感じで見てください。

手順 作業 内容
1 Angular5 初期設定 Angularでフロントのベースを構築
2 フロントエンド初期設定 KOANスタックを前提に少しフロントをいじる
3 バックエンド初期設定 KOANスタックを前提にしたバックエンドを構築する(アプリのdaemon(デーモン)化もここで行う)
4 クラサバ通信部の作成 クラサバ通信ができる様にする。ここまで作ればWebアプリとして動作
5 外部通信部の作成(ファイル操作) 書こうと思ってましたが、Angular6 が出てきたのでそっちに移行するのでやめました。(ごめんなさい)
結論だけ雑に書くと、ここは mysql やら http やら適当なライブラリを npm install してきてリファレンス見ながら適当に書くだけでした。
6 環境変数を呼び分けられるようにする 書こうと思ってましたが、Angular6 が出てきたのでそっちに移行するのでやめました。(ごめんなさい)
結論だけ雑に書くと、まず config ライブラリをインストール(npm i config)し、 package.json にコマンド実行時のオプションで --NODE_ENV=production など書いて、いい感じに設定された環境値を利用して config の値を使うだけでした。
7 認証とセッション管理機能を導入する 書こうと思ってましたが、Angular6 が出てきたのでそっちに移行するのでやめました。(ごめんなさい)
結論だけ雑に書くと、koa-session をインストールして、koa ルーティング時に context(ctx) を使用して ctx.session などと書いて利用するだけでした。詳しくは koa-session のドキュメント見ればOK
4
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
4
3