#GWアドベントカレンダー「使いたかったもの使ってみたカレンダー(1人アドベントカレンダー)」の1日目、27日記事です。
ストックが無いままGWを迎えてしまったので、早速ピンチですが、
なんとか頑張っていきたいと思います。
本題:adonis.jsをつかってみた
使ってみたアドベントカレンダーなので、どう使ったか、所感として良さそうだったか/微妙だったか って観点で書いていきたいと思います。構築の仕方とか、そういうのには触れません。
何に使ったか
GWアドベントカレンダーのシステムを作るのに使いました。
使った機能としては
-
基本機能
-
HTTPルーター
-
コントローラー
-
セッション
-
バリデータ
-
ビュー(Edge)
-
ロガー
-
セキュリティ
- 認証
- CSRF
-
データベース
- ORM
- マイグレーション
-
外部ライブラリ
良さそうなところ/面白かったところ
全体として、MVC全部サポートします!というスタイルはとても良かったです。
使った機能で良さそうだったところ
- ORMが入ってるのでモデルをいちいち定義しなくていい
- async/awaitがデフォルトで概念として入っている
- 認証入れるのがかなり楽
- requireの代わりにuseが使えて、プロジェクトルートからのパスでrequireができる
- サービスとしてはよくやる、フォーム入力させてバリデータで弾いたらもとのフォームに戻して、その時入力したデータは引き継いで・・・みたいなのがすごくやりやすい。
- CSRFとか、めんどくさくて忘れがちなところがデフォルトで入っている
使ってないけど良さそうだったところ
- mysql, postgresqlだけじゃなくradisもサポート
- userモデル作られたら〇〇する というイベントもサポート
- HTTPだけじゃなくてwebsocketもデフォルトでサポート(websocket ルーティングができる)
- Twitter認証等のSNSログインもサポート!
- 通常のテストはもちろん、ブラウザテストもサポート!
- ファイルストレージもS3とかをサポート!
もうほんとに、これ一つで全部入ってる!!ってのがすごい売りです。expressインストールして、sequelizeいれて、あ、viewはejsいれてみたいなことがないです。
今回firebase入れてtwitter認証してしまいましたが、それすらもサポートされてるのはもう意表を突かれました。サポートするはずがないと思いこんでてすみませんでした
あんまりイケてないところ
-
ドキュメントが読みにくい
公式サイトだと使用例が載っていますが、仕様が載ってなくて、どんなコマンド一覧があるの?が全くわかりませんでした -
パーツごとに分割されている
各パーツ(ORMやView,バリデータなど)が結構分割されていて、ドキュメントも詳しくわそっち見てね!になっている。
adonis.js本家のサイトだとほぼ問題が解決できず、そこのリンク先のパーツごとの資料を見る必要がある。でそのパーツも別に他の人が作ってるわけでなくadonisが作ってる -
日本人で使ってる人を見ない
qiitaとかだと数人が使ってみた程度ですね。なんで日本で人気でないんだろう? -
ジェネレータ
せっかくMVCオールインワンフレームワークなのに、モデル生成コマンドを使ってもREST APIのコントローラーを自動生成したりしてくれない。railsやfuelPHPとかはしてくれたのに。。。
あとはそれぞれ独立したモジュール(ビュー:Edge、モデル:knex)などはまた別記事で感想書こうと思います。
総合評価
とても使いやすいフレームワークでした!
ドキュメントの部分が結構残念でしたが、ユーザー数が増えれば解決する問題なのかなと思います。(本家にも頑張って欲しいですが)
布教活動でもしようかな・・・。
ちなみにExpressとの流行り具合比較はこんな感じ。
うーむ。がんばれ!