IT井戸端会議

IT井戸端会議

インフラ、ネットワーク、アプリケーション開発、IT界隈の話等々を東京都千代田区界隈から発信します。

JobSchedulerが使えるのかどうか試すために試しにインストールしてみた件 (2)

はい、どーも。大兼なにがしです。

連投ですわ。

 

前回、自分のなかで勝手にジョブスケデューラーを入れてみようって話になったわけですが。

そこでインストールしてみなきゃ話にならん!!って話になったわけですわ。

 

つーわけで実際に色々とやってみて分かったインストール手順なり、なんなりを以下に書いていってみますね。

 

【※※※Warning!! 上級者参照注意!! おことわり ※※※】

なんと言ってもレベルが低いんで参考にならんかもしれんですがね…

てか見るのやめて欲しいくらいだわ。

まぁ、クレームはお断りだが質問は受け付けとります。

一緒に考えることになりますがね。

 

■インストール環境情報

(1)仮想マシン関連

[1]インストールタイプ

Amazon Linux AMI タイプ:HVM AMI (M1 ミディアムインスタンス)

※お金取られてます。すみません…

[2]メモリ:

2GB

(2)OS関連

[1]使用OS

RedHatEnterpriseLinux-7.1

[2]カーネルバージョン:

3.10.0-229.7.2.el7.x86_64

 

ついで、JobSchedulerのインストール要件を書いときますわ。

 

■インストール要件(JobScheduler-Engine/Object Editor(JOE)/Operations Center(JOC)/Infomation Dashboard(JID))

※Agentは後ほどで勘弁ですわ。

 

CPU

メモリ

  • メモリが2GB以上必要。

OS

Java

DBMS

 

はい、よう分からんけどとりあえずは情報整理できましたっと。

じゃあ具体的に何やりゃあ良いのよっつーのは次の回で書いときます。

JobSchedulerが使えるのかどうか試すために試しにインストールしてみた件 (1)

はい、どーも。

一応名ばかりAsobo会メンバーの大兼です。

私もメンバーである以上は何も活動しないのは釈然としない(AWS使わしてもらってるし…)ので、

一応記事を書いてみることにしました。

 

※あ~ここから先は時間を無駄にしても問題ない人だけが記事を見るようにしてくださいね。

1回目は愚痴とかがメインになりそうなので…

時間を無駄にしたくない人は2回目以降の記事を読むようにお願いします。

丁寧な文体もここから先は崩れていきますのでお目汚しをご勘弁下さい。

 

あっそうだ、最初にお知らせを1個入れておきます。

2015/8/1のAsobo会には参加できないことになりました。

何か兄貴の知り合いの広島カープ応援しようの会に参加してこいということになりまして、

本当は超行きたくないのにロジ○○シン○○○をする予定なのに…

それでもこのクソ蒸し暑い中、横浜スタジアムに行くことになっています。

本当はAsobo会に行きたい。大塚さんに会いたい。

 

はい、というわけで第1回の掲載になるわけですが…

前回のAsobo会で大塚さんと再会した際にフリーのジョブ管理ツールの存在を聞いたんです。

その名も「JobScheduler!!」

なんかそのまんまやん…それがドイツ流なのか…

それでどないなもんなのか興味をもったんで一応書いてみますよ。

 

執筆始める前にわいの拙いITキャリアの中で出会ったジョブ管理システムとかいう代物について一応記載しますわ。

 

(1)JP1 AutomaticJobManagementSystem3(Manager/Agent)

これはいわずもがな、JP1を国内No1シェアとかいう輝かしい功績に導いている

代物ですわ。でもその中身は…はてそないな言うほどいいもんかなと。

官庁系のシステムはJP1が大好きだから支持されているのか…

マニュアルが日本語だからなのかよう分からん位ですか。

こいつに関しては何の未練もないですわ。

タイムスリップしてSymantec NetBackUp のバックアップジョブが

こけて電算室に閉じ込められてた理由を調べたい位ですわ。

 

(2)HP Software HP JobCenter

これってJP1と何が違うの?

アイコンの形とシンボルが変わった位か…

HPってつけば何でも高級になるんですか…

美味しんぼ雁屋哲も言っとったで、日本人はブランドをありがたすぎると。

 

(3)NEC SystemWalker

正直これのことはよう分からんのですけどね。

ただ、専用のコマンドが体系づけられて使いやすかったことだけが印象的でしたよ。

なんちゅうか悪い人ではなさそうだな程度の印象ですわ。

 

…というわけであるかないかも分からないけど、

フリーという名の楽園を求めてJobSchedulerに手を出したわけですよ。

 

JobSchduler(ジョブスケデューラー)なるものがいかなるものなのか。

AWS上のRHEL7に突っ込んでみて動かしてみようってわけですわ。

 

次の記事で時間が許す限り、手順なりスケデューラーさんの良い所なり紹介していきますわ。

confluence(こんふるえんす)を使ってみる(posgreSQLのインストール)

confluenceを使うためにDBサーバであるpostgreSQLをインストールする

インストールするバージョンについてはシステム用件を確認

# yum install postgresql
読み込んだプラグイン:fastestmirror, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package postgresql.x86_64 0:8.4.20-3.el6_6 will be インストール
--> 依存性の処理をしています: postgresql-libs(x86-64) = 8.4.20-3.el6_6 のパッケージ: postgresql-8.4.20-3.el6_6.x86_64
--> 依存性の処理をしています: libpq.so.5()(64bit) のパッケージ: postgresql-8.4.20-3.el6_6.x86_64
--> トランザクションの確認を実行しています。
---> Package postgresql-libs.x86_64 0:8.4.20-3.el6_6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

===============================================================================================
 パッケージ                     アーキテクチャ  バージョン        リポジトリー            容量
===============================================================================================
インストールしています:
 postgresql                     x86_64          8.4.20-3.el6_6    updates                2.6 M
依存性関連でのインストールをします。:
 postgresql-libs                x86_64          8.4.20-3.el6_6    updates                202 k

トランザクションの要約
===============================================================================================
インストール         2 パッケージ

総ダウンロード容量: 2.8 M
インストール済み容量: 14 M
これでいいですか? [y/N]n
ユーザーコマンドを終了しています
#

インストールしようとしたらシステム用件であるバージョンでは無いためキャンセルしてバージョン9.3用のリポジトリを追加

# wget http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm
--2015-07-30 23:56:59--  http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-centos93-9.3-1.noarch.rpm
yum.postgresql.org をDNSに問いあわせています... 174.143.35.196
yum.postgresql.org|174.143.35.196|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 5240 (5.1K) [application/x-redhat-package-manager]
`pgdg-centos93-9.3-1.noarch.rpm' に保存中

100%[=======================>] 5,240       --.-K/s 時間 0s

2015-07-30 23:56:59 (125 MB/s) - `pgdg-centos93-9.3-1.noarch.rpm' へ保存完了 [5240/5240]
# rpm -ivh pgdg-centos93-9.3-1.noarch.rpm
警告: pgdg-centos93-9.3-1.noarch.rpm: ヘッダ V4 DSA/SHA1 Signature, key ID 442df0f8: NOKEY
準備中...                   ########################################### [100%]
   1:pgdg-centos93          ########################################### [100%]
#
# yum repolist
読み込んだプラグイン:fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
pgdg93                 | 3.6 kB     00:00
pgdg93/primary_db      | 122 kB     00:00
リポジトリー ID    リポジトリー名                                   状態
base               CentOS-6 - Base                                   6,518
epel               Extra Packages for Enterprise Linux 6 - x86_64   11,742
extras             CentOS-6 - Extras                                    38
pgdg93             PostgreSQL 9.3 6 - x86_64                           259
updates            CentOS-6 - Updates                                1,370
repolist: 19,927
#

バージョン9.3を確認しインストール

# yum list | grep ^postgresql93
postgresql93.x86_64                  9.3.9-1PGDG.rhel6      pgdg93
postgresql93-contrib.x86_64          9.3.9-1PGDG.rhel6      pgdg93
postgresql93-debuginfo.x86_64        9.3.9-1PGDG.rhel6      pgdg93
postgresql93-devel.x86_64            9.3.9-1PGDG.rhel6      pgdg93
postgresql93-docs.x86_64             9.3.9-1PGDG.rhel6      pgdg93
postgresql93-jdbc.x86_64             9.3.1101-1PGDG.rhel6   pgdg93
postgresql93-jdbc-debuginfo.x86_64   9.3.1101-1PGDG.rhel6   pgdg93
postgresql93-libs.x86_64             9.3.9-1PGDG.rhel6      pgdg93
postgresql93-odbc.x86_64             09.03.0400-1PGDG.rhel6 pgdg93
postgresql93-odbc-debuginfo.x86_64   09.03.0400-1PGDG.rhel6 pgdg93
postgresql93-plperl.x86_64           9.3.9-1PGDG.rhel6      pgdg93
postgresql93-plpython.x86_64         9.3.9-1PGDG.rhel6      pgdg93
postgresql93-pltcl.x86_64            9.3.9-1PGDG.rhel6      pgdg93
postgresql93-python.x86_64           4.1.1-1PGDG.rhel6      pgdg93
postgresql93-python-debuginfo.x86_64 4.1.1-1PGDG.rhel6      pgdg93
postgresql93-server.x86_64           9.3.9-1PGDG.rhel6      pgdg93
postgresql93-test.x86_64             9.3.9-1PGDG.rhel6      pgdg93
#
# yum install postgresql93-server.x86_64
読み込んだプラグイン:fastestmirror, security
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.kddilabs.jp
 * extras: www.ftp.ne.jp
 * updates: ftp.riken.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package postgresql93-server.x86_64 0:9.3.9-1PGDG.rhel6 will be インストール
--> 依存性の処理をしています: postgresql93 = 9.3.9-1PGDG.rhel6 のパッケージ: postgresql93-server-9.3.9-1PGDG.rhel6.x86_64
--> 依存性の処理をしています: libpq.so.5()(64bit) のパッケージ: postgresql93-server-9.3.9-1PGDG.rhel6.x86_64
--> トランザクションの確認を実行しています。
---> Package postgresql93.x86_64 0:9.3.9-1PGDG.rhel6 will be インストール
---> Package postgresql93-libs.x86_64 0:9.3.9-1PGDG.rhel6 will be インストール
--> 依存性解決を終了しました。

依存性を解決しました

=========================================================================================
 パッケージ                        アーキテクチャ バージョン          リポジトリー  容量
=========================================================================================
インストールしています:
 postgresql93-server               x86_64         9.3.9-1PGDG.rhel6   pgdg93       4.1 M
依存性関連でのインストールをします。:
 postgresql93                      x86_64         9.3.9-1PGDG.rhel6   pgdg93       1.0 M
 postgresql93-libs                 x86_64         9.3.9-1PGDG.rhel6   pgdg93       192 k

トランザクションの要約
=========================================================================================
インストール         3 パッケージ

総ダウンロード容量: 5.3 M
インストール済み容量: 21 M
これでいいですか? [y/N]y
パッケージをダウンロードしています:
(1/3): postgresql93-9.3.9-1PGDG.rhel6.x86_64.rpm                     | 1.0 MB     00:01
(2/3): postgresql93-libs-9.3.9-1PGDG.rhel6.x86_64.rpm                | 192 kB     00:01
(3/3): postgresql93-server-9.3.9-1PGDG.rhel6.x86_64.rpm              | 4.1 MB     00:03
--------------------------------------------------------------------------------------------
合計                                                        733 kB/s | 5.3 MB     00:07
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
警告: RPMDB は yum 以外で変更されました。
  インストールしています  : postgresql93-libs-9.3.9-1PGDG.rhel6.x86_64      1/3
  インストールしています  : postgresql93-9.3.9-1PGDG.rhel6.x86_64           2/3
  インストールしています  : postgresql93-server-9.3.9-1PGDG.rhel6.x86_64    3/3
  Verifying               : postgresql93-libs-9.3.9-1PGDG.rhel6.x86_64      1/3
  Verifying               : postgresql93-9.3.9-1PGDG.rhel6.x86_64           2/3
  Verifying               : postgresql93-server-9.3.9-1PGDG.rhel6.x86_64    3/3

インストール:
  postgresql93-server.x86_64 0:9.3.9-1PGDG.rhel6

依存性関連をインストールしました:
  postgresql93.x86_64 0:9.3.9-1PGDG.rhel6               
  postgresql93-libs.x86_64 0:9.3.9-1PGDG.rhel6

完了しました!
#
# yum list installed | grep ^postgresql
postgresql93.x86_64  9.3.9-1PGDG.rhel6  @pgdg93
postgresql93-libs.x86_64
postgresql93-server.x86_64
#

postgreSQLの起動 ※初回起動前に初期化が必要

# /etc/init.d/postgresql-9.3 status
postgresql-9.3 は停止しています
#
# /etc/init.d/postgresql-9.3 start

/var/lib/pgsql/9.3/data is missing. Use "service postgresql-9.3 initdb" to initialize the cluster first.
                                                           [失敗]
#
# service postgresql-9.3 initdb
データベースを初期化中:                                    [  OK  ]
#
# /etc/init.d/postgresql-9.3 start
postgresql-9.3 サービスを開始中:                           [  OK  ]
#

postgresユーザが作成されたことを確認

# id postgres
uid=26(postgres) gid=26(postgres) 所属グループ=26(postgres)
#

postgresユーザにスイッチ

# su - postgres
-bash-4.1$ id -un
postgres
-bash-4.1$

ユーザ作成

-bash-4.1$ psql
postgres=# create role confluencedb_user PASSWORD 'xxxxxxxx'  CREATEDB LOGIN;
CREATE ROLE
postgres=#
postgres=# du
                                             ロール一覧
     ロール名      |                                 属性                                 | メンバー
-------------------+----------------------------------------------------------------------+----------
 confluencedb_user | DBを作成できる                                                       | {}
 postgres          | スーパーユーザ, ロールを作成できる, DBを作成できる, レプリケーション | {}

postgres=#

template0(まっさら)を指定しconfluencedbを作成

postgres=# create database confluencedb owner confluenceDB_user template=template0 encoding='utf-8';
CREATE DATABASE
postgres=#
postgres=# l
                                               データベース一覧
     名前     |      所有者       | エンコーディング |  照合順序   | Ctype(変換演算子) |      アクセス権
--------------+-------------------+------------------+-------------+-------------------+-----------------------
 confluencedb | confluencedb_user | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 postgres     | postgres          | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       |
 template0    | postgres          | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres          +
              |                   |                  |             |                   | postgres=CTc/postgres
 template1    | postgres          | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8       | =c/postgres          +
              |                   |                  |             |                   | postgres=CTc/postgres
(4 行)
postgres-# q
-bash-4.1$

confluence(こんふるえんす)を使ってみる(インストール)

confluence(wikiのようなコミュニケーションような文書管理のようなツール)の無料体験版(30日)をインストールし使ってみる

◆参考 wikipedia confluenceの企業サイト

◆環境 OS:CentOS6.6(2.6.32-504.30.3.el6.x86_64) PP:confluence5.8.6

confluenceをダウンロード

# wget https://www.atlassian.com/software/confluence/downloads/binary/atlassian-confluence-5.8.6-x64.bin

インストール 数回応答要求があるが今回は全てでデフォルト設定

# sh ./atlassian-confluence-5.8.6-x64.bin
Unpacking JRE ...
Starting Installer ...
Jul 29, 2015 2:39:07 PM java.util.prefs.FileSystemPreferences$1 run
INFO: Created user preferences directory.
Jul 29, 2015 2:39:07 PM java.util.prefs.FileSystemPreferences$2 run
INFO: Created system preferences directory in java.home.

This will install Confluence 5.8.6 on your computer.
OK [o, Enter], Cancel [c]

Choose the appropriate installation or upgrade option.
Please choose one of the following:
Express Install (uses default settings) [1],
Custom Install (recommended for advanced users) [2, Enter],
Upgrade an existing Confluence installation [3]

Where should Confluence 5.8.6 be installed?
[/opt/atlassian/confluence]

Default location for Confluence data
[/var/atlassian/application-data/confluence]

Configure which ports Confluence will use.
Confluence requires two TCP ports that are not being used by any other
applications on this machine. The HTTP port is where you will access
Confluence through your browser. The Control port is used to Startup and
Shutdown Confluence.
Use default ports (HTTP: 8090, Control: 8000) - Recommended [1, Enter], Set custom value for HTTP and Control ports [2]

Confluence can be run in the background.
You may choose to run Confluence as a service, which means it will start
automatically whenever the computer restarts.
Install Confluence as Service?
Yes [y, Enter], No [n]

Extracting files ...

Please wait a few moments while Confluence starts up.
Launching Confluence ...
Installation of Confluence 5.8.6 is complete
Your installation of Confluence 5.8.6 is now ready and can be accessed via
your browser.
Confluence 5.8.6 can be accessed at http://localhost:8090
Finishing installation ...
#

ブラウザでhttp://:(IPADDR}:(port)でアクセス ポートインストール時に設定した番号 ※デフォルトは8090 f:id:candapc:20160118022648j:plain

画面を日本語化 f:id:candapc:20160118022652j:plain

トライアル版のインストールを選択 f:id:candapc:20160118022655j:plain

アドオンの選択 ※今回は何も選択しない f:id:candapc:20160118022657j:plain

アカウントが無いためアカウントがないを選択 f:id:candapc:20160118022700j:plain

アカウント情報を入力しアカウントとライセンスキーを作成を押下 ※会社名は入力しなくてもよい f:id:candapc:20160118022703j:plain

登録したメールアドレスで受信したメールにある[Verify my email address]をクリック f:id:candapc:20160118023133j:plain

マイアカウントにアクセスしライセンスを確認 f:id:candapc:20160118023136j:plain

Ruby on Rails のWebアプリに Bootstrap を適用する

レスポンシブWebサイトを簡単に効率よく作成するためのCSSフレームワークであるbootstrapを使って Ruby on Rails のWebアプリの見栄えをよくしてみます。

前提条件

以下の記事を参考に、Scaffold を使用した DBアプリケーションが作成済みであること

asobo.hatenablog.jp

使用環境

Amazon Linux AMI release 2015.03 (x86_64) Ruby 2.2.2 Rails 4.2.3

手順

Gemfile に以下の通り追加して、bootstrap に必要な gem パッケージをインストールします。

$ cd ~/sample/

$ vi Gemfile
+gem 'less-rails'
+gem 'therubyracer'
+gem 'execjs'
+gem 'twitter-bootstrap-rails'

$ bundler install

続けて bootstrap をインストールします。

$ rails g bootstrap:install

前の手順で作成していた users に bootstrap を適用します。

$ rails g bootstrap:themed users
    conflict  app/views/users/index.html.erb
Overwrite /home/ec2-user/sample/app/views/users/index.html.erb? (enter "h" for help) [Ynaqdh]
       force  app/views/users/index.html.erb
    conflict  app/views/users/new.html.erb
Overwrite /home/ec2-user/sample/app/views/users/new.html.erb? (enter "h" for help) [Ynaqdh] 
       force  app/views/users/new.html.erb
    conflict  app/views/users/edit.html.erb
Overwrite /home/ec2-user/sample/app/views/users/edit.html.erb? (enter "h" for help) [Ynaqdh] 
       force  app/views/users/edit.html.erb
    conflict  app/views/users/_form.html.erb
Overwrite /home/ec2-user/sample/app/views/users/_form.html.erb? (enter "h" for help) [Ynaqdh] 
       force  app/views/users/_form.html.erb
    conflict  app/views/users/show.html.erb
Overwrite /home/ec2-user/sample/app/views/users/show.html.erb? (enter "h" for help) [Ynaqdh] 
       force  app/views/users/show.html.erb

このままだと bootstrap が存在しないと怒られるので、パスを以下の通り編集します。

$ vi ~/sample/app/assets/javascripts/application.js
@@ -12,6 +12,6 @@
 //
 //= require jquery
 //= require jquery_ujs
-//= require twitter/bootstrap
+//= require bootstrap
 //= require turbolinks
 //= require_tree .

サーバーを停止して、$ rails s -b 0.0.0.0コマンドで再度起動します。

ブラウザで表示すると、bootstrap が適用されて見栄えが良くなったのを確認できます。 f:id:candapc:20160118022243p:plain

Scaffold を利用して簡単なDBアプリケーションを作成する

Ruby on Rails では、Scaffoldという 一覧表示、詳細表示、新規作成、編集、削除を行うための モデル、コントローラー、ビューの雛形を生成してくれる便利なコマンドがあります。

その Scaffold を使用して、簡単なDBアプリケーションを作成していきます。

前提条件

以下の記事を参考に、Ruby on Rails 環境のセットアップ、およびsampleというアプリケーションが作成されていること

asobo.hatenablog.jp

使用環境

Amazon Linux AMI release 2015.03 (x86_64) Ruby 2.2.2 Rails 4.2.3

手順

今回は、ユーザ管理(ユーザの一覧表示、詳細表示、登録、削除)のアプリケーションを作成していきます。

以下の通り、user テーブルを以下の通りにします。

カラム名説明
uidstringユーザID
emailstringメールアドレス
passwdstringパスワード
commenttextコメント

ユーザ管理を行うための Ruby on Rails の雛形を以下のコマンドを使用して作成します。

$ cd ~/sample/
$ rails g scaffold user uid email passwd comment:text

上記のrails g 〜の部分は、以下のコマンドを実行しても同じ結果を得られます。

$ rails generate scaffold user uid:string passwd:string comment:text

以下のファイルが生成されていることが確認できます。

sample
└── app
    ├── controllers(コントローラ)
    │   └── users_controller.rb(user用のビュー)
    ├── models(モデル)
    │   └── user.rb(user用のモデル)
    └── views(ビュー)
        └── users(user用のビュー)
            ├── _form.html.erb(他のビューからの参照で使用)
            ├── edit.html.erb(編集)
            ├── index.html.erb(一覧表示)
            ├── new.html.erb(新規作成)
            └── show.html.erb(詳細表示)

それでは、試しにブラウザから表示させてみましょう。

サーバを起動していない場合は、以下のコマンドで起動します。

$ rails s -b 0.0.0.0

ブラウザからのURLでアクセスしてみましょう。 http://<IPアドレス>:3000/users

すると以下のエラーが表示されますw ActiveRecord::PendingMigrationError f:id:candapc:20160118022008p:plain

データベース(sqlite3)にテーブルが定義されていないためです。

テーブルを作成していきますが、sqliteにアクセスしてcreate tableは面倒なので、 Ruby on Railsで用意されているマイグレーション機能を使用して一瞬でテーブルを作成しましょう。

マイグレーションの定義ファイルは、すでに Scaffold を使用した雛形を作成した際に、 以下の通り作成されています。

$ ll ~/sample/db/migrate/*_create_users.rb
-rw-rw-r-- 1 ec2-user ec2-user 225  719 03:19 /home/ec2-user/sample/db/migrate/20150719031944_create_users.rb

中を見るとテーブルを作成していることがわかります。

$ view ~/sample/db/migrate/20150719031944_create_users.rb
class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :uid
      t.string :email
      t.string :passwd
      t.text :comment

      t.timestamps null: false
    end
  end
end

DBのマイグレーションを実行し、確認します。

$ bundle exec rake db:migrate
== 20150719031944 CreateUsers: migrating ======================================
-- create_table(:users)
   -> 0.0010s
== 20150719031944 CreateUsers: migrated (0.0012s) =============================

$ sqlite3 ~/sample/db/development.sqlite3 ".schema users"
CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "uid" varchar, "email" varchar, "passwd" varchar, "comment" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL);

画面が表示されました。 f:id:candapc:20160118021842p:plain

以上で終了となります。 次回の記事で、bootstrap を使用して見栄えを良くしていきたいと思います。

MVCとは

Webアプリケーションを開発をする上で必要となる基本概念である MVC について説明していきます。

 

MVC とは、Model、View、Controller の頭文字をとったもので、簡単に言えば、役割ごとに担当する部分を分けようという概念です。

MVC を使用することで、なにかしら変更があった際の改修対象を最小限に抑えられるというメリットがあります。

 

人やフレームワークによって若干の違いはあるものの概ね以下の通りとなります。   f:id:candapc:20160118021430p:plain

各要素の説明

Model(モデル)

DBのデータ操作およびビジネスロジックを担当します。

DB側の変更や、計算方法といったビジネスロジックの変更については、モデルにて吸収します。

 

View(ビュー)

プレゼンテーションにあたる部分を担当します。

Webデザイン等の変更については、ビューにて吸収します。

 

Controller(コントローラ)

入力の受け取り、および、各種制御を行います。

ユーザ等からの入力によって動きが変わるような処理については、コントローラにて行います。

 

ポイント

MVCのそれぞれの機能を念頭において、どこに処理を記述するか決めていきます。

 

単純にデータを参照するだけの場合には、ビューから直接モデルを直接参照したり、

データの加工については、なるべくモデルに記載したりして

コントローラが肥大化しすぎないように気を付けましょう。