データアナリストとして仕事をしていると、もちろん、様々な局面に立ち向かいます。パラメータ調整がうまくいかず、ずっといい結果が出ないとか、データの前処理が思ったよりも面倒な状態で、本題の分析になかなか入れないとか。。。
こんなことは実際にしょっちゅう行われています。そして、分析も一度回すとかなりの時間、待ち時間が発生します。
分析が終わるまで、他の作業をしたりする作業がなければ暇をつぶすことになってしまうこともザラにあります。
花形の仕事と思われがちなデータ分析の仕事ですが、実際は結構面倒な作業がほとんどであり、結局は裏方の仕事なので泥臭いことも多いです。
データアナリストとして必要とされるスキルとしては、様々なスキルがありますが、やはり統計学の知識や、データを取り扱うためのコンピューティングスキルは必須です。
また、コンピューティングスキルに関しましても、昨今のデータ分析はかなりの計算を必要とするものがほとんどですので、RやPythonなどを代表としたプログラミングスキルが必須でしょう。
それでは、それらを身につけることができれば実際は大丈夫なのでしょうか?
実際はそれだけでは厳しいものが多いです。といいますのも、分析を実際にするにはそれを分析するための基盤(インフラ)が絶対に必要となってきます。そして、特に最先端の分析をしていくための現場では、必要となるインフラが都度違ってきます。
更にいいますと、インフラにも種類がそれぞれ必要となります。データを分析するためのインフラはもちろん、データを収集するインフラもあれば、データを前処理するためのインフラが別途必要になるケースもあります。このようなそれぞれのインフラを用意してくれるような超大手起業のデータ分析チームであればいいと思いますが、大抵の場合はそれらを別途でチームを組みにはコストが割にあわないので、そのようなチームを組んでくれることはありません。
ですので、結果、データ分析するためのインフラ構築の知識も必要となってくるのです。
それでは、データ分析の現場で用いられるインフラ基盤を学ぶとしてどのような知識が必要となってくるのでしょうか?
それは、タイトルにも上げております、Linuxの知識になります。
なぜWindowosでもMacでもなく、Linuxであるかと言いますと、理由は2点大きくあります。
まず、1点目については、AI開発に使われているTensorflowやKerasなどが代表になりますが、Linux(Unix)ベースで開発されていることがほとんどです。Windowsのみで動かないというツールはデータ分析の業界ではほとんど聞いたことがないレベルでなく、MaxもしくはLinuxベースで動きます。
Macでも動かすことができるのは、MacとLinuxはUnixと呼ばれるOS基盤を元にして開発されているからで、ほとんど同じコードでも動くからです。
Linuxで動くものは、Macでも動く、といったイメージです。
そして、それだけではMacでいいのでは、となりますが、もう一つが2点目であるライセンス料の問題です。Macは1台準備するだけでも非常にコストが多くかかります。もちろん、Windowosもかなりのライセンス料をとられます。一方、LinuxであるUbuntuやCentOSなどはいくらサーバやパソコンにOSをインストールしても無料です。使いたい放題となります。
では、分析基盤のコンピュータのスペックを非常に高いものにして、ライセンスを1つ確保すればいいのでは?という疑問にもつながるかと思いますが、なかなかそううまくいかないのが、コンピュータサイエンスの辛いところです。
まず、データ分析の業務には様々なインフラを用意する必要があると言いましたが、分析のインフラとデータ収集のインフラとデータ前処理のインフラなどは一緒のインフラにしたくない場合が多いです。分析をするためには、様々なインフラが必要になりますが、一緒のインフラにするとライブラリの混同で問題が起きたり、一部だけ最新のものにアップデートしたり、別のものを使ったりするときに、それができなくなり問題になります。
また、そもそも1つのコンピュータのスペックをどれだけ上げてもそれを最大限使うことができないことがほとんどです。CPUのスペックを最大限に使えなかったり、Memoryがどれだけあっても100%使えなかったりします。それは、ソフトウェア上の制約になり、ハードウェアをどれだけいいものにしてもダメなのです。
結果的に、1つのコンピュータのスペックを上げるよりも、沢山のコンピュータにインフラ基盤を構築するほうが都合が良くなります。そして、複数のコンピュータにOSをインストールしてもコストが上がらないのは無料であるLinuxとなるのです。
以上、なぜLinuxスキルが必要なのかを話してきましたが、それではどんなスキルが必要になってくるのでしょうか?
基本的には以下のスキルさえ抑えておけば十分だと思います。
1点目はまずそもそもの環境構築をするためのスキルです。それは、コマンドラインの操作方法だったり、ライブラリをインストールするための知識です。TensorflowをUbuntu上にインストールするためのスキルや、画像処理系ですとOpenCVをインストールするための知識などが必要になってきます。
2点目は、その環境を素早くいくつも立ち上げるスキルです。データ分析環境などは、作っては壊して・作っては壊してを繰り返します。いくつも環境してそれぞれ別の分析方法で同時に分析して、結果を比較することなどもあります。その中で必要となってくるスキルです。
これは、Dockerが現在は最も主流となるスキルでしょう。Dockerは最も素早く同じ環境を簡単にサクッと立ち上げることが出来ます。AnsibleやChefなども使われていましたが、スピードでいうとDockerの方が何十倍も早いです。
3点目として結構重要となってくるのは、複数の環境をうまくつなげて処理を自動化していくスキルです。Web系ツール間の操作の自動化であればSeleniumや、インフラ同士をつなげるにはJenkinsなどもよく使われます。
これらをうまく身に着けて、データ分析のスキルを高めていきましょう!
以上となりますが、いかがでしたでしょうか?
不明なところなどございましたら、コメントよろよろしくお願い致します!
データアナリストに憧れておられる方も多いと思いますので、この記事が少しでも力になれば幸いです。
関連記事はありません。
まだコメントはありません。