Portfolio::
- touri aida based in tokyo/chiba -

WSGI Web Framework Nexom

2026
ContentHeader ContentHeader

概要

Nexom は、WSGI をベースに設計・実装した軽量な Python 製 Web フレームワークです。
単に Web アプリケーションを作るのではなく、ルーティング、Request / Response、テンプレート、認証、ファイル管理、CLI によるプロジェクト生成まで含めて、フレームワークそのものを自作したプロジェクトです。

Webサイト

LinkImage
Nexom: WSGI Web Framework for Python
https://nexom.aisaba.net

開発背景

Nexom を開発した目的は、既存フレームワークを使うだけでは得にくい、Web フレームワークの内部構造への理解を深めることでした。

具体的には、以下のような問いを自分で設計・実装を通して検証したかったと考えています。

  • ルーティングはどこまでシンプルにできるか
  • Request / Response の抽象化はどの粒度が適切か
  • 認証やファイル処理をどのように再利用可能な基盤としてまとめるか
  • 開発時だけでなく、運用まで見据えた構成をどう設計するか

この開発を通して、実装力だけでなく、設計力・保守性への意識・責務分割の考え方を強化しました。

主な機能

  • WSGI ベースの軽量 Web フレームワーク
  • GET / POST と動的パス引数に対応したルーティング
  • シンプルな Request / Response API
  • 静的ファイル配信
  • レイアウト再利用に対応した独自テンプレート機構
  • 標準搭載の認証サービス / 認証クライアント
  • Cookie 管理とミドルウェア対応
  • マルチパートアップロードと並列ストレージ基盤
  • CLI によるプロジェクト生成・設定ファイル作成
  • Gunicorn / Nginx / Apache / Systemd を想定した運用構成
  • ルーティング、認証、DB、ミドルウェア、ストレージに対するテスト整備

アーキテクチャ

Nexom は単一のアプリではなく、責務ごとに分割したモジュール構成で設計しています。

  • app/
    ルーティング、Request / Response、ミドルウェア、DB、認証、Cookie、ストレージなどのアプリケーション層
  • core/
    エラー定義、ログ出力、HTML 描画エンジンなどの基盤処理
  • templates/
    テンプレートの読み込みと描画のインターフェース
  • buildTools/
    プロジェクト生成や起動補助を担う CLI 系機能
  • assets/
    生成されるアプリや認証サーバーの雛形、テンプレート、静的ファイル、Gateway 設定
  • tests/
    フレームワークの主要挙動を検証するテスト群

この構成により、各機能の責務を明確にし、拡張や保守がしやすい設計を意識しました。

実装内容

実装は Python 3.10+ で行い、ランタイムは WSGI ベースでシンプルに保っています。

主な実装内容は以下の通りです。

  • 動的パラメータに対応した独自ルーターの実装
  • HTTP 処理を扱いやすくする Request / Response 抽象化
  • サインアップ、ログイン、トークン検証、権限管理を含む認証 API の実装
  • HTML ファイルを読み込み、再利用可能な構造で描画できるテンプレート機構の構築
  • マルチパートアップロードやファイルメタ管理を行うストレージ基盤の実装
  • プロジェクト作成や設定生成を行う CLI コマンドの整備
  • ルーティング、静的配信、認証、ミドルウェアなどに対するテストの追加

担当領域

このプロジェクトは 個人開発 です。

担当した内容は以下の通りです。

  • プロジェクトの企画・要件整理
  • フレームワーク全体のアーキテクチャ設計
  • バックエンドおよび CLI の実装
  • 認証基盤とストレージ機能の設計・実装
  • テンプレート機構の設計
  • テスト設計と品質確認
  • ドキュメント整備と開発体験の設計

技術スタック

  • Language: Python 3.10+
  • Runtime Interface: WSGI
  • Server: Gunicorn
  • Libraries: multipart, Pillow
  • Packaging: setuptools, pyproject.toml
  • Testing: pytest
  • Deployment / Ops: Nginx, Apache, Systemd

Nexomを使用しているサービス一覧

LinkImage
Nexom | Portfolio::
https://aisaba.net/works/tag/Nexom

Github

LinkImage
GitHub - ait913/Nexom
https://github.com/ait913/Nexom