データベースの勉強を始めると、必ずといっていいほど登場する「SQLite(エスキューライト)」。
名前は聞いたことがあっても、「MySQLとは何が違うの?」「どうやって使うの?」と疑問を持っている方も多いのではないでしょうか。
この記事では、SQLiteとは何かという基本から、メリット・デメリット、MySQLとの違い、そして実際の使い方まで、初心者の方にもわかりやすくお伝えしていきます。難しそうに感じるかもしれませんが、ひとつずつ丁寧に解説していきますので、ぜひ最後までお付き合いくださいね。
SQLiteとは?初心者にもわかるやさしい解説
SQLite(エスキューライト)とは、軽量で扱いやすいリレーショナルデータベース管理システム(RDBMS)のひとつです。リレーショナルデータベースというのは、表(テーブル)の形でデータを管理する仕組みのこと。
エクセルの表をイメージしてもらうとわかりやすいですよ。
SQLiteの最大の特徴は、「サーバーが不要」という点にあります。
一般的なデータベース(MySQLやPostgreSQLなど)は、専用のサーバーを立ち上げて、そこに接続してデータをやり取りします。
一方でSQLiteは、たった1つのファイルにすべてのデータを保存するので、サーバーを動かす必要がありません。
「サーバーって聞くだけで難しそう…」と感じる初心者の方でも、SQLiteなら気軽に始められるんです。
実はSQLiteは、わたしたちのスマートフォンの中にもこっそり入っていて、iPhoneやAndroidのアプリのデータ保存にも使われています。LINEやChromeなどの身近なアプリでも活躍している、とても身近なデータベースなんですよ。
SQLiteの主なメリット
SQLiteには、初心者の方にもうれしい魅力がたくさんあります。ここでは代表的なメリットをお伝えしますね。
ひとつ目は「導入がとにかく簡単」なこと。
複雑なインストール作業や設定がほとんど不要で、ダウンロードしたらすぐに使い始められます。
プログラミングを学び始めたばかりの方でも、つまずきにくいのがうれしいポイントです。
ふたつ目は「軽量で動作が速い」こと。
本体のファイルサイズは1MB以下と、とてもコンパクトです。それでいて、小規模なデータの読み書きであれば十分なスピードで動いてくれます。
3つ目は「無料で使える」こと。
SQLiteはパブリックドメインで公開されていて、商用利用も含めて完全に無料です。ライセンス料を気にせず、個人開発でも仕事でも自由に使えるのは大きな魅力ですね。
4つ目は「バックアップが簡単」なこと。
データベース全体が1つのファイルにまとまっているので、そのファイルをコピーするだけでバックアップが完了します。USBメモリに入れて持ち運ぶことも可能です。
SQLiteのデメリットと注意点
良いところがたくさんあるSQLiteですが、もちろん苦手な場面もあります。デメリットも知っておくと、適切に使い分けられるようになりますよ。
まず気をつけたいのが、「大規模なシステムには向かない」ということです。
SQLiteは基本的に、同時に複数の人が大量のデータを書き込むような用途は得意ではありません。
1人〜少人数で使う場合は問題ありませんが、何千人ものユーザーが同時にアクセスするWebサービスには不向きです。
また、「ユーザー管理機能がない」点も特徴です。
MySQLなどでは「このユーザーはこのテーブルだけ見られる」といった細かい権限設定ができますが、SQLiteにはそうした機能がありません。ファイルにアクセスできる人なら、誰でもデータを読み書きできてしまいます。
さらに、「ネットワーク越しのアクセスには向かない」という点もあります。SQLiteはあくまでローカル(同じパソコンの中)で使うことを想定したデータベースです。離れた場所からアクセスする使い方には対応していません。
これらのデメリットは、裏を返せば「SQLiteは小規模・個人利用向けに最適化されている」ということでもあります。用途に合わせて選ぶことが大切なんですね。
SQLiteとMySQLの違いをわかりやすく比較
「SQLiteとMySQLって、どう違うの?」というのは、初心者の方からよく聞かれる質問です。両方ともリレーショナルデータベースですが、得意な場面が大きく異なります。
| 比較項目 | SQLite | MySQL |
|---|---|---|
| タイプ | 組み込み型(ファイルベース) | サーバー型 |
| サーバーの必要性 | 不要 | 必要 |
| 導入の手軽さ | とても簡単(ほぼ準備不要) | インストール・初期設定が必要 |
| データの保存形式 | 1つのファイルにまとめて保存 | 専用サーバー上で管理 |
| 動作の軽さ | 非常に軽量(本体1MB以下) | 比較的リソースを使う |
| 同時アクセス性能 | 少人数向け | 大人数の同時接続に強い |
| ユーザー管理機能 | なし | あり(権限設定が細かく可能) |
| ネットワーク接続 | 非対応(ローカル利用が前提) | 対応(リモート接続が可能) |
| バックアップ | ファイルをコピーするだけ | 専用コマンドや手順が必要 |
| 料金 | 無料(パブリックドメイン) | 無料(Community版)/有料版あり |
| 向いている用途 | 学習・個人開発・小規模アプリ・モバイルアプリ | 本格的なWebサービス・大規模システム |
最大の違いは、先ほどもお伝えした「サーバーの有無」です。
MySQLはサーバー型のデータベースで、専用のサーバーを起動して使います。一方SQLiteは、1つのファイルだけで完結します。
導入の手軽さでは、SQLiteが圧倒的に簡単です。MySQLはインストールや初期設定にそれなりの手間がかかりますが、SQLiteはほぼ準備不要で使い始められます。
性能や規模の面では、MySQLに軍配が上がります。たくさんのユーザーが同時にアクセスする本格的なWebサービスには、MySQLのほうが適しています。一方、個人の学習用や小さなアプリケーションであれば、SQLiteで十分すぎるほどです。
簡単にまとめると、「学習や小規模な開発にはSQLite、本格的なサービス運用にはMySQL」というイメージで覚えておくと、選ぶときに迷いにくくなりますよ。
SQLiteのダウンロードと使い方の基本
それでは、実際にSQLiteを使ってみる方法を見ていきましょう。
TypeScript(IDE)での使い方
VS CodeやCursorなどのエディタを使って、TypeScript等で開発している方は、Node.jsのパッケージを使うことで、とても手軽にSQLiteを扱えます。VSCodeなどのIDEを開いて、プロジェクトフォルダで作業を進めていきましょう。
まずは必要なパッケージをインストールします。ここでは扱いやすさで人気の better-sqlite3 を使いますね。ターミナルで次のコマンドを実行してください。
npm install better-sqlite3
npm install -D @types/better-sqlite3Bash@types/better-sqlite3 は、TypeScriptで型補完を効かせるための型定義ファイルです。これを入れておくと、IDE上でメソッドの候補がスッと出てきて、開発がぐっと快適になりますよ。
インストールが完了したら、さっそくコードを書いてみましょう。たとえば index.ts というファイルを作って、次のように書いてみてください。
import Database from 'better-sqlite3';
// データベースに接続(ファイルがなければ自動で作成されます)
const db = new Database('mydata.db');
// テーブルを作成
db.exec(`
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
)
`);
// データを追加(プレースホルダで安全に)
const insert = db.prepare('INSERT INTO users (name) VALUES (?)');
insert.run('たろう');
insert.run('はなこ');
// データを取得
const rows = db.prepare('SELECT * FROM users').all();
console.log(rows);
// 接続を閉じる
db.close();
TypeScriptこのコードを npx ts-node index.ts などで実行すると、プロジェクトフォルダに mydata.db というファイルができて、その中にデータが保存されます。実行結果として、登録した「たろう」と「はなこ」のデータがコンソールに表示されるはずです。
ポイントは db.prepare() を使ってSQL文を準備しておく点です。これは「プリペアドステートメント」と呼ばれる仕組みで、SQLインジェクションという攻撃を防いでくれる安全な書き方なので、ぜひ習慣にしてくださいね。
なお、非同期処理で扱いたい場合は sqlite3 や sqlite といったパッケージもあります。用途に合わせて選んでみてください。
コマンドラインツールをダウンロードして使う方法
「まずはコマンドで気軽に試してみたい」という方には、公式のコマンドラインツールもおすすめです。Windowsを例に、流れをお伝えしますね。
公式サイト(sqlite.org/download.html)にアクセスして、「Precompiled Binaries for Windows」という項目からコマンドラインツールをダウンロードします。zipファイルを解凍して、好きなフォルダに置けば準備完了です。インストーラーすらないのが、SQLiteのお手軽なところですね。
使い方もとてもシンプルです。コマンドプロンプトでそのフォルダに移動して、次のように入力してみてください。
sqlite3 mydata.dbBashこれだけで「mydata.db」というデータベースファイルが作成され、SQLiteが起動します。あとは、SQL文を順番に入力していくだけです。
CREATE TABLE users (id INTEGER, name TEXT);
INSERT INTO users VALUES (1, 'たろう');
SELECT * FROM users;SQLSQLiteを終了するときは .exit と入力すればOKです。
GUIで操作したい場合は、「DB Browser for SQLite」という無料ツールもおすすめです。表計算ソフトのような画面でデータを確認・編集できるので、コマンド操作が不安な方でも安心して使えますよ。
ちなみに:SQLiteが使われている身近な製品の事例
「軽量で小規模向け」と聞くと、ちょっとしたツールでしか使われていないように感じるかもしれません。
でも実は、SQLiteは世界で最も使われているデータベースといわれていて、誰もが知る大企業の製品にもしっかり組み込まれているんです。
ここでは、SQLite公式サイトの「Well-Known Users Of SQLite」に掲載されている事例から、特に有名なものをご紹介しますね。
まずAppleは、macOSやiOS(iPhone・iPad)の多くのネイティブアプリでSQLiteを使っています。連絡先や写真アプリ、メッセージアプリのデータ保存にも使われていて、iTunesでも採用されているんですよ。あなたのiPhoneの中にも、間違いなくSQLiteが入っています。
GoogleもSQLiteの大ユーザーで、Androidスマートフォンの基盤として、そしてChromeブラウザの中でもSQLiteが動いています。世界中のスマホとブラウザに入っていると考えると、その普及っぷりがすごいですよね。
MozillaのFirefoxやThunderbird(メールソフト)でも、ブックマークや履歴などのメタデータ保存にSQLiteが使われています。MicrosoftもWindows 10のコアコンポーネントとしてSQLiteを採用していて、いまや主要OSすべてに入っているといっても過言ではありません。
ちょっと意外なところでは、AdobeのPhotoshop LightroomやAcrobat Reader、Dropboxのクライアント側のデータストア、Skypeのクライアント、IntuitのQuickBooks・TurboTax(会計・税務ソフト)などでも採用されています。
そして驚きなのが、Airbus(エアバス)の旅客機A350 XWBのフライトソフトウェアにもSQLiteが使われているという事実です。人命に関わる航空機システムに採用されるほど、SQLiteの信頼性は折り紙つきというわけですね。
ほかにも、Boschが手がけるGM・日産・スズキの車載マルチメディアシステム、Facebookのosqueryというツール、McAfeeのアンチウイルスソフトなどでも使われています。さらに、アメリカの議会図書館(Library of Congress)では、デジタルコンテンツの長期保存に推奨されるフォーマットとしてSQLiteが認定されているんですよ。
このように、スマホ、パソコン、ブラウザ、車、飛行機まで、わたしたちの身の回りにあるほぼすべての電子機器の中でSQLiteが動いているといっても言いすぎではありません。
「軽量で小規模向け」と聞いて侮ってはいけない、世界最強クラスの実績を持つデータベースなんですね。
まとめ:まずはSQLiteから始めてみよう
ここまで、SQLiteについて初心者の方向けにお伝えしてきました。最後にポイントを振り返ってみましょう。
SQLiteは、サーバー不要で1つのファイルにデータを保存できる、軽量で扱いやすいデータベースです。
導入が簡単で無料、しかもPythonにも標準搭載されているので、データベース学習の最初の一歩には最適な選択肢といえます。
大規模なシステムには向かないものの、個人開発や学習用途であれば十分すぎる機能を備えています。
「データベースって難しそう…」と感じている方こそ、ぜひSQLiteから触ってみてほしいなと思います。
実際に手を動かしてみると、本で読むだけではわからなかった発見がきっとあるはずです。
焦らず少しずつ、データベースの世界を楽しんでいきましょうね。この記事が、あなたのSQLite学習のきっかけになればうれしいです。
自分のローカルPCでのみ動かすプログラムをつくる時や、データベースの練習にちょうどいいね!