🔷

もう技術選定や設計に悩まない!?全部入りフルスタックTypeScriptフレームワークAdonisJS - ルーティング&コントローラ編

2025/02/26に公開

AdonisJSは、Node.js向けのフルスタックフレームワークであり、バックエンドからフロントエンド、データベース管理までを一貫して開発できる環境を提供します。

https://adonisjs.com/

この記事では、AdonisJS v6のインストール方法、ルーティングとコントローラの基礎について解説します。

1. AdonisJSとは?

AdonisJSは、モダンなWebアプリケーション開発に最適なフルスタックフレームワークです。以下の特徴を持っています。

  • TypeScriptを標準サポート: 型安全な開発が可能
  • MVCアーキテクチャ: コードの整理がしやすい
  • 柔軟性のあるフロントエンド開発
  • Lucid ORMによるデータベース管理
  • 認証やバリデーション機能が充実

これにより、フロントエンドとバックエンドの統合がスムーズに行え、開発の生産性を大幅に向上させることができます。

2. AdonisJSのインストール

Node.jsのバージョン

AdonisJS v6を利用するには、Node.js 20以上が必要です。

プロジェクトの作成

以下のコマンドで新しいAdonisJSプロジェクトを作成できます。

npm init adonisjs@latest my-adonis-app

コマンドを実行すると、以下のようなプロンプトが表示されます。

  1. Which starter kit would you like to use: inertia を選択します。
  2. Which authentication guard you want to use: sessionを選択します。
  3. Which database driver you want to use: 今回はsqliteを選択します。
  4. Which frontend adapter you want to use with Inertia: react を選択します。
  5. Do you want to setup server-side rendering with Inertia?: No を選択します。

このプロンプト終了後、Starter Kitのダウンロード、依存関係のインストール、その他セットアップ処理が実行されます。

開発サーバーの起動

cd my-adonis-app
npm run dev

これで、開発サーバーが http://localhost:3333 で起動します。

3. AdonisJSのディレクトリ構成

AdonisJSのプロジェクトを作成すると、以下のようなディレクトリ構成が生成されます。

Inertia Starter Kitの場合は、さらにinertiaディレクトリが増えます。

my-adonis-app/
├── app/                # アプリケーションロジック(コントローラー、モデルなど)
│   ├── controllers/
│   ├── models/
│   └── ...
├── config/             # 設定ファイル
├── database/           # マイグレーションやシードファイル
│   ├── migrations/
│   └── seeders/
├── public/             # 静的ファイル(画像、CSS、JavaScriptなど)
├── resources/          # テンプレートやビュー
│   ├── views/
│   └── ...
├── start/              # アプリケーションの初期化スクリプト
│   ├── routes.ts       # ルーティングを定義
│   └── ...
├── .env                # 環境変数設定ファイル
└── adonisrc.ts         # AdonisJSの設定ファイル

https://adonisjs-docs-ja.vercel.app/guides/getting-started/folder-structure

4. ルーティングとコントローラーの作成

ルーティングの追加

AdonisJSでは、ルーティングを start/routes.ts に定義します。ルーティングとは、特定のURLに対する処理を決めるものです。以下は基本的なルーティングの例です。

import router from '@adonisjs/core/services/router';

router.get('/', () => {
  return 'ホームページからこんにちは世界。';
});

router.get('/about', () => {
  return 'これはaboutページです。';
});

router.get('/posts/:id', ({ params }) => {
  return `この投稿のIDは${params.id}です。`;
});

https://adonisjs-docs-ja.vercel.app/guides/basics/routing

コントローラの作成

コントローラは、リクエストを処理し、適切なレスポンスを返す役割を持ちます。app/controllers/ ディレクトリ内に作成され、ルーティングと連携して動作します。

以下のコマンドでコントローラを作成できます。

node ace make:controller HelloWorld -s

app/controllers/hello_world_controller.ts が作成されます。
簡単なjsonレスポンスを返す処理を書きます。

import type { HttpContext } from '@adonisjs/core/http';

export default class HelloWorldController {
  public async index({ response }: HttpContext) {
    return response.json({ message: 'Hello from Controller!' });
  }
}

start/routes.ts にルートを追加して、コントローラを動作させます。

const HelloWorldController = () => import('#controllers/hello_world_controller')

router.get('hello', [HelloWorldController, 'index']);

これで、http://localhost:3333/hello にアクセスすると、コントローラからのレスポンスが表示されます。

https://adonisjs-docs-ja.vercel.app/guides/basics/controllers

5. まとめ

この記事では、AdonisJS v6の基本的なセットアップ方法について解説しました。
次回は、データベースの操作について解説していきます!

Fusic 技術ブログ

Discussion