コンテンツにスキップ

技術スタック概要

KanjiIQは、セルフホスト・オープンソースファーストの理念で構築されています。すべてのコンポーネントは私たちが管理するインフラストラクチャ上で動作し、ベンダーロックインはありません。

技術サマリー

レイヤー 技術 用途
フロントエンド Flutter Web クロスプラットフォームUIフレームワーク
バックエンド Dart Frog 軽量REST APIサーバー
データベース PostgreSQL 15 JSONB搭載プライマリデータストア
翻訳 OpenAI API 動的コンテンツ翻訳
オーケストレーション k3s (Kubernetes) コンテナオーケストレーション
Ingress Traefik リバースプロキシ、TLS終端、レート制限
TLS cert-manager + Let's Encrypt 自動SSL証明書管理
CI/CD Forgejo Actions ビルド、プッシュ、デプロイの自動化
コンテナレジストリ Forgejo Container Registry Dockerイメージストレージ
バージョン管理 Forgejo (Gitea fork) セルフホストGitプラットフォーム
ホスティング Hetzner Dedicated Server インフラストラクチャプロバイダー
管理 Flutter Web ロケール/分析管理用管理ダッシュボード

なぜこれらを選んだのか?

Dartをどこでも

最も特徴的なアーキテクチャの選択は、フロントエンドとバックエンドの両方にDartを使用していることです:

  • Flutter(Dart)フロントエンド用
  • Dart Frog(Dart)バックエンド用

これにより以下が可能になります:

  • クライアントとサーバー間で共有モデル定義
  • チーム全体で単一言語の専門知識
  • 一貫したツーリング(Dartアナライザー、フォーマッター、テストフレームワーク)
  • 共有ビジネスロジックパッケージの可能性

セルフホストスタック

KanjiIQは、マネージドクラウドサービスの代わりにセルフホストの代替手段を意図的に選択しています:

マネージドサービス KanjiIQの選択 メリット
GitHub/GitLab Forgejo 完全な制御、ユーザーごとの課金なし
Docker Hub Forgejo Container Registry ソースコードと同じ場所に配置
GitHub Actions Forgejo Actions 同じYAML構文、セルフホストランナー
AWS RDS PostgreSQL on k8s 時間単位のデータベース料金なし
AWS ALB Traefik k3sに内蔵、無料
AWS ACM cert-manager + Let's Encrypt 無料のTLS証明書

コスト効率

本番スタック全体が単一のHetzner専用サーバーで動作し、月額コストを予測可能にし、同等のクラウドマネージドサービスよりも大幅に低く抑えています。詳細はインフラストラクチャを参照してください。

アーキテクチャ原則

  1. コンテナファースト:すべてのコンポーネントがマルチステージDockerビルドでコンテナ化
  2. Infrastructure as Code:すべてのKubernetesマニフェストがバージョン管理下
  3. 非root実行:セキュリティのためすべてのコンテナがUID 1000で実行
  4. ヘルスチェック:すべてのコンテナにlivenessおよびreadinessプローブ
  5. オフライン対応:ローカルSQLiteキャッシュによりインターネットなしでフロントエンドが動作
  6. プライバシー配慮:自動匿名化によるGDPR/CCPA準拠の分析