Accellaを使う理由
Accellaは、開発者の負担を軽減し、Webアプリケーションを効率的に開発できるよう設計されたフレームワークです。 ここでは、開発効率を高めるためのAccellaの特徴を紹介します。
1. フルスタック
従来のWebアプリケーションのサーバーサイド開発では、Ruby on Rails・Laravel・DjangoといったフルスタックMVCフレームワークが広く利用されてきました。 これらのフレームワークには、Model-View-Controller (MVC) を軸とした多くの機能が備わっており、効率的に開発を進めることができます。
Accellaも、これらのフレームワークの影響を受けた設計になっており、少ないコードで基本的な機能を実装可能です。 例として、テーブルのCRUD操作、バリデーション、セッション管理、パスワード認証、高度な検索、フォームの構築、リクエストパラメータのパース処理、ページング、多言語対応、セキュリティなどがあげられます。
特に、これまでのJavaScript/TypeScript向けフレームワークと比べるとORM(オブジェクト/リレーショナルマッピング)ライブラリを機能の中心に据えた設計になっている点が特徴的です。 ORMライブラリのAccel RecordはActive Recordパターンを採用しており、Accellaのために新規に開発されました。
これらの豊富な機能により、独自の機能実装に集中して開発を進めることができます。
2. 型による迅速なフィードバック
プログラミング言語の型安全性は開発効率を高く保つために重要な要素で、ソースコードの量が増えてきた際に特に顕著になります。 静的型付け言語を利用した開発ではプログラムを実行する前に問題を検知することができるため、正しく動くコードをより早く作ることにつながります。 またリファクタリングもより安全に行えること、自動テストで担保すべき点が少なくなることなどから、プロダクトの品質を保つこともより容易になります。
近年Webアプリケーション開発でも、フロントエンドを中心にTypeScriptによる型安全な開発が広まってきました。そしてこれは、サーバーサイドの開発にも広まって来ています。 サーバーサイド開発はRuby、PHP、Python等の動的型付け言語を利用されることも多いですが、型安全という面では静的型付け言語の方が優れています。 Accellaは「静的型付け言語の安全性」と「従来のフルスタックフレームワークのような豊富な機能」の両方を持つフレームワークを作ることで、より開発効率の高いWebアプリケーション開発を実現したいという考えの元生まれました。
データベースとの連携部分はもちろん、Astroコンポーネントを利用することで他のサーバーサイドフレームワークにはない型安全なテンプレートレンダリングも提供します。 AccellaではTypeScriptの型安全性により、デバッグやリファクタリングも含めた開発効率の高さを実現します。
3. シンプルなアーキテクチャ
Next.jsやNuxtなどのフロントエンドフレームワークは、クライアントサイドレンダリングを行うSPA(Single Page Application)を中心に設計されています。 SPAでは、ブラウザ側とサーバー側両方のデータの行き来を念頭に起きながら開発を行う必要があり、これがアプリケーションの複雑さを生み出してしまいます。フレームワークの機能が充実することによりそれが隠蔽されたとしても、根本の複雑さはなくなりません。
Accellaはこれらとは異なり、MPA(Multi-Page Application)を基本として設計されています。 これは、従来からのサーバーサイドフレームワーク(Rails, Django, Express, Laravelなど)と同様のサーバーサイド中心のアーキテクチャです。
どうしてもSPAの構成を必要とするのでなければ、一般的にはMPAの構成を採用した方がプロダクトの複雑さを小さくすることができます。 MPAでは、SPAのようにサーバーサイドAPIとフロントエンドアプリケーションを別々に提供する必要はありません。 サーバーサイドで組み立てたHTMLをブラウザに返すシンプルなアーキテクチャになるため、実装やインフラ設計の際にSPAと比べて考慮すべきことが少なくなります。
アーキテクチャの複雑さが小さいほど、実装は元よりデバッグやテストもより容易になり開発者の負担を減らすことができます。
4. フロントエンドフレームワークとの連携
ここまで述べたような特徴だけであれば、Javaなど他の静的型付け言語のフレームワークで実現できるかもしれません。 しかし、Accellaを使うべき最後の理由がフロントエンドフレームワークとの連携にあたります。
サーバーサイド中心のアーキテクチャでWebアプリケーション開発をしたとしても、一部ではブラウザ上で動作させたい機能が出てくることも多いと思います。 そして、現在ブラウザ上で動作するフロントエンドの処理はReactやVue.js等のフレームワークを利用してTypeScriptで開発することが主流となっています。
Accellaではサーバーサイド開発とフロントエンド開発、両方をTypeScriptという1つの言語で統一することができます。 これは、複数のプログラミング言語を使い分ける際に発生する開発者の負担を減らすことにつながります。
さらにAccellaではAstroの機能を利用することで、柔軟にフロントエンドフレームワークを組み込み、連携することができます。 これにより、ブラウザへはレンダリング済みのHTMLを返す構成を基本としつつ、ブラウザ上で動作させたい処理も無理なく開発することができます。
他のフレームワークとの比較
Accellaを、以下の3つのタイプのフレームワークとの共通点・相違点を整理して紹介します。
- フロントエンドフレームワーク: Next.js, Nuxt, Remix など
- JavaScript/TypeScript向けサーバーサイドフレームワーク: Express, NestJS など
- 他言語のフルスタックフレームワーク: Ruby on Rails, Django, Laravel など
特徴 \ FW | Accella | 1. Next.js, Nuxt, Remix | 2. Express, NestJS | 3. Rails, Django, Laravel |
---|---|---|---|---|
アーキテクチャの中心 | サーバー | フロント | サーバー | サーバー |
型安全性(言語) | ✅ | ✅ | ✅ | ❔️ |
型安全性(レンダリング) | ✅ | ✅ | ❌ | ❌ |
ORM連携 | ✅ | ❌ | ❌ | ✅ |
各項目の詳細はこのページの各セクションに記載しています。
- アーキテクチャの中心: 3. シンプルなアーキテクチャ
- 型安全性(言語/レンダリング): 2. 型による迅速なフィードバック
- ORM連携: 1. フルスタック