IT社員3人組によるリレーブログ

某IT企業に勤める同期3人が、日常の研鑽模様等を記録していきます

bigdata解析を支えるApache Hadoopとは?

どうも、Koheiです
3連休いかがお過ごしでしょうか 

今日はBigdata解析を支える
IT技術 Apache Hadoopについて書きます。
 
みなさんHadoopって知ってますか?
僕は、大学のころから一応データ分析関係の研究はしていたので
名前は聞いたことあるなーくらいでした。

f:id:go-mount:20180713224043p:plain

この子がhadoopイメージキャラクターです。可愛いですね。
 
さて、このhadoopというやつがBigdata技術を支える重要な技術らしいですが、
何ものなの?という話をしたいと思います。

1.Hadoopってなにをしてくれるの?

さて、Hadoopって何者なのか?いつも通り、wikipediaさんに聞いてみます。

Apache Hadoopは大規模データの分散処理を支えるオープンソースのソフトウェアフレームワークであり、Javaで書かれている。Hadoopはアプリケーションが数千ノードおよびペタバイト級のデータを処理することを可能としている。HadoopGoogleMapReduceおよびGoogle File System(GFS)論文に触発されたものである。

ふむ…。なんかすごそう。
wikiにあるとおり、Googleの技術がもとになっています。
Hadoopのコアなところは「分散処理」というキーワードにあります。

2. 分散処理??

 突然ですが、パソコンのデータってどうやって保存されているかご存知でしょうか 。

 

最近はアーキテクチャがいろいろ変わってきてますが
よくあるパソコンはハードディスクにデータを書き込んで残しています。
最近はSSDが主流で60TBとか大容量のモノもでてきてますね。 

 

そこでですが、ハードディスクに書いているデータを読み取るスピードって意識したことあるでしょうか。

最近のハードディスクは大分性能もよくなってきたとはいえ、
だいたい平均80Mbyte/secくらいと言われています。

さて
「ここでみなさんに10TBのデータを用意しました。データをパソコンに読み込んで、解析して下さい」
と言われたとき、この読み込み速度がネックとなる問題が起きます。f:id:go-mount:20180714174859p:plain

10TBのデータをディスクから読み込むだけで

(10[TB]*1024*1024)/80≒131,072[秒]≒2185[分]≒36.4[時間]

かかってしまうのです。
(実際にはキャッシュなど様々な要因が入るのでこの通りではありませんが…)

さらには、読み込んだとしてもメモリ10TBもあるわけがないので
処理も少しずつ行うしかありません。

 

これを解決するのが「分散処理」です。
1台で無理なら、1000台にデータばらけさせればいいんじゃね? 的な発想です。

例えば、1000台のパソコン(正確には1000個のハードディスク)に10TBのデータを均等に分けて処理します。

一つのディスク当たり、約10GBまで容量は減り、処理時間も(10[GB]*1024)/80=128[秒]にまで減るわけです。

Hadoopはこの「分散処理」を手伝ってくれます。

f:id:go-mount:20180714174958p:plain

いまや日本のデータ通信量は、一日10PBと言われており、このような大量のデータの解析は不可欠な技術となっています。

 ちなみに、この手の分散処理、Hadoopが最初かというとそうでもありません。


いわゆる昔からあるスーパーコンピュータと言われるものも、
その多くが分散処理の仕組みで作られています。

 

ただ、専用にカスタマイズされたコンピュータが必要でした。


Hadoopは専用のコンピュータでなくても、家のmacにだって入れることができます。

その点もよく使われる技術として広まった理由だと思います。

3. Hadoopを扱う会社

Hadoopオープンソースソフトウェアで、だれでもすぐに無償でダウンロードして使うことができますが、企業からサポート付きで買うこともできます。
というのもざっとHadoopを説明しましたが、実際使おうとするとなかなか複雑で
また日々アップデートされていっており、これらをキャッチアップするのはなかなか大変だからです。

主要Hadoopベンダーは下記の3社かと思います。

■Cloudera
Hadoopの生みの親と言われるDoug Cuttingも所属するhadoopベンダです。
#ちなみにhadoopの名前の由来は、Dougさんの娘さんが、持ってた自分のぬいぐるみをhadoopって呼び始めたのが由来らしいです。
自社で独自のオープンソースツールを開発しており、
hadoopだけでは手が届かない範囲のサポートも実施しています。

 

■ HortonWorks
Yahoo!Hadoopエンジニアが集まって作られた会社です。
感覚的には一番オープンソースを大切にしている会社で、自社独自というより、
世の中のオープンソースを集めて提供&サポートする形をとっています。

jp.hortonworks.com

 
■MapR
MapRはがりがりHadoopをカスタマイズして、使いやすくしたオリジナルHadoopを作り上げて提供しています。オープンソースを企業向けにカスタマイズして提供するのを第一としているイメージです。
 この他にもAmazonIBMなども企業向けhadoopを提供しています。

4. Hadoopのその先 

 さて、bigdata解析を支える技術としてApache hadoopを紹介してきましたが、
実はすでにhadoopは時代遅れと言われてきている部分もあります。
 
様々な課題がありますが
ざっくりいうと
Hadoopの分散処理では昨今のリアルタイムな処理に追い付かなくなってきた」
ということが言われています。

このため、後継とも言われるApache Sparkなどの技術が近年のトレンドになっています。このあたり、hadoopを取り巻く環境についてはまだ別の場で書きたいと思います。

ではでは
 
 
 
 

【Bitcoin】で使われるブロックチェーン技術とは?①

どうも、Keiです。

今回は2017年にピークが来てからなにかと話題に上がるビットコインについて取り上げていきます。

 

ãæå·é貨ãããã³ã¤ã³æå·é貨ãããã³ã¤ã³ãã®ããªã¼åçç´ æãæ¡å¤§

 

ビットコインは知っているし、所有もしているけど、実際どういう仕組みになっているかわからないという人はけっこういるのではないでしょうか?

元帳(Ledger)って?ナンス?そもそもブロックって何だ?LEGO

 

いろいろなブロックチェーンの記事はありますが、技術の部分はものすごくふわ~っとしているんですよね。

そんな人達に、わかりやすく、同時に詳細まで解説できればと思います。

 

ビットコインって?

ここは説明不要かと思いますが、ビットコインは仮想通貨と呼ばれるインターネットショッピングなどWeb決済に使用されるお金です。

円やドルなどと異なる最大の違いとして、紙幣や硬貨などの物理的な実体を持たないところが挙げられます。

 

え、どうやって管理しているの?ネット銀行みたいなのがあるの?

ここの部分にビットコインの仕組みを支えるブロックチェーン技術の新しさ、優秀さがあるのです。

 

ブロックチェーンを使ってみんなで通帳を管理

ビットコインはお金である以上、銀行と通帳があって自分のビットコインのお金の出し入れを管理しているはずですよね?

下の図のように、円やドルでは銀行に自分のお金の出し入れが記録されていて、実際のお金も預けられています。

つまり、お金の出し入れの記録は一か所で管理されています。(中央集権的に管理)

 

f:id:go-mount:20180715164417p:plain

 

一方で、ブロックチェーンはどうでしょうか?

ブロックチェーンでは、円やドルのように一か所でお金の出し入れを管理するのではなく、複数の場所(PC)で通帳のようなお金の出し入れを記録する元帳を持ちます。この、複数の場所のことをノードといいます。

 

f:id:go-mount:20180715170038p:plain

 

 ここでいう元帳とは、通帳とイコールで

 

・AさんからBさんに0.5Bitcoin送金

・CさんからAさんに1Bitcoin送金

 

など、AさんならAさんのビットコインの出し入れを記録したものです。

 ここで、通帳を持つ一人になるためのハードルは高くなく申請をすれば誰でもなれます。そのため、自分の通帳を赤の他人が持つことになるのです。(もちろん、暗号化されているので内容は見れません)

 

ブロックチェーン=元帳の書き方のフォーマット

さて、ブロックチェーン技術ではお金の記録は銀行にあるのではなく、複数のノードで管理されることがわかりました。

ここで、元帳の中身を見てみましょう。

 

f:id:go-mount:20180715172901p:plain

 

元帳の中身はお金の出し入れの記録(トランザクション)をいくつかのまとまり(ブロック)に分けて記録します。

お金の動きが増えるたびにブロックを足していき、元々あったブロックとチェーンのようにつないでいくため、ブロックチェーンと呼びます。

 

つまり、ブロックチェーンとは元帳のフォーマットのことなのです。

この元帳は、ビットコインを開始した一番初めの入出金記録からブロックとしてすべて保持します。

 

全員で同じ元帳を持つために

暗号化されているとはいえ、自分のデータを赤の他人が持つことは改ざんや過去の履歴の抹消だったりの心配が怖いですよね。

そこで、ブロックチェーン技術では、新たにお金の入出をブロックとして元帳に追加する際に、本当に追加してよいか、コンセンサス(合意という意味)と呼ばれる方法でチェックします。

このコンセンサスで使われるアルゴリズムが、ビットコインで赤の他人と元帳を共有する際の信頼性を担保するのです。

このコンセンサスには、ブロックチェーン創始者であるサトシ・ナカモトさんが開発したPoW(Proof of Work)やPoS(Proof of Stake)と呼ばれる方法があります。

 

いかがでしたでしょうか?

今回はビットコインの概要からその仕組みの全体像を説明しました。

第2回では、さらに複雑なPoWのアルゴリズムの部分についてハッシュやナンスについてわかりやすく解説をしたいと思います。

【就活生必見】「御社でクラウドやりたいです」て適当に言ってませんか?IT工程と企業へのアプローチ方法を解説。

どうも、ITコンサルタントのShoheiです。

今日は前回説明したクラウドを例に、就職活動や営業活動に寄った目線で解説していきたいと思います。

(前回記事: クラウドとは? 食べ物に例えて説明しよう。 - IT社員3人組によるリレーブログ)

 

絶対に言ってはいけないクラウドやりたいです」

早速ですが、就活生の皆さん、クラウドに力いれてそうな企業の面談で「クラウドやりたいです」って言ったりしてないですか?

入社後採用にも関わっていた経験のある僕からすると、0点です。

こいつ当時の僕と一緒だなって思っちゃいます。

なんでダメなの?

理由は二つあります。よく考えてみた上で、続きを読んでね★

続きを読む

AIの作り方~AIってなに?~

どうも、Koheiです
3連休は土曜日にジャンプが発売するので得した気分になりますね。

今回は最近流行りのAIの作り方について書きたいと思います。

AI流行ってますよね。
僕が愛用しているSONYのイヤホンにもAIノイズキャンセリング機能とか入っています。
 
僕の思うAIといえばこんなイメージです。
 
ターミネータ
ペッパー
アマゾンAcho
Siri
 
こうやって見ると人間と同じように考え行動するものがAIっぽい感じがします。
実際AIというものはいわゆるBuzzワードで、人によってとらえ方が違うものであり
その人が「これ、AIじゃね?」って思えばAIなんだと思います。
 
さて、ここではAIの定義づけはざっくりと
「人と同じように学習し、判断できる機能を持ったコンピュータ」とします。
 
ではこのAI、どうやって作ったらよいのでしょうか。
ターミネータを作るのは難しいですが

何かの機能に特化した「特化型AI」なら比較的簡単に作れてしまいます。

では、ここでなんでも画像を読み込ませるとリンゴかどうかを判断してくれる
特化型AI「リンゴなら知ってる君」を作りたいと思います。

f:id:go-mount:20180713235659p:plain

1. 学習させる

さて、「リンゴなら知ってる君」になんとかしてりんごを覚えさせたいあなた。

人間はどうしてリンゴの画像を見て、リンゴだとわかるのか?を考えてみます。
 
例えば、
目の前にリンゴがあります。
世の中の人は、それを見ればリンゴだと認識できます。
 
なぜそれがわかるのかというと、小さいころからリンゴを見て、
・丸い形をしている
・色が赤色である
という特徴から、それがリンゴだと記憶しているからです。
 
人生で一度もリンゴを見たことがなければ、
リンゴをみてもリンゴだとわからないでしょう。
 
これをコンピュータに理解させるにはどうしたらいいでしょうか
 
答えはシンプルで、人生でまだリンゴを見たことのない人と同じように
リンゴをリンゴだと覚えさせればよいのです。
 
リンゴの画像とそうでない画像をたくさん用意します。
できるだけたくさんのバリエーションを用意した方がいいでしょう
この画像はリンゴであるという特徴を作り、この画像はりんごですよ、とラベル付けをします。これがいわゆる学習データになります。
コンピュータとしてはこういう情報がインプットされます。
・丸い形をしている
 →画像ドットのうち、x行目y列目が黒色
・色が赤色である
 →x1行目からx2行目、y1列目からy2列目のRGB値が255:0:0
 

f:id:go-mount:20180713235752p:plain

2.特徴を抽出し、モデルを作成する

さあ、これでリンゴを覚えただろう!ということで
新しいりんごの画像を「りんごなら知ってる君」に与えてみます。
f:id:go-mount:20180713235821p:plain

おいぃぃぃぃ
 
そうなんです、画像が今までのパターンと1ドットでも違うと
コンピュータはNoといいます。
 
これではリンゴの画像を大量に集めても
過去と全く同じものでなければ正解しません。
融通の効かない奴め
 
さて、ここで使うのが統計です。
経験的に得られたバラツキのあるデータから、応用数学の手法を用いて数値上の性質や規則性あるいは不規則性を見いだす(wikipedia統計学」より)
 
いままでもこの値だったから、この先もこうなんじゃね?
っていうのを数学的に表現します。
数学的にというのがポイントで、つまり、コンピュータ(1/0)の世界でも表現できます。
 
有名な統計の例としては正規分布というものがあります。
 
テストの点数推移とかを表現するアレです。
10000人テスト受けて、平均点が60点、標準偏差が20点なら
今後十人がテスト受けてもだいたい60点前後の人が多くなる
ってなるよねっていうアレです。
このあたりの説明は、オソロシイ数式の乱立なので今回省略していますが、個人的にはとても面白い分野なのでぜひ調べてみてください。
 
さて、「リンゴなら知っている君」のプログラムに統計モデルを反映すると

具体的には、

・丸い形をしている

 →画像ドットのうち、黒色位置の平均値はx行目、y列目
  ばらつきは±5ドット
・色が赤色である

 →x1行目からx2行目、y1列目からy2列目のRGB平均値が200.XX。ばらつきは±20

 

といった形です。
これらの平均値、ばらつき(過去の統計情報)から、りんごの特徴量をモデル化することができます。
データ全体が正規分布と仮定すると、数式で確率も算出することもできます。

過去の統計的傾向から言うと、**%でリンゴっぽいです。という感じです。
さて、この統計モデルを「りんごなら知ってくる君」にあてはめてみます。
f:id:go-mount:20180713235904p:plain

おお、80%りんごですか。
僕からすると100%なんですが。まあ、でもいい感じです。

もっとたくさんのりんごの画像を見せて、もっとりんごの特徴として使える要素を盛り込んであげれば、もっと正確にりんごを見分けることができるようになるでしょう。
こうしてどんどん学習してより正確な答えを、より人間に近い答えを出せるプログラムが完成します。これでリンゴ画像識別特化型AI「リンゴなら知ってる君」の完成ですね。

3. AIの要素まとめ

今回リンゴの画像を例に記載しましたが
この「学習、特徴抽出、統計モデル構成」によって、コンピュータに人間と同様の知識を学習させるサイクルを機械学習といいます。これがAIのコアとなる技術になります。

最近のいわゆるAIが世の中に広がってきたのも
コンピュータ技術の発達のおかげといわれていて、主に
 
・たくさんのデータで学習データを作れるようになった
・たくさんのデータを処理して複雑な統計学に基づく数式を計算できるようになった

というのがキーになっていると言われています。

さて、今回は肝心の統計学の部分をかなり端折ってしまいましたが
AIの要素について書いてみました。

昨今では、さまざまなAI技術が発達しており、上記のようなプロセスを踏まないことも多々ありますので、最新のAI技術の動向については、また別のタイミングで書いていきたいと思います。
  
ではでは

DODA体験記② - ITコンサルへの転職 -

どうも、Keiです。

たくさんビールを飲んで、ジムに行って痩せる。この繰り返しに疑問を覚えてきた今日この頃です。

 

今回はDODA体験記2回目ということで、前回の続きを書いていこうと思います。

 

f:id:go-mount:20180712153457j:plain

 

面接が決定!

前回までの記事では、BRSと呼ばれる専門転職エージェントのJayとITコンサル系の会社に絞って応募しようということになりました。(※名前変えてます)

全体の流れとしては

 

経歴書類の作成→Jayの営業→Jayの営業込みの書類審査→面接(複数回)→内定!

 

って感じです。

 

このBRSが普通のエージェントと違うところは上の流れの中の「Jayの営業」の部分です!

BRSのエージェントは定例みたいな形で、それぞれのエージェントが持っている企業の応募案件について毎週企業の人事やマネージャーと会って優秀な人材を売り込んでくれるのです。

実際、この話を聞いたときには普通のエージェントよりこっちの方が全然いいじゃん!って感じたので、BRSを選んだのです。

本当に良かったのかどうかは後ほど・・・

 

そんなこんなで、Jayの涙ぐましい営業の成果があったのか何社からか面接をしたいと連絡がありました。

 

面接練習

DODAの良さの1つとして、経歴書のレビューや面接練習をエージェントが丁寧に時間をとってみてくれる等、面倒見の良さがよく挙げられます。ぼくのときも、Jayが面接練習をしてくれるそうで、東京駅のDODA本社に来いとのことなので、また行くことに。

(電話でも練習してくれますが、対面の方が本番に近い練習になると思ったので足を運びました。)

 

Jayは1回目に会った時は、日本語を全くといっていいほど話さず、せいぜい「年収」、「部署」、そしてなぜか「頭金」というワードだけを日本語で発音しました。

 

ここで不安だったのは、事前に一次面接の案内を日本語でもらっていたのですが、一次面接の面接官は日本人で日本語で行われるってことだったんですよね・・・

 

Jayは一体どういう感じで面接練習するのだろう?

 

実は日本語もペラペラけど、前回はぼくの英語力を試したのだろうか?

 

Jayの外国人の同僚とも話したが、彼らも日本語を全く話していないよなぁ・・・

 

 

いろいろ不安だったのですが、当日丸ビル27階のDODAの総合受付でJayを待っていると彼は爽やかなに登場しました。

 

Hi Kei-san, nice to see you again! Doing good? 

 

未だ、日本語の気配は一向にありません。

 

DODAでは、面接用の小さな個室がたくさん敷き詰められているようなオフィスとなっていて、前回同様に個室に通されました。

 暑い日だったので、水を取ってきてくれると行ってJayは消えていきました。

 

Jayが戻ってきました。

 

頼むぞ。頼むぞ。 

 

 OK, Kei-san, let's start an interview practice. At first, could you tell me your current work briefly within 3 mins?

 

やっぱ英語かいっ!! 

 

 

だろうな、とは思っていましたが面接練習も全て英語で行いました。

面接練習自体は特に内容を否定することもなく、事前にもらったよくある質問に対する回答について、こうした方がいいんじゃない?というアドバイスをもらえる形でした。

(ここはエージェントによって異なる部分かもしれませんね。)

 

いくつか相談に乗ってもらった質問を見てみると、

 

・ ITコンサルで成功するために必要だと思われるスキルを3つ挙げてください。

・どのような人が一緒に働く音が難しいと思いますか

・どのように上司や同僚の批判をコントロールしますか

 

特に正解がある類の質問ではなく、論理的に回答できれば良いと思うのですが、下2つはどのような意図で聞いているのか気になりました。

コンサルは同僚や近い先輩・後輩達の出世争いで関係性がバチバチしているから、それを示唆しているのでは・・・なーんて考えすぎてしまいました。

 

ちなみに、Jayはそんな深く考えなくてもダイジョーブだよ!てな感じでした。

 

面接練習は1時間半くらいで、終わるころには精神的にものすごく励まされた1時間半だなぁと感じました。

さすが、外国人は褒めたり、元気づけたりするのがうまいですね~

 

いざ、面接

Jayとの面接後、ITコンサルの面接を一件受けました。

面接用の会議室に案内され、面接官と挨拶後、面接官の口から想定していない言葉を聞きました。

 

「え~と、Keiさんね。エージェント使っているんだよね。あんまりそこんところの情報とか聞いてなくてね。。」

 

あれっ、BRSって企業のシニアマネージャやディレクタークラスの人と直接話しをしている訳じゃなかったっけ?

この部分は会社にもよるそうですが、BRSが直接話をするのは人事が多いそうで、場合によってはディレクターやマネージャとも話をするようです。

今回のぼくのケースだと、人事としか話していなかったため、シニアマネージャの面接官はぼくのことは他のエージェントと同じ情報しか知らなかったみたいです。

 

ここは、面接前にエージェントに確認すべきでしたね。。

BRSだからといって特別扱いしてもらえるわけではなく、やはり面接勝負!になる場合が多いそうですよ。

 

さて、今回は面接練習から実際の面接までのDODA、BRSとの関わりを書いてみました。

もっと、この部分が知りたい等があればコメント頂ければと思います。

クラウドとは? 食べ物に例えて説明しよう。

AN○の搭乗券予約サイトってなんであんなに使いにくいんだろうね。

どうも、ITコンサルタントのShoheiです。

今日は前回の続編ですね。クラウドについて説明していきましょう。(ちなみに前回記事はこちら)

 

クラウドってなんだろう

最近「クラウドとAIを用いてビッグデータ解析を」みたいなバズワード祭りが全国各地で行われているみたいですが、正しく理解してますかね?

 

僕は入社当初から数年間クラウド関連の仕事をやってきましたが、最初はさっぱりでした。

こわーい先輩には「おい、クラウドについて説明してみろ」と言われ、必死で説明しましたがその人は無言で去っていきました。

 

こんな時はクラウドの王者に聞いて見ましょう(Amazonってクラウド界の王者なんだよ)。

クラウド」とは、クラウドサービスプラットフォームからインターネット経由でコンピューティング、データベース、ストレージ、アプリケーションをはじめとした、さまざまな IT リソースをオンデマンドで利用することができるサービスの総称です。また、必要なときに必要な量のリソースへ簡単にアクセスすることができ、ご利用料金は 実際に使った分のお支払いのみといった従量課金が一般的です。  ("クラウドとは?|アマゾン ウェブ サービス(AWS)"より一部を引用)

 

さて、お分りいただけたでしょうか。

わかった人は閉じてください。わからない人は続きを読んでください。

僕が世界一わかりやすくクラウドの説明をします。

 

わかりにくいからITリソースを食べ物🍎に例えてみよう(例え話①)

まず、これだよね。

コンピューティング、データベース、ストレージ、アプリケーションをはじめとした、さまざまな IT リソース

こんなの入社当時の僕にはわかんなかったから、一旦こうしよう。ITリソース=林檎🍎だと置き換えてみてください。ついでにインターネットは道路としましょうか。

 

そうなると?なるほど、 林檎を道路経由で利用できるようになるのか。

図に示すとこうだね。

f:id:go-mount:20180711223320p:plain

 

今までは、左の図。林檎は自分の手元で持ってて、欲しい時に食べてたんだよね。

でも、林檎をクラウドすることで、ボタン一つ押せば、とれたての林檎が一瞬で配達されてくる、という風になりました。

ん、それ何が嬉しいの?林檎が遠いところに置かれてるんでしょ? 主な嬉しさは以下です。

・林檎を持ち歩かなくて良い。 (道路ってどこでも繋がってるから、ボタンがあれば手に入るよね)

・林檎を所有/管理しなくて良い(腐っちゃうかもしれないし、管理大変だよね)

・ボタンさえ押せば林檎が欲しいだけ手に入る(お腹すいてる時は10回押せば手に入る)

 

「えー、クラウド化最高じゃん、俺もクラウド化する!!!」て思った人。物事には大抵デメリットもあります。デメリットをざっくり言うと以下ですかね。

・林檎を手に入れるには、必ずボタンが必要 

・一瞬で配達するとは言われているけど、配達環境が悪いと遅延が発生する。道路が壊れたら手に入らなくなる(林檎が1時間経ってもこないんだけど...が起きちゃうかも)

・林檎が配達されてくる途中で、林檎の盗み見される可能性がある。(道路を通るからね)

・大切な林檎を他者に持たせることになる (人が触った林檎食べたくない人とか、いますよね。道路をまたいだ誰かが林檎をもつことを嫌がる人もいるかもしれません)

・林檎の預け先が海外の場合、林檎の国外持ち出しにまつわる法規制に引っかかることがある (まぁがちでいうとGDPRや中国サイバーセキュリティ法など)

 

うーん、いいところもあれば悪いところもあるのかぁ。

現実世界に置き換えたいところですが、まだ林檎で続けます。

わかりにくいからITリソースを食べ物🍎に例えてみよう(例え話②)

別の例え話です。

林檎を食べる前に何をしますか?そうですね、ジャムにしますね。

今度は、ITリソースを、林檎だけじゃなくて、林檎をジャムにするための器具達も含めて例えて見ましょうか。

まずは図をご覧ください。今まで林檎を置いていた場所をRP(林檎プラットフォーム)と名付けています。

f:id:go-mount:20180711223323p:plain

 

左側では、林檎も調理器具もあなたが所有しており、ジャム作りもあなたがやってしまいます。

では右側は?あなたは林檎も調理器具ももっていなければ、調理もやりません。ボタンで指示を出せば、ジャムだけ送られてくるのです。ボタンで指示を出した内容と、お願いした回数分だけお金を払うシステムです。

 

 

メリットデメリットは上と重複する部分が多いですが、追記をするなら以下かな?

まずメリット。

・専門的なことはプロに任せられる (料理はRPの内部にいるプロに任せてしまおうよと)

・需要に応じて必要な器具を使える (でかい林檎のときはでかい包丁、など。たくさんある中から一時的に借りるからこそなせる技)

・ジャムに飽きたらやめればいい(設備買ってるわけじゃないから、飽きたらこのサービスやめれば終了。次の月から一切お金かかりませーん)

・RPには警備員もいるので、セキュリティ面は安心。しかもあの建物、地震等の災害にも強いらしい。(家でもってるより安心かもね)

・調理器具を資産として扱わなくてよくなる (調理器具に税金とかとられたくないじゃん)

デメリットは、ここで追記するなら以下ですかね。

・長年この形態でジャムを食べ続けるなら、もしかしたら自分で器具を揃えた方が安いかもしれない (10年使うんだと、月々払うのは馬鹿らしいかもね。賃貸or持ち家問題と似てるかな)

 

現実世界へウェルカムバック

さてそろそろ林檎の話から現実世界の話に戻りましょうか。

今までお伝えしてきた語句は以下のように置き換えてください。

・林檎 ⇨ データ

・調理器具 ⇨  データを処理するための設備

・道路 ⇨ ネットワーク (AWSの定義ではインターネット)

・ボタン ⇨ 操作端末(ネットワーク越しに指示を出すことのできる端末)

・林檎プラットフォーム ⇨ クラウドプラットフォーム (クラウド事業者がクラウド用設備を置いている場所)

 

上記の言葉で今までの説明を置き換えると。

例え話①:

データをネットワーク経由で使っていました。操作端末(スマホでもPCでもいいです)さえあれば、いつでも、どの端末からでも望みのデータにアクセスすることができます(もちろん認証はありますが)。

 

例え話②:

では、データを処理する部分までネットワーク経由で使っています。操作端末のスペックが低くても、安定してネットワークに接続できる環境さえあれば、クラウドプラットフォームに置かれている高度な設備によって正しく処理が実行されます。

お金は、実際に使った時間と、使った処理機器のスペックによって課金されるので、必要なときだけ使えばOK。

 

さて、これをふまえて以下を読んで見てください。

なんとなくイメージわくでしょ?

クラウド」とは、クラウドサービスプラットフォームからインターネット経由でコンピューティング、データベース、ストレージ、アプリケーションをはじめとした、さまざまな IT リソースをオンデマンドで利用することができるサービスの総称です。また、必要なときに必要な量のリソースへ簡単にアクセスすることができ、ご利用料金は 実際に使った分のお支払いのみといった従量課金が一般的です。  ("クラウドとは?|アマゾン ウェブ サービス(AWS)"より一部を引用)

 

クラウドにも多様な種類がある

最後に、クラウドの分類についてお話しします。 

例え話①と②でも、サービスの利用の毛色が違ったように、

クラウドと一言でいっても、どの部分がサービスとして事業者から提供されるかによって属する分類が変わってきます。

IaaS(Infrastructure as a Service) / PaaS (Platform as a Service) / Saas (Software as a Service)。

詳細な説明は省きますが、なんとなくのイメージを以下の絵でつかんでみてください。

もちろんどの分類が良い、悪いはありません。自由度が高いのはIaaSですが、既に作り込まれたものを使う方が効率的なこともありますからね。

 

f:id:go-mount:20180714144846p:plain

 

まとめ

クラウドについて、林檎🍎を使ってざっくり説明して見ました。

 感想や修正依頼等あればぜひぜひコメント欄にお寄せくださいね。それでは!

 

 

若手データサイエンティストの日常

どうも、Koheiです。
鬼のように暑い日々が続きますね
 
今日は前回の記事を踏まえて、
もう少し具体的に、各プロセスでどんなことをしているのか実体験を交えて共有したいと思います。
 
前回の記事
 
前回、データサイエンティストの仕事は、下記のプロセスを踏むと書きました。
  1. 要件のヒアリング
  2. 必要なデータの収集
  3. 分析の準備
  4. データ分析
  5. 結果のアウトプット
 
では、各項目でどんなことをしているのか、書いてみます。
  1. 要件のヒアリング

    「○○サービスの利用状況を知りたい」

    「お客さま報告のため○○データを解析してほしい」

    「大量のサーバログで故障要因の解析したい」

    などなど、各方面から様々なリクエストがきます。

    そこからどのデータをどれくらいの期間、どう分析したいのか?など要件をヒアリングします。

    状況によっては、そのまま要望を受けるではなく

    「サービスの利用状況を知りたいなら○○データより××データのが正確なのでこちらはどうですか?」

    などといった提案活動もします。

    ユーザの業務把握や課題分析能力などが求められるので、ITコンサルっぽい要素もあります。

  2. 必要なデータの収集
    1.でヒアリングした内容を基にデータを集めます。
    このご時世データの在り方は千差万別です。
    ・特定サーバからFTPなどで定期的にファイルを取得
    ・データベース連携、SQLでアクセス
    APIをたたいてデータ取得
    ・そのほか、特定のプロトコルでデータ連携
    自分の仕事で言うと、全体の6割くらいがファイルベースのやり取りが多いです。
    ネットワークの設定やサーバの設定、スクリプトを書いたりなどなど
  3. 分析の準備
    データが取得できる環境が整ったら、見たいアウトプット(特定のダッシュボードだったり、表だったり)のカタチにするべく、データを加工します。
    だいたいデータベースに入れて、特定の可視化ツールで見ることが多いので
    CSV形式っぽくデータを加工する
    ・データベース作成
    ・データロード
    の手順を踏むことが多いです。
    このとき
    ・区切り文字のないひたすらの文字列
    ・スペースや改行コードの混在
    ・そもそも文字化けして謎
    みたいなのと格闘します。データベース設計やここでもスクリプト書いたり
  4. データ分析

    さあ、ようやく待ちに待った分析の時間です。

    ツールを使って、いろんな尺度でデータを集計したり、グラフにしたりして特徴を把握します。

    ここで見えた特徴をもとに統計モデルを作成して…

    とつなげていけると機械学習、AI系の話になるのですが、そこまで進むことは稀です。

    なぜ、AIまでたどりつかないのか…という話はまた次回

  5. 結果のアウトプット
    解析結果をユーザにフィードバックし、分析の振り返りやアクションにつなげなます。フィードバックの大半は「データが欠けてます」「値おかしいです」
    などですが。。。
    データ分析あるあるとして、とりあえず可視化して満足して終えるケースがあります。アクションに繋がらない分析結果は価値0なので、常にその点を頭に入れて分析は進めます。
 
さて、では僕がこのうち各プロセスに費やしている時間を可視化してみます。
使うツールは世界最強?のデータ分析ツールExcelです。
じゃん!
 
 

f:id:go-mount:20180707170320p:plain


お判りいただけただろうか
 
悲しいかな、僕が費やす時間はほとんど、
2.必要なデータの収集
3.分析の準備
です。

まあ、これはデータ分析を仕事にする人に広く言えることだと思います。
この辺に時間を割かざるを得ない状況になる理由としては下記の点があると思います。
 
  • データがとにかく汚い
例:流通してるデータがランダムなタイミングで欠ける
  実は見たかったデータは全体の5%程度で、95%ノイズ
  そもそもデータの定義があいまいで、謎のデータが紛れている
  データを取得までに何人も経由しているため、未知データや例外的な情報が不明
  定義を確認するために、また何人も人を経由する必要があり、時間がかかる。
  • セキュリティの障壁
例:システム管理者とデータ流通リスクの整理に時間がかかる
  そもそもシステムがデータ取得するIFを設計しておらず、大幅な改修が必要
  分析した結果どれだけコストメリット算出が困難で、システム改修が停滞
  • データ分析インフラの性能限界
例:データが巨大すぎて、単純に処理に時間がかかる
  場合によってはインフラを増強しなければそもそも解析できない。
 
などなど。
 
データボリュームはさておき、これらを解決する肝は「データの管理」だと思います。
 
どこで生成され、どんなデータで、どのタイミングで更新されて、誰がアクセスしているのか、という情報の整理が必須です。
でないと、業務の大半がデータの誤りを指摘することで終わってしまいます。
 が、実態としてはなかなかこの部分がうまくできていないのが現状で、試行錯誤の毎日です。
このあたりは「データガバナンス」や「MDM(マスタデータ管理)」とかキーワードが出ていますね。
 
と、ここまで生生しい感じのデータ分析業務の実態について話をしましたが、いかがでしょうか。うちだとこうしてるよ!とか、同じ悩み抱えています!とか、あればコメントいただけると嬉しいです。
 
次回以降は、分析系やAI系のトピックについても書いていこうと思います。
 
ではでは