フロムスクラッチ開発者ブログ

from scratch Engineers' Blog

Techブログ始めます

こんにちは。フロムスクラッチでCTOをしている井戸端といいます。

この度、フロムスクラッチでTechブログを始めることになりました。
フロムスクラッチの持つ技術や開発の様子を紹介していくので、よろしくお願いします。

今日はフロムスクラッチという会社と、その開発組織について簡単に紹介したいと思います。

フロムスクラッチとは

フロムスクラッチは、ビッグデータ×人工知能を主軸に事業を展開するデータテクノロジーカンパニーです。現在は、マーケティングテクノロジー領域におけるソリューションである「b→dash」の開発・提供を中心に事業を展開しています。今後は強みである、データ統合技術、データ高速処理技術、人工知能技術を競争力の源泉とし、様々な産業領域と地域での事業展開を予定しています。 

社名である“フロムスクラッチ”は「常に0から1=新たな価値創造をし続ける」という思いが込められています。ただ単にちょっと便利なモノを作るのではなく、テクノロジーによって世の中のあり方から変革し、価値観そのものを変えるようなサービスを創り出すことを目指しています。

フロムスクラッチの開発組織

フロムスクラッチは東京以外に、福岡、ベトナムに開発の拠点を有しており、エンジニアに加えて、プロダクトマネージャー、UIUXデザイナー、QAなども含めると、60人近い人数が開発に携わっていることになります。2017年よりアジャイル開発の手法の1つであるスクラムをベースとした開発手法を採用しており、約2週間のスプリントを1つの単位として、柔軟に計画を見直しながらスピーディーに開発を進めていくことを意識しています。

エンジニアの種別について

フロムスクラッチでは、フロントエンジニア、サーバーサイドエンジニア...etcのように、エンジニアの種別をはっきりと分けてはいませんが、業務上の役割分担として開発チーム、アーキテクチャチーム、インフラチームの大きく3つに分かれています。

開発チーム
開発チームのエンジニアは実際のプロダクトの開発に専念するエンジニアで、b→dashのアプリケーション毎にチームが分かれています。スプリント毎にプロダクトマネージャーと話し合い、スプリントのゴールを定めて開発を進めていきます。

アーキテクチャチーム
アーキテクチャチームのエンジニアは、新機能のアーキテクチャの設計や、共通機能の実装、ライブラリの開発が主な役割となります。その他、開発チームが実装に悩んだときや、開発チームだけでは解決できない問題が生じた場合に、遊撃的に開発チームに入って問題を突破して開発を進めることも行なっています。

インフラチーム
インフラチームのエンジニアは、サービスのインフラおよび運用監視システムの構築と運用を行います。CIを整備したり、デプロイの仕組みを整えたり、運用や監視の方法を見直したりしながら、如何に効率的に安定したサービスを提供していけるかを追求しています。

フロムスクラッチのエンジニア

フロムスクラッチのエンジニアに求めることは大きく3つあります。

サービスとしての価値を意識すること
フロムスクラッチでは、"ユーザー"と"ビジネス"の観点で自分たちが開発しているサービスの価値を意識するようにしています。いくら技術的に優れていても、利用するユーザーにとって価値あるものでなければ何の意味もありませんし、ビジネス的に優れていなければ世の中に価値を提供し続けていくことができず、世の中に変革をもたらすことができません。"技術"だけでなく、"ユーザー"、"ビジネス"の観点も兼ね備えたエンジニアであることを常に求めています。

フルスタックであること
フロムスクラッチでは前述のとおりエンジニアの技術領域を明確に区別していません。フロントエンドが得意、サーバーサイドが得意など、人によって得意不得意はあれど、基本的に全員何でもやる(できるようになる)ことを前提としています。
b→dashには10近い数のアプリケーションが存在しており、且つ種類としても多様で、アプリケーション毎に採用している技術も異なれば、システムとしての特性も異なるため、求められるものが変わってきます。全員がフルスタックであることで、開発としての効率が良い上、いざとなったらお互いにカバーに入れる為、状況に応じて柔軟な対応を取ることができます。これによって、100人にも満たない人数でこれだけの規模・種類のサービスを素早く開発していくことが可能となっています。
エンジニアにとっては非常に大変ではありますが、"開発すること"ではなく、フロムスクラッチの提唱する、"価値あるものを創り出す"、"世の中に変革をもたらす"というミッションに共感しているメンバーが集まっているため、大変さ以上に「色々なことができて面白い」という思いで日々開発に取組んでいます。

チームで成果が出せること
個人としてハイパフォーマンスを出すこと以上に、チームとして成果が出せることを重視しています。開発はチームスポーツのようなものだと思っており、1人の優れたプレーヤーがいても、プレーヤー同士がうまく連携しなくても勝つことができません。個人として成果を出しつつ、チームでも成果を残せる人間を評価しています。 その為には、"ミッション理解"、"コミュニケーション力"が必須だと考えています。まずはチームのミッションをしっかりと理解し、その為に自分に何ができるのかを考えられること。更にお互いの役割を理解し適切な情報伝達を通して、相互に連携して動けること。これらができて初めてチームとして成果を出すことができると考えています。

最後に

今回は最初ということでフロムスクラッチの組織的な側面を紹介しましたが、今後は技術的な取り組みやデータマーケティングについての知見をこのブログを通して紹介していけたらいいなと思っています。
技術的な面では、Javascript、Ruby、Scala、Java、Go等、フロムスクラッチで採用している言語に関してや、BigData処理の要であるHadoop、Spark、Hive、Presto等といった分散処理技術、その他、ストリーミング技術、人工知能技術についても紹介していく予定です。乞うご期待ください!