リスキルテクノロジー

MySQLを使ってみよう-SQL編-

From: リスキルテクノロジー 松田航
新宿本校にて、、、

以前のブログで
MySQLのインストールから...

データベースの作成までを
ご紹介しました。

今回はSQLを使って
実際にデータを登録してみましょう。

テーブルを作ってみよう

データベースでは
さまざまなデータを管理します。

登録されるデータは...

「テーブル」

...と呼ばれる単位で
管理されています。

住所録のような
一覧表をイメージしてください。

列には
住所や氏名などの項目があり、

行には
それぞれの住所データが
掛かれています。

テーブルも同じで
列に項目、行にデータを
設定してゆきます。

もちろん、
住所データだけではなく、

管理するデータによって
それぞれの項目が変わってきます。

テーブルがなければ
データを登録することはできません。

そこで、
まずはテーブルを作ってみましょう。

以前のブログで
MySQLで作成した
linuxacademyデータベースにアクセスします。

step1

それでは、
電話帳テーブルを作ってみましょう。

テーブルを作るには
CREATE TABLEコマンドを実行します。

telephone
というテーブルに...

num(電話帳番号)、
name(氏名)、
tel(電話番号)

...という項目を設定します。

INT(2)というのは
2ケタの数値の項目、

VARCHAR(40)というのは
半角40文字の項目を意味します。

step2

実行したら、
テーブルができているか確認しましょう。

テーブルの構造を確認するには
DESCコマンドを使います。

step3

テーブルが作成されていますね。

SQLでテーブルにデータを登録しよう

続いて、
telephoneテーブルに
データを登録してゆきます。

データベースで
データの登録や参照をするには
SQLがつかわれます。

SQLの基本は以下の4種類です。

・SELECT : データを検索する
・INSERT : データを登録する
・UPDATE : データを更新する
・DELETE : データを削除する

まずは、
INSERT文を作成して
新しいデータを登録しましょう。

INSERT文は
次のフォーマットで書かれます。

INSERT INTO テーブル名 (項目1, 項目2...)
 VALUES (値1, 値2...);

今回、
telephoneテーブルに登録するので...

...と設定しましょう。

step4

データが登録できました。

では、
登録したデータを
検索して見てみましょう。

データを検索するには
SELECT文を使います。

SELECT文は
次のフォーマットで書かれます。

SELECT 項目1, 項目2...
FROM テーブル名
WHERE 条件式1, 条件式2...

条件式は
特定のデータを検索する時に指定します。

ここでは
numが1のものを指定します。

SELECT num, name, tel FROM linuxacademy WHERE num = 1;

これを実行すると...

step5

登録されている
データが表示されました。

では次に、
登録データの電話番号を変更してみましょう。

データの変更するには
UPDATE文を使います。

UPDATE テーブル名
 SET 項目1 = 値1, 項目2 = 値2 ...
 WHERE 条件式1, 条件式2...

条件式には
変更するデータを指定します。

UPDATE telephone SET tel='0120111222' WHERE num = 1;

これを実行して
先程のSELECT文で見てみましょう。

step6

電話帳番号1の
電話番号が変更されています。

それでは最後に
登録したデータを削除します。

削除するには
DELETE文を使います。

DELETE FROM テーブル名
 WHERE 条件式1, 条件式2...

条件式は
削除するデータを特定する時に使います。

これを指定しないと
全データが削除されますので
注意が必要です。

DELETE FROM telephone WHERE num = 1;

これを実行して
先程のSELECT文で見てみましょう。

step7

Empty Set...

つまり、
データが削除されていますね。

操作しながら学びましょう

SQLは
一見すると簡単に見えますが...

実際の
システム開発では、

複数のテーブルを
組み合わせた検索方法や...

複雑な条件式が書かれた
非常に長いSQLが使われることもあります。

まずは
実際に操作しながら
SQL文を習得してゆきましょう。

実際に操作しながら学ぶことは
習得への近道です。

リスキルテクノロジー
松田

PS

データベースも学ぶ研修なら

未経験者・初心者がプロフェッショナルエンジニアになるためにやるべきこと

From: 松田航
新宿サザンテラスのスタバにて

つい先日、LPI-Japan(LPIC主催団体)の会合で、デージーネットの恒川さんとお話をする機会がありました。『ドラッカーさんに教わったIT技術者が変わる50の習慣』を書いている方ですね。(IT系の本としては、とても珍しいほど売れている良本です。ぜひご一読を)

せっかくの機会だったので、質問をしてみました。

「プロフェッショナルなエンジニアになるために、
 まずやるべきことってなんだと考えていらっしゃいますか?
 未経験や初級レベルから意識すべきことで」

ほとんど当たり前かのように、恒川さんが出してくれた答えが、

「タイピングをとにかく速くすることでしょう」

でした。

タイピングを速く!

for_blog_la

恒川さんの会社では入って来る新卒に対してもタイピングを徹底するように指導するそうです。会社にソフトがあり、そのソフトを基準に実施しているのだとか。

とにかくエンジニアの最低限の条件としてタイピングを早くしてもらわないといけないという話をしてもらいました。

即答でこの回答が来たことは、とても意外でしたが、たしかに納得できるものでした。

なぜそれほどタイピングが大切か?

答えはわかりやすくて、思考をすぐにアウトプットできないと、思考の速度がタイピングの速度になってしまうからです。

一般的な社会人にも必要な能力ですが、エンジニアはなおさらです。エンジニアは書くことが仕事ですから、思考をそのままなるべく速くアウトプットでないと、話になりません。作家さんなども同じなのですが、自分の思考スピードでものが書けないと、その速度でしか思考が進まなくなります。

人間は多くの場合アウトプットの速度に合わせて思考をします。話すのが早い人は頭の回転が早い傾向にあるのも、それが一因でしょう。

エンジニアの生産量には100倍の差があるという話がありますが、生産性の高い人は確実にタイピングも早いです。

トライアンドエラーに速度の差が出る

また、タイピングが速くなるメリットにトライアンドエラーが繰り返せるというものがあります。恒川さんの本にも詳しく書いてありますが、タイピングだけで5〜10倍の差がでます。

トライアンドエラーを1/5しか実施できなければ、その分、学ぶ量が圧倒的に少なくなるのはよくわかると思います。その分だけ成長率は下がりますし、長期間見ると大きな差になってきます。

タイピングをどれだけトレー二ングするかで、そのときの生産量だけではなく、成長の速度も変わってくるということです。

仕事ができるように見える!

もうひとつ、副次的な効果ですが、タイピング早いだけで仕事ができるように見えます。それはもうびっくりするほど仕事ができるように見えます。

近くにいるタイピング早い人を思い浮かべてみてください。多分、仕事も速い、印象がないですか? 実際の仕事量はなかなかわかりにくいのですが、タイピングの速度だけでファーストインプレッションに大きな効果があるのです。

タイピングの速度を上げるだけで仕事ができるように見えるのであれば、これほど楽なことはありません。ひたすらに向上させるべきです。話し方を変えるとか、プレゼンスキルを身につけるとか、発想力を上げるとかよりも目標が具体的なだけに目指すのが楽でしょう。

LAの授業や研修でもそう

また、授業・研修でもタイピングが遅いため、打つにのに必死になり、授業についていけないという人がやはり出てきます。

授業がわからないという相談の大きな原因が、だいたいここにあります(本当です)。タイピングに必死になり、考えるという時間がないのです。じゃあ、長く時間を取ればいいのかというとそういう訳でもありません。人間が集中できる時間はそれほど変わらないので、いつまでたっても終わらなくなります。結果、途中で挫折しがちです。

LAでも極力練習をしてから、クラスに入ってもらうようにしています。そうすることで、習得率はあがりますし、考える時間がとれ、質問の質も上がり、クラス全体がいい雰囲気になります。

練習方法と基準

練習方法は、とくにはじめのうちは、なんでも構いません。ウェブにいくらでもタイピングソフトやタイピング練習サイトが落ちているのでそれを利用しましょう。

私がよく研修などでも利用するのは、「寿司打」です。寿司を食べていくら儲けられたかというゲーム性も強いタイピングソフトです。検索してみてください。

ただ、慣れてきたら、日本語ではなく、英語のソフトを使ったほうがいいでしょう。

日本語ももちろんたいせつなのですが、どちらかというと、初心者がつまづくのは記号です。そちらも練習をすべきです。

オススメは下記サイトです。

http://typing.lk/

コードのタイピング練習には最適です。

理想的には1秒間に10文字程度のペースで打てるようになるといいです。

練習しましょう!

速くする方法はひとつだけ。練習あるのみです。

あまり意識したことがない人も多いでしょうが、確実にあなたの人生を向上させるので、時間を見つけつつ楽しんで実施してみるのをオススメします。

松田

PS
プログラミングを学ぶならリスキルテクノロジー

MySQLを使ってみよう-データベース作成編-

From: リスキルテクノロジー 松田航
新宿本校にて、、、

以前のブログで
MySQLのインストールや、

MySQLを使うための
初期設定を行いました。

いよいよ
実際にMySQLを操作してみましょう。

今回は
MySQLの起動とログイン、

そして
データベースと
ユーザーの作成方法をご紹介します。

MySQLを起動しよう

まずは
MySQLを起動します。

起動するには
CentOS7から採用された
systemctlコマンドを使います。

これで
MySQLが開始されます。

ちなみに...

MySQLを停止するには...

再起動するには...

です。

実行したら、
起動したかを確認しましょう。

で確認できます。

step1

状態は...

active(running)

となっているので
MySQLの起動が確認できました。

MySQLにログインしよう

それでは
いよいよMySQLにログインしてみましょう。

まずは
管理者権限でログインします。

MySQLに
ログインするためには...

mysql -u ログインするユーザ名 -p

と入力します。

管理者は「root」ですので...

ですね。

次に
パスワードの入力が求められますので

初期設定の時に登録した
管理者パスワードを入力します。

step2

これでログインできました。

データベースを作成してみよう

MySQLの
データベースを作成してみます。

まずは
現在登録されている
データベースを見てみましょう。

データベースを
一覧表示するには
次のコマンドを入力します。

コマンドの最後に

「;」(セミコロン)

を入力する点に気を付けてください。

MySQLにログインした後は
コマンドの最後にセミコロンを入力して

入力がここまでです!
ということをMySQLに知らせる必要があります。

step3

登録されている
データベースが表示されます。

では、
自分で使うための
データベースを作成してみましょう。

データベースを
作成するには次のコマンドを入力します。

ここでは...

と入力して…

linuxacademy

というデータベースを作りましょう。

コマンドを入力後、
データベース一覧で確認します。

step4

linuxacademyという
データベースが作成されていますね。

ユーザーを作成してみよう

続いて
MySQLにログインできる
ユーザーを作成してみましょう。

ユーザーを作成するには...

と入力します。

ユーザー:testuser
パスワード:testuser

...の設定で作ってみましょう。

ホスト名とは
ユーザーを作る場所のことです。

ここでは
このCentOS上に作りますので、

ホスト名は

localhost

…となります。

と入力します。

コマンドを入力したら
実際にユーザーが作成されたか確認します。

ユーザーを確認するには...

select user, host from mysql.user;

というSQL文を発行します。

step5

SQL文の
発行結果が表示されました。

testuser

というユーザーがありますので、
ユーザーが作成されたことが確認できました。

ここで
注意したいことがひとつあります。

ユーザーは
ただ作るだけではいけないということです。

ユーザーには
権限を与える必要があります。

権限とは、
データベースに対して
どのような操作ができるかという設定です。

権限を与えていないと
testuserで
linuxadacemyデータベースに
接続しようとしてもエラーになります。

step6

このように
アクセスが拒否されていますね。

ユーザーに
権限を与えるには...

grant all privileges on データベース名.テーブル名 to 'ユーザー名'@'ホスト名';

というコマンドを入力します。

all privileges

とは...

「全ての権限」

...という意味です。

もっと細かい設定もできますが、
ここでは全権限を与えるようにします。

では、
先ほど作成したユーザー

「testuser」

...に

先ほど作成したデータベース

「linuxacademy」

...に対する権限を与えてみましょう。

step7

権限の付与が成功しました。

では、
testuserで
linuxacademyデータベースに
接続できるか試してみましょう。

step8

権限が与えられたので、
接続できていますね。

MySQLからのログアウト

MySQLを終了するには

と入力してください。

と表示されて
MySQLからログアウトできます。

step9

それでは今回はこのあたりで...

Bye!

リスキルテクノロジー
松田

PS

プログラミングとデータベースを学ぶならこちら

ちゃんと失敗する

for_blog_la

From: 松田航
新宿本校にて

「とりあえず動くようにしてくれ!」

多分、先週の日曜日に、僕がもっとも発した言葉です。

リリース直前のアプリケーションがあり、これがなかなか完成しない。そのため、リリース日当日に、スタッフのエンジニアにそんなことを言っていたのでした。

いや、今思っても最悪に近い言葉ですね。僕自身もコードを全力で書いていたため、若干焦り気味だったのでしょう。

ちなみに、PM(プロジェクトマネージャ)がコードを書き始めると大体残念な結果に終わるプロジェクトが多いので、極力書かない方がいいです。全体に関係のない、API叩いてデータ取ってくる、とかそういう箇所だけやるのなら影響範囲が小さいのでOK。

で、話を戻すと、「とりあえず」という発言はそれはもう、リスキーで、情けない言葉です。

ちゃんと失敗する

アプリケーションの不具合は発見できるのが早ければ早いほど、その後の修正は少なくて済みます。他部分への影響が小さいのですから、そりゃそうですよね。だから、単体テストをいかにしっかりと実施できているかが、最終的に安定稼働するアプリケーションになるかどうかを分けます。

問題点が早くに発見できるのは、最終的にすごく健全で、堅牢のソフトウェアができることを意味して言います。だから問題を発見できるようにすべきなのです。

だから、「とりあえず」動かすのではなくリリース前であれば尚更、エラーを表示させてちゃんと失敗をすべきです。

作り始めは全力でエラーを表示

とにかく作り始めた段階ではエラーは目立たせるべきです。PHPのCakeフレームワークのエラー表示など素敵です。赤字のバーが上部に表示される形ですね。自分でゼロからアプリケーション作る場合でも、あれを表示させてもいいくらいです。

エラーをウェルカムしましょう。エラーが出たときにいちいちへこまずに、

「よし、また一個素晴らしいプログラムに近づいた!」

になったと思うべきです。完全に思い込みましょう。自分のストレスを減らすためにも。

つい先日、エンジニア向け本の中で20万部を超える大ベストセラーになった奇跡の書「なぜプログラムは動くのか」の著者、矢沢さんに講演を行ってもらいましたが、講演の中で、こんな話が出ていました。

「コンパイラやエラーそのものを大切に扱いましょう。彼らはあなたをマンツーマンで叱ってくれるいい先生です」

まさしくだと思います。

予測できない問題への対応

予測できないような問題に対応できる方法はとても大切です。ソフトウェアの品質が本当に試されているのは、何か問題が起きた時です。

誰でもミスを犯します。仕事を進めていく中で愚かなミスがあります。人間ですから。でも、そのミスをなるべく早く見つけることができれば、後からの問題は激減します。

  • 間違いに気づいたら、とりあえずの処理をしない。納期の問題で仕方がなかったら、少なくとも、メンバーのに状況を共有する。wikiにあげてもいいですし、slackで発言してもいいでしょう。
  • 解決策を提示しよう。時間リソースが足りずに、自分が解決できなくても、こうすれば解決出来るという道を見出して、メンバーに共有しましょう。できれば、そのメンバーのリソースで適用可能な対処法を提示できると、その人は重宝がられます。極端な話ですが、ある新規のプログラムを作成していて、OracleにDBを変えれば、大丈夫。というような解決策は、まぁ残念な訳です。
  • 早く相談する。相談する相手がいれば、相談することです。プロマネでもいいですし、技術のメンターでも構いませんし、仲良くなった技術者に「今度おごるから!」と叫んで協力してもらってもいいです。早めに相談することがデスマーチから遠ざかる道です。

きちんとミスをするのがリスク回避につながる!

またどこかで書こうと思いますが、breakのひと文言だけで、60億円の損失を発生させた例もあります。

真っ青になるなんてものじゃないでしょう。

ちゃんとミスしましょう!
とりあえず、動けばいいとか言わずに!

松田

MySQLを使ってみよう-初期設定編-

From: リスキルテクノロジー 松田航
新宿本校にて、、、

以前のブログで
MySQLをインストールしましたが、

今回はいよいよ
MySQLを実際に起動してみましょう。

最初にいくつか
初期設定が必要ですので、

その設定方法や、
起動方法などの操作をご紹介します。

MySQLを起動しよう

多くのデータベースでは
最初にいくつか設定しなければ

データベースとして
使うことができません。

それはMySQLでも同じです。

設定と言っても
あまり難しくはなく、

最初に起動したときに
いくつかの質問に答えることで
初期設定することができます。

では、
次のコマンドで
実際に起動してみましょう。

これでMySQLが起動しますので、
初期設定を行います。

MySQLの初期設定

初期設定は
次のコマンドで実行します。

入力すると、
対話形式でのMySQL設定が始まります。

step1

これは
設定にあたって
管理者権限のパスワードが必要だけど、

最初の設定で
また管理者権限のパスワードが
設定されていないならEnterを押してください

...という意味です。

まだ何も設定していませんので
[Enter]キーを押します。

step2

次の質問です。

管理者権限の
パスワードを設定しますか?

...という意味です。

[Y]を入力してパスワードを設定します。

step3

そして次の質問です。

デフォルトでは
誰でもログインできるように

「匿名ユーザー」

というものが設定されています。

最初の設定では
これを削除したほうがいいですよ。

...という意味です。

削除するので[Y]を入力します。

step4

管理者権限で
ネットワーク越しに
ログインできるようになっています。

これを許可しないようにしますか?

...という意味です。

セキュリティ的に
よくありませんので[Y]を入力します。

step5

次の質問です。

誰でも使える

「test」

というデータベースがありますが、
これを削除しますか?

...という意味です。

残しておいてもいいですが、
[Y]を入力して削除しておきましょう。

データベースの作り方は
次回にご紹介します。

step6

最後の質問です。

ここで設定した権限の内容を
すぐに反映しますか?

...という意味です。

[Y]を入力してすぐに反映します。

step7

これで初期設定はすべて終了しました。

少しずつ着実にスキルを身に付けよう

MySQLの
インストールから
初期設定までが終了しましたが、

このままでは
ただの空っぽの状態です。

次回は実際に
データベースやユーザーの作成、

そして
データを操作するために
簡単なSQL文を発行してみましょう。

まぁ、実際やってみると色々なエラーがでてきたり、
よくわからなくなるとおもいます。

それ自体がいい勉強です。

実際に操作して...

たくさん悩んで、
たくさん調べて、
たくさん覚えて、

少しずつ着実にスキルを身に付けましょう。

リスキルテクノロジー
松田

PS

データベースもマスターしたエンジニアになるには

MySQLを使ってみよう-インストール編

From: リスキルテクノロジー 松田航
新宿本校にて、、、

大規模なシステムから
スマホのアプリケーションまで

システム規模の大小を問わず
データベースが活用されています。

オープンソースの
代表格的なデータベースに

MySQL

...があります。

今回から数回にわたり
MySQLのインストールや設定、
簡単な操作方法などをご紹介しましょう。

ちなみに、PostgreSQLがうちのスクールでは主流ですが、
MySQLも取り入れていたりします。

MySQLとは?

MySQLとは
世界中で最も使われている
オープンソースのデータベースです。

大小さまざまな
システムで採用されており、

有名どころでは
facebookでも使われていますね。

facebookでは
何千台ものMySQLが
利用されているようです。

もともとは
スウェーデンの企業で
開発されたデータベースですが、

その後
サン・マイクロシステムズ社に買収され...

さらに
サン・マイクロシステムズが
オラクル社に買収されと...

いろいろと
歴史のあるデータベースなのです。

ともあれ、
MySQLは優れた性能を持っており、

それまで
商用で販売されていた
データベースと同等の性能を持っています。

将来有料化しないか心配ですが、
当分は大丈夫でしょう。

インストールする前に...

それでは、
以前インストールした
CentOS7にMySQLをインストールしましょう。

と、その前に...

まずは、

MariaDB

という製品が
インストールされていないか
確認する必要があります。

CentOSでは
MySQLが標準だったのですが、

バージョン7から
MySQLは標準ではなくなっています。

MySQLの代わりに
MariaDBというデータベースが
標準でリポジトリに入っています。

MariaDBとは
MySQLとの互換性を持った
データベースです。

このMariaDBについては
また別の機会にご紹介しますね。

MySQLとMariaDBは
同じ環境にインストールできますが...

割とややこしいので
今回はMariaDBに関するものを
アンインストールした上で進めましょう。

まずは、
MariaDBに関するものが
インストールされていないかを確認です。

root権限で
端末から次のコマンドを入力します。

step1

mariadb-lib
というものが入っているようです。

これを
次のコマンドで
アンインストールしましょう。

step2

アンインストールできました。

いよいよMySQLをインストール

まずは
MySQLの公式サイトから
次のコマンドでMySQLをダウンロードします。

step3

ダウンロードが完了しました。

そしていよいよ
MySQLとMySQLの動作に必要な
パッケージをインストールします。

yum -y install mysql
yum -y install mysql-devel
yum -y install mysql-server
yum -y install mysql-utilities

1行ずつコマンドを実行すると、
それぞれのパッケージのインストールが開始されます。

順番にインストールしましょう。

インストールが完了したら、
次のコマンドで確認しましょう。

step4

インストールされていますね。

これで
MySQLの準備が整いました。

次回は
MySQLの初期設定についてご紹介します。

リスキルテクノロジー
松田

PS
データベースを使ったプログラミングを学ぶならこちらから

システム開発の質を高めるバージョン管理ツールとは?

From: リスキルテクノロジー 松田航
新宿本校にて、、、

「バージョン管理」

という言葉をご存知でしょうか。

システム開発においては
欠かすことのできない手法です。

これが欠けてしまうと
開発作業は大きく混乱してしまいます。

今日は
大切なバージョン管理に必要な...

「バージョン管理ツール」

...についてお話しましょう。

バージョン管理は何のために?

多くの場合、
システム開発は1人では行いません。

複数のエンジニアが集まり
システムを作り上げてゆきます。

システムを作るにあたっては
設計書やプログラム、マニュアルなど

多くのファイルを作りながら
進められてゆきます。

全て1人でするならば...

どのファイルに
どんなことを書いたのか、
どのように修正したのかなど、

ファイルの内容を
ある程度覚えておくことができます。

しかし、
複数の人で開発をする場合は別です。

自分が書いたファイルが
知らない間に他の人に修正されたり、

プログラムが書き換えられたりと
ファイルの状態を把握できなくなります。

ファイルの状態を把握できないと
何が起こるかというと...

本来は
プログラムのバグを修正した
最新のファイルを納品しないといけないのに

バグのある古いファイルで納品し
システムトラブルが発生することもあります。

そのような問題を避けるために
ファイルのバージョン管理を行う...

「バージョン管理ツール」

...が、
ほとんどの開発現場で導入されています。

ファイルのライフサイクルを管理する

バージョン管理ツールとは
ひとことで言うと...

「ファイルのライフサイクルを管理するツール」

...だと言えます。

ファイルに対して...

誰が、いつ作成したのか?
誰が、いつ、どこを修正したのか?
ファイルが何回修正されたのか?

...などをデータベースで管理します。

プログラムだけでなく、
様々なフォーマットのドキュメントや、

画像ファイルや動画ファイル、
音楽ファイルに至るまで、
あらゆるファイルを管理することができます。

また、
複数の人が同じファイルを
同時に変更することがないように

誰が今、ファイルを変更しているか?

といったことも管理することができます。

バージョン管理ツールには
大きく分けて2つのタイプがあります。

■集中型

まず1つ目は「集中型」と呼ばれるタイプ。

これは、
ファイルのバージョン管理をする

「リポジトリ」

と呼ばれるデータベースのようなものが、
専用のサーバーで一元管理されているタイプです。

比較的古いバージョン管理ツールは
この集中型のものが多いですね。

■分散型

そして2つ目は「分散型」と呼ばれるタイプです。

分散型も集中型と同じように
リポジトリでファイルを管理しますが、

作業する人がそれぞれに
リポジトリのコピーを持つことで、

たとえば
ネットワークに繋がっていなくても
修正することができるというのが特徴です。

最近開発された
バージョン管理ツールは分散型が多いですね。

代表的なバージョン管理ツール

それでは、
代表的なバージョン管理ツールを見てみましょう。

■CVS

CVSとは
Concurrent Versions Systemの略称で、
並行バージョン管理システムを意味します。

1990年に開発された
比較的歴史の古いバージョン管理ツールです。

こちらは集中型の
バージョン管理システムになります。

■Apache Subversion

多くの開発現場で使われていた
CVSの問題点を改善するために作られたツールです。

2000年に開発され、
操作がCVSと似ていることから、

CVSからSubversionに
乗り換えるユーザが多くいました。

CVSと同じく
集中型バージョン管理システムです。

■Visual Source Safe

1994年にMicrosoft社が開発した
集中型のバージョン管理ツールです。

CVSやSubversionと違い
フリーウェアではなく商用ツールですが...

ファイルの破損といった
トラブルがけっこうあったツールですね。

商用だから良い!
というわけではありませんね。

■Git

2005年に開発された
分散型のバージョン管理ツールです。

Linuxカーネルの
ソースコード管理のために開発されたもので、

今では多くの開発者に使われている
人気のバージョン管理ツールです。

開発者は
Linuxカーネルの生みの親である
リーナス・トーバルズです。

もちろんフリーウェアです。

フリーで使えて質が良い...

やはり
オープンソースはいいですね(笑

開発の生産性と質を高めるために

この他にも
多くのバージョン管理ツールがありますが、

現在の主流は
SubversionとGitです。

Subversionのシェアは高いですが、
それを追うようにGitがシェアを広げています。

これらの
集中型と分散型の代表的なツールを
一度は触っておいたほうが良いでしょう。

私はプログラムを触らないから...

という方も、
一度は触っておいてください。

なぜなら、
管理するファイルはプログラムだけでなく、

業務資料や仕様書といった
さまざまなファイルが対象となるからです。

バージョン管理ツールを
活用することで...

システム開発の生産性を高め、
開発の質そのものを高めることに繋がるのです。

リスキルテクノロジー
松田

実践的な開発手法を習得するならこちら

サービスを停止させないクラスタリングとは?

From: リスキルテクノロジー 松田航
新宿本校にて、、、

システムの障害などにより
サーバーが停止してしまうと、

ビジネスだけでなく
生活にも大きな影響を与えてしまいます。

今日は
システムを停止させない技術である、

「クラスタリング」

についてお話しします。

クラスタリングって何ですか?

現代社会では
システムが止まってしまうと、

大きな混乱が
発生してしまいます。

また、
システム利用者の増加によって

大量のデータや
通信のやりとりが発生しています。

システムを
停止させないように、

そして、
できるだけ高速に
処理を行うように考えられた技術が

「クラスタリング」

という技術です。

「クラスタ」とは
「ぶどうの房」という意味で、

複数のサーバーを統合して
処理を行うことを言います。

複数のサーバーを
統合することにより、

1台のサーバーでは
実現できないサービスを提供できます。

クラスタリングは大きく分けて…

・HAクラスタ(High Availability)

と…

・HPCクラスタ(High Performance Computing)

…の2種類があります。

では、
それぞれの特徴を見てみましょう。

高可用性を実現するHAクラスタとは?

HAクラスタは
高可用性を目的としたクラスタリングです。

「可用性」

とは、
継続して稼働できることを意味します。

言い換えれば、
システムの壊れにくさですね。

HAクラスタは
さらに2種類に分けられます。

 

■1:フェイルオーバー型

同じ役割を持つノードを
複数用意しておき、

一方を稼働系
もう一方を待機系とします。

※ノード:サーバーやネットワーク機器などの総称

常に動いているのは
稼働系のノードです。

そして稼働系ノードに
何か障害が発生したときには、

待機系ノードが
稼働系ノードに切り替わります。

こうすることで、
サービスを停止することなく、
システムを稼働することができるのです。

稼働系がActive、
待機系がSatndbyなので
Active-Standby型とも言われます。

■2:負荷分散型

同じ役割を持つノードを
複数用意しておき、

いずれも並行して
稼働させておく方法です。

1つのノードが停止しても
他のノードが処理をするので、

サービスを停止することなく
システムを稼働させられます。

また、
複数のノードで処理をするため、

各ノードの負荷が減り、
高い処理性能を発揮することができます。

いずれもActiveなので
Active- Active型とも言われます。

高い処理性能を実現するHPCクラスタとは?

HPCクラスタとは
処理速度を高めるための手法で、

スーパーコンピュータでも
使われている技術です。

HA構成では
各サーバーの役割は同じでしたが、

HPC構成では
それぞれの役割が異なります。

 

ヘッドノードは
クラスタの管理を行う役割で、

各ノードの管理や
クライアントとのやりとりを行います。

そして、
計算用ノードは
計算処理を専門に扱うノードで、

複数の計算用ノードが
平行して処理を行う事で
高い計算能力を発揮します。

データベースとのやりとりは
データノードが行います。

このように、
それぞれの処理を専門に行い、

処理の高速化をするのが
HPCクラスタの特徴なのです。

インフラエンジニアの大切な役目

ひと昔前までは
クラスタリングをするには、

高額なアプリケーションや
専用の機器が必要でした。

しかし、
オープンソースソフトウェアにより
安価に導入できるようになり、

多くの企業や研究機関で
クラスタリングが行われています。

Linuxをはじめとする
オープンソースの普及が、

現代のITを
リードしていると言えるでしょう。

これからの時代、
インフラエンジニアを目指すなら、

サービスを停止させずに
高い処理性能を維持する、
クラスタリングのノウハウは必要です。

多くのシステムは
人々の生活に大きく影響しています。

インフラエンジニアには
そのようなシステムやサービスを

停止させないという、
大切な役目があるのです。

リスキルテクノロジー
松田

PS

サーバーエンジニアや
ネットワークエンジニアを目指すならこちらから

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する