開発ブログ一覧に戻る
しくみ解説2026年1月7日

なぜSQLiteを選んだのか

前回の記事で、一括採点がリレーショナルデータベースを使っていることを紹介しました。 リレーショナルデータベースにはいくつかの種類がありますが、 なぜSQLiteを選んだのかを解説します。

リレーショナルデータベースの選択肢

リレーショナルデータベースには、さまざまな製品があります。 代表的なものを挙げてみましょう。

製品名特徴
PostgreSQL高機能で信頼性が高い。大規模システム向け
MySQLWebアプリケーションで広く使われる
MariaDBMySQLから派生。互換性が高い
SQLite軽量でサーバー不要。組み込み向け

どれもリレーショナルデータベースとしての基本機能は共通していますが、 使い方に大きな違いがあります。

SQLiteと他のデータベースの違い

SQLiteと、他のデータベース(PostgreSQL、MySQL)には大きな違いがあります。

PostgreSQL / MySQLSQLite
別途インストール必要不要
別のソフトを起動必要不要
大規模アクセス対応苦手

PostgreSQLやMySQLは、たくさんの人が同時にアクセスするサービスに向いています。 常に起動している専用ソフトが、何万人もの同時アクセスをさばいてくれるからです。 YouTube、Instagram、Wikipediaなど、世界中の人が使うサービスでも採用されています。

ただし、そのぶん事前にインストールや設定が必要です。

一方、SQLiteはただのファイルです。 専用ソフトが間に入らず、アプリが直接ファイルを読み書きします。 手軽に使える反面、同時アクセスには弱いという特性があります。

一括採点の要件

一括採点を開発するにあたり、いくつかの要件がありました。

一括採点の要件

  • オフライン完結: 生徒の個人情報を扱うため、データがインターネットに送信されない
  • インストール不要: ダウンロードしてすぐに使える。管理者権限が不要
  • データが手元にある: クラウドではなく、自分のPCにデータが保存される
  • 同時採点: 複数人で同時に採点できる

ここで問題があります。 最初の3つの要件にはSQLiteが適していますが、 同時採点にはPostgreSQLが適しています。 両方を同時に満たすのは難しい。

一括採点では、まず「ダウンロードしてすぐ使える」という体験を優先し、 SQLiteを採用しました。 同時採点は別の方法で実現することにしました(後述)。

SQLiteの特徴

SQLiteは、アプリに最初から含めて配布できるリレーショナルデータベースです。 オフライン完結・インストール不要という根幹の要件を満たしています。

特徴一括採点にとってのメリット
サーバー不要アプリを起動するだけで使える。サーバー管理が不要
設定不要ポート番号やユーザー認証の設定がいらない
ファイル1つで完結データベース全体が1つの.dbファイル。バックアップも簡単
アプリに同梱可能Electronアプリに組み込んで配布できる

一括採点では、ユーザーのデータディレクトリにdatabase.dbというファイルが作成され、すべてのデータがここに保存されます。

Prismaとの組み合わせ

データベースを操作するには、SQLという言語を使います。

-- SQLの例:山田さんを検索
SELECT * FROM Student WHERE lastName = '山田'

SQLは専門的な言語で、書き方を覚えるのが大変です。 また、セキュリティ上の注意点もあり、慣れていないと危険なコードを書いてしまうことがあります。

そこで一括採点では、Prismaというツールを使っています。 Prismaを使うと、普段使っているプログラミング言語(TypeScript)で データベースを操作できます。 入力ミスを自動でチェックしてくれますし、セキュリティ対策も自動でやってくれます。

// Prismaの例:山田さんを検索
const students = await prisma.student.findMany({
  where: { lastName: "山田" }
})

Prismaを使うメリット:

メリット説明
ミスに気づける間違ったテーブル名や項目名を書くと、すぐに教えてくれる
読みやすいSQLより直感的で、後から見ても理解しやすい

SQLiteのデメリット

SQLiteにもデメリットはあります。

同時書き込みに弱い

SQLiteはただのファイルなので、誰かが書き込んでいる間はファイルがロックされ、 他の人は書き込めません。通常は数ミリ秒で終わりますが、 タイミングが重なるとエラーになることがあります。 PostgreSQLやMySQLなら専用ソフトがうまく順番を調整してくれますが、 SQLiteにはそういった仕組みがありません。

NASに置くと壊れる可能性がある

SQLiteのデータベースファイルをNAS(ネットワークドライブ)に置くと、 ファイルロックがうまく機能せず、データが壊れてしまう可能性があります。 SQLiteはローカルディスクで使うことが前提です。

同時採点機能について

同時採点を実現するには、複数のPCからアクセスできる場所にデータベースが必要です。 PostgreSQLならこれが可能ですが、SQLiteでは難しい。

一括採点では、SQLiteを使いながら別の方法で同時採点を実現する予定です。 詳しくは後日、別の記事で紹介します。

一括採点では「ダウンロードしてすぐ使える」体験を優先してSQLiteを採用しました。 同時採点機能は、SQLiteを使いながら別の方法で実現する予定です。

一括採点を使ってみませんか?

最新版をダウンロードして、採点作業を効率化しましょう。

最新版をダウンロード

一括採点

中学校の先生が、全国の先生のために作った、採点ツール。

© 2023-2026 KeppyNaushika. AGPLv3 オープンソースソフトウェアとして開発しています。