Gaiax TechEgg's Blog

非エンジニアがエンジニアを目指すブログ

基礎① 10. Amon2 入門 第2部をやってみた

いよいよ基礎①が終了になります!

github.com

Perl入学式のこちらの資料に基づいて勉強しています。
今回は前回に引き続き、Amon2をつかってSchedulerアプリを作ります。
いままでは、Perl入学式の資料から抜粋して記載していましたが、
今回はSchedulerアプリを作る際にDBとして使用したSQLiteを中心に記載します!


エンジニア基礎①
1. Perl環境基礎
2. Hello,world!
3. Perl基礎
4. 配列・for文
5. ハッシュ
6. リファレンス
7. サブルーチン
8. 正規表現
9. Amon2 入門 第一部 
10.⭐️ Amon2 入門 第二部 ⭐️

ゴール?


  • Amon2でSchedulerアプリをつくる
  • アプリケーションを開発する際の順番の確認
  • SQLiteについて

順番

今回はこのような感じで進めていきましたね!

  1. DBスキーマ(sql/sqlite.sql)の設置
  2. Tengスキーマlib/Scheduler/DB/schema.pm)の編集
  3. テンプレートの編集(tmpl/index.tx, tmpl/include/layout.tx)
  4. lib/Scheduler/Web/Dispatcherの編集

アプリケーションを作る際は、まずはDB関連の設定を済ませてから、テンプレートやDispatcherの編集をします。
Amon2では、デフォルトでDBの設定がSQLiteになっているので、もしMySQLを使用する場合はconfigでDBの設定を変更します。

DB(Database)

DBとは管理されたデータのことをさします。そのなかでも、コンピュータ上で作成、保管され、専用のソフトウェアによって管理されるもののことを「データベース管理システム」(DBMS:Database Management System)といいます。

RDBMS(Relational Database Management System)

DBは、データをどのような構造で格納、管理するかによって様々な種類があり、よく利用されるのは「リレーショナルデータベース」(RDB:Relational Database)です。これは、データを複数の表(テーブル)で管理することによって、集合論で定義されてる関連性を扱えるようにしたデータベースの管理方式になります。テーブルは、属性を列、組を行で表しています。
ここでの集合論で定義されているとは、3つの見出しで構成されるテーブルがあったとすると、このテーブルの各列のデータは、各々のカラムの集合から1つずつ任意の要素をとり、その要素持った行が出来上がります。そして、言い換えると、この行は、各カラムの集合(型)の部分集合であると言え、3つの見出しの関係が成立しており、これが集合論で定義されているということです。
RDBMSとは、RDBを管理するための専用ソフトです。これは、ある管理領域で、テーブルの作成や消去、修正、更新、追加、検索、抽出、削除を行います。 そのなかでも今回使われているSQLiteの説明します!

SQLite

SQLiteはSchedulerのDBとして使用しましたね!
SQLiteはサーバーを立ち上げるわけではなく、そのままアプリケーションの中に組み込んで使用出来る軽量のRDBMSです。大規模なDBには向いていませんが、今回のような中小規模ならば、速度にも問題なく使用出来ます。

メリット

  • ファイルベースでの管理
  • バックアップが楽
  • レンタルサーバで利用可能なことが多い

今回はローカル環境でしたが、レンタルサーバRDBMSを使いたい時, ときどきMySQLが使えないことがありますが, SQLiteなら利用できる場合があります。

デメリット

  • パスワード設定がない
  • 同時に複数の書き込みができない
  • 日本語の情報がMySQLなどに比べて少ない

以上より、SQLiteは取り扱いが比較的簡単なRDBMSです。

Amon2でSchedulerを作成する際に大切になってくるDBに関して、少し取り上げてみました。
他のRDBMSでは、世界中でよく使用され、大規模なDBにも対応できるMySQLなどもあります。
どれくらいのデータ、どのようにデータを扱うかによって使い分けていきましょう。


私はデータベース関連の構造がわからなくて、最初の段階で「これはどうなっているのだろう?」とつまずきました。
ここではRDBMSでもSQLiteのみでしか取り上げられませんでしたが、
またMySQLなど他も取り上げられたらと思います。