ちゃんと失敗する

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
    データベースを使ったプログラミングを学ぶならこちらから

    プロフェッショナルになる方法

    for_blog_la

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

    先日、リスキルテクノロジーのインターン生から、いい質問を受けました。

    「プロフェッショナルなエンジニアになるためにはどうしたらいいでしょうか?」

    漠然としていますが、いい質問です。あなたも考えたことがあるかもしれません。

    もし、あなたもなんらかの分野で成功したいと思っているなら今日のメルマガは参考になるはずです。プロフェッショナルになるための"現実的な"方法についてお伝えするからです。

    プロフェッショナルになるには?

    この方法はすべてのプロフェッショナルに当てはまります。このステップに従って、自分のキャリアを組み立てればほぼ確実になんらかの成功を手にするでしょう。金銭面か地位か時間かは、個人の望みによります。

    僕もこのステップに従って動いていますし、今後も肝に命じたいと思っています。

    ステップその1:分野を選ぶ

    何でもいいからプロフェッショナルになればいいというわけではありません。まず重要なのが分野を選ぶということです。

    ビジネスでいうとポジショニングです。これは事業だけではなく、個人にも当てはまるということです。

    今からCOBOL(すこし古くなったプログラミング言語)に時間を投下して、プロフェッショナルになったところで見返りは小さいでしょう。ただプロフェッショナルになるのではなく、なんのプロフェッショナルになるのかということをまず意識する必要があります。

    できるだけ長く持つ分野。とはいえ、新しすぎてブームが去ったら、すぐに消えそうではない分野。を選ぶ必要があります。

    それだけではなく、需要に対して供給が少ないものに時間を投下すべきです。例えば、いまからHTMLのコーディングに時間を投下し、誰よりもミスが少なく、インデントをきれいにコーディングができても、見返りは小さいでしょう。Webがある限りなくならない技術ですが、それでも見返りが小さいのです。

    だからまずは分野を慎重に選ぶことが必要です。

    ・その分野の将来性
    ・需要と供給バランス

    なるべく価格競争に陥らず、将来長持ちする技術や分野に時間を投下するのが賢明です。それが難しいという話もありますが、そこはある程度の判断をし、次のステップによってリスクを下げます。

    ステップその2:すこし上の階層も視野にいれる

    分野を決めるとはいっても、その分野に固執するだけではリスクがあります。なぜなら、領域が小さければ小さいほど、その領域には「旬」があるからです。

    特にエンジニアリングの領域は変化が激しい業界です。あるフレームワークのプロフェッショナルになっても、3年後にはトレンドが変わっているというのはよくあることです。

    そのため、ひとつ上の階層に目を向ける方がいいでしょう。

    プログラミングのプロフェッショナル・サーバのプロフェッショナル・ネットワークのプロフェッショナルという階層をまず視野に入れて、それから、さらにJavaやRubyのプロフェッショナルという風に一段下も見るという視点を入れてください。

    そうすれば、仮にRubyが時代遅れになっても、プログラミング全般の知識があるため他の分野への移行はスムーズになります。(もともと、ひとつの言語を極めようとするとそうなります。しかし、割とそうじゃない人もいるのが事実です)

    デザイナでもマーケタでもそれは同じです。企業だけではなく、個人もリスクヘッジはとても大切だということです。

    そうすることで、耐久年度はあがり、あなたの価値は長続きします。

    ステップその3:1万時間投下する

    1万時間の法則という法則をご存知でしょうか?

    1万時間その分野に、プロフェッショナルになれるという法則です。マルコム・グラッドウェルという人唱えた理論です。感覚的にも、この理論はとても現実に即しています。

    幸い、僕たちがいるのはビジネスの世界です。スポーツの世界ではありません。0.1秒や0.1mを競うような世界ではないのです。

    才能はもちろん作用しますが、才能以上にどれだけ時間を投下したかで、十分に勝てる領域に行ける分野なのです。

    1万時間というのはどれくらいの時間でしょうか?

    1日3時間、毎日で10年間かかります。

    仕事で関わっているのであれば、1日8時間、平日だけで約2000時間。5年間でプロフェッショナルになれます。

    ジャンルを決めたら、そこに時間を投下する覚悟を持ちましょう。

    反対にいうと、5年はかかるということです。すぐに成功したいと望むのは人間のサガですが、これを頭に入れておくと、忍耐を忍耐と思わずに済みます。自然なことだと捉えられるようになるのです。

    ただし、プロフェッショナルになる前が素人で食えないかというとそんなことはありません。ある程度で十分に稼げるようになります。その中でもプロフェッショナルを目指すならという話です。

    最悪なのが、、、

    途中で諦めて次の分野に移ることを繰り返すことです。別の分野に移ると楽しいし、楽ですが、すぐに時間が経過してしまいます。いつのまにか5年経っていたということになりかねません。

    もちろん、最初の1時間がなければ、残りの9999時間はありません。しかし、自分のキャリアは慎重に選ぶ必要があります。

    エンジニアリング・マーケティング・マネジメントが今後10年では重要知識になると僕は思っています。いずれかを選択されることをオススメします。マネジメントはなかなか勉強が難しいですし、実践しにくいですから、エンジニアリングかマーケティングでしょう。

    現実的にプロフェッショナルを目指す

    これがプロフェッショナルになるための現実的な方法論です。

    宝くじを当てるよりも、片手間にFXに手を出してみるよりも、不動産投資をやるよりも確実にあなたに金銭的利益ももたらしてくれます。

    世の中誘惑がいっぱいですが、それらに振り回されないようにしましょう。

    あなたはどの分野に時間を投下しますか?

    松田

    PS

    僕は「教育事業」というまた別の視点に1万時間を投下しています。このような投資の仕方も、(オススメはしませんが)ありです。特化して、そこに集中することです。

    PPS

    一方で全体像を理解していることは大事なので、その話はまた時間があるときに。。

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

    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がシェアを広げています。

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

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

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

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

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

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

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

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

    PS
    gitflow画像は下記からの引用です
    http://artandlogic.com/2013/02/confessions-of-a-git-skeptic/

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

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

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

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

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

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

    「クラスタリング」

    についてお話しします。

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

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

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

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

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

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

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

    「クラスタリング」

    という技術です。

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

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

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

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

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

    ・HAクラスタ(High Availability)

    と…

    ・HPCクラスタ(High Performance Computing)

    …の2種類があります。

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

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

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

    「可用性」

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

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

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

    ha

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

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

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

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

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

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

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

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

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

    ■2:負荷分散型

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

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

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

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

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

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

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

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

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

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

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

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

    hpc

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    PS

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

    マルウェアとは、どんなプログラム?

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

    この社会では
    コンピューターを触らない日はない!

    ...と言っても過言ではありません。

    そのコンピューターを
    危険な状態にしてしまうプログラムに

    「マルウェア」

    ...があります。

    今回はマルウェアについて
    お話ししましょう。

    マルウェアって何?

    マルウェア(malware)

    とは

    英語で「悪いこと」を意味する

    「mal-」

    という接頭語にソフトウェアの

    「ware」

    を付けた言葉です。

    マルウェアと言うと
    わかりにくいかも知れませんが

    「コンピューターウィルス」

    と言えば皆さんご存知でしょう。

    とはいえ、
    コンピューターウィルスは
    あくまでマルウェアのうちの1種類で、

    他にもコンピューターに
    さまざまな障害をひきおこす
    マルウェアが存在します。

    ひと昔前までは
    せいぜいコンピューターを
    実行できなくする程度のものでしたが、

    今では
    ネットワーク環境の発展にあわせて
    さまざまな障害を引き起こしています。

    マルウェアは
    現代のネットワーク社会において
    非常に大きな問題となっているのです。

    代表的なマルウェアの種類

    それでは、
    マルウェアの種類を見てみましょう。

    とても多くの種類がありますが、
    ここでは代表的なものをご紹介します。

    ■1:ウィルス

    ユーザーが
    気づかないうちに増殖して
    ファイルに感染していくマルウェアです。

    メディアやネットワークを通じて
    他のコンピューターに感染します。

    感染して
    すぐに発症するものもありますが、

    潜伏期間を過ぎて
    発症するものもあります。

    ■2:ワーム

    ウィルスのように
    ファイルに感染することなく
    自己増殖してゆくマルウェアです。

    ネットワークを通じて
    自分のコピーを別のコンピューターに作るため、

    コンピューターの
    ネットワークリソースを消費します。

    ■3:トロイの木馬

    一見すると
    何もないプログラムですが、

    実際には
    ウィルスやワームなど

    害を与えるプログラムを
    運ぶためのマルウェアです。

    プログラムを
    知らずに実行すると、

    トロイの木馬が
    運んできたマルウェアが動作します。

    ■4:スパイウェア

    ユーザーが知らないうちに
    クレジットカードやパスワードなど、
    個人情報を盗み出しマルウェアです。

    盗み出された情報は
    スパイウェアの製作者に送信されます。

    ■5:ボット

    コンピューターを
    外部からコントロールするためのマルウェアです。

    ボットに感染したコンピューターは

    「ゾンビPC」

    と呼ばれ、
    他のコンピューターに操られてしまいます。

    ■6:ボットネットワーク

    ボットに感染した
    複数のゾンビPCで構成されたネットワークで、

    悪意あるユーザーが
    ゾンビPC指令用サーバーを経由して
    ゾンビPCに一斉に命令を指示します。

    マルウェアに感染するとどうなる?

    感染するマルウェアによって
    引き起こされる症状はさまざまですが、

    大きく分けると
    次のような影響があります。

    ■1:ウィルスの拡散

    ネットワーク内にある
    他のコンピューターにウィルスを拡散します。

    遠隔操作系のマルウェアなら
    新しいマルウェアを
    次々と送り込まれる可能性もあります。

    ■2:情報の漏えい

    システム情報や
    ルートパスワードなど

    コンピューターにとって
    非常に大切な情報を盗まれることもあります。

    管理者権限を持つ
    ユーザー情報を盗まれた場合は

    コンピューターが
    乗っ取られる可能性もあります。

    ■3:他のコンピューターへの攻撃

    マルウェアの1種である
    ボットに感染したコンピューターの場合、

    ボットネットワークを通じて
    ゾンビPCに一斉に命令を置くることで、

    迷惑メールの送信や
    ネットワーク障害を起こすことがあります。

    マルウェア対策の重要性

    「Linuxはマルウェアに強い」

    と言われています。

    しかし、
    Linuxユーザーが増えるにつれ、

    Linuxを狙ったマルウェアが
    増えているのも残念ながら事実です。

    基本的なマルウェア対策としては...

    ・ファイアウォールを利用する
    ・セキュリティソフトを利用する
    ・不要なサービスを起動しない
    ・知らないファイルを実行しない
    ・パスワードを定期的に変更する

    ...などが挙げられます。

    Linuxは
    サーバーやクライアントだけでなく、
    家電製品などに組み込まれるケースが増えています。

    そして
    ライフラインを管理するような
    重要なシステムにも使われているため、

    これまで以上に
    セキュリティ対策が必要です。

    万が一、
    マルウェアの標的にされたとしても

    問題を起こさないような
    セキュリティ対策を心がけるようにしましょう。

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

    PS

    Linuxの構築から運用
    そしてセキュリティまで学びたいならこちら

    VirtualBox使ってみよう! 副題:1台で複数のOSを動かす仮想化とは?

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

    Linuxを使いたい時などに、
    パソコンそのまま使うのは大変ですよね?

    今回は
    1台のパソコンを
    2台にも3台にもすることができる

    「仮想化」+「VirtualBox」

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

    仮想化って何ですか?

    一般的には
    パソコン1台につき
    1つのOSがインストールされています。

    ですが、
    新しい環境が必要になった時、

    毎回新しいパソコンを
    購入するのは費用がかかってしまいます。

    この問題を解消するのが...

    「仮想化」

    ...という技術で、
    1台のパソコンの中に、

    複数のOSを同居させることを
    可能とする技術です。

    仮想化で作られた環境を...

    「仮想マシン」

    と呼び、仮想マシンで動作するOSを...

    「ゲストOS」

    と呼んでいます。

    つまり、
    仮想化されたパソコンには
    複数の仮想マシン・仮想OSが同居しています。

    仮想化を理解するには、
    賃貸マンションをイメージしてください

    マンションの空き部屋を
    別のOSに貸し出すようなイメージです。

    この例だと
    空き部屋が仮想マシンですね。

    内装やインテリアは
    住む人によって違うのでさまざまです。

    内装が仮想OSにあたります。

    同じ物件を使っているので、
    物理的な資源は共有しています。

    つまり、
    CPUやメモリーなど、

    パソコンが持つ資源をシェアして
    複数のOSを動作させることができるのです。

    仮想化するには仮想化ソフトが必要

    仮想化するには
    専用のソフトをインストールして、
    仮想環境を作ります。

    代表的な仮想化ソフトを
    いくつか見てみましょう。

    ■1:VMWare

    アメリカのVMWare社が開発した
    仮想化ソフトウェア。

    サーバーの仮想化など
    多くの企業で採用されています。

    個人用途には
    VMWare Playerがあり、

    業務用のVMWareと
    同じ仮想化技術が使われています。

    ■2:VirtualBox

    DBやJavaで有名な
    アメリカのOracle社の仮想化ソフトです。

    商用利用すると
    ライセンスが必要となるVMWareと異なり、

    オープンソースなので
    無料で使用することができます。

    ■3:KVM

    Linux標準の仮想化技術で
    イスラエルのQumranet社が開発した仮想化ソフトです。

    正式名称は

    「Kernel-based Virtual Machine」

    と言い、
    Linuxカーネルの機能を
    最大限に利用することができるソフトです。

    ■4:Xen

    イギリスのケンブリッジ大学で
    研究されたソフトがベースの仮想化ソフトです。

    こちらもオープンソースなので
    無料で仮想化環境を作ることができます。

    VirtualBoxで仮想マシンを作ろう!

    仮想化するには
    どのようにすればいいのでしょうか。

    実は意外と簡単に
    仮想環境を作ることができるのです。

    VirtualBoxを使った
    仮想マシンの構築法をご紹介しましょう。

    まずは、
    VirtualBoxをダウンロードします。

    VirtualBoxダウンロードページ
    [URL] https://www.VirtualBox.org/wiki/Downloads

    vbdownload

    「VirtualBox platform packages」

    にあるリストから、
    仮想環境を作りたいパソコンの
    OSに合うソフトウェアをダウンロードします。

    ダウンロードしたら、
    インストールしましょう。

    インストール時に
    いろいろ設定画面が出ますが

    特に変更する必要はありませんので、
    そのままインストールしてください。

    step1

    インストールが終わったら
    VirtualBoxを起動して仮想マシンを作りましょう。

    「新規」ボタンをクリックします。

    step2

    ゲストOSはCentOSにします。

    CentOSのDVDイメージファイルが必要ですが、
    あらかじめ以下のサイトから入手してください。

    CentOS
    [URL]https://www.centos.org/download/

    詳しい入手方法については、
    こちらのブログを参考にしてくださいね。

    step3

    ゲストOS(今インストールしているこれのこと)に
    割り当てるメモリーの量を指定します。

    上限はパソコンで使える
    メモリーの最大量ですので、

    あまり負担をかけ過ぎないように
    設定しましょう。

    step4

    仮想マシン用の
    ハードディスクを作成します。

    step5

    ハードドライブのファイルタイプは
    「VDI(VirtualBox Disk Image)」

    step6

    物理ハードドライブにあるストレージは
    「固定サイズ」

    step7

    ファイルの場所とサイズでは
    「16.00GB」

    ...に設定して
    「作成」ボタンをクリックします。

    サイズはパソコンの
    空き容量にあわせて設定してください。

    step8

    これで仮想マシンができました。

    CentOSを選択して
    画面上の「起動」ボタンをクリックします。

    step9

    最初の起動ですので…

    「起動ハードディスクを選択」

    という画面が表示されますが、
    右のフォルダアイコンをクリックして…

    あらかじめダウンロードしておいた
    CentOSのDVDイメージファイルを選択します。

    これで
    CentOSのインストールが開始されます。

    こちらのブログを参考にして
    インストールをしてくださいね。

    仮想環境に接する機会はますます増える

    仮想化技術は
    多くの企業が採用している技術です。

    レンタルサーバーなどでは
    1台のサーバーに複数の仮想マシンを構築し、

    仮想マシンを
    レンタルするサービスが多いです。

    また、
    実際にサーバーを購入すると

    コストや維持費がかかるため、
    自社サーバーを仮想化する企業も増えています。

    インフラエンジニアだけでなく
    アプリケーションエンジニアでも

    仮想環境に接する機会は
    これからますます増えて行くことでしょう。

    仮想化技術についての
    基本的なノウハウを持つようにしてください。

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

    PS
    仮想化の講座ならこちらから

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

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

    IT講師に応募する