【5分でわかる】JavaでSQLite3にJDBC接続しデータ操作する手順

 

★悩み★
・JavaからSQLiteのデータを操作できるのだろうか?その手順や方法は?
・JavaでJDBC接続を用いてSQLite3のデータ取得(select)ってできる?
・JavaでSQLiteにJDBC接続しデータ追加、削除、更新する手順を知りたい。



こういった「悩み」に答えます。
 

★本記事の内容★
➀ JavaでJDBC接続を用いてSQLite3のデータを操作するための準備
➁ JavaでJDBC接続を用いてSQLite3のデータを取得(select)する手順
➂ JavaでJDBC接続を用いてSQLite3のデータを追加(insert)する手順
④ JavaでJDBC接続を用いてSQLite3のデータを更新(update)する手順
⑤ JavaでJDBC接続を用いてSQLite3のデータを削除(delete)する手順



これからご紹介する「JavaでSQLite3にJDBC接続しデータ操作する手順」を実践したことで、筆者は10分以内でJavaを用いてSQLite3からデータ取得(select)できました。
 

記事の前半では「JavaでJDBC接続を用いてSQLite3のデータを操作するための準備」をコマンドベースで紹介します。
記事の後半では「JavaでSQLite3のデータを操作(select/insert/update/delete)する手順」をサンプルプログラムを使って紹介します。
 

この記事を読み終えることで、「JavaでSQLite3に格納されたデータを操作できる」状態になります。
 

ちなみに、SQLiteのメリットとデメリットに関して知りたい方には、以下の記事がオススメです。
>> 【要点】SQLiteとは?を解消!初心者向けに特徴から使い方を解説
 

また、筆者が約2週間でSQLite3を学んだ方法や手順について以下で公開しています。皆様の学習の参考になれば嬉しいです。

>> SQLite3に0から入門し基本操作を習得するまでのロードマップ


 

JavaでJDBC接続を用いてSQLite3のデータを操作するための準備


「JavaでJDBC接続を用いてSQLite3のデータを操作するための準備」に関してご紹介します。

★JavaでJDBC接続を用いてSQLite3のデータを操作するための準備★
手順1:Javaをインストール
手順2:SQLite3のインストール
手順3:SQLite3内にテーブルを作成
手順4:SQLite3内にデータを追加(データ登録)
手順5:SQLite3向けのJDBCドライバーをダウンロード



上記の流れで、「JavaでJDBC接続を用いてSQLite3のデータを操作するための準備」ができます。
 

上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2022年3月7日
動作確認済み環境:
・Ubuntu 20.04.3 LTS
・CentOS/Red Hat Enterprise Linux(RHEL)
・Windows
・MacOS



以降で、上記の各手順に関してご説明します。
 

手順1:Javaをインストール

「手順1:Javaをインストール」に関して解説します。
 

JavaでJDBC接続を用いてSQLite3のデータを操作するためにも、Javaをインストールしましょう。



「Javaのインストール手順」に関しては、お使いのパソコンごとに以下の記事を参照しインストールしてください。

>> 【Ubuntu向け】Fessのインストール方法を要件から解説(Javaのインストール箇所)

>> 【CentOS/RHEL向け】Apache Hadoopを7ステップでインストールする方法

>> 【Windows向け】Fessのインストール方法を要件から解説(Javaのインストール箇所)

>> 【MacOS向け】Fessのインストール方法を要件から解説(Javaのインストール箇所)


 

既にJavaをインストールされている方は、本手順を省略してください。



以上で、「手順1:Javaをインストール」は完了です。
 

手順2:SQLite3のインストール

「手順2:SQLite3のインストール」に関して解説します。
 

JavaでJDBC接続を用いてSQLite3のデータを操作するためにも、SQLite3のインストールをしましょう。



「SQLite3をインストールする手順」に関しては、お使いのパソコンごとに以下の記事を参照しインストールしましょう。

>>【コピペOK】SQLite3をインストールする手順【Linux向け】

>>【コピペOK】SQLite3をインストールする手順【Ubuntu向け】

>>【最短5分】SQLiteをWindowsへインストールする方法(6枚で図解)

>>【コピペOK】SQLite3をインストールする手順【MacOS向け】


 

既にSQLite3をインストールされている方は、本手順を省略してください。 



以上で、「手順2:SQLite3のインストール」は完了です。
 

手順3:SQLite3内にテーブルを作成

「手順3:SQLite3内にテーブルを作成」に関して解説します。
 

JavaでJDBC接続を用いてSQLite3のデータを操作するためにも、SQLite3内にテーブルを作成する必要があります。



「SQLite3内にテーブルを作成」に関しては、以下の記事をご覧ください。

>>【簡単】SQLite3でテーブルを作成する手順(create table文を解説)


 

既にSQLite3内にテーブル作成済みである方は、本手順を省略してください。 



以上で、「手順3:SQLite3内にテーブルを作成」は完了です。
 

以降の手順では、上記の記事で作成した「meibo」テーブルを想定として、手順を解説します。
 

手順4:SQLite3内にデータを追加(データ登録)

「手順4:SQLite3内にデータを追加(データ登録)」に関して解説します。
 

JavaでJDBC接続を用いてSQLite3のデータを操作するために、SQLite3内のテーブルにデータを追加(データ登録)しましょう。



「SQLite3内にデータを追加(データ登録)する手順」に関しては、以下の記事をご覧ください。

>>【5分でわかる】SQLite3でデータを追加(INSERT)する3つの方法


 

既にSQLite3内のテーブルにデータ登録済みである方は、本手順を省略してください。 



以上で、「手順4:SQLite3内にデータを追加(データ登録)」は完了です。
 

手順5:SQLite3向けのJDBCドライバーをダウンロード

「手順5:SQLite3向けのJDBCドライバーをダウンロード」に関して解説します。
 

JDBC接続でSQLite3からデータ操作するためには、SQLite3向けのJDBCドライバーが必要です。



Webブラウザを起動し、以下のサイトからJDBCドライバーをダウンロードしてください。
SQLite3向けのJDBCドライバー取得先(GitHub)


上記サイトにアクセス後、「sqlite-jdbc-バージョン名.jar」(下図の赤枠)をクリックし、SQLite3向けのJDBCドライバーをダウンロードしましょう。
 



以上で、「手順5:SQLite3向けのJDBCドライバーをダウンロード」は完了です。
 

上記の流れで、JavaでJDBC接続を用いてSQLite3からデータ操作するための準備ができました。以降で、Javaのプログラムのサンプルをご紹介します。


 

JavaでJDBC接続を用いてSQLite3のデータを取得する手順


「JavaでJDBC接続を用いてSQLite3のデータを取得する手順」に関してご紹介します。

★JavaでJDBC接続を用いてSQLite3のデータを取得する流れ★
手順1:JDBC接続でSQLite3のデータを取得するJavaプログラムを作成
手順2:JDBC接続でSQLite3のデータを取得するJavaプログラムの動作確認



上記の流れで、「JavaでJDBC接続を用いてSQLite3からデータ取得(select)」できます。
  

上記の各手順は、以下の日時と環境で動作確認済みです。
動作確認済み日時:2022年3月7日
動作確認済み環境:
・Ubuntu 20.04.3 LTS
・CentOS/Red Hat Enterprise Linux(RHEL)
・Windows



以降で、上記「JavaでJDBC接続を用いてSQLite3のデータを取得する流れ」の各手順に関してご説明します。
 

手順1:JDBC接続でSQLite3のデータを取得するJavaプログラムを作成

「手順2:JDBC接続でSQLite3のデータを取得するJavaプログラムを作成」に関して解説します。
 

「JDBC接続でSQLite3のデータを取得する」Javaのプログラムを作成しましょう。



「JDBC接続でSQLite3のデータを取得する」Javaのプログラムは、以下となります。プログラム中の「適宜変更」と書いてある部分は、自分用に書き換えてください。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class SelectSample {

    public static void main(String[] args) throws SQLException {
        String dbname = "testdb.sqlite3"; // SQLite3のファイルPATH(適宜変更)
        Connection conn = null;
        Statement stmt = null;
        try {
            Class.forName("org.sqlite.JDBC");
            conn = DriverManager.getConnection("jdbc:sqlite:" + dbname);

            stmt = conn.createStatement();

            // meiboテーブルからデータを取得(適宜変更)
            ResultSet rs = stmt.executeQuery("SELECT * FROM meibo");
            while (rs.next()) {
                int id = rs.getInt("id"); // id列のデータを取得(適宜変更)
                String name = rs.getString("name"); // name列のデータを取得(適宜変更)
                System.out.println(id + "," + name); // 取得したデータを表示(適宜変更)
            }
            rs.close();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (stmt != null) {
                    stmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}



上記のプログラムを「SelectSample.java」というファイル名で保存しましょう。
 

「JDBC接続でSQLite3のデータを取得する」Javaのプログラムは、以下のサイトを参考にさせていただきました。
参照:SQLite – PukiWiki



ちなみに、「selectの構文を知りたい」方には、以下の記事がオススメです。

>>【コピペOK】SQLite3でデータを取得(select)する3つの方法



以上で、「手順1:JDBC接続でSQLite3のデータを取得するJavaプログラムを作成」は完了です。
 

手順2:JDBC接続でSQLite3のデータを取得するJavaプログラムの動作確認

「手順2:JDBC接続でSQLite3のデータを取得するJavaプログラムの動作確認」に関して解説します。
 

Javaで作成した「JDBC接続でSQLite3のデータを取得する」プログラムの動作を確認しましょう。



Javaで作成した「JDBC接続でSQLite3のデータを取得する」プログラムの動作を確認するために、以下のコマンドを順番に実行してください。

# ↓ 以下のディレクトリ構成にする ↓
$ ls -ltrh
total 692M
-rw-rw-r-- 1 hero hero 9.3M Dec  7 08:50 sqlite-jdbc-3.36.0.3.jar
-rw-r--r-- 1 hero hero 683M Mar  7 22:43 testdb.sqlite3
-rw-rw-r-- 1 hero hero 1.3K Mar  7 23:19 SelectSample.java

# ↓ javacコマンドでビルド/コンパイルする ↓
# javac SelectSample.java 

# ↓ .classが作成されたことを確認にする ↓
$ ls -ltrh
total 692M
-rw-rw-r-- 1 hero hero 9.3M Dec  7 08:50 sqlite-jdbc-3.36.0.3.jar
-rw-r--r-- 1 hero hero 683M Mar  7 22:43 testdb.sqlite3
-rw-rw-r-- 1 hero hero 1.3K Mar  7 23:19 SelectSample.java
-rw-rw-r-- 1 hero hero 2.0K Mar  7 23:19 SelectSample.class

# ↓ 作成された.classを実行する(JDBC接続でSQLite3のデータを取得する) ↓
$ java -classpath ".:sqlite-jdbc-3.36.0.3.jar" SelectSample
1,tom
2,hero
$ 



コマンド実行後、「データ」が表示された場合、「正常にJavaでSQLite3からデータ取得(select)できた」と判断できます。
 

以上で、「手順2:JDBC接続でSQLite3のデータを取得するJavaプログラムの動作確認」は完了です。
 

上記の流れで、JavaでJDBC接続を用いてSQLite3のデータを取得(select)できました。


 

JavaでJDBC接続を用いてSQLite3のデータを追加する手順


「JDBC接続でSQLite3のデータを追加(insert)する」Javaのプログラムは、以下となります。プログラム中の「適宜変更」と書いてある部分は、自分用に書き換えてください。

以下のプログラムは、meiboテーブルに「idが100、nameがKen」のレコードを追加します。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;

public class InsertSample {

    public static void main(String[] args) throws SQLException {
        String dbname = "testdb.sqlite3"; // SQLite3のファイルPATH(適宜変更)
        Connection conn = null;
        Statement stmt = null;
        try {
            Class.forName("org.sqlite.JDBC");
            conn = DriverManager.getConnection("jdbc:sqlite:" + dbname);

            String sql = "insert into meibo(id,name) VALUES(?,?)"; //データ追加のSQL(適宜変更)
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, 100); //プレースホルダにidカラム用の値を設定(適宜変更)
            ps.setString(2, "Ken"); //プレースホルダにnameカラム用の値を設定(適宜変更)

            ps.executeUpdate();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (stmt != null) {
                    stmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}



上記のプログラムを「InsertSample.java」というファイル名で保存しましょう。
 

ちなみに、「insertの構文を知りたい」方には、以下の記事がオススメです。
>>【5分でわかる】SQLite3でデータを追加(INSERT)する3つの方法
 

作成したプログラムの動作を確認するために、以下のコマンドを順番に実行してください。

# ↓ 以下のディレクトリ構成にする ↓
$ ls -ltrh
total 9.4M
-rw-rw-r-- 1 hero hero 9.3M Dec  7  2021 sqlite-jdbc-3.36.0.3.jar
-rw-rw-r-- 1 hero hero 1.3K Mar  7  2022 SelectSample.java
-rw-rw-r-- 1 hero hero 2.0K Mar  7  2022 SelectSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb  4 08:17 InsertSample.java
-rw-r--r-- 1 hero hero 8.0K Feb  4 08:17 testdb.sqlite3

# ↓ javacコマンドでビルド/コンパイルする ↓
# javac InsertSample.java 

# ↓ InsertSample.classが作成されたことを確認にする ↓
$ ls -ltrh
total 9.4M
-rw-rw-r-- 1 hero hero 9.3M Dec  7  2021 sqlite-jdbc-3.36.0.3.jar
-rw-rw-r-- 1 hero hero 1.3K Mar  7  2022 SelectSample.java
-rw-rw-r-- 1 hero hero 2.0K Mar  7  2022 SelectSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb  4 08:17 InsertSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb  4 08:17 InsertSample.class
-rw-r--r-- 1 hero hero 8.0K Feb  4 08:17 testdb.sqlite3

# ↓ 作成されたInsertSample.classを実行する(JDBC接続でSQLite3のデータを追加する) ↓
$ java -classpath ".:sqlite-jdbc-3.36.0.3.jar" InsertSample

# ↓ 前に作成したSelectSample.classを実行する(JDBC接続でSQLite3のデータを取得する) ↓
1,tom
2,hero
100,Ken
$ 



コマンド実行後、「追加されたデータ」が表示された場合、「正常にJavaでSQLite3にデータ追加できた」と判断できます。
  

上記の流れで、JavaでJDBC接続を用いてSQLite3にデータ追加できました。


 

JavaでJDBC接続を用いてSQLite3のデータを更新する手順


「JDBC接続でSQLite3のデータを更新(update)する」Javaのプログラムは、以下となります。プログラム中の「適宜変更」と書いてある部分は、自分用に書き換えてください。

以下のプログラムは、meiboテーブルの「idが100」である全レコードの「nameをTaro」に更新します。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;

public class UpdateSample {

    public static void main(String[] args) throws SQLException {
        String dbname = "testdb.sqlite3"; // SQLite3のファイルPATH(適宜変更)
        Connection conn = null;
        Statement stmt = null;
        try {
            Class.forName("org.sqlite.JDBC");
            conn = DriverManager.getConnection("jdbc:sqlite:" + dbname);

            String sql = "update meibo set name = ? where id = ?"; //データ更新のSQL(適宜変更)
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setString(1, "Taro"); //プレースホルダにnameカラム用の値を設定(適宜変更)
            ps.setInt(2, 100); //プレースホルダにidカラム用の値を設定(適宜変更)

            ps.executeUpdate();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (stmt != null) {
                    stmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}



上記のプログラムを「UpdateSample.java」というファイル名で保存しましょう。
 

ちなみに、「updateの構文を知りたい」方には、以下の記事がオススメです。
>>【コピペOK】SQLite3でデータを更新(update)する2つの方法
 

作成したプログラムの動作を確認するために、以下のコマンドを順番に実行してください。

# ↓ 以下のディレクトリ構成にする ↓
$ ls -ltrh
total 9.4M
-rw-rw-r-- 1 hero hero 9.3M Dec  7  2021 sqlite-jdbc-3.36.0.3.jar
-rw-rw-r-- 1 hero hero 1.3K Mar  7  2022 SelectSample.java
-rw-rw-r-- 1 hero hero 2.0K Mar  7  2022 SelectSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb  4 08:17 InsertSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb  4 08:17 InsertSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb  4 08:29 UpdateSample.java
-rw-r--r-- 1 hero hero 8.0K Feb  4 08:29 testdb.sqlite3

# ↓ javacコマンドでビルド/コンパイルする ↓
# javac UpdateSample.java 

# ↓ UpdateSample.classが作成されたことを確認にする ↓
$ ls -ltrh
total 9.4M
-rw-rw-r-- 1 hero hero 9.3M Dec  7  2021 sqlite-jdbc-3.36.0.3.jar
-rw-rw-r-- 1 hero hero 1.3K Mar  7  2022 SelectSample.java
-rw-rw-r-- 1 hero hero 2.0K Mar  7  2022 SelectSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb  4 08:17 InsertSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb  4 08:17 InsertSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb  4 08:29 UpdateSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb  4 08:29 UpdateSample.class
-rw-r--r-- 1 hero hero 8.0K Feb  4 08:29 testdb.sqlite3

# ↓ 作成されたUpdateSample.classを実行する(JDBC接続でSQLite3のデータを更新する) ↓
$ java -classpath ".:sqlite-jdbc-3.36.0.3.jar" UpdateSample

# ↓ 前に作成したSelectSample.classを実行する(JDBC接続でSQLite3のデータを取得する) ↓
1,tom
2,hero
100,Taro
$ 



コマンド実行後、「更新されたデータ」が表示された場合、「正常にJavaでSQLite3のデータを更新できた」と判断できます。
  

上記の流れで、JavaでJDBC接続を用いてSQLite3のデータを更新できました。


 

JavaでJDBC接続を用いてSQLite3のデータを削除する手順


「JDBC接続でSQLite3のデータを削除(delete)する」Javaのプログラムは、以下となります。プログラム中の「適宜変更」と書いてある部分は、自分用に書き換えてください。

以下のプログラムは、meiboテーブルの「idが100」である全レコードを削除します。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.PreparedStatement;

public class DeleteSample {

    public static void main(String[] args) throws SQLException {
        String dbname = "testdb.sqlite3"; // SQLite3のファイルPATH(適宜変更)
        Connection conn = null;
        Statement stmt = null;
        try {
            Class.forName("org.sqlite.JDBC");
            conn = DriverManager.getConnection("jdbc:sqlite:" + dbname);

            String sql = "delete from meibo where id = ?"; //データ削除のSQL(適宜変更)
            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, 100); //プレースホルダに値を設定(適宜変更)

            ps.executeUpdate();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (stmt != null) {
                    stmt.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}



上記のプログラムを「DeleteSample.java」というファイル名で保存しましょう。
 

ちなみに、「deleteの構文を知りたい」方には、以下の記事がオススメです。
>>【コピペOK】SQLite3でデータを削除(delete)する2つの方法
 

作成したプログラムの動作を確認するために、以下のコマンドを順番に実行してください。

# ↓ 以下のディレクトリ構成にする ↓
$ ls -ltrh
total 9.4M
-rw-rw-r-- 1 hero hero 9.3M Dec  7  2021 sqlite-jdbc-3.36.0.3.jar
-rw-rw-r-- 1 hero hero 1.3K Mar  7  2022 SelectSample.java
-rw-rw-r-- 1 hero hero 2.0K Mar  7  2022 SelectSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb  4 08:17 InsertSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb  4 08:17 InsertSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb  4 08:29 UpdateSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb  4 08:29 UpdateSample.class
-rw-rw-r-- 1 hero hero 1.2K Feb  4 08:45 DeleteSample.java
-rw-r--r-- 1 hero hero 8.0K Feb  4 08:48 testdb.sqlite3

# ↓ javacコマンドでビルド/コンパイルする ↓
# javac DeleteSample.java 

# ↓ DeleteSample.classが作成されたことを確認にする ↓
$ ls -ltrh
total 9.4M
-rw-rw-r-- 1 hero hero 9.3M Dec  7  2021 sqlite-jdbc-3.36.0.3.jar
-rw-rw-r-- 1 hero hero 1.3K Mar  7  2022 SelectSample.java
-rw-rw-r-- 1 hero hero 2.0K Mar  7  2022 SelectSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb  4 08:17 InsertSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb  4 08:17 InsertSample.class
-rw-rw-r-- 1 hero hero 1.3K Feb  4 08:29 UpdateSample.java
-rw-rw-r-- 1 hero hero 1.9K Feb  4 08:29 UpdateSample.class
-rw-rw-r-- 1 hero hero 1.2K Feb  4 08:45 DeleteSample.java
-rw-rw-r-- 1 hero hero 1.8K Feb  4 08:45 DeleteSample.class
-rw-r--r-- 1 hero hero 8.0K Feb  4 08:48 testdb.sqlite3

# ↓ 作成されたDeleteSample.classを実行する(JDBC接続でSQLite3のデータを削除する) ↓
$ java -classpath ".:sqlite-jdbc-3.36.0.3.jar" DeleteSample

# ↓ 前に作成したSelectSample.classを実行する(JDBC接続でSQLite3のデータを取得する) ↓
1,tom
2,hero
$ 



コマンド実行後、「プログラム内で指定したデータ」が表示されなかった場合、「正常にJavaでSQLite3のデータを削除できた」と判断できます。
  

上記の流れで、JavaでJDBC接続を用いてSQLite3のデータを削除できました。


 

【まとめ】JavaでSQLite3にJDBC接続しデータ操作する手順


いかがでしたでしょうか?「SQLite3用のJDBCドライバーを用いてJavaでSQLite3からデータ操作するプログラム」を解説し、以下の悩みを解決しました。
 

★悩み★
・JavaからSQLiteのデータを操作できるのだろうか?その手順や方法は?
・JavaでJDBC接続を用いてSQLite3のデータ取得(select)ってできる?
・JavaでSQLiteにJDBC接続しデータ追加、削除、更新する手順を知りたい。



ぜひあなたも本記事を参考に「JavaでJDBC接続を用いてSQLite3のデータ操作」を実装してみてください。
 

 

コメント