自己紹介
はじめまして。私は普段、メガベンチャーでデータサイエンティストとして働いています。仕事は自社プロダクトの開発なので、Pythonで機械学習パイプラインの実装を行ったり、AIモデルの開発、ABテスト、Business Unitから来るアドホックなデータ分析などを担当しています。
なぜデータサイエンティストがフロントエンド開発を学ぶのか?
私は普段の業務では基本的にPythonを書きます。例えば、機械学習パイプラインの実装、モデル開発からデータ分析まで全てPythonでやります。またデータベースからの集計はSQLやPySparkを使います。
では今更、なぜデータサイエンティストがフロントエンド開発を学ぶのか?
フロントエンド開発というと、UI側であり、開発言語もJavaScriptやTypeScriptです。
通常この部分を担当しているのはソフトウェアエンジニアやデータエンジニアなどの職種の方です。
ではなぜ、フロントエンド開発を学ぼうと思ったかというと、
それは、昨年、知人から受け取った1本のメールが関係しています。
*大意は変えずに文面を少し変えています。
"Tetsuさん、お元気ですか?
(中略)
実は前々から考えていたアイデアがあり、起業したいと思っています。
私はビジネスサイドの人間なので、起業するにあたって、副業的な感じで良いのでテック周りを手伝ってくれませんか?"
なるほど、直感的に、これは大変そうだと感じました。
彼はビジネスサイドの方なので恐らくソフトウェア開発の事はよく分かっていないわけですね。
この誘いにYesというと、開発全般をすべて私の方で請け負う必要がある。
つまり、UIのデザイン、DBの接続、フロントエンド開発もやらないといけない。
どうようしようかな...。
正直少し迷いました。データサイエンティストとしてはそれなりに活躍しており、今からわざわざリスクを冒して、新しいことを学ぶ必要があるのか?
ただ、それと同時に次のようなことも思いました。
・いくつかある選択肢の中で、なぜ自分に声がかかったのか?
・人から起業するから手伝ってほしいと言われるチャンスって人生で何回あるのか?
・確かに大変だが、逆にこれが上手く行ければ、自分でサービスを何でも作れるようになる良い機会では?
人生というのはやはり縁というものが有ります。
そして、何かしらの縁が有って私に声が掛かったのだと考えました。
恐らく、このお誘いが来なければ、人生の中でTypeScriptやReactの勉強をする機会は恐らくなかったでしょう。
人というのはコンフォートゾーンを抜け、ギャップを埋める過程で能力が伸びるものです。
そして、自分からギャップを作るのは簡単ではありません。現職でそれなりに活躍しているのであれば、そんなことをする必要性がありませんから。だから、逆にギャップを作り出すいいチャンスなのではないかと思ったわけです。
また、起業というのはリスクを伴うものです。そのようなリスクを伴う選択に副業でもいいから参加してくれと、私に声をかけてくれたというのも、これは有り難いことです。
そして最後に、サービスを立ち上げるというのは単にソフトウェアを開発すればよいというものではありません。
どんなに良いプロダクトを開発しても、知られなければ、使われなければ、それは事業になりえません。
したがって、マーケティングも勉強する必要があるわけです。
これは教科書的に学べば身に付くものでもありません。
じゃあ、受けてもいいのではないか。
正直な所、この挑戦が上手くいく保証はありませんが、副業的な立ち位置で0から1に挑戦できるというのは中々ない恵まれたチャンスだと思い、今回受けることにしました。
というわけで、フルスタックデータサイエンティスト(?)になるべく、今回、フロントエンド開発にチャレンジしていきたいと思います。
目標について
直近の目標は2026年7月にMVPをリリースする事です。
また今回、ウェブ開発なので、まずはNext.jsを中心とした技術的基礎を固める必要があります。
想定される技術選定:
・言語:TypeScript x Next.js
・BaaS: SupaBase
・Deploy: Vercel
また、今回、作り上げていくのがB2B向けのプラットフォーム型のサービスという事もあり、ある程度最初は網羅的に機能を考える必要があります。この為、
初期:ウォーターフォール型
中盤 ~ MVP以降:アジャイル開発
といったハイブリッド型の開発スタイルにしたいと思っています。
また業務でも使用しているのですがClaude Codeによるスペック駆動開発をしていく予定です。
これからの時代、Claude Codeを使わない開発というのは開発スピード、コードの保守性など、だいたい10倍くらいの生産性の差が付きます。(リアルに)
特に、MCPでPlayWrightを繋げるとClaude Code側でブラウザ操作もできるので、Webアプリケーションのサーバーをローカルで起動 -> ユーザーAとしてログイン -> Web画面の推移 -> ログアウトという一連の動作も自動化でききます。したがって、いくつかのテストケースでシナリオを書けばテストもパラレルかつ自動でできるんですね。便利すぎると思います。
ただ、どういう機能を書かせるか、全体の構成をどうするか、これはまず人がデザインする必要があります。またコードレビューや適切なClaude Codeの管理は必要ですから、Next.jsのコードも自信を持ってレビューできるように実力を付けたいと思っています。
この為、目標としては、
1~1.5ヶ月後:
・サービスのコンセプトを固める
・必要な機能の要件定義
・TypeScript, React, Next.jsの基礎をしっかりと身に付ける。
・開発方向性について知人に合意を取る
~2.5カ月後:
・最低限の機能を盛り込んだ機能の実装
・CI/CDなどWebアプリケーションのUI以外の体制の構築
~3ヶ月後:
・決済やOpenAIなどのAPIも含めた全体のフローの確立
・いくつかのシナリオに基づいてユーザーの使用例をテスト。
~4カ月後:
・TBD
~5カ月後:
・TBD
~6ヵ月後:
・MVPのリリース
このような感じで進められればと思っています。