Pylon
Pylon を使った GraphQL API の構築は簡単です。Pylon は Hono 上に構築されたバックエンドフレームワークで、コードファーストの GraphQL API 開発を提供します。
GraphQL スキーマは TypeScript の定義からリアルタイムで生成されるため、サービスのロジックの記述に集中できます。この方法は開発を大幅に速め、型安全性を高め、エラーを減らします。
コードに破壊的な変更を加えると、すぐに API に反映され、機能への影響を即座に確認できます。
詳しくは Pylon をご覧ください。
新しい Pylon サービスのセットアップ
Pylon では、npm create pylon コマンドで新しいサービスを作成できます。このコマンドは、基本的な構造と設定を持つ Pylon プロジェクトを作成します。 セットアップ中に、Bun、Node.js、Cloudflare Workers など、使用するランタイムを選べます。
このガイドでは Bun ランタイムを使います。
新しいプロジェクトの作成
次のコマンドで新しい Pylon プロジェクトを作成します。
npm create pylon my-pylon@latestmy-pylon という新しいディレクトリが作成され、基本的な Pylon プロジェクトの構造が用意されます。
プロジェクトの構造
Pylon プロジェクトの構造は次のとおりです。
my-pylon/
├── .pylon/
├── src/
│ ├── index.ts
├── package.json
├── tsconfig.json.pylon/:プロジェクトの本番ビルドを格納します。src/:プロジェクトのソースコードを格納します。src/index.ts:Pylon サービスのエントリーポイントです。package.json:npm パッケージの設定ファイルです。tsconfig.json:TypeScript の設定ファイルです。
基本的な例
基本的な Pylon サービスの例を示します。
import { app } from '@getcronit/pylon'
export const graphql = {
Query: {
sum: (a: number, b: number) => a + b,
},
Mutation: {
divide: (a: number, b: number) => a / b,
},
}
export default appAPI の保護
Pylon は、クラウドネイティブな ID・アクセス管理ソリューションの ZITADEL と連携し、API に安全な認証と認可を提供します。ZITADEL のドキュメントに従うと、Pylon API を簡単に保護できます。
より複雑な API の作成
Pylon のリアルタイムのスキーマ生成を使うと、より複雑な API を作成できます。対応する TypeScript の型や API の定義方法については、Pylon のドキュメントを参照してください。
この例では、Pylon で複雑な型とサービスを定義する方法を示します。TypeScript のクラスとメソッドを使うことで、データベース、外部サービス、その他のリソースとやり取りする強力な API を作成できます。
import { app } from '@getcronit/pylon'
class Post {
id: string
title: string
constructor(id: string, title: string) {
this.id = id
this.title = title
}
}
class User {
id: string
name: string
constructor(id: string, name: string) {
this.id = id
this.name = name
}
static async getById(id: string): Promise<User> {
// Fetch user data from the database
return new User(id, 'John Doe')
}
async posts(): Promise<Post[]> {
// Fetch posts for this user from the database
return [new Post('1', 'Hello, world!')]
}
async $createPost(title: string, content: string): Promise<Post> {
// Create a new post for this user in the database
return new Post('2', title)
}
}
export const graphql = {
Query: {
user: User.getById,
},
Mutation: {
createPost: (userId: string, title: string, content: string) => {
const user = User.getById(userId)
return user.$createPost(title, content)
},
},
}
export default appAPI の呼び出し
Pylon API は、任意の GraphQL クライアントライブラリから呼び出せます。開発には、API とリアルタイムでやり取りできる Web ベースの GraphQL IDE、Pylon Playground を推奨します。
- プロジェクトのディレクトリで
bun run devを実行し、Pylon サーバーを起動します。 - ブラウザーで
http://localhost:3000/graphqlにアクセスし、Pylon Playground を開きます。 - 左側のパネルに GraphQL のクエリまたはミューテーションを記述します。

Hono のコンテキストへのアクセス
getContext 関数で、コード内のどこからでも Hono のコンテキストにアクセスできます。この関数は現在のコンテキストオブジェクトを返し、リクエスト、レスポンス、その他のコンテキスト固有のデータを取得できます。
import { app, getContext } from '@getcronit/pylon'
export const graphql = {
Query: {
hello: () => {
const context = getContext()
return `Hello, ${context.req.headers.get('user-agent')}`
},
},
}
export default appHono のコンテキストオブジェクトとそのプロパティの詳細については、Hono のドキュメントと Pylon のドキュメントを参照してください。
Hono の役割は?
Pylon は、Web アプリケーションと API を構築するための軽量な Web フレームワーク、Hono の上に構築されています。Hono は HTTP リクエストとレスポンスを処理する中核機能を提供し、Pylon はそれを拡張して GraphQL API の開発をサポートします。
GraphQL に加えて、Pylon では基盤となる Hono アプリケーションのインスタンスにアクセスし、独自のルートやミドルウェアを追加できます。これにより、Hono の機能を十分に活用して、より複雑な API やサービスを構築できます。
import { app } from '@getcronit/pylon'
export const graphql = {
Query: {
sum: (a: number, b: number) => a + b,
},
Mutation: {
divide: (a: number, b: number) => a / b,
},
}
// Add a custom route to the Pylon app
app.get('/hello', (ctx, next) => {
return new Response('Hello, world!')
})まとめ
Pylon は、GraphQL API の開発を簡単にする強力な Web フレームワークです。TypeScript の型定義からリアルタイムでスキーマを生成し、型安全性を高め、エラーを減らします。Pylon を使えば、ビジネス要件を満たす、安全でスケーラブルな API を素早く構築できます。Hono との統合により、GraphQL API の開発に集中しながら Hono のすべての機能を利用できます。
Pylon の詳細は、公式ドキュメントをご覧ください。