東京の西側でロハスに暮らす

雑食系ブログです

データサイエンティストになるために数理的な教養・知識は必要ですか?

さまざまなポストで、色々なデータサイエンティストになるための本が紹介されていたりします。

これらは大変素晴らしく思うのですが内容はだいたい大学の専門教育課程でバシバシ出てくるようなはっきりって専門書が多いのです。これらは確かに必要だと思う反面、多くのデータサイエンティストになりたいと思われるエンジニアや社会人が読んで理解できる内容かと言うと疑問がつくのも思うのです。一方でデジタルという文脈の中、こういった知識を持たずに活躍されている方も散見されます。実際に現場で働く人間としてこの点をディープタイプしていきたいと思います。

 

私の持論

持論としては、ハイレベルなデータサイエンティストのうちアルゴリズムを考えるようなエンジニアになりたいなればこのような知識は深いレベルでの理解が必須です。

 

非常に詰まったような言い方になりました。

 

日本の悪しき情報システム開発文化とデータサイエンスへの影響

何が言いたいかと言うと、現在のいわゆる情報システム開発運用の現場では全くコンピューターのこと知らない人がでも活用できています。これは日本特有の下請けシステムプロジェクトマネジメントシステムによるものが大きいと思います。

情報システム開発においてコンピューターサイエンスを全く知らなくてもコミュニケーション能力だけで開発できるという、ある意味日本の独特の発明が日本の情報システム開発の現場は根強く残っています。そしてデータサイエンスの分野でもこれは非常にいろこく反映されております。

 

データサイエンス協会というところが発行している人材像を見ています。

 

これは、人材像はざっくり言いますと3タイプに分かれています

f:id:t264d:20210516074941j:plain


個人的にはこの3つ全てをハイレベルで持っていることが大事だと思うんですが、なかなかそうはいかない事情があるとおもいます。

なのでそれぞれの特性にあわせまして3つに役割分担するというのはまぁある意味納得のあるものです。(このあたりがデータサイエンスの多様性でありつつも、数理的素養をもたない人達を量産している遠因だと思うのですが)

 

そしてその中で一番というかほど独占的に数理的な素養が必要な人たちがデータサイエンス力をもってモデリングをする人たちです。

 

この人たちは主に統計だったり機械学習アルゴリズムを知っている必要があり、それを業務適用する実装を考えなくてはいけないので、データサイエンスのど真ん中の人たちだと思います。

 

今から10年ぐらい前の情報システムにおいては統計パッケージが存在したものを機械学習パッケージというのはかなり限られていたために自分で実装する必要がありました。

しかし現代においては chainer や tensorflow 、DataRobot のようなAutoML と言った機械学習の知識があまりなくてもモデリングができてしまうソフトウェアでも非常に多いです。

 

コミュ力おばけの逆襲

そしてこれらのソフトウェアというのは多くがブラックボックス化されております。そのためなぜこうなったのか所も説明がしにくいという特徴があります。ここが最大のポイントです。

仮に非常に数理的な素養を持った人であってもこういったソフトになった勝手な想像の域を出ないため多分こうなったみたいな話になるわけです。

そうなるとうっすら知識を持ち、ハイレベルコミュニケーション能力の人がいればこのへんは何とかなってしまうわけです。

また自分でプログラミングする必要があるプロジェクトもあると思いますが、もし、これをプログラミングを外注できるようなプロジェクトだった場合、お客に説明する説明責任というのはハイレベルコミュニケーションを持っているけど中は何も知らないみたいな人です。そしてもちまえの圧倒的コミュ力でなんとかなってしまっている状況は生まれてしまいます。

 

そして日本の現場ではこれをチーム力というふうに参照する文化がありますので、そもそもこの点は問題視されるということ自体がそもそも少ないです。

 

さらにアルゴリズムの数理的理解においては「アカデミックでいいじゃん」という風になるわけです。そうなると、数理的な大学教養レベルの本というのは趣味の領域を出なくなってしまいます。そしてこれで仕事が回ってしまう現実もあります。

 

ここまではSIerのような観点で話をしましたが、いわゆる事業会社でも同じような事がやっぱり起きています。 事業会社の場合は、ビジネスを前に進めることが主目的なので別に中身としたらどうでもいいわけです。一方でSierや開発会社とかそういったところで上記のような状態になると日本のデータサイエンスレベルの底上げには繋がるものの、 スピードが遅い理由です。伝統的な SIerだと、そもそも上層部データサイエンスと冬の開発になんていなかったりそもそも何もしらなかったのでもっと自体は悪かったりします。(これらの企業も何もしていないわけではないですがやはりスピードは遅いです)近年の機械学習 AI のスタートアップが流行しているのもこういったところが背景になると思います。

 

自学の現実解

大学3、4年の教養レベルを学び直すの大変なストレスです。想像してみてください、自分と全く違う領域の4年生レベルのテキストをぽいとわたされて「これ理解しておいてね一週間後までに」って言われたら普通の人は絶望すると思います。

 

これがさも当然と言われているのはこのデータサイエンスの領域の恐ろしい点だとおもいます。

もちろんこれは現場の話であります。その社を代表するようなサイエンス人材であったり業界を代表するような入れるような人物であれば数理的理解としてはあるべきと思います。

 

そうは言ってもある程度、ハイレベルなコミュニケーションの人でも話せるぐらいの知識はこの業界の人万人が持つべきだと思うので、機会を見て紹介していきたいと思います。

IPA ITストラテジストに合格する勉強法の話(直前対応)

はやいものでもうすぐ試験です

コロナによる影響はIPA試験も例外でなく、ITストラテジスト試験も紅葉と寂しさをかじる秋から、新緑と期待に満ち溢れる春に変わりました。

I気が付けばのこり一週を切ったので、わたくしめの体験と対策を記します。

 

ITストラテジスト試験とは

ITストラテジスト試験は、上流工程の構想策定を役割とし、取得により労働基準法における専門職として認められる唯一の情報処理技術者試験の区分であり、同試験の最高峰といわれる試験です。受験者の平均年齢も一番高いです。

 

 

ITストラテジスト試験の要

高度区分のため論文試験(午後2)が出題されますが、他の区分よりも採点が厳しいのが最大の特徴です。他の論文試験過去 PM や IT アーキテクトなどで合格できるレベルの論述があってもITストラテジスト試験では落ちることはよくあります。(B判定のまま、、等)

 

ですので、ITストラテジスト試験は「日本語の問題」という側面があるのですが、それだと「てにをは」や「表現か」と勘違いされる方もいらっしゃるかもしれませんので、これを具体的に言いますと「いかに問題文の意図に沿って論述するか」にかかっています。

 

この一言でこの試験の攻略方法を語り尽くした気がしますがきちんと説明をしたいと思います。

 

論文試験(午後2)Deep dive

午後2問題の問題文の流れはおおむね下記です。

  1. 課題の状況設定
  2. 課題の制約条件
  3. 課題解決の方向性

ITストラテジスト試験において非常に大事なことは、

この問題文で書かれている問題文の流れを、できるだけ問題文に近い状況にアレンジして書く必要があります。

 

ですので、過去問を4,5回書きながら、問題文の流れにあっているかをひたすら確認する事が鉄則です。

 

 

加えて午後2問題は3題から1題選択ですが、じつはこれもどのようなジャンルかパターン化してしまってます。

  • 情報システムの全体システム化構想
  • 個別情報システム化構想
  • 組み込みシステム企画

おそらく普通のエンジニアは個別情報化システム化構想と全体システム化構想でどちら選ぶかと思います。

これを選択する基準として「企業におけるビジョン」が感覚的にどれほど自分にとって理解し論述できるかにかかります。いずれも必要ですが、全体システム化構想のほうがビジョンの理解と記述は論述に求められます。

 

ビジョンとは何だ

ビジョンというのは

その会社の経営の経営理念

経営上の最も基本の方針

と考えています。具体例で見ましょう

ファーストリテイリングです。

www.fastretailing.com

 

ではこれを実現する上での具体的な計画は何?となると、それが中期経営計画です。

中期経営計画を実現するために、事業計画があり、この事業計画全体をITで支えるものが全体システム化構想です。事業計画の個別テーマをITで支えるものが個別システム化構想です。
これに注意して経営との整合を論述する事が非常に大切です。

 

結局どれくらい勉強すれば

よく質問されることがありまして必要な練習時間はどれぐらいですかと聞かれたりします。人によるので難しいんですけれども、概ね 他の高度情報試験の勉強期間×2 と思ってくださればよいと思います。

 

そうはいっても直前なんですけど!

そのような方でも、落ち込まないでください。

なるべく有利に試験するための心得を3つ言います。

1:解答する大問をあらかじめ決める。

 前述の通り大問の傾向は決まっています。ご自分の得意で決め打ちしてください。これで解答時間を10分は節約できます。

 

2:おきにいりの筆記用具を用意する。

 本番の120分は指が痛くなるくらいに文字を手書きします。特にラスト15分は一心不乱です。自分にとって書きやすい筆記具を用意しておいてください。

 

3:「問題文の意図に沿って論述する」トレーニングだけする。

 これが論述の要です。論文を書く時間がなくても、過去問を見て、問題文とその論調をつかってどのように自分のエピソード(創作含む)を書くか、メモ書きや音読でもいいので少しでもやっておきましょう

 

 

Redshiftしか勝たん!② Redshiftの悪魔的進化

あなたのRedshift、開発してからそのままではないですか?

「Redshiftは同時実行に弱い」

「RedshiftはMaterized viewがない」

「RedshiftはマルチAZできない」

そう思っているひと、いませんか? いや結構いるはずです。

そして、Redshift推しの開発者なら、伝統的なDB感をもつAP担当者と、そのGAPについて侃侃諤諤した事があるはずです。

 

 

Redshiftが別物といえるほど進化しました

数々のGAPを抱えてきたRedshiftですが、ここ数年で圧倒的に進化しました。

数がおおすぎるので、私めにてまとめたのが以下です。

 

f:id:t264d:20210315225557j:plain

 

「Redshiftが一時停止できるようになった」事は有名だと思いますが、実はこれだけの超進化がおきたのです。

さすがRedshift!しびれる、あこがれるゥ

Redshiftしか勝たん!①  DWHとAI、ついに融合す

DBエンジニアがAI技術者の夢を見る

AIがITのメインストーリムに来る少し前の2018年くらい、世のDBエンジニアはこう思っていました。

 

「AIはデータでの学習・推論が命。データといえばDB。しかしSQLとAIは一緒に使えそうな、使えなさそうな、、。DBとAIが融合されればDBエンジニアの仕事の幅も増えそうだが、、果たしてどうなるのか」

 

その後、OracleMicrosoftから自社のDBエンジンにAIを組み込んだ製品が発売されますが、中身としては従来のSQL Server からPythonコマンドを立てけるだけ、、といったとってつけた感がすごくて、流行しませんでした。

 

そして、学習=フルスキャンという性質からAIではDBというよりもストレージを中心としたアーキテクチャが多く発表されました。

AWSでいうと、SageMaker+Lustreのようなアーキテクチャです。

 

でもこれはPythonを使えないとコーディングできないので、前述したような

「DBエンジニアがAI技術者の夢を見る」

事は困難だったのです。

 

Redshift MLデビュー

最近、「SQL機械学習の学習と推論を行う」という、夢のような機能がでました。

はい、Refshiftです。さすが、研究開発4兆円企業です。

aws.amazon.com

 

 

実際に使ってみた

というわけで、やってみました。AWSのサンプルのままですが

docs.aws.amazon.com

 

詳細の手順は上記通り。

で、実際やった結果とその考察がこちら。

f:id:t264d:20210315222954j:plain

 

もう、一言でいうと素晴らしいの一言。

ただし、実行時間が少しおそかったような、、いくつものアルゴリズム学習をするから仕方ないのか。

また、同僚からは「精度はみれないのか」との指摘。裏で動いているSageMakerをみれば確認できるようですが、SQLコマンド一発で精度まで取得できればさらにいいと思います。

 

まだプレビューなので、GAに期待です。

豊洲のITエンジニア交流勉強会(2019年9月25日)に参加・発表した話

かなり過去の話ですが、昨今の事情から時間ができたので、レポートしたいと思います。

 

表題の通り、豊洲にあるIT会社(NTTデータ、SCSK、ユニシスNEC)を対象に、勉強会が開かれました。主催はSCSKさんです、素晴らしい。

 

で、内容はいわゆるライトニングトーク大会なのですが、そうそうたる会社のせいかが濃い。。

 

例えば、

スマホアプリで疑似モテソフトを作った話。

キーボード自作を極めた人の話。

触感IoTなるものをつくった人の話。

です。万人に受ける話・ノウハウというよりも、自分の興味です。

攻撃力に極振りした話です。

 

で、自分は何を話したかというと、AzureとAWSの認証連携の話です。 

皆様からの評価は「硬い。真面目。遊びがない」

 

 

今度やるときはもっと柔らかくしていこうと思います。。

AWS S3とAzure Datalake gen2 の比較

AWSとAzureのどちらを使おう(オブジェクトストレージ)

二大パブリッククラウドは、AWSとAzureです。様々意見あるかと思いますが、パブリッククラウドが持ち、オンプレミスの持たないサービスの代表格はオブジェクトストレージです。同時に、パブリッククラウドでシステムを組む際、オブジェクトストレージはストレージ、データハブ、バックアップ、IF、公開サーバと多彩な役割を果たします。まさにパブリッククラウドの要といってよいでしょう。

 

AWSではS3、Azureでは複数存在しBlob,Datalake, Datalake Gen2と多彩です。

では、パブリッククラウドの要であるS3と Datalake Gen2はどのような差があるのでしょうか。

 

AWS S3とAzure Datalake Gen2の比較

簡易的ですが比較表を掲載します。結構おなじかと思いきや、Datalake Gen2には怪しげな言葉が並びます。

ファイルパーミッションは,747等いわゆるPOSIX風の設定ができるかという事です。

f:id:t264d:20190510215343j:plain

階層的名前空間とは?

簡単にいうと、フォルダです。S3は、フォルダが存在しないのです。フォルダにみせかけたからファイルと同じと思っていただければOKです。

 

f:id:t264d:20190510215639j:plain

 

ファイルリネーム等が多けれAzure。大体はAWS S3で十分

オブジェクトストレージのみでパブリッククラウドを選定する事はないと思いますが、

観点に加えるとすれば、ファイルリネーム等が多けれAzureです。ただしそのようなバッチワークロードもそれほど頻繁にあるわけではないと思います。大体はAWS S3で十分と思っています。

RedshiftとPostgresSQLの機能差分をまとめる

RedshiftはRDBMSではありません

RedshiftはPostgresSQLをベースとしたMPP型データベースです。DWH特化型DBといってよいサービスですが、普通のRDBMSと同じように設計するとうまく特性を生かせない事が多々あります。

 

そこで、初めてRedshiftを使う人や、RDBMSは知っているけどRedshiftをよく知らない人向けに、RDBMSであるPostgresSQLとの差分をまとめてみました。

 

RedshiftとPostgreSQLの機能比較

代表的な機能を軸に比較してみました。運用面の差が大きいです。

※これは2018年4月時点の情報です。今後のアップデートで変更になる可能性はあります。

f:id:t264d:20190510213545j:plain

差を踏まえたうえでのRedshiftにおけるSQL設計


これらをふまえ、実際のSQL設計をどのようにすべきかまとめました。最も注意すべきはINSERT, UPDATEです。RDBMSだとテーブルトランケートはほとんどしないと思いますが、Redshiftではテーブルを再作成する事が実はベストプラクティスだったりします。

 

f:id:t264d:20190510214018j:plain

超簡単な具体的な使い分け基準

では、RDBMSとRedshiftをどのように使い分けるべきか?様々な観点がありますがすごく簡単な基準としては、

OLTP(普通の業務システムやWEBシステム)=RDBMS

OLAP(BI、DWH等分析系のシステム)=Redshift

と思っていただいて、OKです。