newmo 技術ブログ

技術で地域をカラフルに

Go Conference 2024 にシルバースポンサーとして参加しました!

プロダクト開発に採用しているプログラミング言語Goのカンファレンス「Go Conference 2024」において、newmoはSilverスポンサーとして協賛いたしました。

当日は、CTOの @sowawa 、アーキテクトの yuki.ito、そして 筆者の@yui_tang が参加しました。 5年ぶりにオフライン開催となったGo Conferenceですが、多くの参加者が朝早くから集まり、1日を通して盛り上がりを見せていました!

創業間もないnewmoですが、幸運なことにブース出展の機会を得ることができました。 多くの方々に、バックエンドアーキテクチャや事業について興味を持っていただく貴重な機会となりました。ブースにお越しいただいた皆様、ありがとうございました!

newmoブース

yuki.itoによるライブコーディングでは、アーキテクチャの説明やデバッガーを使って高速に開発する実演を行い、多くの方の目に留まりお話しさせていただきました。 より詳細な内容は、7月にシカゴで行われるGopherConと、その後開催予定のrecapイベントにて発表予定ですので、お楽しみに!

ブースでは、ロゴステッカーの他に、オリジナルブラックサンダーとGoのデバッガーであるDelveのチートシートになるクリアファイルを配布いたしました。

newmoノベルティ
Delveチートシートになるクリアファイル
ブースにてクリアファイルを持って記念撮影する来場者(掲載許可を頂いています
若干数残っておりますので、ご興味のある方はぜひnewmo Beer Bashにお越しください🍻

Go Conference 2024にSilverスポンサーとして協賛できたことは、newmoとして技術コミュニティに初めて接する機会でもあり、心より感謝しております。 今後もnewmoは、Goをはじめとするテックコミュニティへの貢献を続けてまいります。


newmo ではエンジニアを積極的に採用中です!

興味があれば DM やカジュアル面談でもお気軽に連絡ください〜

newmo株式会社はGo Conference 2024にてスポンサーブースを出します!

こんにちは、newmo 株式会社に所属しているソフトウェアエンジニアのyui_tangです。

newmoは、Go Conference 2024にSilverスポンサーとして協賛します!

2024年1月に創業したばかりの弊社が、初めて技術カンファレンスへ協賛出来ることを大変嬉しく思います。

gocon.jp

newmoからは、CTOのsowawa・アーキテクトの伊藤とわたしの3名が参加を予定しています。

出来たばかりのnewmo Tシャツを着てブースでお待ちしておりますので、ぜひお越しください。

newmoロゴ入りTシャツ
newmo Tシャツ

ブースにて、ライブコーディングや事業・プロダクトの設計についての説明等を行います。

更に、ブースへ来てくれた方々には、便利なチートシート付き特製クリアファイルオリジナルのブラックサンダーをお配りします!

会場で、皆様とお会いできるのを楽しみにしています。


newmo ではエンジニアを積極的に採用中です!

興味があれば DM やカジュアル面談でもお気軽に連絡ください〜

Go + GraphQL による Modular Monolith なシステム設計について発表しました

こんにちは、newmo 株式会社に所属しているアーキテクトの伊藤です。

5/22 に【Go】カンファレンススポンサーブースの集い 2024 〜カウシェ × newmo × メルカリ〜というイベントを開催しました。 このイベントで、筆者からは GraphQL Federation や Go のための GraphQL のコード生成、Modular Monolith によるシステム設計について話しました。

スライドや動画のアーカイブは、次の場所で公開されているので、ぜひご覧ください!

筆者が発表した内容を簡単にまとめると、次の3つのポイントが挙げられます。

  • GraphQL Federation とその採用理由
  • GraphQL のスキーマから Go のコードを生成している仕組み
  • Modular Monolith なシステム設計

GraphQL を採用した理由

newmo ではクライアント(ウェブやモバイルアプリ)からサーバの API を呼び出す際に GraphQL を採用しています。 発表でも触れましたが、GraphQL を採用した理由としては、エコシステムの豊富さや GraphQL Federation の存在が挙げられます。

GraphQL Federation

GraphQL Federation は、複数の GraphQL のグラフを一つにまとめるような仕組みで、具体的な実装としては Apollo Federation を利用しています。複数のシステムの API をまとめる Aggregation レイヤーを自動的に生成して、CI/CD で常に合体したグラフが生成されるので、Aggregation レイヤーのコンポーネントを管理する手間がなくなります。

GraphQL のスキーマから Go のコードを生成している仕組み

GraphQL のスキーマは宣言的なファイルとして管理しています。 newmo では GraphQL の Operation(クライアントが実際に利用する Query や Mutation の定義)も宣言的なファイルとして管理するようにしています。

GraphQL のスキーマからCustom Validationを生成

これによって、GraphQL のスキーマや Operation から Go や TypeScript などのコードを生成することができます。 具体的なコード生成ツールとしては gqlgenGraphQL-Codegen などを利用しています。

これらのコード生成ツールはプラグインとして生成するコードをカスタマイズできるため、newmo ではスキーマに @validateString のような独自の Directive を書いて、スキーマからバリデーションコードを生成しています。

発表では時間の問題で触れることができませんでしたが、スキーマから Fake Server を生成して開発に利用したり、 GraphQL のエラーガイドラインを作成して、対処が画一的なエラーに関してはエラーハンドリングを自動化することも検討しています。

この辺りについては、今後ブログなどで発表していく予定です!

Modular Monolith なシステム設計

Modular Monolith

newmo では、最初からMicroservice でシステムを構築するのではなく、Modular Monolith 形式で開発を進めていこうとしています。

Component という形式でモジュールを定義して、単一のプロセス(コンテナ)で動作するようにし、Component 同士は gRPC 経由でやりとりするような構造にしようとしています。 これによって、少ない工数で初期のシステムを構築しつつ、後から Component をプロセスとしても分離しやすくするといった狙いがあります。

詳細については、スライドや動画も公開しているので、是非ご覧ください〜


このイベントでは、他にも株式会社メルペイの goccy さんと株式会社カウシェの uo さんが gRPC について話されています。 イベントの動画アーカイブも公開されているので、是非ご覧ください!

newmo ではエンジニアを積極的に採用中です!

興味があれば DM やカジュアル面談でもお気軽に連絡ください〜

【Go】カンファレンススポンサーブースの集い 2024 〜カウシェ × newmo × メルカリ〜 を開催します!

こんにちは、newmo 株式会社に所属しているアーキテクトの伊藤です。

newmo は 2024 年 1 月に創業したばかりであるため、ゼロからどのようなアーキテクチャにするかを議論しながら開発を進めています。 これについては、次の記事でも話しているので、興味があればぜひご覧ください!

このように議論しながら、newmo では Go 言語と GraphQL を採用することに決めました。

GraphQL と一言にいっても、GraphQL API を扱う戦略はさまざまな方法があります。 たとえば、Netflix では Redefining API Strategy: Why Netflix Platform Engineering Chose Federated GraphQL | Apollo GraphQL Blog で話されているように、GraphQL APIの扱い方も状況によって変遷していくことが話されています。

5/22 に開催される【Go】カンファレンススポンサーブースの集い 2024 〜カウシェ × newmo × メルカリ〜 では、なぜ newmo で GraphQL と Go を選択したのか、その理由や現在考えているアーキテクチャについてお話します!

【Go】カンファレンススポンサーブースの集い 2024 〜カウシェ × newmo × メルカリ〜

オンラインでの開催になるので、是非お気軽にご参加いただければと思います。 ご参加いただける方は、イベントページからオンラインで申し込みいただければと思います〜

今後、当ブログで Go 言語や GraphQL についても書いていく予定なので、是非読者登録やX(Twitter)/RSSでフォローしていただけると嬉しいです!

それでは、5/22 にお会いできることを楽しみにしています!


newmo ではエンジニアを積極的に採用中です!

興味があれば DM やカジュアル面談でもお気軽に連絡ください〜

🚗 newmo の技術ブログをはじめます 🚕

newmoのCTOのsowawaです。はじめまして〜🚕 🚗

まず、最初にnewmoについて話したいと思います。

newmoはタクシーとライドシェアの会社として2024年に設立されました。 「newmo」は新しいモビリティの会社という意味で、new mobilityからnewmoと名づけました。

newmoでは、移動の問題を解決してみんなが自由に移動できる社会を作りたいと思っています。特に地域社会は移動に課題を抱えるところも多くなってきていて、好きなときに好きなところに行くことが難しいということも少なくありません。newmoではそういった課題を解決して、できるだけ多くの人が好きなときに好きなところに行けるようにできるといいなと思っています。同時に、地域で暮らす人たちが地域の交通の担い手として地域社会に貢献できるようにしたいと思っています。

そんな想いを込めてnewmoのミッションは

移動で地域を

とすることに決めました。

newmoでこれから取り組むこと

newmoは、C2CだけでなくB2CやB2Bにも取り組むことになります。newmoでは地域交通の責任を担うために、タクシーの事業にも同時に取り組んでいくので、ライドシェアだけでなくタクシー会社向けにB2Bのサービスを提供したり、タクシー事業としてB2Cのサービスも提供したりすることになります。そういう意味では交通に関わる様々なステークホルダーと一緒に多面的なプロダクトを作ることになると思っています。

技術的にも様々なテーマを扱うことになるでしょう。タクシーやライドシェアを配車していくためには、経路問題を解く必要があることはご想像の通りです。経路問題自体は、アルゴリズムとしてはすでに解法の示されている問題ではありますが、道路状況やお客様とドライバーの位置関係などの動的に変わるパラメータの中でどの車を誰に配車すれば良いのかというのはそれなりに難しい問題になると想像しています。多対多のマッチングを刻々と短い持ち時間で処理し続けるためにはリアルタイムのデータ処理と並列処理の組み合わせによって実現することになるでしょう。また将来的に需給の状況によって価格の変動を動的におこなうことが認められれば、需給と価格のパラメータをさらに追加してマッチングを行う必要も出てくるだろうと考えています。

それ以外にも地図データをどう作っていくのか、地点に関する情報の検索や実車データとの連携など技術的な面白さにあふれたテーマがいくつもあります。徐々にデータを集めることができればデータの利活用に生成AIを使うアイデアも試してみたいと思っています。

安心安全のための取り組みも忘れてはいけません。ライドシェアに対する漠然とした不安を仕組みとテクノロジーで乗り越えさせたいです。ライドシェアで当てはまることはタクシーにも当てはまることが多いはずなので、作った仕組みやテクノロジーを既存のタクシーにも良い意味で還元できると良いと思っています。。

アーキテクチャ

将来的にはマイクロサービス化することも念頭に置きつつ、まずはモジュラーモノリスでサービス開発を始めようと思っています。クライアントやサーバ間の通信には、GraphQLとgRPCなどデータ型を持つスキーマを用いて、静的型付け言語とスキーマベースによるコードの自動生成を積極的に用いたいと考えています。また開発における生成AIによる生産性向上にも取り組みたいと思っています。そのためには仕様やドキュメントを整備することもとても重要になると思います。

今後の展望

まだ何もないスタートアップなのでまずはクラウドを使ってサービスを立ち上げたいと思っています。SaaSのサービスやパートナーにも依存してスピードを重視して立ち上げる一方で、中長期では配車の際にETA(Estimated Time of Arrival)をすべて計算せずにモデル化することで計算コストを劇的に低下しつつも最適なマッチングができるようにしたいと考えています。またアルゴリズムを検証するためのシミュレータの開発などにも取り組みたいと思っています。

途中でも生成AIの話に触れましたが、このままAIの進化が進むと仮定すると汎用AIによる汎用ロボットの制御が見えてくる可能性もあると思っています。それは、おそらく汎用AIで車の運転すらできる未来が訪れることを意味するのだと思います。まだ先の話に聞こえるかもしれませんが、「移動」の会社として、様々なAIによってもたらされる自動運転とは無関係ではいられないのでしょう。

最近のnewmoの様子

手始めにみんなで運行管理者講習を受けに行ったり、京都にオフィスを作ったり、開発以外にもにぎやかな日々を送っています。

それでは

まだ記事では出せないような内容や固まっていることはBeer Bashでお話しています。 note.com

一緒に働いてくれる方も募集しています。一緒に hrmos.co