派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

【イベントレポート】エンジニアが生き残るためのテクノロジーの授業[第5回]「データベースの設計とデータ分析」

株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するイベントを、定期的に開催しています。

2018年8月29日のイベントでは「エンジニアが生き残るためのテクノロジーの授業」の第5回として「データベースの設計とデータ分析」を開催。

データベースは、ソフトウェア開発エンジニアも、インフラエンジニアも知っておきたいテーマ。その仕組みや利用時のポイントを、増井さんならではの、分かりやすい語り口で解説してもらいました。

f:id:itstaffing:20181010103223j:plain

■今回のイベントのポイント

・データベースを使うメリット
・データベースならではの機能
・テーブルの正規化
・分析に必須の統計学
・データの匿名化と価値


【講 師】増井 敏克さん
▲【講 師】増井 敏克さん
増井技術士事務所代表。技術士(情報工学部門)。情報処理技術者試験にも多数合格。ビジネス数学検定1級。「ビジネス」×「数学」×「IT」を組み合わせ、コンピュータを「正しく」「効率よく」使うためのスキルアップ支援や、各種ソフトウェアの開発、データ分析などを行う。著書に『おうちで学べるセキュリティのきほん』『プログラマ脳を鍛える数学パズル』『エンジニアが生き残るためのテクノロジーの授業』『もっとプログラマ脳を鍛える数学パズル』(以上、翔泳社)、『シゴトに役立つデータ分析・統計のトリセツ』『プログラミング言語図鑑』(以上、ソシム)がある。

データベースを使うメリット

データをまとめて管理したいシーンは、身の回りにいくらでもあります。しかし、これをファイルで管理しようとすると、やがて限界に突き当たります。

f:id:itstaffing:20181010103232j:plain
▲ファイルで管理するとさまざまな問題が生じてしまう。これらを解決するのがデータベース

データベースは、データをまとめて管理し、大量のデータから必要なものを素早く取り出したり、大勢で使用する際にデータの整合性を確保したりしてくれるソフトウェアです。

データベースには、階層型データベース、オブジェクト指向データベース、関係データベース、NoSQLなど、さまざまなタイプがありますが、現在の主流は、関係データベースです。近年、データ分析の世界ではNoSQLが使われ始めていますが、それ以外の分野への普及は、まだまだこれから。そこで今回のイベントでは、主流である関係データベースについて学んでいきます。

関係データベースが管理するデータはExcelと同様の表形式(テーブル)で表せます。ただし、Excelとの違いも数多くあります。

f:id:itstaffing:20181010103140j:plain
▲関係データベースのデータはテーブルで表すことができる

一番の特徴は、SQLという言語を使って操作することができるという点。SQLは標準化されていますが、データベース製品ごとに拡張された方言もあるそうです。このSQLを使うことで、複数のテーブルを結合して必要なデータを取り出します。

SQLについて、増井さんは「この8つの文は、最低限覚えておきたいもの」と紹介してくださいました。

f:id:itstaffing:20181010103144j:plain
▲最低限覚えておきたいSQL文

ここまで単に「データベース」と呼んできましたが、正しくは中身のデータの集まりが「データベース」であり、データベースを管理するシステムソフトウェア(DBMS:DataBase Management System)です。ただし、ここでは以降もDBMSをデータベースと呼びます。

f:id:itstaffing:20181010103147j:plain
▲データベースを管理するのがDBMS。でも、DBMSがデータベースと呼ばれていることが多い

データベースはとても便利なので、あらゆるデータを保管したくなりますが、データベースが得意とするのは構造化データ。画像や音声、ブログのデータなどの非構造化データ管理は不得意なので注意が必要です。

データベースならではの機能

データベースならではの機能として、重複の防止と検索性の向上という2つの要素があります。

重複の防止では、同時実行制御やトランザクション管理が挙げられます。トランザクションと呼ばれる一連の処理をまとめて処理することで、データの整合性を担保します。

f:id:itstaffing:20181010103151j:plain
▲「+1万円」の更新に失敗すると、「-1万円」の処理も取り消す。これで整合性が保たれる

システム障害発生時のデータ回復もデータベースの重要な役割です。運用中にシステムに障害が発生した場合も、ロールバックとロールフォワードを組み合わせてデータを回復します。

f:id:itstaffing:20181010103153j:plain
▲定期的にチェックポイントを設け、障害発生時には直前のチェックポイントまで戻り、障害発生時までに確定していた処理はロールフォワードし、確定していなかったものはロールバックして元に戻す

検索性についても、二分探索のように、二分木による索引を使った検索など高速な検索アルゴリズムが実装されているそうです。

f:id:itstaffing:20181010103155j:plain
▲データ件数が膨大になってもパフォーマンスが低下せず高速な検索が行える

テーブルの正規化

データベースを設計するときには、テーブルの正規化という点も考える必要があります。

f:id:itstaffing:20181010103158j:plain
▲テーブルの正規化では増井さんから演習課題も出された

たとえば取引先データのそれぞれに、送金先として銀行名を直接入力していたとします。ある時、その銀行が行名変更したとしたら、どうでしょう。すべての取引先のデータについて、銀行名を一つひとつ修正していかなければなりません。そこで銀行名は別テーブルにして管理しておきます。これがテーブルの正規化です。

f:id:itstaffing:20181010103202j:plain
▲銀行名が変わった場合も銀行名のテーブルの1か所を書き換えるだけで済む

これを踏まえて、会場では増井さんからテーブルの正規化の演習課題が出され、参加者は熱心に取り組みました。

このように、テーブルを分けても、必要なデータは外部結合を使えば取り出すことができます。

f:id:itstaffing:20181010103205j:plain
▲テーブルを分けても、SQL文を使って結合すれば必要なデータを取り出せる

分析に必須の統計学

次に入力したデータを基に分析するときの知識についてです。

増井さんは3つのグラフを示してくれました。一見するとA社、B社、C社ともに同じ様に売上を伸ばしているように見えますが、縦軸と横軸に注目すると、そうではないことがわかります。

f:id:itstaffing:20181010103209j:plain
▲B社は縦軸の刻みが細かく、C社は横軸が2年で1目盛りなので、いずれも成長率はA社より劣ることがわかる

このように、データを分析するには、データをどのように捉え、比較していくのかを知る必要があることがわかります。増井さんによれば、分析に必要な統計知識とは、合計や平均、最大値や中央値、標準偏差などの基礎的なもので十分なのだそうです。

高度な分析が必要なときはツールを使います。実はExcelでも、アドインの「分析ツール」を使うと、けっこうなところまではできるとのこと。プログラムを組むなら、関連ライブラリが充実しているR言語やPythonがお勧めとのことでした。

一方で、上記のグラフのトリックでもわかるように、分析結果を正しく表現することも大切です。ここで増井さんから出された課題が、データに対してどのような種類のグラフを使うかというもの。

f:id:itstaffing:20181010103214j:plain
▲どんな種類のグラフを使うと効果的か?正解は一つではないとのこと。

解答として、例1は棒グラフで「量をわかりやすく伝える」、例2は折れ線グラフで「変化をわかりやすく伝える」、例3は円グラフで「割合をわかりやすく伝える」という例が示されましたが、例1を円グラフ、例3を棒グラフでもかまわないそうです。

データの匿名化と価値

データ分析を行う場合に、最近、特に注意が必要なのが「データってそのまま使っていいのか?」ということ。特に、改正された個人情報保護法や、EUが推進するGDPRには注意を払い、それらに抵触しないようにデータを取り扱う必要があります。

f:id:itstaffing:20181010103218j:plain
▲データの活用には、法律に抵触しないように活用するための知識も求められる

そこで登場するのが「k-匿名化」という手法です。最近よく使われていますが個人情報を「文京区、男性、30代」というように、同じような属性を持つ人がk人いる状態まで匿名化することで、個人を特定できないようにするのだそうです。

f:id:itstaffing:20181010103220j:plain
▲文京区在住の30代の男性は大勢いるので誰のことか特定できない

今回のイベントは、特定の製品に依存しない、データベースの全体像を把握するのにとても役立ちました。印象的だったのはテーブルの正規化。関係データベースのテーブル設計について、大切なものを学べました。本シリーズのイベントも、次回で最終回。お楽しみに。

【イベントレポート】フロントエンドエンジニアに転身したい人のための HTML&CSSの基礎知識とつまずかずに学ぶ方法とは

株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するイベントを、定期的に開催しています。

2018年8月24日のイベントでは「これから需要の高まる職種『フロントエンドエンジニア』に転身したい人のための HTML&CSSの基礎知識&つまずかずに学び通すための学習方法」と題して、オンラインプログラミングスクール「CodeCamp」で講師として活躍する山崎響さんに、フロントエンドエンジニアについて教えていただきました。

f:id:itstaffing:20180925143726j:plain

■今回のイベントのポイント

・食いっぱぐれたくなければフロントエンドエンジニアを目指そう
・Webデザイナーやバックエンドエンジニアが目指すからこそ価値がある理由
・フロントエンドエンジニアに必要なスキル
・こんなに簡単に!HTML&CSSの基礎知識をデモンストレーション形式で解説
・使える力を身につけて、つまずかずに学び通すための学習方法

【講 師】山崎 響さん
▲【講 師】山崎 響さん
株式会社エルビーエム代表取締役・株式会社フェローライン執行役員CBO。オンラインプログラミングスクール「CodeCamp」で講師として、受講生がつまずきやすいポイントをフォローしながら『学ぶ楽しさ』を共にする授業を行う。HTML・CSSを16歳の時に独学で習得し、実務経験を積んだのち独立。デザイナー兼エンジニアとして制作業務に携わる。担当教科はHTML5、CSS3、JavaScript、PHPなど。著書に『HTML5&CSS3しっかり入門教室』(翔泳社)がある。

食いっぱぐれたくなければフロントエンドエンジニアを目指そう

今回、山崎さんが語ったのは「バックエンドのエンジニアやデザイナーが、フロントエンドエンジニアになると、こんないいことがあるよ」というお話です。では、いったい、フロントエンドエンジニアってどんなことができる人の事を指すのでしょうか?

一般には次のような素養を備える人だと言われています。


イメージ
▲HTMLやCSSのコーディングのみならず、システムやサービスの一歩踏み込んだ領域にまで知識やスキルが及ぶ人のこと

なぜ、フロントエンドエンジニアは「食いっぱぐれない」のでしょうか。山崎さんは次の3つを挙げ、今後の需要の高まりを説明しました。

f:id:itstaffing:20180925143734j:plain
▲クリエイティブワークはAIの苦手領域。将来も無くならないというのは大きな安心材料

Webデザイナーやバックエンドエンジニアが目指すからこそ価値がある理由

山崎さんによれば「デザイナーやバックエンドエンジニアこそが、フロントエンドエンジニアを目指すべきだそうです。

f:id:itstaffing:20180925143736j:plain
▲デザイナーもバックエンドエンジニアも、フロントエンドエンジニアの知識やスキルを備えることで自身の仕事の幅が広がり質も高まる

特にフロントエンドエンジニアのスキルも併せ持ったバックエンドエンジニアは、話の理解が早く、現場で重宝されるそうです。

フロントエンドエンジニアに必要なスキル

では、フロントエンドエンジニアに必要なスキルには、どのようなものがあるのでしょうか。山崎さんは次のような技術を示してくれました。

f:id:itstaffing:20180925143739j:plain
▲たくさんあり、「そんなに覚えないとダメなの?」と思うかもしれないが、上の段ほど優先順位が高く、下の段は必要に応じて身につければよいとのこと

いずれの技術も進歩のスピードが速いため、常に情報収集と勉強が必要です。とはいえ、HTML、CSS、JS等の基礎的な技術は、時間を経ても、それほど大きく変わっているわけではありません。そこで、スキルを効率よく身につけるためのポイントとして山崎さんが推奨するのが、

・基礎技術を、時間をかけずに押さえる
・我流ではなく正しい基礎を学ぶ
・学習内容の濃淡を明確にする

という3点です。

「初心者がそこまで知らなくてもいいよね」ということもたくさんあるため、取捨選択が大切。そして一番大切なのは“できる楽しさ”を感じることだそうです。

「テキストエディタとWebブラウザがあれば、手軽に始めることができますから、すぐに楽しさを感じていただけるはずです」(山崎さん)

こんなに簡単に!HTML&CSSの基礎知識をデモンストレーション形式で解説

ここからは、山崎さんによるデモンストレーションが始まりました。

実際の仕事をイメージして作業を進めます。まずフロントエンドエンジニアのもとに、デザイナーから、完成イメージが届きます。

このとき、画像の素材が、デザインとは別に渡されればよいのですが、無い場合はデザイン画面から切り出す作業も発生します。

f:id:itstaffing:20180925143741j:plain
▲コーディングに入る前に、画面に読み込む画像などを整理しておく

そして、テキストエディタを起動して新規ファイルとしてindex.htmlを作成します。続いて、デザインの構成を確認します。

・ヘッダ
・ナビゲーションバー
・見出し
・コンテンツ
・トピック
・ニュース
・ギャラリー(JS)
・アクセスマップ(Google マップの埋め込み)
・フッター

確認した構成に従って、HTMLの基礎構文を入力します。

f:id:itstaffing:20180925143744j:plain
▲index.htmlを作成し、基礎構文を入力する

続いて、文書タイプの宣言文(HTML5)を入力し、言語設定、ヘッダ情報、キャラクターセット(UTF-8)などを指定します。bodyタグで囲まれた範囲に原稿をテキスト入力し、マークアップしていきます。「ここは見出し」「ここは本文」などの構造化タグを付けていきます。

検索エンジンのクローラーが参照するメタタグや、検索エンジンでサイト概要として表示されるdescriptionなども入力します。

さらに、画像の読み込みや、ページ内ジャンプなどもタグで指定していきます。

f:id:itstaffing:20180925143746j:plain
▲実際に目の前でサイトがつくられるので、わからない部分が細かく確認できます

そして、今回の見どころでもあるGoogle マップの読み込みを指定します。

Google マップは、従来は無料で1日2万5千マップロードまで利用でき、それを超える場合は利用料を前払いという仕組みでしたが、2018年7月16日からは、1ヶ月2万8千マップロードまでが無料で、それを超えると従量課金となりました。そのため、事前にAPIにアクセスするためのキーの取得が必要になったそうです。今回はキーの取得から、マップの表示を実装するところまで実演してくださいました。

本文の構造化が終わったら、次にCSSを適用し、デザインを整えていきます。

CSSには「ノーマライズCSS」と「自分で設定するCSS」というものがありますが、ノーマライズCSSという存在を初めて聞いたという人もいるかもしれません。

実はWebブラウザにはそれぞれ固有の表示ルールがあります。たとえばFirefoxは、特に指定がなければページを表示する際に、ページの端に自動的にマージンが挿入されることが知られています。小さなことですが、それでページの見え方が変わってしまうこともあります。そこで、ブラウザ固有の部分を吸収するために、ノーマライズCSSであらかじめ各ブラウザの差異を吸収しておき、その上で「自分で設定する」CSSを適用して、目的のデザインに仕上げていきます。

このノーマライズCSSは、Web上を探すといくつか見つかるそうなので、いろいろと試してみるのがよいそうです。

f:id:itstaffing:20180925143748j:plain
▲ノーマライズCSSの存在はコーダーの人以外には耳慣れない存在

CSSファイルが完成したら、HTMLファイル内にCSSの読み込みを指示します。

このとき、初期化、ノーマライズCSS読み込み、自分で設定するCSS読み込みの順に指定します。こうして、イベントの短い時間内に、ページが完成するところまで実演してくださいました。

使える力を身につけて、つまずかずに学び通すための学習方法

最後に、山崎さんが、フロントエンドエンジニアになるためのスキルを身につけるためのコツを教えてくださいました。

・手を動かして何度も書き、手で覚える
・疲れたと思ったら休憩する、寝る
・最初から完璧に覚えようとしない

とにかく、「プログラムがうまくできた事を楽しむ」のが大切だそうです。

f:id:itstaffing:20180925143751j:plain
▲短時間でデザイン通りのレイアウトや機能を実装してしまうことにビックリ

今回のイベントで、フロントエンドエンジニアという仕事の面白さがとてもよくわかりました。特に、自分の書いたコードの結果がすぐにその場で確認できるというのは魅力的です。ノーマライズCSSなど、聞きなれないものもあったかもしれません。これを機に正しい基礎を身に付けていきましょう。

【イベントレポート】プログラミング未経験でもOK!Pythonで体験するAI(ディープラーニング)と独学でプログラミングをマスターする方法

株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するイベントを、定期的に開催しています。

2018年7月27日のイベントでは「プログラミング未経験でもOK!Pythonで体験するAI(ディープラーニング)と独学でプログラミングをマスターする方法」と題して、書籍『わかるPython[決定版]』や『100問でわかるPython』などの著者、松浦健一郎さんをお迎えして、AIプログラミングとPythonの独学方法について教えていただきました。

f:id:itstaffing:20180920101939j:plain

■今回のイベントのポイント

・今、どのプログラミング言語を学ぶべきか?
・ディープラーニングを体験しよう
・Pythonはここがキモ~この機能を使え!
・独学でプログラミングスキルを身に付けるには


【講 師】松浦 健一郎さん
▲【講 師】松浦 健一郎さん
東京大学工学系研究科電子工学専攻修士課程修了。大学では並列コンパイラを学ぶ。学生時代からプログラミング記事の執筆やソフトウェア開発に携わる。NEC中央研究所において並列コンピューティングの研究に従事した後、フリーランスに。研究所や大学や企業からの依頼で、ソフトウェア開発や研究支援の業務を行い、書籍を執筆する傍ら、企業や学校でプログラミングを教える。司 ゆき氏と共著で、28冊の書籍を執筆。ハンドパペットを使ったプログラミング教育動画の配信なども行っている。近著に『わかるPython[決定版]』(ソフトバンククリエイティブ)、『おもしろまじめなAIスピーカーアプリをつくろう』(秀和システム)などがある。

今、どのプログラミング言語を学ぶべきか?

これまでに多数のプログラミング言語を学び、使いこなしてきた松浦さんは、言語の学び方にもいくつかオススメの方法があるそうです。それは次のようなもの。

・いくつでも学ぶ
・そのとき必要な言語を学ぶ
・目的のものが作れる言語を学ぶ
・短期間で学ぶ

そして、仕事をしながら学ぶ(仕事に育ててもらう)というのがポイント。Pythonを学ぶなら、Pythonの仕事をするのがベストということになります。

いくつもの言語を学ぶのは大変と思うかもしれませんが、共通の概念を学んでおけば、大丈夫。各言語で共通の概念とは次のような項目です。

・データ構造
・アルゴリズム
・計算機アーキテクチャ

松浦さんがPythonをオススメする理由の一つとして紹介してくれたのが、「活きのいい言語を選ぶ」というものでした。

たとえば、大ヒットした映画の続編となるパート2が面白くないという評価を受けることが多いのは、オリジナルの作者が制作から離れていることがあるから。プログラミング言語も同様で、その言語の作者が今でもバージョンアップに関わっているものが、オリジナルの設計思想が失われていない「活きのいい」言語だそうです。Python開発者のグイド・ヴァンロッサムは62歳とメジャーな言語の開発者としては若いので、今後もPythonに関わり続けてくれることを期待したいです。

※本イベントが開催された2018年7月、グイド・ヴァンロッサム氏はPythonの機能拡張に関する議論の調停役からの引退を発表したが、当面の間はPythonの開発に携わるとのこと。

一方で、コンピュータアーキテクチャを理解するのに役立つ機械語も、オススメの言語とのこと。

ディープラーニングを体験しよう

Pythonといえば機械学習。そこで実際にディープラーニング(深層学習)を体験してみることに。

f:id:itstaffing:20180920101943j:plain
▲実際にノード間をつないだり、自分で計算したりしてディープラーニングの中身を体験

ディープラーニングを知るために、まずはニューラルネットワークの基礎を学びます。

f:id:itstaffing:20180920101946j:plain
▲基本的なニューラルネットワークのモデル

結合されたノードとノードの間を、信号が伝わっていきます。結合には「重い結合」と「軽い結合」があり、重い結合は次のノードに信号を強く伝え、軽い結合は弱く伝えます。入力層に入力された信号は、中間層に伝わり、続いて出力層に伝わります。出力層に伝わった信号が、ニューラルネットワークが出した「答え」に相当するのだそうです。

ある層のノードと次の層のノードをすべて結合させたものを「全結合のニューラルネットワーク」と呼び、中間層が2層以上のものを「ディープニューラルネットワーク」と呼びます。

f:id:itstaffing:20180920101948j:plain
▲中間層が2層以上のものがディープニューラルネットワーク

ニューラルネットワークの結合の強さを調整する作業を「学習」と呼び、ディープニューラルネットワークの結合の強さを調整することを「ディープラーニング」と呼ぶそうです。最近、いろいろな場所で「ディープラーニング」という言葉は耳にしますが、その意味は今回のイベントで初めて知った、という方もいらっしゃったのではないでしょうか。

結合の強さを決めるのが「重み」と「バイアス」です。下図の例では、入力Aに重みAXをかけ、入力BにBXをかけ、バイアスXを足したものが出力Xに、同様にAにAYをかけ、BにBYをかけ、バイアスYを足したものが出力Yになります。

f:id:itstaffing:20180920101951j:plain
▲この重みとバイアスで結合の強さを調整する

Pythonのディープラーニングのサンプルとしてよく紹介されるのが手書き文字認識。MNISTと呼ばれる手書き数字のデータを使います。

f:id:itstaffing:20180920101953j:plain
▲MNISTは色々な字体で書かれた0から9までの数字画像データ

このデータはグレースケールの画像で、輝度0~255の256段階の階調で表されています。本来、MNISTのデータはピクセル数も多いのですが、松浦さんは、参加者が手計算でもできるように、4×4ピクセルのデータを例に、処理をわかりやすく紹介してくれました。

まず、入力データに重みを適用する「畳み込み」という処理を行います。これは「畳み込みニューラルネットワーク(CNN)」で行う処理の一部です。

f:id:itstaffing:20180920101956j:plain
▲畳み込みは画像処理に使われる処理で、数学の内積や積和演算に相当する

4×4の入力データに対して3×3の重みを適用するには、3×3の重みをずらしながら演算します。しかし、これでは結果が2×2のデータになってしまい、入力データの4×4に比べると情報量が減少してしまいます。

f:id:itstaffing:20180920101958j:plain
▲4×4のデータに3×3の重みを適用すると結果は2×2になってしまう

そこで、入力データの周囲を0で埋める「パディング」という処理を行います。これにより、元のサイズの出力が得られます。

f:id:itstaffing:20180920102001j:plain
▲元データの周囲を0で埋めることで、元データのサイズの出力が得られる

畳み込みの後に「プーリング」という演算を行います。典型的なプーリングの手法は、マックスプーリングといって、2×2の4つのマトリックスの中から、それぞれの最大値を取り出します。

f:id:itstaffing:20180920102003j:plain
▲左上の2×2に着目すると8、14、19、12なので最大値は19。右下では20、15、15、10なので最大値は20になる

さらに、過学習を防ぐための「ドロップアウト」という処理を経て、最終的な出力を行います。こうした処理を何段階も組み合わせて、次のようなMNISTを認識するためのCNNを構築するそうです。

f:id:itstaffing:20180920102006j:plain
▲MNISTを認識するためのCNNでは、このように何段階もの処理を行っている

Pythonはここがキモ~この機能を使え!

ここからは、松浦さんオススメのPythonのキモとなる機能について。まずはデータ型からです。Pythonでは次のようなデータ型が使えます。

・タプル:値の集まり
(値,値,……)

・リスト:値を追加・変更・削除可能
[値,値,……]

・集合:重複しない値の集まり、高速検索
{値,値,……}

・辞書:重複しないキーと値の組の集まり、高速検索
{キー:値,キー:値,……}

これらのデータ型の特性を把握し、適切に使い分けることで、プログラムを簡潔にしたり、プログラムの実行速度を高めたりといった、効果的なプログラミングができるようになるとのことです。

また、プログラムを短く書けることも、Pythonの特長だそうです。

f:id:itstaffing:20180920102008j:plain
▲C言語で書いたのと同じプログラムをPythonではここまで短く書くことができる

特に「内包表記」は、for文よりもプログラムを短く簡潔に書くのに役立つそうです。

f:id:itstaffing:20180920102011j:plain
▲Pythonのfor文でループさせる処理も、内包表記を使えばさらに短く書ける

独学でプログラミングスキルを身に付けるには

最後に、独学でプログラミングスキルを身に付けるためのアドバイスもいただきました。

開発を成功させるには、開発を小さなステップに分けるのがコツだそうです。たとえば、最終目標までの道筋を設計し、目標1→目標2→目標3……→最終目標というように、細かな目標を立て、一つ一つクリアしていく。実際にプログラミングするときも、目標ごとにプログラムの動作を確認しながら進めます。

目標1を作成→目標1の動作を確認する→修正する→完成
目標2を作成→目標2の動作を確認する→修正する→完成

最終目標までの道筋を設計した上で、この作業を繰り返していくと良いとのことでした。

f:id:itstaffing:20180920102013j:plain
▲ディープラーニングの中身や、Pythonについての新たな魅力を知る濃い内容でした

今回のイベントでは、ディープラーニングがどんなことをしているのか、その片鱗に触れられたのがとても印象的でした。AI関連のプログラムを開発する予定はなくとも、色々な処理を短く簡潔に書けるなど、Pythonの新たな魅力を知ることができました。Pythonに関しては、今注目の言語ということもあり、勉強している方も多いと思います。ぜひ、松浦さんの著書『わかるPython[決定版]』も活用してみましょう。

【イベントレポート】エンジニアが生き残るためのテクノロジーの授業[第4回]「安定したネットワークを作る技術の基礎知識」

株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するイベントを、定期的に開催しています。

2018年7月18日のイベントでは「エンジニアが生き残るためのテクノロジーの授業」の第4回として「安定したネットワークを作る技術の基礎知識」を開催。

インターネットやLANなど、私たちの身の回りのネットワークが安定して通信できるのは何故か? その仕組みを支えるさまざまな技術の基礎について、増井さんならではの、分かりやすい語り口で解説しました。

f:id:itstaffing:20180910131752j:plain

■今回のイベントのポイント

・インターネットの合言葉「プロトコル」
・パケット交換のメリット
・データを正しく届けるための工夫
・メールの仕組みと暗号化
・IPv6の登場


【講 師】増井 敏克さん
▲【講 師】増井 敏克さん
増井技術士事務所代表。技術士(情報工学部門)。情報処理技術者試験にも多数合格。ビジネス数学検定1級。「ビジネス」×「数学」×「IT」を組み合わせ、コンピュータを「正しく」「効率よく」使うためのスキルアップ支援や、各種ソフトウェアの開発、データ分析などを行う。著書に『おうちで学べるセキュリティのきほん』『プログラマ脳を鍛える数学パズル』『エンジニアが生き残るためのテクノロジーの授業』『もっとプログラマ脳を鍛える数学パズル』(以上、翔泳社)、『シゴトに役立つデータ分析・統計のトリセツ』『プログラミング言語図鑑』(以上、ソシム)がある。

インターネットの合言葉「プロトコル」

「外国人と日本人が、それぞれ英語と日本語でしゃべっても言葉が通じないし、みんながいっぺんにしゃべっても話が通じません。ネットワークもそれと同じです」(増井さん)

プロトコルがあると、いろいろなネットワークの構成に対応でき、たとえネットワークの構成や回線速度が違っても、互いに通信できます。

プロトコルを定めている主な組織に、次のようなものがあります。

f:id:itstaffing:20180910131717j:plain
▲無線LAN機器を購入するときに目にする「IEEE 802.11ac対応」などの表記は、IEEEが定めたプロトコルだったのですね

ネットワークは次のような役割別の階層構造になっています。増井さんによれば、OSI参照モデルの7階層よりも、TCP/IPの4層を押さえておいたほうが良いそうです。

f:id:itstaffing:20180910131720j:plain
▲プロトコルの階層と言われてもピンと来ませんが、私たちが手紙を出すときに、便箋に文章を書く、封筒に入れる、住所を書く、宛名を書く、郵便ポストに入れる、という手順と同様と考えると良いそうです

パケット交換のメリット

「パケット」という言葉を聞いたことがあるかもしれません。LANやインターネットでは、パケットを交換して通信を行います。このパケット交換の特徴は、従来の電話のような回線交換と比較するとわかります。

f:id:itstaffing:20180910131722j:plain
▲増井さんによれば「実は、意外といいかげん」で、パケットが相手に届かないこともあるそうです

このパケットを、どういう経路で相手に送るかを制御するのがルーティングです。

f:id:itstaffing:20180910131724j:plain
▲ルータは、受け取ったパケットを、どのネットワークに転送するかを制御している

増井さんは、よく「ルータとファイアウォールってどう違うんですか?」と聞かれるそうです。確かに、ファイアウォール付きのルータだと、その区別がつきにくいですね。

f:id:itstaffing:20180910131726j:plain
▲ルータはネットワークを分割して、ネットワーク間の通信を制御するもので、ファイアウォールはセキュリティ上の理由からアクセスの制限を行う目的のもの。それぞれ役割も動作も異なる

では、ルータとスイッチ、そしてハブはどのように違うのでしょうか。ルータはネットワーク層で働きますが、スイッチはL2(レイヤー2)スイッチならばデータリンク層で、L3スイッチならばルータと同様にネットワーク層で働きます。一方、スイッチ機能を持たないリピータハブは物理層で働きます。

ルータは、異なるネットワークやパケットの送信元、送信先を識別するためにIPアドレスを利用します。各コンピュータにどのようなIPアドレスが振られているかは、Windowsならばipconfigコマンドで、UNIX/Linux系OSならばifconfigコマンドで確認できます。

f:id:itstaffing:20180910131729j:plain
▲IPv4は8ビットの値を4つ並べたもので表されます。2進数は苦手です(涙)

ipconfigコマンドを実行すると、IPアドレスのほかに、サブネットマスクというものも表示されます。これは接続しているネットワークの範囲を示すものです。

f:id:itstaffing:20180910131732j:plain
▲でも、2進数のAND計算でネットワークアドレスがわかるんですね。苦手を克服しなきゃ!

このIPアドレスは人間にはわかりにくいので、ドメイン名という名前による管理が行われています。「〇〇.co.jp」とか「△△.com」とかいうのがドメイン名です。ドメイン名とIPアドレスの対応管理や利用時のアドレス変換には、DNS(Domain Name System)が利用されます。

f:id:itstaffing:20180910131734j:plain
▲今までバラバラに聞きかじっていたネットワーク用語がつながりました!

ところで、1台のPCがいろいろなアプリケーションで同時に通信が行えるのはなぜでしょうか。それは、アプリケーションごとに通信ポートを分けているからだそうです。

f:id:itstaffing:20180910131736j:plain
▲ウェルノウンポートの代表的なものは、最低限覚えておくと良いそうです

そのほかにも、より高度で柔軟性に富んだVLANやネットワークの仮想化についても説明してくださいました。

データを正しく届けるための工夫

ネットワークがつながった後は、データを正しく届けるための知識についてです。

TCP/IPのうち、TCPというプロトコルでは、スリーウェイハンドシェークという手続きが行われます。

f:id:itstaffing:20180910131739j:plain
▲SYN/ACKが返ってきても無視してSYNを送信し続けると、接続先のコンピュータは通信不能に陥ります。これが典型的なSYN flood攻撃の手口だとか

TCPには、パケットが届かなかったときのための再送制御や輻輳制御、フロー制御といった、通信の信頼性を高めるためのさまざまな通信規格が定められています。

一方で、信頼よりも速度を求める通信もあります。たとえば音声通話やテレビ会議、名前解決などです。こうした用途にはUDPというプロトコルが使われます。UDPもIPと組み合わせてUDP/IPとして通信に利用されています。

また、IPやEthernetなど、TCPやUDPの下位レイヤーでも、通信に関するチェックが行われています。

たとえばEthernetでは、MACアドレスを基に通信を行います。このMACアドレスを利用して、アクセスに制限をかけるMACアドレスフィルタリングという仕組みもあるそうです。

ここまでに登場した下位3レイヤーでの通信状況を確認するためのコマンドも示してくれました。

f:id:itstaffing:20180910131742j:plain
▲この4つのコマンドは覚えておいて絶対に損はないそうです!!

メールの仕組みと暗号化

アプリケーション層の例としてメールプロトコルについて紹介してくれました。

メールのプロトコルとして長らく使われてきたSMTP(Simple Mail Transfer Protocol)は、シンプルで便利な反面、セキュリティ面で不安があるそうです。たとえばSMTPのみでメールサーバを構築していると、いわゆるスパムメールが簡単に送られてしまいます。これを防止するためにOP25Bという仕組みも導入されているそうです。

f:id:itstaffing:20180910131744j:plain
▲OP25Bを設定することで、どこかのメールサーバに勝手に接続してスパムメールを送るといったことができなくなる

また、メールの送信経路上で盗聴される危険性もあります。そこで現在では、メールの通信経路そのものを暗号化するSMTP over SSLとPOP over SSLというプロトコルが普及しています。

IPv6の登場

先ほど紹介したIPアドレスはバージョン4に相当するものだそうで、IPv4と呼ばれています。しかしIPv4は古い規格で、ネットワークに接続する機器がこれほど増えることを想定していませんでした。IPv4で記述できるアドレスは43億個まで。もう何年も前から、アドレスの不足が叫ばれているのだそうです。

そこで登場したのがIPのバージョン6に相当するIPv6です。

f:id:itstaffing:20180910131747j:plain
▲IPv6は桁数も増えたので当面アドレス不足になることはないそうです

IPv6が登場した当初は、IPv4と互換性がなかったため、IPv6の機器をIPv4ネットワークに接続することができませんでした。しかし、現在はIPv4 over IPv6といったトンネリング技術や、1つの機器にIPv4とIPv6の両方のアドレスを割り当てるデュアルスタックなどの技術で、両者を混在して運用できるようになっているそうです。

f:id:itstaffing:20180910131750j:plain
▲あらためてインターネットやLANってよくできているな、と思いました

今回のイベントでは、ネットワークに関する知識を網羅することができ、全体像を把握することができました。普段何気なく利用しているネットワークの裏側を垣間見た思いです。基礎知識として、復習しておきましょう。

【イベントレポート】感情は抑えるのではなく、方程式で理解して「味方につける」

株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するイベントを、定期的に開催しています。

2018年7月13日のイベントでは「ストレスだらけ、モヤモヤばかりの仕事 『その感情を味方につけるコツ』伝授します!」と題して、臨床心理士の関屋裕希さんを講師にお迎えし、ストレスフルな職場環境や仕事によって生まれてくる感情について、どのようにうまく向き合っていくのかを教えていただきました。

f:id:itstaffing:20180824114949j:plain

■今回のイベントのポイント

・イライラや不安や落ち込み、ネガティブ感情は私たちの敵なのか?
・これを知るだけでも楽になる!「感情の方程式」
・実践!マインドフルネスのエクササイズ
・感情のもつ機能を、普段の行動に活かすには


【講 師】関屋 裕希さん
▲【講 師】関屋 裕希さん
臨床心理士。博士(心理学)。東京大学大学院医学系研究科精神保健学分野 客員研究員。専門は産業精神保健(職場のメンタルヘルス)であり、おもに認知行動アプローチを活用した、従業員や管理監督者向けのストレスマネジメントプログラムの開発に従事。業種や企業規模を問わず、ストレスマネジメントに関する講演、企業の組織的なストレス対策に関するコンサルティング、執筆活動を行っている。著書に『感情の問題地図』(技術評論社)など。

イライラや不安や落ち込み、ネガティブ感情は私たちの敵なのか?

感情は、どうにかしなければいけない「敵」として扱われている印象が多いもの。「なるべくなら、持たないほうがいい」とか「抑制したり、なかったことにしたい」と思うかもしれませんが、心理学では、なかったことにしたり、気にしないようにしようとすればするほど、そのことにとらわれてしまうそうです。

また、感じないように感情にフタをしてしまうと、喜びや楽しさというポジティブな感情まで感じにくくなってしまうというデメリットもあるのだとか。

それならば、感情を味方につけてしまおう、というのが関屋さんからの提案です。

f:id:itstaffing:20180824114956j:plain
▲感情とうまく付き合っていくには、感情を味方に。そのためには感情を知ることから始める

たとえば、誰かを味方につけたい場合、まず相手のことをよく知るところから始めます。同じように、感情を味方につけるには、まず「感情」というものをよく知るところから始めるのだそうです。

これを知るだけでも楽になる!「感情の方程式」

関屋さんによれば「どんなときに、どのような感情になるかは、実は方程式のように決まっている」といいます。

たとえば「怒り」は、次のような方程式で表せるのだそうです。

怒り=【大事なもの】×【傷つけられる】

大事なものを壊されたとき、大事な人が悪口を言われているときなど、大事なものが傷つけられたときに怒りの感情が湧いてくるという意味です。「大事な」という部分が重要で、大事でなければ怒りも湧きません。買い替え間近のカバンにジュースをこぼされても、「そろそろ買い替えようと思っていたし、まぁ、いいか」と、怒りもそこそこなのは、もうそれほど大事でないからです。

次に悲しみです。悲しみは次の方程式で表されます。

悲しみ=【大事なもの】×【失う】

たとえば、大事な人との別れや、成功させたいという思いで一所懸命にやってきた仕事が終わったときなどに悲しみを感じます。

落ち込みの方程式は次のようになります。

落ち込み=【過去の失敗】×【エネルギー切れ】

いつもなら友達に誘われたら乗るのに、うまくいかなかったことがあってエネルギーが切れていると、誘いにも乗りません。ああすればよかった、こうしなければよかったという思いから抜け出しにくくなってしまいます。

そして最後は、不安の方程式です。

不安=【未来のこと】×【わからない】

「来週の会議は大丈夫?」「これ本当にバグが出ない?」と、誰でも不安な気持ちになることがありますが、それは「未来のこと」と「わからない」という2つの要素が関わっているということです。

f:id:itstaffing:20180824114959j:plain
▲感情が方程式で表せるということに、参加者は一様に驚いた様子

関屋さんがカウンセリングを行う際、「すごく怒っている人が来た」というときには、まず「この人の傷つけられた大事なものは何だろう」と考え、悲しんでいる人が来たときは「この人が失った大事なものを取り戻すことはできるかな?」と考えながら話を聴くのだそうです。

このように「怒り」を分析するには、まず、「傷つけられている大事なもの」は何かを探ります。それは、夢や理想、仕事、周囲からの評価、才能、能力、時間、関係、健康、価値観、結果・成果など、ケースバイケースです。

ここで、関屋さんが具体例を紹介。

上司が「やりたいようにまとめてみろ」と自分に仕事を振っておいて、後から「なんだ、この企画書は!タイトルがダメ、コンセプトも分かりにくい」など細かいダメ出しをしてきたとき。

“職場あるある”なことですが、怒りを感じるのは「取り組んだ仕事」「かかった時間」が傷つけられたからですね。

もう一つの事例は、やはり上司が、コピー機まわりの雑用(片付け等)を、コピー機の近くに席がある自分にばかり頼んでくるというもの。これを方程式に当てはめると、

「自分のやるべき仕事にかける時間」×【傷つけられる】=怒り

と表すことができます。

f:id:itstaffing:20180824115002j:plain
▲職場での“あるある“に、自分が思い当たるケースを当てはめ、うんうんと頷く参加者たち

このように、感情の方程式を知っていると、わけも分からず腹が立つ、悲しい、つらいということが減り、「〇〇が大切だから腹が立つんだ」「△△を失くしたから悲しいんだ」と、自身の感情を俯瞰することができるようになります。

実践! マインドフルネスのエクササイズ

感情を俯瞰して見るためのトレーニング方法に、マインドフルネスがあります。マインドフルネスとは「今ここでの経験に、評価や判断を加えることなく、能動的に注意を向けること」を指します。大切なのは以下の3つだそうです。

特徴1:今ここに注意を向ける
特徴2:評価や判断を加えない
特徴3:受け身ではなく能動的に注意を向ける

マインドフルネスは、主観的に感じるストレスの解消や、うつ病の予防のほか、集中力の向上、創造力(クリエイティビティ)の発達、コミュニケーション力の向上などにも効果があると言われているそうです。そこで、会場の参加者と一緒にマインドフルネスの基礎トレーニングである集中瞑想を実践しました。

f:id:itstaffing:20180824115005j:plain
▲集中瞑想のやり方

1.背筋を伸ばし前方1.5mのあたりをぼんやりと見つめる
2.呼吸に注意を向けて、吐く息を数える
3.10まで数えたら、また1から数え始める
4.息を数え続ける
5.意識がそれたら静かに呼吸のカウントに戻る

これを5分間ほど、行いました。このトレーニングを繰り返し続けることで、自分の内側にフォーカスすることに慣れていくのだそうです。

感情のもつ機能を、普段の行動に活かすには

感情にフォーカスすることができるようになったら、今度は感情のもつ機能を普段の生活に活かすことに取り組みます。

怒りを題材に考えてみると、怒りは、「大事なものが傷つけられたとき」に出てくる感情でした。傷つけられていた大事なものが何だったかをヒントに、それを守るための行動をとります。

f:id:itstaffing:20180824115009j:plain
▲大事なものをヒントに行動する

そしてこのとき、やってはいけないことが2つあります。それは、

・爆発させる
・我慢する

ということです。

怒りを爆発させてしまうと、言い合いになり、もっと嫌な気持ちになったり、相手との関係が、より一層悪くなってしまいます。我慢をすると、今度は不満が溜まります。これは体に悪く、脳梗塞や心臓・循環器系の疾患につながることが分かっているそうです。

爆発させず我慢もせずに、大事なものを守るには、関係を「つくる」ように怒りを表現することを心がけます。具体的には「DESC法」に則って相手に伝えるのだそうです。

f:id:itstaffing:20180824115012j:plain
▲DESC法を使うと、関係を壊さず、不満もため込まずに、怒りを予防する関係を「つくる」ことができる

先ほど職場の“あるある”で登場した、コピー機まわりの雑務を頼まれてしまう場合の対応は、次のようになります。

f:id:itstaffing:20180824115015j:plain
▲Cまで伝えることは、なかなかできないので、まずはDとEまでを伝えてみるのが関屋さんのお勧め

こうして相手に怒りを伝えると、スッキリすると同時に、うまく伝えられたという達成感も感じられるという二重の効果があるといいます。そして、大事にしたかった「自分のやるべき仕事にかける時間」を守ることもできます。

今回のイベントを通じて、感情を味方につけることで、周囲はもちろんですが、自分の心身の健康とも、上手に付き合っていけるのだということが、よくわかりました。関屋さんの著書『感情の問題地図』では、不安や落ち込みといった他の感情への対策についても、具体的なTIPSを交えながら書かれていますので、一度、じっくりと読んでみてください。

【イベントレポート】VMwareのデータセンター仮想化技術 ~仮想化の「はじまり」から、仮想化最前線まで~

株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するイベントを、定期的に開催しています。

2018年6月29日のイベントでは「VMwareのデータセンター仮想化技術 ~仮想化の『はじまり』から、仮想化最前線まで~」と題して、ヴイエムウェア株式会社のエバンジェリストである中島淳之介さんを講師にお迎えし、仮想化ソフトウェアの定番であるVMwareによる、最新の仮想環境についてレクチャーしていただきました。

f:id:itstaffing:20180822122248j:plain

■今回のイベントのポイント

・サーバー仮想化とは?
・サーバー仮想化の設計・構築のポイント
・次世代仮想化基盤であるデータセンターの仮想化
・ネットワーク仮想化とは?
・ストレージ仮想化とは?
・AWSやAzure等のパブリッククラウドとの使い分け


【講 師】中島 淳之介さん
▲【講 師】中島 淳之介さん
ヴイエムウェア株式会社ゼネラルビジネスSE本部公共第二SE部部長兼フィールド・テクノロジスト。2010年にヴイエムウェア株式会社に入社。プリセールスエンジニアとして活躍する傍ら、エバンジェリストとして執筆活動やさまざまな研究会、イベントにて仮想化、クラウドの重要性と必然性を紹介し、最新のトレンドやテクノロジーを周知させる活動を行っている。著書に『改訂新版VMwareの基本』(技術評論社)がある。

サーバー仮想化とは?

イベントではVMwareの最新事情を知る前に、まず、サーバーの仮想化をおさらいするところからスタートしました。

f:id:itstaffing:20180822122255j:plain
▲まずは、おさらいの意味も含めて基本的なサーバーの仮想化から解説がスタート。

私たちが普段利用しているPCで、CPU使用率がずっと100%のままということはありません。ハイスペックなサーバーならば、なおのことです。

実際に、サーバーの平均CPU使用率は8.61%で、ピーク時でも14.2%という数字があるそうです。そこでソフトウェアでVM(仮想マシン)を作り、物理サーバーのハードウェアリソースを効率よく使おうというのが、サーバーの仮想化の考え方です。

f:id:itstaffing:20180822122258j:plain
▲物理サーバーをVMに置き換え、その上でOSやアプリケーションを稼働させるのがサーバーの仮想化。これにより1台の物理サーバー上で複数のVMを実行させることもでき、ハードウェアリソースを効率良く利用できるようになる。

たとえば、それまで100台の物理サーバーで動かしていたものを、10台の物理サーバー上で稼働する100台の仮想サーバーに置き換えることができるようになり、コスト面や運用・管理面、消費電力面でも大きなメリットが生じます。

サーバー仮想化の設計・構築のポイント

さて、1台の物理サーバー上で1つのOSといくつかのアプリケーションを動かすときと違い、複数のVMを動かすときには、いくつかのコツが必要になります。

個別物理システムは、いわば一戸建てのようなもので、1つのシステムがハードウェアを占有しても他のシステムに迷惑をかけません。しかし、仮想共通基盤は、いわばマンションのようなもので、1つのシステムがハードウェアを占有してしまうと他のシステムがハードウェアを使えなくなってしまいます。

特に、仮想環境ならではのリソース競合に注意が必要だそうです。

f:id:itstaffing:20180822122301j:plain
▲仮想環境では、割り込み処理が発生してもすぐに処理できず待ち時間が発生してしまう「CPU Ready」や、必要とするCPUリソースが使える状態になるまで待ってしまう「Co-Stop」が発生することもある。

また、5台の物理サーバーでクラスタリングする場合、4台を実稼働させ、1台を丸々スペアホストとして待機させておこうと考えがちですが、5台すべてを稼働させ、フェイルオーバー用のスペアリソースも5台分の余剰リソースを利用して分散させておくという考え方のほうが良いそうです。

負荷分散においてもVMwareのvSphere DRSを使うと、ライブマイグレーション(vMotion)で、メモリやCPUの負荷状況に応じて自動的にVMを異なる物理サーバー上に移動させて「統合率」の向上を図ってくれるほか、vSphere DPMでは、不要なサーバーの電源をオフにして、電力消費量を削減することも可能とのことでした。

VMwareならではの機能として、負荷分散でWebサーバーが同一の物理サーバー上に配置されてしまうような事態を避けるため、指定のVMは異なる物理サーバー上に配置するよう設定したり、アプリケーションサーバーとDBサーバーを必ず同じ物理サーバー上に配置して通信の負荷軽減を図ったりすることもできるそうです。

次世代仮想化基盤であるデータセンターの仮想化

サーバーの仮想化の先は、どこに向かうのでしょうか。

VMwareでは「Any Cloud」として、SDDC(Software Defined Data Center)を提案しています。SDDCはデータセンターを丸ごと仮想化してしまうというもので、具体的には、サーバーの仮想化、ネットワークの仮想化、ストレージの仮想化という3つの技術によって実現するそうです。

ネットワークの仮想化とは、ロードバランサー、VPN、ファイアウォール、ルーター、スイッチといった要素をそれぞれソフトウェアで仮想化するもので、大きく分けて「仮想アプライアンス型」と「分散型」の2種類の提供形態があります。

f:id:itstaffing:20180822122305j:plain
▲仮想アプライアンス型は、セグメントとセグメントの間に仮想ネットワーク機器を設置。分散型は設置する必要がなく、発生するトラフィックに対して都度かかるもの。

世の中のほとんどはデータセンター内の通信で、そのうちルーターを経由する通信は半分以下だとされています。ネットワークを仮想化すれば、ルーターやファイアウォール機器などの台数を削減し、ダウンサイジングネットワークを構築できます。

また、セキュリティ面でも大きな効果を発揮します。

たとえば、現状、マルウェアの感染を100%止めることは難しく、ゼロデイ攻撃を仕掛けられれば、数時間で情報漏洩してしまうこともあります。分散型では、このマルウェアの行動パターンを利用して、より細かくアクセスを制御することで、効果的なセキュリティ対策を施すことができるそうです。

f:id:itstaffing:20180822122308j:plain
▲マルウェアは感染したPCを起点にActive Directoryのようなディレクトリサービスを探したり、自身のIPの隣のIPを探ったりする。通常、PC間の通信はほとんど発生しないので、これをブロックする。WebサーバーとDBサーバーの通信は頻繁に行われるので必要なポートへのアクセスのみ許可する。

次にストレージの仮想化です。VMwareでは、一般的なx86サーバーの内蔵ディスクを使用して仮想的な共有ストレージを構築できます。これにより、専用のストレージ機器やSAN(ストレージエリアネットワーク)を用意する必要がなくなり、コスト面や管理面に優れ、かつ容量の融通なども利く、ストレージシステムが実現します。

f:id:itstaffing:20180822122311j:plain
▲内蔵ディスクを統合し、共有ストレージを構築。キャッシュは内蔵のSSDを利用し、SANは仮想化されたストレージネットワークVSANにより構成する。

従来のサーバーの仮想化から、このSDDCへは、段階的に移行していくことも可能だそうです。

f:id:itstaffing:20180822122315j:plain
▲従来のサーバー仮想化からSDDC実現へのロードマップ

AWSやAzure等のパブリッククラウドとの使い分け

では、SDDCと、AWSやAzureといったパブリッククラウドサービスとの使い分けについては、どのように考えればよいでしょうか。

f:id:itstaffing:20180822122317j:plain
▲SDDCとパブリッククラウドはどう使い分ければ良いのか?とても気になるところ。

コスト削減やオペレーションフリー、一時利用など、パブリッククラウドならではのメリットは多く、オンプレミスから移行したいと考える人も多いはずです。

しかし、オンプレミスにもメリットはあります。たとえば、ライブマイグレーションによる耐障害性やサービスレベルの担保は、パブリッククラウドでは利用できません。フェイルオーバーの仕組みも、アプリケーション側に実装する必要があるため、アプリケーションの再設計が必要になることがあります。

こうした諸課題を解決するべく、VMwareは2016年10月に、Amazonと提携しVMware Cloud on AWSの提供をスタートさせました。

f:id:itstaffing:20180822122321j:plain
▲VMware Cloud on AWSは、AWSのベアメタルにVMwareをフルスタックで実装したもので、オンプレミスのVMをAWSにライブマイグレーションさせることもできるようになる。

VMware Cloud on AWSは、2018年末に日本でも使えるようになる予定とのことなので、今から楽しみにしておきましょう。また、今後はAmazonだけでなく、他のパブリッククラウドベンダーとも提携していく予定だといいます。今後の動向もチェックしておきましょう。

【イベントレポート】エンジニアが生き残るためのテクノロジーの授業 [第3回]「セキュリティを確保する考え方」

株式会社リクルートスタッフィングが運営するITSTAFFINGでは、弊社に派遣登録いただいている皆さまのスキル向上を支援するイベントを、定期的に開催しています。

2018年6月15日のイベントでは「エンジニアが生き残るためのテクノロジーの授業」の第3回として「セキュリティを確保する考え方」を開催。

よく、「大事なのはわかっているけれど、何をすれば良いのかわからない」「やってもなかなか効果が見えない」という声が聞かれることの多いセキュリティ対策。今回のイベントでは、増井さんならではの視点から、セキュリティの確保について、どのように考えたら良いかを教えてもらいます。

f:id:itstaffing:20180809144634j:plain

■今回のイベントのポイント

・セキュリティに対する考え方
・個人情報を取り巻く環境の変化
・意図せず漏れるデータ
・情報漏えいを防ぐために
・役割別のセキュリティ対策


【講 師】増井 敏克さん
▲【講 師】増井 敏克さん
増井技術士事務所代表。技術士(情報工学部門)。情報処理技術者試験にも多数合格。ビジネス数学検定1級。「ビジネス」×「数学」×「IT」を組み合わせ、コンピュータを「正しく」「効率よく」使うためのスキルアップ支援や、各種ソフトウェアの開発、データ分析などを行う。著書に『おうちで学べるセキュリティのきほん』『プログラマ脳を鍛える数学パズル』『エンジニアが生き残るためのテクノロジーの授業』『もっとプログラマ脳を鍛える数学パズル』(以上、翔泳社)、『シゴトに役立つデータ分析・統計のトリセツ』『プログラミング言語図鑑』(以上、ソシム)がある。

セキュリティに対する考え方

セキュリティと聞くと「やることが多い」「やってもやってもきりがない」「効果が見えない」という声が聞かれます。確かに、何らかのインシデントが発生して初めてセキュリティ対策が機能しているかどうかがわかるため、普段から、その効果が見えるわけではありません。

そんな私たちに、増井さんは「セキュリティ対策についての考え方を理解する」ことが大切だと説明します。

たとえば、一般のインターネットユーザーとセキュリティのエキスパートでは、セキュリティ対策に対する考え方が違います。

f:id:itstaffing:20180809144640j:plain
▲一般ユーザーはアンチウイルスソフトを使うが一位だが、エキスパートはアップデートが一位。強固なパスワードを使うは、両者で順位が異なる。

IPAの調査によると、近年、情報セキュリティの脅威は、お金にからむものが多くなっているそうです。コンピュータを使用不能にして、直接身代金を要求するランサムウェアはもちろんですが、不正アクセスにより情報を盗み出すのも、結局はその情報を販売するという金儲けが目的です。したがって、悪意のある相手に情報を渡さないこと、コンピュータを使用不能にされた場合の対策を立てることが重要となってきます。

「最近、銀行強盗って聞いたことがありますか?近年は専門家がいろいろな対策を講じているので、銀行強盗はなかなか成功しません。そこで成功率の高い、お年寄りに対する詐欺が横行しています。それと同じようなことがネットでも起きているのです」(増井さん)

f:id:itstaffing:20180809144644j:plain
▲専門化集団を抱えている組織よりも、全然知らない素人を狙うというターゲット変更がネット上でも起きている

では専門家のいない組織、あるいは個人における対策はどうすれば良いのでしょうか?
増井さんによれば「対策自体は、これまでとそう大きくは変わりません。それより、今、どんな手口があるか知っておくことが大切」だそうです。

そして、対策という点では「みなさんの側にも問題がある」と言います。

f:id:itstaffing:20180809144647j:plain
▲いくらセキュリティソフトウェアが優れ、対策の方法が確立されていても、人の脆弱性があると効果がない。個人の意識を高めておく必要がある

個人情報を取り巻く環境の変化

個人情報保護法やサイバーセキュリティ基本法、マイナンバー法など、個人情報の取り扱いを制限しつつ、個人情報を有効に活用するための法律や制度も、時代と共に変わっています。

そのいっぽうで、情報漏えい事件も2009年以前と2010年以降では、その手口が変わってきており、2010年以降は、100万件以上の情報漏えい事件はほぼ不正アクセスによる漏えいとなっています。不正アクセスとは、インターネットやLANなどから不正にシステムを利用することを指します。

そうした不正アクセスの手口として特定の組織を狙ったメールに、ウィルス入りのファイルを添付し、開封させ感染させるという標的型攻撃があります。標的型攻撃への抜本的な対策は、ほとんどないのが実情だそうです。したがって、感染を広げない、情報を漏えいさせないといった、入口・出口対策が必要となるそうです。

f:id:itstaffing:20180809144650j:plain
▲標的型攻撃の抜本的な対策はないのが実情

意図せず漏れるデータ

ユーザーのセキュリティ意識によっては、意図せず情報漏えいになってしまうケースもあるそうです。

f:id:itstaffing:20180809144653j:plain
▲情報漏えい対策には、ユーザーの意識の持ち方も大切

たとえば、メールソフトの誤操作や、誤送信などで、自ら他人に情報を送ってしまうというケースがあります。グーグルのGmailには、送信ボタンを押してから一定時間経過後に送信する、誤送信防止機能が用意されており、このような機能を使うことも有効です。

また、SNSやブログに書き込んだ何気ない一言で会社の動きなどを読み取られてしまったり、写真をアップロードすることで、自ら位置情報を発信してしまったり、というケースもあります。

f:id:itstaffing:20180809144657j:plain
▲情報発信のつもりが情報漏えいをさせていたということもある。

情報漏えいを防ぐために

では、情報漏えいを防ぐにはどうすれば良いのでしょうか?

まず、認可と認証についての管理をしっかりと行うこと。認可はアクセス権のことで、認証はユーザーが本人であることの確認(いわゆるIDとパスワード)です。

f:id:itstaffing:20180809144700j:plain
▲共用のアカウントが存在していないか、退職した人のIDやパスワードが、そのままになっていないかなども注意

次に、ファイルと通信の暗号化です。Excelでもワークシートを暗号化してパスワードを設定できますが、ユーザーは、鍵の強度や管理を意識しておく必要があります。一方で、通信の暗号化は、ユーザーが鍵を意識する必要はありません。

f:id:itstaffing:20180809144703j:plain
▲ユーザーも暗号化が適用される範囲を意識しておく必要はある

不正な持ち出しを防ぐには、持ち出しの管理、USB接続の禁止のほか、上司の承認がないと外部接続できないような制度作りも挙げられます。

盗難・紛失を防ぐには、入退室の管理、キャビネットへの保管、IDカードの装着、監視カメラの導入、座席配置の変更などがあります。

複雑なパスワードを設定するという対策は、IDとパスワードを不正に入手されてしまった場合には意味を持ちません。むしろ、ICカードや指紋認証の導入や、IDとパスワードを入力すると携帯やスマホにキーワードを送信する二要素認証が有効だそうです。

結論として、「お金は銀行に預ける」のと同じように「データはデータセンターに預ける」という考え方で、データセンターやクラウドサービスを利用するというのが、増井さんのお勧めだそうです。

役割別のセキュリティ対策

自前でセキュリティ対策を講じる場合、どうすればよいのでしょうか。組織ならば、それぞれ役割があり、役割に応じたセキュリティ対策があります。

脆弱性への対応(ソフトウェアの更新)やバックアップは、全員がとるべき対策です。バックアップは、かつてはディスクの故障やウィルスに感染したファイルを元に戻すという目的でしたが、今では、ランサムウェアにPCを乗っ取られたときの対策という意味合いが大きいそうです。

開発者は脆弱性診断の実施とWAFの導入、管理者はIDSやIPS、ファイアウォールなどの導入・ログチェックを忘れないこと。

f:id:itstaffing:20180809144705j:plain
▲不正アクセスを見つけるには、平時からログをチェックしておくことも重要

Web管理者は、常時SSL(トップページからHTTPSを使用)を検討すべきで、セキュリティの面もさることながら、Google検索の結果ではHTTPSのサイトを上位に表示するようになっているため、SEO対策としても意味があるそうです。

メール管理者はSMTP over SSLや POP over SSLを導入するか、無理ならGmailへの移行を検討するべきだそうです。

経営者や管理者は、システム全体を俯瞰し、入口と出口で、情報漏えいを防ぐための対策を意識し、講じておく必要があります。

f:id:itstaffing:20180809144708j:plain
▲ウィルスの侵入を100%防ぐのが難しい。そのため被害を最小限にとどめる措置を講じておく

今回のイベントを通じて、普段なかなか実感のわかないセキュリティ対策について、知ることができたのではないでしょうか。特に、増井さんの「お金は銀行に、情報はデータセンターに」という言葉はとても印象的でした。セキュリティを学ぶ第一歩として、身の回りの情報の管理を見直すのもよいでしょう。