1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AdonisJS(アドニスJS)についてアウトプット ~概要~

Posted at

業務でAdonisJSというフレームワークを利用する機会があったので、概要をまとめていこうと思います。

AdonisJSとは

  • TypeScriptベースのフルスタックWebフレームワークです
  • LaravelやRailsと似ている部分が多くあり、これらの開発に慣れている人は導入しやすい
    • Laravelのようにルーティング、コントローラ、ORMなど公式パッケージが提供されています
  • MVCパターンを採用しています
  • 2015年にHarminder Virkさんが作り、そこから複数人のコアチームで開発が続けられ、2025年4月現在はver6がリリースされています
  • MITライセンスの下で配布されている
  • ベンチマーク・オリンピックで勝つために機能を削るのではなく、現実の問題を解決することに主眼を置いて開発されたようです

シェア

npm trendsによると、ReactやVuejsと比べてまだまだ利用者は少ないようです。
調べてみてもAdonisJSについて記事を書いている方は少ないです。

公式ドキュメントは英語ですが充実しています。

スクリーンショット 2025-04-09 142016.png

機能

AdonisJSでプロジェクトを作る際には、選択肢として以下の4つから選ぶことになります。

  • Web starter kit:テンプレートエンジン(EdgeJS)を使った昔ながらのWeb開発を行う人向け
  • Inertia starter kit:InertiaJSを使ってSPAを作成する人向け。フロントエンドとしてはVue3・React・Svelte・Solid.jsが利用できます
  • API starter kit:API開発をする人向け。画面が必要な場合は、フロントエンドはVuejsやReactなど任意のものを利用する
  • Slim starter kit:コア部分とでデフォルトのフォルダ構造のみ必要で、それ以外は自分たちで構築していく人向け

やってみた

最後にAPIプロジェクトを作って、疎通出来るか試してみます。
前提として、nodejsバージョン20以上が必要になります。

APIプロジェクト作成

プロジェクトを作成します。

APIでは以下について選択することでプロジェクトを作成できます。

  • スターターキット:Web、Inertia、API、Slimのいずれか
  • 認証:セッション、アクセストークン、Basic認証のいずれか
  • DB:Sqlite、PostgreSQL、Mysql、Microsoft SQL Serverのいずれか
npm init adonisjs@latest adonis-api-sample

> create-adonisjs adonis-api-sample


     _       _             _         _ ____  
    / \   __| | ___  _ __ (_)___    | / ___|
   / _ \ / _` |/ _ \| '_ \| / __|_  | \___ \
  / ___ \ (_| | (_) | | | | \__ \ |_| |___) |
 /_/   \_\__,_|\___/|_| |_|_|___/\___/|____/


> Which starter kit would you like to use ...  Press <ENTER> to select
  Slim Starter Kit A lean AdonisJS application with just the framework core
 Web Starter Kit Everything you need to build a server render app
>  API Starter Kit AdonisJS app tailored for creating JSON APIs
  Inertia Starter Kit Inertia app with a frontend framework of your choice

> Which authentication guard you want to use ...  Press <ENTER> to select
> Session Authenticate users using cookies and session
  Access Token Authenticate clients using API tokens
  Basic Auth Authenticate users using HTTP Basic Auth
  Skip I want to configure the Auth package manually

> Which database driver you want to use ...  Press <ENTER> to select
  SQLite
  LibSQL
  MySQL
> PostgreSQL
  MS SQL

> Download starter kit (1.46 s)
  Downloaded "github:adonisjs/api-starter-kit"
> Install packages
  [ wait ] installing dependencies   .
> Prepare application
> Configure Lucid
> Configure Auth

╭──────────────────────────────────────────────────────────────────╮
│    Your AdonisJS project has been created successfully!          │
│──────────────────────────────────────────────────────────────────│
│                                                                  │
│    > cd adonis-api-sample                                        │
│    > npm run dev                                                 │
│    > Open http://localhost:3333                                  │
│    >                                                             │
│    > Have any questions?                                         │
│    > Join our Discord server - https://discord.gg/vDcEjq6        │
│                                                                  │

ディレクトリ構成としては以下になります。
※見づらいので3階層まで表示

API Starter Kit
tree -L 3 -I node_modules*

.
|-- ace.js
|-- adonisrc.ts
|-- app
|   |-- exceptions
|   |   `-- handler.ts
|   |-- middleware
|   |   |-- auth_middleware.ts
|   |   |-- container_bindings_middleware.ts
|   |   |-- force_json_response_middleware.ts
|   |   |-- guest_middleware.ts
|   |   `-- silent_auth_middleware.ts
|   `-- models
|       `-- user.ts
|-- bin
|   |-- console.ts
|   |-- server.ts
|   `-- test.ts
|-- config
|   |-- app.ts
|   |-- auth.ts
|   |-- bodyparser.ts
|   |-- cors.ts
|   |-- database.ts
|   |-- hash.ts
|   |-- logger.ts
|   `-- session.ts
|-- database
|   `-- migrations
|       `-- 1744189966356_create_users_table.ts
|-- eslint.config.js
|-- package-lock.json
|-- package.json
|-- start
|   |-- env.ts
|   |-- kernel.ts
|   `-- routes.ts
|-- tests
|   `-- bootstrap.ts
`-- tsconfig.json

疎通確認

最後に疎通してみましょう。

以下のコマンドを実行し、AdonisJSの開発サーバを起動します。

node ace serve --hmr

[ info ] starting HTTP server...
╭─────────────────────────────────────────────────╮
│                                                 │
│    Server address: http://localhost:3333        │
│    Watch Mode: HMR                              │
│    Ready in: 1.37 s                             │
│                                                 │
╰─────────────────────────────────────────────────╯
[01:22:37.567] INFO (13960): started HTTP server on localhost:3333

デフォルトでHello WorldのAPIが用意されているので、リクエストしてみると正常にレスポンスが返ってきました!
導入から実行できるようにするまで、非常に簡単に出来ましたね:smile:

curl -X GET http://localhost:3333
{"hello":"world"}

おわりに

今回はAdonisJSについての簡単な概要と、実際にAPIを叩けるようにするまでを試しました。
細かい内容については、次の記事で書いていこうと思います:smile:

1
0
1

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?