- バックエンドとは
- バックエンド開発者に必要なスキルセット
[[サーバーサイドプログラミング言語とフレームワークの知識]]
[[データベース (SQL/NoSQL) の知識]]
[[API設計と実装スキル (REST, GraphQL, gRPC)]]
[[サーバー、ネットワーク、ホスティング環境の理解]]
[[セキュリティの知識]]
[[テストとデバッグスキル]]
[[バージョン管理システム (Git) の利用]]
[[DevOpsとCI/CDの理解]]
- バックエンド技術の歴史と進化
[[CGIから現代のマイクロサービス、サーバーレスまで]]
[[主要な技術的パラダイムシフト]]
- モダンバックエンド開発の概要
[[マイクロサービスアーキテクチャの台頭]]
[[コンテナ化とオーケストレーション (Docker, Kubernetes)]]
[[サーバーレスコンピューティング (FaaS)]]
[[クラウドプラットフォームの活用 (AWS, Azure, GCP)]]
[[API中心設計 (API-First)]]
[[非同期処理とメッセージキュー]]
[[セキュリティとスケーラビリティの重視]]
- バックエンド開発の学習ロードマップ (例)
- 言語選択の考慮事項
[[パフォーマンス要件]]
[[エコシステムとライブラリの充実度]]
[[コミュニティサポート]]
[[チームのスキルセットと学習コスト]]
[[プロジェクトの特性と規模]]
[[スケーラビリティと並行処理能力]]
- TypeScript) によるバックエンド開発 MOC
[[Node.jsの概要と特徴 (イベント駆動、ノンブロッキングI/O)]]
[[Express.jsフレームワーク MOC]]
[[NestJSフレームワーク MOC]] (TypeScriptベース)
[[Fastify, Koaなどのフレームワーク概要]]
[[npm/yarnとパッケージ管理]]
[[非同期処理 (Callbacks, Promises, async/await)]] (再掲・バックエンド文脈)
[[Node.jsのテスト (Jest, Mocha)]]
[[Node.jsのデプロイメント]]
- Pythonによるバックエンド開発 MOC
[[Pythonの概要と特徴 (可読性、豊富なライブラリ)]]
[[Djangoフレームワーク MOC]] (フルスタック、バッテリー同梱)
[[Flaskフレームワーク MOC]] (マイクロフレームワーク、柔軟性)
[[FastAPIフレームワーク MOC]] (高性能、型ヒントベース)
[[SQLAlchemy (ORM)]]
[[Celery (非同期タスクキュー)]]
[[Pythonのテスト (pytest, unittest)]]
[[Pythonのデプロイメント (Gunicorn, uWSGI, Docker)]]
- Javaによるバックエンド開発 MOC
[[Javaの概要と特徴 (堅牢性、エンタープライズ向け、JVM)]]
[[Spring Framework / Spring Boot MOC]] (DI、AOP、豊富なモジュール)
[[Jakarta EE (旧Java EE) MOC]] (標準仕様ベース)
[[Micronaut, Quarkusなどのフレームワーク概要]]
[[Maven/Gradleとビルドシステム]]
[[JPA/Hibernate (ORM)]]
[[Javaのテスト (JUnit, Mockito)]]
[[Javaのデプロイメント (Tomcat, JBoss, Docker, Jar実行)]]
- Rubyによるバックエンド開発 MOC
[[Rubyの概要と特徴 (開発者幸福度、DSL)]]
[[Ruby on Railsフレームワーク MOC]] (CoC - Convention over Configuration, DRY)
[[Sinatraフレームワーク概要]] (マイクロフレームワーク)
[[Active Record (ORM)]]
[[Sidekiq (非同期処理)]]
[[Rubyのテスト (RSpec, Minitest)]]
[[Rubyのデプロイメント (Puma, Unicorn, Docker)]]
- PHPによるバックエンド開発 MOC
[[PHPの概要と特徴 (Web特化、広範なホスティングサポート)]]
[[Laravelフレームワーク MOC]]
[[Symfonyフレームワーク MOC]]
[[Composerとパッケージ管理]]
[[Eloquent ORM (Laravel), Doctrine (Symfony)]]
[[PHPのテスト (PHPUnit)]]
[[PHPのデプロイメント (Apache/Nginx + PHP-FPM, Docker)]]
- Go (Golang) によるバックエンド開発 MOC
[[Goの概要と特徴 (シンプルさ、パフォーマンス、並行処理)]]
[[標準ライブラリの充実 (net/httpなど)]]
[[Gin, Echoなどのフレームワーク概要]]
[[GoroutinesとChannelsによる並行処理]]
[[Goのテスト (標準testingパッケージ)]]
[[Goのデプロイメント (静的バイナリ、Docker)]]
- (.NET) によるバックエンド開発 MOC
[[C#とnetプラットフォームの概要|と.NETプラットフォームの概要]]
[[ASP.NET Coreフレームワーク MOC]] (クロスプラットフォーム、高性能)
[[Entity Framework Core (ORM)]]
[[C#のテスト-xunitnet-nunit-mstest|のテスト (xUnit.net, NUnit, MSTest)]]
[[C#のデプロイメント-iis-kestrel-docker-azure|のデプロイメント (IIS, Kestrel, Docker, Azure)]]
- (オプション) Rustによるバックエンド開発 MOC (Actix, Rocket, Axumなど)
- (オプション) Kotlinによるバックエンド開発 MOC (Ktor, Spring Boot with Kotlinなど)
- (オプション) Scalaによるバックエンド開発 MOC (Play Framework, Akka HTTP, ZIO HTTPなど)
- Webフレームワークとは
- 一般的なWebフレームワークの構成要素
[[ルーティング (Routing)]]
[[リクエストハンドラ (Request Handlers / Controllers)]]
[[ミドルウェア (Middleware / Filters)]]
[[テンプレートエンジン (Template Engine)]] (サーバーサイドレンダリングの場合)
[[ORM/データベース抽象化レイヤー]]
[[セッション管理]]
[[セキュリティ機能 (CSRF対策、XSS対策など)]]
- Model-View-Controller (MVC) パターンとWebフレームワーク (再掲・バックエンド視点)
- フレームワーク選択の基準 (言語MOCと重複するが重要)
- フレームワークの学習方法とドキュメントの活用
- SQLデータベースの基本
- SQL (Structured Query Language) MOC
[[DDL (Data Definition Language - CREATE, ALTER, DROP)]]
[[DML (Data Manipulation Language - SELECT, INSERT, UPDATE, DELETE)]]
[[DCL (Data Control Language - GRANT, REVOKE)]]
[[TCL (Transaction Control Language - COMMIT, ROLLBACK, SAVEPOINT)]]
[[結合 (JOIN - INNER, LEFT, RIGHT, FULL)]]
[[集約関数 (Aggregate Functions - COUNT, SUM, AVG, MAX, MIN)]]
[[グループ化 (GROUP BY) とフィルタリング (HAVING)]]
[[サブクエリ (Subqueries)]]
[[ビュー (Views)]]
[[ストアドプロシージャとトリガー]] (概要)
[[インデックス (Indexes) とパフォーマンス]]
- 主要なSQLデータベース
[[PostgreSQL MOC]] (特徴、高度な機能)
[[MySQL MOC]] (特徴、広く利用)
[[SQLite MOC]] (組み込み、軽量)
[[Microsoft SQL Server MOC]]
[[Oracle Database MOC]]
- SQLデータベース設計のベストプラクティス
- SQLインジェクション対策 (プリペアドステートメント、ORMの活用)
- NoSQLデータベースの概要
- NoSQLデータベースの種類
- NoSQLデータベースの選択基準 (データモデル、一貫性モデル、スケーラビリティ要件)
- NoSQLデータベースのデータモデリング (非正規化、埋め込み、リンク)
- REST API実装のベストプラクティス MOC (再掲・実装観点)
- GraphQLサーバー実装 MOC
- gRPCサービス実装 MOC
- APIのテスト (バックエンド)
[[ユニットテスト (ビジネスロジック、リクエストハンドラ)]]
[[インテグレーションテスト (データベース連携、外部サービス連携)]]
[[コントラクトテスト (Pactなど)]]
[[E2Eテスト (APIエンドポイントレベル)]]
- APIドキュメンテーションの自動生成 (Swagger/OpenAPIからのコード生成、またはコードからの仕様生成)
- APIのバージョニングのサーバーサイド実装
- APIレート制限とスロットリングの実装
- セッションベース認証 MOC
[[CookieとセッションIDの仕組み]]
[[サーバサイドでのセッション管理 (インメモリ、データベース、Redisなど)]]
[[セッション固定化 (Session Fixation) 対策]]
- トークンベース認証 MOC
[[ステートレス認証]]
- JWT (JSON Web Token) の発行と検証 MOC
[[JWTの構造 (Header, Payload, Signature)]]
[[署名アルゴリズム (HMAC, RSA)]]
[[アクセストークンとリフレッシュトークン戦略]]
[[JWTのセキュリティ考慮事項 (有効期限、失効、XSS対策)]]
- OpenID Connect (OIDC) のサーバーサイド実装 MOC
[[認可サーバー (Authorization Server) の役割と構築]]
[[リソースサーバー (Resource Server) の役割とトークン検証]]
- APIキー認証の実装
- パスワード管理
[[安全なパスワードハッシュ化 (bcrypt, scrypt, Argon2)]]
[[ソルトの使用]]
[[パスワードポリシー]]
- 多要素認証 (MFA - Multi-Factor Authentication) の実装サポート
- IaaS (Infrastructure as a Service) (EC2, Azure VMs, Google Compute Engine)
- PaaS (Platform as a Service) (AWS Elastic Beanstalk, Azure App Service, Google App Engine, Heroku)
- FaaS (Function as a Service) (AWS Lambda, Azure Functions, Google Cloud Functions)
- マネージドデータベースサービス (AWS RDS, Azure SQL Database, Google Cloud SQL)
- マネージドキャッシュサービス (AWS ElastiCache, Azure Cache for Redis)
- マネージドメッセージキューサービス (AWS SQS, Azure Service Bus)
- オブジェクトストレージ (AWS S3, Azure Blob Storage, Google Cloud Storage)
[[Terraform, AWS CloudFormation, Azure Resource Manager (ARM), Pulumi]]
- インフラのバージョン管理と再現性
- キャッシュの目的 (パフォーマンス向上、DB負荷軽減)
- キャッシュの階層 (クライアント、CDN、ロードバランサ、アプリケーション、データベース)
- インメモリキャッシュ MOC
[[Redis MOC]] (データ構造、永続化、クラスタリング)
[[Memcached MOC]]
[[アプリケーションレベルキャッシュ (EHCache, Guava Cacheなど)]]
- CDN (Content Delivery Network) による静的/動的コンテンツのキャッシュ (バックエンドからの制御)
- データベースキャッシュ (クエリキャッシュ、バッファプール)
- キャッシュ戦略
[[キャッシュアサイド (Cache-Aside)]]
[[リードスルー (Read-Through)]]
[[ライトスルー (Write-Through)]]
[[ライトバック (Write-Back / Write-Behind)]]
- キャッシュ無効化 (Cache Invalidation) 戦略
[[TTL (Time To Live)]]
[[イベントベースの無効化]]
[[バージョンベースの無効化]]
- キャッシュの課題 (キャッシュコヒーレンシ、キャッシュスタンプede、キャッシュスラッシング)
- パフォーマンスボトルネックの特定
[[プロファイリングツール (サーバーサイド)]] (JProfiler, YourKit, cProfile, delve pprofなど)
[[APM (Application Performance Monitoring) ツールの活用]] (Datadog, New Relic, Dynatrace)
- スケーラビリティの種類
- ロードバランシング (Load Balancing) MOC
[[ロードバランサの種類 (L4, L7)]]
[[アルゴリズム (Round Robin, Least Connectionsなど)]]
[[スティッキーセッション]]
- データベーススケーラビリティ
[[リードレプリカ (Read Replicas)]]
[[シャーディング (Sharding)]]
[[コネクションプーリング (Connection Pooling)]]
- 非同期処理とメッセージキューによるスケーラビリティ向上 (詳細は後述)
- ステートレスアーキテクチャとスケーラビリティ
- バックエンドコードの最適化 (アルゴリズム、データ構造、I/O処理)
- OWASP Top 10 (サーバーサイド脆弱性) MOC
[[インジェクション (SQLi, NoSQLi, OS Command Injection)]]
[[認証の不備 (Broken Authentication)]] (再掲・サーバーサイド視点)
[[機密データの公開 (Sensitive Data Exposure)]]
[[XML外部実体参照 (XXE - XML External Entities)]]
[[アクセス制御の不備 (Broken Access Control)]] (認可の不備 - 再掲)
[[セキュリティ設定ミス (Security Misconfiguration)]] (デフォルト設定、不要な機能有効化)
[[安全でないデシリアライゼーション (Insecure Deserialization)]]
[[脆弱性のあるコンポーネントの使用 (Using Components with Known Vulnerabilities)]]
[[不十分なロギングとモニタリング (Insufficient Logging & Monitoring)]]
[[サーバーサイドリクエストフォージェリ (SSRF - Server-Side Request Forgery)]]
- セキュアコーディングプラクティス
- 依存関係管理と脆弱性スキャン (npm audit, Snyk, OWASP Dependency-Check)
- シークレット管理 (Secrets Management) MOC (APIキー、DBパスワードなど)
[[HashiCorp Vault, AWS Secrets Manager, Azure Key Vault, Google Cloud Secret Manager]]
[[環境変数での管理と注意点]]
- DoS/DDoS攻撃対策 (レート制限、IPブロッキング、WAF)
- Web Application Firewall (WAF)
- セキュリティヘッダの設定 (Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Optionsなど)
- 定期的なセキュリティ監査とペネトレーションテスト
- 効果的なサーバーサイドロギング戦略 MOC
[[何をログに記録するか (リクエスト/レスポンス、エラー、重要なビジネスイベント、デバッグ情報)]]
[[ログレベルの適切な使用 (DEBUG, INFO, WARN, ERROR, CRITICAL)]]
[[構造化ロギング (JSON形式など)]]
[[リクエストIDによるログの追跡 (相関ID)]]
[[機密情報をログに含めない]]
[[ロギングライブラリの選定と設定 (Log4j, Logback, Serilog, Winstonなど)]]
- ログ集約と管理 (Centralized Logging) MOC
[[ELK Stack (Elasticsearch, Logstash, Kibana)]]
[[Splunk, Grafana Loki, Datadog Logs, AWS CloudWatch Logs, Google Cloud Logging]]
- アプリケーションパフォーマンスモニタリング (APM) MOC
[[トランザクション追跡、エラー率、レイテンシ監視]]
[[Datadog, New Relic, Dynatrace, Sentry, Prometheus + Grafana]]
- インフラストラクチャモニタリング MOC (CPU, メモリ, ディスク, ネットワーク)
- アラートシステム (Alerting) MOC
- 分散トレーシング (Distributed Tracing) MOC (マイクロサービス環境)
[[Jaeger, Zipkin, OpenTelemetry]]
- 非同期処理の必要性 (応答性向上、長時間処理の分離、耐障害性)
- メッセージキュー (Message Queue) の概要 MOC
[[メッセージブローカーの役割 (プロデューサー、コンシューマー、キュー)]]
[[Point-to-Point vs. Publish/Subscribeモデル]]
- 主要なメッセージキューシステム
[[RabbitMQ MOC]] (AMQPプロトコル)
[[Apache Kafka MOC]] (分散ストリーミングプラットフォーム)
[[Redis Streams MOC]]
[[AWS SQS (Simple Queue Service)]]
[[Azure Service Bus]]
[[Google Cloud Pub/Sub]]
- 非同期タスク処理の実装
[[バックグラウンドワーカーの作成]]
[[べき等な処理と再試行メカニズム]]
[[デッドレターキュー (DLQ - Dead Letter Queue)]]
- メッセージキューの利点と適用ケース (負荷平準化、サービス間非同期連携、イベント駆動)
- メッセージキューの課題 (メッセージ順序保証、トランザクション管理、監視)
- バージョン管理 (Git) とブランチ戦略 (再掲・バックエンド開発フロー)
- コードレビューと静的解析 (再掲)
- CI/CDパイプライン (ビルド、テスト、アーティファクト作成、デプロイ)
- Infrastructure as Code (IaC) (再掲)
- 設定管理 (Configuration Management) (環境変数、設定ファイル、Config Server)
- APIドキュメンテーションの維持 (Swagger/OpenAPIなど - 再掲)
- 技術的負債の管理とリファクタリング
- 12 Factor App (トゥエルブファクターアップ) の原則 (クラウドネイティブアプリ設計指針)
- DevOpsプラクティスの採用
- 継続的な学習と技術トレンドの追跡
- バックエンド開発におけるアンチパターン