【ITニュース解説】Backend Implementation: From 'It Works on My Machine' to Production-Ready API

2025年09月05日に「Dev.to」が公開したITニュース「Backend Implementation: From 'It Works on My Machine' to Production-Ready API」について初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

ITニュース概要

Node.jsとTypeScriptで、レシート管理アプリのバックエンドを構築。認証にAWS Cognito、ファイル保存にS3、文字認識にTextractを使用。データベースはPostgreSQLとPrisma。ExpressでAPIを作成し、Jestでテスト。型安全、スケーラブル、セキュア、信頼性の高いシステムを目指す。

ITニュース解説

この記事では、React Nativeアプリのバックエンドを構築する過程を解説している。特に、「自分の環境では動く」から本番環境で利用可能なAPIへの移行に焦点を当て、Node.jsとTypeScriptを用いた開発について詳しく説明する。

まず、Node.jsとTypeScriptの組み合わせを選択した理由として、TypeScriptによる型安全性を強調している。これにより、コンパイル時にエラーを検出し、本番環境での予期せぬエラーを減らすことができる。

記事で紹介されている技術スタックは以下の通り。Node.js、Express、TypeScriptをベースに、認証にはAWS Cognito、データベースにはPostgreSQLとPrisma、ファイルストレージにはAWS S3、OCR(光学文字認識)にはAWS Textract、テストにはJestとSupertestを使用する。

システム全体のアーキテクチャは、フロントエンド(React Native)がバックエンド(Node.js/Express/TypeScript)と通信し、バックエンドはAWS Cognitoによる認証、AWS S3へのファイル保存、TextractによるOCR処理、PostgreSQLとPrismaによるデータベース管理を行う。

具体的なセットアップ手順として、npmを用いた必要なパッケージのインストール方法が記載されている。主要な依存関係として、express、cors、helmet、morgan、dotenv、joi、multer、prisma、@prisma/client、@aws-sdk/client-s3、@aws-sdk/client-textract、aws-jwt-verifyが挙げられている。TypeScriptの設定も行い、@types/node、@types/express、tsx、nodemon、jestなどの開発用依存関係もインストールする。

プロジェクトのディレクトリ構造は、controllers(リクエストハンドラ)、middleware(認証、バリデーション)、routes(APIエンドポイント)、services(ビジネスロジック)、config(設定)、types(TypeScript定義)、utils(ヘルパー関数)に分割されている。

認証にはAWS Cognitoを使用し、複雑なパスワードハッシュ処理を省略する。CognitoServiceクラスを作成し、JWT(JSON Web Token)を検証し、必要に応じてデータベースにユーザーを作成する。

ファイルアップロードはAWS S3を利用する。S3Serviceクラスを作成し、ファイルをアップロードし、一意なキーを生成してS3に保存し、URLを返す。

OCR処理にはAWS Textractを使用する。TextractServiceクラスを作成し、S3に保存されたレシートの画像を解析し、テキストデータを抽出する。

データベースにはPostgreSQLとPrismaを使用する。Prismaのスキーマ定義ファイル(schema.prisma)で、UserモデルとReceiptモデルを定義する。Prismaを使用する利点として、強力な型付け、リレーショナル整合性、型安全なクライアント、マイグレーションシステムが挙げられている。

APIルートは、ExpressのRouterを使用して定義する。例えば、レシートのアップロード、レシートの一覧表示、特定のレシートの取得、レシートの削除などのエンドポイントが定義されている。

エラーハンドリングは、middlewareを使用して行う。エラーの種類に応じて適切なステータスコードとメッセージを返す。Prismaのエラーも適切に処理する。

テストはJestとSupertestを使用して行う。APIエンドポイントのテスト、認証フローのテスト、エラーケースのテストなどを行う。

デプロイメントのチェックリストとして、環境変数の設定、データベースマイグレーションの実行、TypeScriptのコンパイル、AWSサービスの設定、テストの合格、SSLの有効化、CORSの設定などが挙げられている。

この記事で構築されたバックエンドは、スケーラビリティ、型安全性、セキュリティ、信頼性、保守性、高速性を備えている。Node.js、TypeScript、AWS、PostgreSQL、Prismaなどの技術を組み合わせることで、高品質なバックエンドを構築できる。

【ITニュース解説】Backend Implementation: From 'It Works on My Machine' to Production-Ready API | いっしー@Webエンジニア