🚧 開発中 — 基本機能はお試しいただけます

SIcore Framework

AIネイティブな軽量 Java フレームワーク

SIcore は、AI によるコード生成新人プログラマー のために設計された軽量 Java フレームワークです。アノテーションなし・設定ファイルなし・Entity クラス不要。HTML から DB まで統一された Map 型設計で、シンプルかつ一貫したコードを実現します。

HTML から DB まで、すべてが Map で繋がる

SIcore は「JSON 限定」「Map 型設計」「直結 URL マッピング」の 3 つの原則によって、フロントエンドからバックエンド・DB まで一貫した設計を実現します。

Browser HTML & JavaScript onepg-base.css onepg-utils.js StorageUtil (スコープ付きストレージ) JSON POST / GET JSON Java (SIcore) URL → Class (直結マッピング) Io (Map) null安全・型安全・キー重複チェック AbstractWebService.doExecute(io) SqlBuilder SqlConst SQL IoRows Database Auth LDAP + JWT(透過的認証) DB物理名 = HTML name属性 = Java キー(項目名統一)

10 の設計原則

「シンプルで理解しやすいコード」こそが、初心者にも AI にも最適です。SIcore の設計はすべてこの原則から導かれています。

🔗

直結 URL マッピング

/services/mod/MyService → com.example.app.service.mod.MyService。ルーティング定義ファイルもアノテーションも不要。URL そのものがクラス名になります。

📡

JSON 限定通信

ブラウザ ⇔ サーバー間の通信を JSON に統一。form submit も session も使わず、フロントとバックの境界が明確になります。

🗺️

Map 型設計 (Io クラス)

リクエスト・レスポンス・DB 操作をすべて Io クラス(Map)で扱います。Entity / DTO / Form クラスは不要。null 安全・型安全・キー重複チェック付き。

🖼️

モックアップ=実装コード

静的 HTML モックアップに name 属性を追加するだけで実装コードになります。JSP や Thymeleaf などのテンプレートエンジンは一切使いません。

📋

動的リスト表示

テーブル行のテンプレートを HTML で定義し、JSON 配列データを渡すだけで自動レンダリング。行の追加・削除・ページングもフレームワークが担当します。

🏷️

独自 HTML 属性

data-value-format-type・data-check-off-value など独自属性で、数値カンマ区切り・日付フォーマット・チェックボックス OFF 値などを自動処理します。

🎨

1 ファイル CSS 設計

約 400 行の CSS 1 ファイルで、12 分割グリッド・レスポンシブ・フォーム要素スタイルをすべてカバー。Bootstrap のような上書き作業は不要です。

🔑

項目名統一

DB 物理名 = HTML name 属性 = Java マップキーを統一。キャメルケース変換もマッピング処理も不要になり、AI がコードを生成するときも迷いません。

🔒

透過的 JWT 認証

LDAP 認証 → JWT 発行 → JS 変数でトークン保持 → 全リクエストへ自動付与。業務コードに認証処理が一切混入しません。XSS 耐性も確保。

🤖

AI ネイティブ開発

パターンが一貫しているため GitHub Copilot が高精度なコードを生成できます。AI 向けに最適化されたトークン効率の良いドキュメントも同梱しています。

Entity を捨て、Map で全部回す

テーブルが 50、画面が 30 ある業務システムを想像してください。SIcore では Entity × 50、Form / DTO × 30、変換コード、キャメルケース変換——これらがすべて不要です。

Io クラス(Map を継承)が null 安全・型安全・キー重複チェック・ディープコピーをすべて提供します。

  • getString / getBigDecimal / getDateNullable など型変換メソッド
  • put() はキー重複でエラー、putForce() で意図的な上書き
  • 存在しないキーへの get() はエラーでタイプミスを即検出
  • List / ネスト Map はディープコピーで格納・取得
従来 UserEntity UserForm UserDto Entity ⇔ DTO 変換コード user_id → userId 変換 クラス多数・変換コード多数 保守コスト → 高 SIcore Io (Map) リクエスト / レスポンス DB 操作 すべてこれ 1 つ io.getString("user_id") io.getBigDecimal("income_am") Entity / DTO / Form → 不要 クラス 0・変換コード 0 保守コスト → 低

DB → Java → HTML が同じ名前で繋がる

DB の物理列名・HTML の name 属性・Java のマップキーをすべて同じ名前に統一します。キャメルケース変換も、マッピング処理も、変換ミスも、これで完全に排除できます。

  • DB 設計書がそのまま仕様書・コード辞書になる
  • SELECT 結果をそのまま画面表示に利用できる
  • AI がキー名を含むコードを生成しやすい
DB (SQL) user_id user_nm income_am birth_dt = = Java (Io) getString("user_id") getString("user_nm") getBigDecimal("income_am") getDateNullable("birth_dt") = HTML name="user_id" name="user_nm" name="income_am" name="birth_dt" 従来: user_id → userId → UserForm.userId → UserEntity.userId 変換コード・マッピング・ミスの温床 SIcore: user_id → user_id → user_id → user_id 変換ゼロ・ミスゼロ

SqlBuilder と SqlConst で動的・静的を使い分け

XML ファイルへの SQL 分離・ID 文字列での紐づけ・<if> タグの学習コスト——これらを Java だけで解決します。

  • SqlBuilder: addQnotB で値がある項目だけ WHERE 句に追加
  • SqlConst: バッチ処理向け static final 固定 SQL
  • executeOneCache でプリペアドステートメントをキャッシュして高速化
  • バインド変数(?)でインジェクション対策済み
SqlBuilder — 動的検索
final SqlBuilder sb = new SqlBuilder(); sb.addQuery(" SELECT user_id, user_nm, email"); sb.addQuery(" FROM t_user WHERE 1=1 "); // 値がある時だけ条件追加 (addQnotB) sb.addQnotB(" AND user_id = ? ", io.getString("user_id")); sb.addQnotB(" AND user_nm LIKE '%'||?||'%' ", io.getString("user_nm")); sb.addQuery(" ORDER BY user_id "); IoRows rows = SqlUtil.selectBulk(getDbConn(), sb, 50); io.putList("list", rows.toListMap());

400 行・1 ファイルから始める CSS

Bootstrap(約 1 万行)や Tailwind(ビルド必須)の代わりに、業務アプリに必要な要素だけを small-first で積み上げます。ビルド環境不要、ファイルは 1 つだけ。

  • 12 分割グリッド + PC / タブレット / スマホの 3 段階レスポンシブ
  • フォーム要素・テーブルのスタイルを統一済み
  • :root CSS 変数でカラーを一括カスタマイズ
  • AI が全量を読んでから HTML を生成できるサイズ
onepg-base.css — 12分割グリッド × 3段階レスポンシブ PC col-3 | 氏名 [___] col-3 | 国 [___▼] col-6 | Email [___________] Tab 氏名 [___] 出身国 [__▼] Email [__________] off-screen SP 氏名 [__________] 出身国 [______▼] Email [__________] off-screen class="grid-row" / "grid-col-3" / "grid-col-6" — これだけで自動対応

既存フレームワークとの比較

SIcore は「大きく始めて使わないものを無視する」ではなく「小さく始めて必要な分だけ育てる」アプローチです。

観点 Spring Boot SIcore
アノテーション 多数(@Controller、@Service など) なし
ルーティング設定 アノテーションで個別定義 URL=クラス名(ゼロ設定)
Entity / DTO テーブル・画面ごとに必要 不要(Map で統一)
テンプレートエンジン Thymeleaf / JSP など 不要(静的 HTML + JS)
外部ライブラリ依存 多数(Maven 依存管理が必要) JDK 標準のみ
CSS ビルド 不要(1 ファイル CSS)
AI コード生成精度 パターンが多く精度にばらつき 一貫パターンで高精度
初心者の学習コスト 高(概念・設定が多い) 低(実行フローが追いやすい)

Qiita 連載記事

SIcore の設計思想と各機能の詳細を 10 本の記事で解説しています。

#01

Javaフレームワークを自作した動機

初心者向け設計が AI フレンドリーと一致する理由

#02

直結型 URL マッピング

ルーティング定義なしで URL がそのままクラス名になる仕組み

#03

JSON 限定通信

フロントとバックを JSON だけで繋ぐシンプルな設計

#04

モックアップ=実装コード

静的 HTML に name 属性を加えるだけで動く仕組み

#05

動的リスト表示

テーブル行テンプレートと JSON 配列で自動レンダリング

#06

独自 HTML 属性

data-value-format-type などで自動フォーマット・アンフォーマット

#07

Map 型設計

Entity / DTO 不要・null 安全・キー重複チェック付き Io クラス

#08

1 ファイル CSS 設計

400 行で業務アプリに必要な CSS をすべてカバー

#09

クライアント側データ管理と JWT 認証

スコープ付きストレージ・JS 変数セッション・透過的 JWT 認証

#10

Java 直書き SQL

SqlBuilder / SqlConst で XML 不要の動的・静的 SQL 管理

#11

バニラで作る理由

フレームワーク全体をバニラで作る理由とその利点