バックエンドデヴェロッパーロードマップ

## 🌐 インターネットの基礎

- インターネットの仕組み
    - URLの構造と構成要素[^1]
- HTTP (HyperText Transfer Protocol) とは何か？
    - HTTPプロトコルの概要と仕組み
- ブラウザの仕組み
- DNS (Domain Name System) の仕組み[^2]
- ドメイン名とは？
- ホスティングとは？

## 🏗 アーキテクチャパターン

- モノリシックアプリケーション
    - モノリシックアプリケーションの概要と設計
- マイクロサービス
    - マイクロサービスアーキテクチャの設計と実装
- モジュラーモノリス
    - モジュラーモノリス（Modular Monolith）アーキテクチャの詳細解説
- SOA (Service Oriented Architecture: サービス指向アーキテクチャ)
- メッセージブローカー
- コンテナ化 vs 仮想化
    - Dockerによるコンテナ化の基礎

## 🚀 Webサーバー

- Nginx
- Apache
- Caddy
- Microsoft IIS (Internet Information Services)

## 🔄 コンテナ化

- Docker
    - Dockerによるコンテナ化の基礎
- LXC (Linux Containers)

## 🔌 API (Application Programming Interface)

- REST (Representational State Transfer)
    - RESTful APIの設計と実装
- GraphQL
    - GraphQLの基礎と実装
- JSON (JavaScript Object Notation) API
- SOAP (Simple Object Access Protocol)
- HATEOAS (Hypermedia As The Engine Of Application State)
- OpenAPI仕様
    - APIドキュメンテーションの作成と管理
- CAP (Consistency, Availability, Partition Tolerance) 定理

## 🔑 認証とセキュリティ

- 認証/認可の仕組み[^3]
    - 暗号化と認証の基礎
    - OAuth (Open Authorization)
        - OAuthの概要と仕組み[^4]
        - PKCEによるOAuth 2.0のセキュリティ強化[^5]
    - Basic認証
        - HTTP Basic Authenticationの概要と仕組み[^6]
    - トークン認証
        - APIキー認証の概要と仕組み[^7]
    - JWT (JSON Web Token)
        - JWTの概要と実装メカニズム
    - OpenID
    - SAML (Security Assertion Markup Language)
    - Webセキュリティのベストプラクティス
        - OWASP Top 10とWebセキュリティの基本[^8]
            - MD5 (Message Digest Algorithm 5) を使うべきでない理由
            - SHA (Secure Hash Algorithm) ファミリー
            - scrypt / bcrypt
            - クッキー認証
            - CORS (Cross-Origin Resource Sharing)
            - HTTPS (HyperText Transfer Protocol Secure)
                - HTTPSの概要と仕組み[^9]
            - コンテンツセキュリティポリシー
            - OWASP (Open Web Application Security Project) のリスク
            - SSL/TLS (Secure Sockets Layer/Transport Layer Security)
            - セキュアコーディングプラクティス

## 🛠 キャッシュ

- キャッシング戦略の設計と実装
    - Redis (Remote Dictionary Server)
    - Memcached
    - サーバーサイド
    - クライアントサイド
    - CDN (Content Delivery Network)

## 🗃 データベース

データベース最適化の手法と実装


### リレーショナルデータベース

- PostgreSQL
- MySQL
- MariaDB
- Microsoft SQL Server
- Oracle Database

### NoSQL (Not Only SQL) データベース

- ACID (Atomicity, Consistency, Isolation, Durability) の原則
- トランザクション
- N+1問題
- シャーディング戦略
- 正規化
- データレプリケーション
- データベースインデックス

### NoSQLデータベースの種類

- **ドキュメントDB**: MongoDB, CouchDB
- **時系列DB**: InfluxDB, TimescaleDB
- **リアルタイムDB**: Firebase, RethinkDB
- **カラムDB**: Apache Cassandra, Apache HBase
- **キー・バリューストア**: Redis, Amazon DynamoDB
- **グラフDB**: Neo4j

## 🧪 テスト

- 統合テスト
- 単体テスト
- 機能テスト

## 💻 OSと一般知識

- オペレーティングシステムの基礎
- メモリ管理
- プロセス間通信
- 入出力管理
- POSIX (Portable Operating System Interface) の基本 (標準入力, 標準出力, 標準エラー出力, パイプ)
- ネットワークの基本概念
    - TCP/IPプロトコルの概要と仕組み
- ターミナルの使い方
    - grep, awk, sed, lsof, curl, wget (基本的なUNIXコマンド)
    - tail, head, less, find, ssh, kill, dig (システム管理コマンド)
- プロセス管理
    - サーバー管理の基礎
- スレッドと並行処理
- OSの仕組み

## 🛠 バージョン管理

- Git
- GitHub
- リポジトリホスティングサービス
    - Bitbucket
    - GitLab
- バージョン管理システム

## 🏛 ソフトウェア設計とアーキテクチャ

- GoF (Gang of Four) デザインパターン
- DDD (Domain-Driven Design: ドメイン駆動設計)
- TDD (Test-Driven Development: テスト駆動開発)
- サーバーレス
- 移行戦略
- スケールの種類
- gRPC (Google Remote Procedure Call)
- CQRS (Command Query Responsibility Segregation)
- イベントソーシング
    - イベント駆動アーキテクチャ (EDA) の詳細
- サービスメッシュ
- Twelve Factor Apps (12要素アプリケーション)

## 🔍 検索エンジン

- Elasticsearch
- Apache Solr

## 📡 メッセージングとストリーミング

- RabbitMQ
- Apache Kafka
- WebSocket
- SSE (Server-Sent Events: サーバー送信イベント)

## 🔥 スケール対応

- 負荷軽減戦略
- グレースフルデグラデーション
- スロットリング
- バックプレッシャー
- 負荷分散
    - 負荷分散の設計と実装
- サーキットブレーカー
- 障害モード

## 📊 可観測性とモニタリング

- メトリクスの記録
- デバッグと問題解決
- インストルメンテーション
- プロファイリング
- パフォーマンス監視
- テレメトリー

## 🔗 DevOpsとCI/CD

- Kubernetes
- CI/CD (継続的インテグレーション/継続的デリバリー) パイプライン
    - CI/CDパイプラインの概要と実装
- IaC (Infrastructure as Code)
- クラウドサービス
    - クラウドサービスの基礎知識

## 📌 プログラミング言語を学ぶ

- Go
- Java
- Rust
- C#
- PHP
- JavaScript
- Python
- Ruby

[^1]: https://qiita.com/SHOT0/items/ecb1079a4df9033c7242
[^2]: https://qiita.com/SHOT0/items/0227f4c40c9d77fe66a0
[^3]: https://qiita.com/SHOT0/items/9fed31f5957717b30d74
[^4]: https://qiita.com/SHOT0/items/18f59b1612959c72ea14
[^5]: https://qiita.com/SHOT0/items/ee0e4be383e67c8ba7e8
[^6]: https://qiita.com/SHOT0/items/5802b61c0c5772f64ed8
[^7]: https://qiita.com/SHOT0/items/cd1ad7d4be8811bbd42b
[^8]: https://qiita.com/SHOT0/items/8913f5a036104d214d18
[^9]: https://qiita.com/SHOT0/items/cae08a65be065ba07acd