データ分析の仕事とキャリアについて
データ分析の仕事をし始めてちょうど1年が経ちましたので、ここら辺で一度これまでの振り返りとこれからのキャリアについて考えて見ようと思います。
今やっていること
一言で言えば、ひたすらデータの可視化をしています。以前、Data Driven Developer MeetupやMarketTech MeetupのLTでも発表させていただいた通り、Bokehと言うPythonのインタラクティブな描画ライブラリを使ってチャート描画し、それをWebアプリケーション上に組み込んでデータ可視化ダッシュボードを作っています。
私は現在トレーディング部門にいますので、主にトレーディング周りのデータ分析をメインにしてやっていますが、私が入社した頃は、要はデータはあるが、それを効果的に活用できる枠組みまではありませんでした。入社してしばらくは、ひたすら個別に舞い込む用件ごとにSQLを書いてデータ集計したり、SQL+Pythonでレポートを吐き出すようなスクリプトを書いたりするような日々が続きました。
その後、同僚がBokehを紹介してくれて使い始め、また別の同僚がWebアプリケーションの土台を作ってくれました。そこでようやくデータ分析を行う土台が完成して、データ分析の知見を貯め込んでいくことができるようになりました。
それまではフロー型で用件毎に結果が流れてしまっていっており、データ分析の種類に応じて属人化しやすかったのですが、今はストック型でひとつの基盤に知見をどんどん貯めていけるので、新しい用件が舞い込んできても、既存の分析機能を組み合わせて回答できたり、あるいは新たなデータ分析機能を作り込むにしても扱っているデータへの理解も深まってきているので、かなり開発スピードも速くなったと思います。
工夫していること
器ができただけでかなり分析作業はかなりやりやすくなったのですが、データと向き合う上での困難ははまだあります。何かと言うと、データのパターンが大変複雑であったり、あるいは以前と前提が変わったり、新機能追加による変更などに直面して、それまでうまく動いていたものうまくが動かなくなることがあります。
そのため、常に考えているのは、どのようにこのデータは生成されたのか、また、なぜこのデータはこのような持ち方になっているのか、という点になります。以前、MarketTech Meetupでバフェットコードのしゅう(@shoe116)さんが発表されていた内容は大変勉強になりました。
しゅうさんは、財務諸表で使われているXBRL形式のデータの処理を担当されているそうですが、これがまた非常にわかりにくい構造をしており、こういったデータを扱う上で大切なのは、データがこの形に変換される前のデータオブジェクトを想像してparserを設計しているとのことでした。これをすることで、何か変更があってもその変更の背景を想像できるようになるので対応しやすくなるし、何よりテストを行うことができるようになるとおっしゃられていました。元のデータオブジェクトがわからなければ、何千社とあるすべての財務諸表のデータでテストしないといけなくなってしまい、とても現実的にこなせるようなものではなくなってしまいます。しかし、データオブジェクトを定義すればその設計をもとにテストケースを切れるようになります。
私も日々の分析のなかでは、種類は違えど似たようなことをしているなぁと感じました。正直なところ、自分の仕事の8割はこの部分に費やしているような気がします。私の場合は元のデータを触ってはいるものの、その生成過程(アプリケーション上でどのようなビジネス要件に基づいてデータが処理され、それが永続化され、更新されるか)については想像力をふくらませて分析にのぞむ必要があります。目の前にデータだけ用意されて、そのデータの関連や前後関係からデータの意味を読み解いて設計思想を解き明かしていくような感じです。リバースデータエンジニアリングとでも言えば良いのかわかりませんが、そんなような感じのことをやっています。
もうひとつ工夫している点としては(工夫というか当たり前のことなのですが)、データはそのままでは何も語りかけてはくれないので、上記のプロセスを経て解き明かしたデータ構造や設計思想を元にビジネス上意味のあるデータに変換し、それを意思決定者に伝わるように可視化するということです。個人的にはデータ分析をする上ではここが一番好きなところで、データに魂を吹き込んでやってそれがまるで生きているかのように語りかけてくれるような仕事ができた時は本当にやりがいを感じます。データ可視化本当に楽しい。楽しいのですが、Bokehのようなインタラクティブなデータ可視化ライブラリ使っていると、ついつい見た目に凝ってしまいがちになりますが重要なのは中身ですから、そこは外さないようにしていきたいと思います。
心がけていること
私は元々は、新卒で入った会社ではシステムエンジニアとして入社し、プロジェクトマネージャーになりました。エンジニアとしては要件定義、設計、開発、テスト、リリース、保守などの一通りのプロセス、プロジェクトマネージャーとしてはリピート顧客の案件を回しながらのチームマネジメントの他、新規顧客の提案などもやっていました。その後、前職の証券会社ではユーザーサイドに転じ、金融規制を踏まえた要件定義や設計、UAT等をやっていました。
そんな中でも、あるプロジェクトを契機に自分の中で仕事のスタイルが確立された出来事がありました。そのプロジェクトでは、私はプロジェクトマネージャーとして案件の見積もりや提案から携わっていました。これを言ってしまってはプロマネ失格と言えばそうなのですが結論から言うと見積もり時点では最終的な要件まで詰めきれていませんでした。見積もりしている時はそんなことに気付くこともなく、もやもや感はあったものの、まぁこれでいいだろうと思っていました。
当初見積もりの要件でも、業務を回すこと自体は出来るものだったのですが、よくよく詰めて考えていくとユーザーにかなり業務負荷を強いるような要件である事に気が付きました。そこから、後輩にも付き合ってもらってどうやったら最高のユーザー体験を実現できるのかのブレストを深夜までホワイトボードでやり続けました。
その結果、抜本的に要件を見直して、当初の見積もり内容とはかけ離れたものになりましたが、後輩やチームの皆さんの頑張りのおかげでなんとかリリースまで漕ぎ着けることができました。はっきり言って完全にマネージャー失格案件ではあるの重々承知の上ですが、ユーザー体験的には最高のものをリリースできたと思います。その証拠になるかはわからないですが、その機能が不具合を起こしたり、使いにくいとか言われることも一度もありませんでした。ちなみにそれまでの機能はそれなりに色々言われておりました。
この経験を通して学んだこととして、それまでは今の自分達が出来ることを基準に要件を固めていましたが、そうではなく、本当にユーザーが望むものを想像してそれをどうやったら実現できるかを考えることが重要だと言うことです。当たり前ですが、今出来ることを基準にすれば見積もりも簡単ですが、それだとユーザーが本当に満足するプロダクトに出来るかどうかと言う点がおざなりになってしまいます。もちろん出来る限りユーザーに満足してもらえるような物を考えはしますが、フィージビリティ大丈夫かとか、この予算でこの期間ならここまでかなとかなりがちです。
そんなものを全て捨て去って、徹底的にユーザー目線で設計することに集中して、本当に脳みその全てのシワから血が吹き出てるんじゃないかと思うぐらい四六時中考えまくりました。すると不思議なことにこれまで閃きもしなかったようなことが次から次へと面白いように舞い降りてきて、時間も忘れて議論し続けていました。そうすれば、自分が直接業務をやっていなくても、そのユーザーがどんなことを感じながら業務をしているのかとか、この業務の肝になる部分はどこなのかとか、ユーザーから言われなくても、さらに言えばユーザー自身が気づいていない部分も含めてかなりの部分は想像できるし、そのユーザーのために本当に良いものは作れるんだなぁと言う実感も湧きました。
それ以来、ずっと心がけているのは、解決しようとしている課題やそれに携わっている人たちの目線で徹底的に考えて、本当に解決しなければいけない課題は何かとか、どのような状態になることがユーザー(あるいは仲間も含めて)として最も望ましいのかとかを考えるようになりました。データ分析目線で少し掘り下げて言えば、どんな分析をすればどれだけ意思決定に貢献できるのかとか、どんなインパクトをどんな人たちに与えられたりするのかとかを考えてやっています。
それは今も同じで、システム開発ではなくデータ分析中心に、顧客ではなく自分のチーム向けの仕事にはなりましたが、自分がやっている分析課題はもちろんのこと、他の人が取り組んでいる分析課題などにも思いを馳せて、きっとこの辺とか分析する上でのペインポイントになってるだろうから空き時間でそれを解消できる機能開発しとこうとか、上司から依頼されてない分析なども、これまでのコミュニケーションからきっとこういうところ気にしてるだろうからその辺やっとくかとか、あるいは分析作業でもなんでもないような仕事も含めてやっています。ものによって反応はマチマチですが、3回に1回くらいは上司や同僚たちが目をひん剥いてIt's so nice!とかGreat!とか言ってくれるので、これを繰り返してもっと仕事の精度を上げていきたいと思います。
今後のキャリア
実は私はデータサイエンティストという肩書きで採用していただいていますが、ぶっちゃけて言うと昨今のTwitterの言説などを眺めているととても"データサイエンティスト"などとは言えぬスキルレベルだと思います。
ほとんど満たせていません・・・。統計や機械学習などはこの仕事を始めるまで実務経験もなく、ここ1年半でスクールで勉強した、あるいは本を読みました、というレベルなので、恐らく大学で統計や機械学習を勉強してきている新卒1年生の方がその辺の能力ははるかに上だと思います。
私は以前自分のブログでも触れましたが、アナリティクス・トランスレーターあるいはアナリティクス・ディレクターと呼ばれる役回りが自分の強みを活かしながらデータ分析の仕事にアプローチできるポジションかなと思っています。ドメイン知識を活かしつつ意思決定者と分析の方向性を決め、分析していくようなイメージです。
アナリティクス・トランスレーターの概念が記事中で登場します。
アナリティクス・ディレクターの役回りについて詳説されています。
私は文系出身なのですが、私以外の同僚は全員数学の修士号か博士号を持っていたり、上司はクオンツトレーダー出身の計量分析激強マンなので、仕事を通して色々教えてもらえる環境なのは本当にありがたいことです。この先データサイエンティストとして必要となるスキルは仕事をしながら学んでいければと思います。
とはいえ、特にTwitterでそういう人たちを自分からフォローしているせいではあるのですが、やはり激強Kagglerとか統計や機械学習を勉強されている優秀な学生さんとか見ていると、焦りは感じます。ちなみに見ている限り皆さん私よりも年下ですね。そう言った優秀な方々が例えば5年後10年後にどういった活躍をしていてその時私が何をしているのか想像してみたりすると、居場所あるのかしらとか思いますね。思いますけど、どうしようもないですね。今からがむしゃらになって追いかけてもそういった方々も進化し続けるわけで、常にその時代や状況、環境において自分が出せる付加価値を考えて、それを出し続けられる限り出すしかないのかなと思います。正直、この先どうなるかなど全然わかりません。
それに、この業界は日進月歩で新しい理論や分析手法など次から次へと出てきては、優秀な方々がそれらを実務や趣味の中で試行されたりしているのを見たりしていると、それに比べて自分は何をやっているのだろう・・・みたいな気持ちにもなりがちです。そして追いつけもしないのにちょっとかじってみては消化不良みたいなことを繰り返しています。もちろんそういった物に追いついていくのも大切なのですが、私の場合、仕事でいい成果を出すためには、まずは今目の前に置かれた環境で、自分の頭を使って、最高の成果をあげるためにどうすべきなのか、を徹底的に考えるしかないかなと思っています。これはあくまで私の場合であって、仕事外で最新の理論や分析手法に追いつきながら目の前の仕事においても最高の成果を上げられている方はたくさんいらっしゃると思いますので、そういった方々は本当に尊敬しますし、決して最新の理論や手法を追いかけている方々を皮肉る意図はありません。
統計や機械学習の勉強は続けていこうと思いますが、良くも悪くもそこだけに強いこだわりがあるわけではないので、まずは自分の会社や組織において、広く言えば社会も含めてどんな貢献ができるのかを考えながら仕事をしていこうと思います。
今後はますます人材の流動性は増していき、典型的なロールモデルなども存在しなくなり、会社もチームも個々人のキャリアも多様性の富んだものになっていくと思います。そんな時に自分の支えになってくれるのは自分の歩んできた道しかないので、あまり周囲の人やことにとらわれすぎずに自分の道を踏み固めていこうと思います。
冒頭でキャリアについて考えてみると見得を切った割に、考えてみたらとりとめのない内容になってしまいました。でもこれが今の自分の実態かなと思います。大変長い記事になってしまいましたが、ここまでお付き合いいただきありがとうございました。またしばらくしたらこの続きについて筆をとってみたいと思います。
おまけ
ご参考までに、私がデータ分析の仕事をする上で一番影響を受けた書籍をご紹介しておきます。現滋賀大学データサイエンス学部の河本先生が書かれた『会社を変える分析の力』です。もしご興味持っていただけたら手にとってみてください。
あと、お世話になっていたAIジョブカレという機械学習スクールでインタビューを受けさせていただきました。インタビューを受けたのは半年前になるのですが、その時点で感じていたことや考えていたことなどお話しさせていただいております。