SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【Developers Boost】セッションレポート (AD)

Sansanの新規事業はどうやって生まれる? 開発の裏側を支える技術【Developers Boost】

【A-3】新規事業開発を支える技術

  • このエントリーをはてなブックマークに追加

フロントエンドとサーバーサイド、それぞれの技術選定の方針

 フロントエンドの技術としては、React + ReduxやTypeScript、Next.jsなどが採用された。Reactを使用したのは、Eight開発チームで採用実績があるため知見があること、「個人的にVue.jsよりも好き」といった理由が大きかった。TypeScriptを導入したのは、型定義を用いることによる開発の効率化が目的だ。サーバーサイドにはNode.jsが採用された。

 「Node.jsを選んだ理由はいくつかあります。まず、部署内にはRuby on Railsが得意なメンバーが多かったものの、現時点ではGoogle App EngineのStandard EnvironmentでRubyが使えないこと。個人的にRubyの次に得意なのがJavaScriptであること。それから、プロジェクト初期フェーズで少人数チームである間は、メンバーがフロントエンドとサーバーサイドの両方を担当できた方がいいだろうといった判断からです」

 Node.jsを選べば、フロントエンドもサーバーサイドもJavaScriptであることから越境がしやすくなる。フレームワークにはExpressを採用。軽量なフレームワークで、マイクロサービスに向いているという。

 API設計では、書籍『Webを支える技術』やRuby on Railsのルーティングを参考にして、設計方針の策定を実施。APIドキュメントとしては、デファクトスタンダードとなりつつあるSwaggerを用いた。

GraphQLの導入も検討されたものの、「新技術を盛りこみ過ぎるとメンバーの学習コストが大きくなる」との理由から見送られた。
GraphQLの導入も検討されたものの、「新技術を盛りこみ過ぎるとメンバーの学習コストが大きくなる」との理由から見送られた。

 「フロントエンドの実装では、StorybookやRedux、Jestなどを用いました。特にStorybookの導入は成功でした。コンポーネント単位で動作確認をしながら開発できるメリットがあるからです。

 Reduxでは、Actionsとしてtypescript-fsaを使用しています。もともとはredux-actionsを使おうとしましたが、TypeScriptとの相性が悪かったため断念しました。ReducersとしてはImmutable.jsを使っています。Immutable.jsのRecordという機能を使うことで、Reducerの設計をシンプルにできることが利点です。

 また、自動テストのためにJestを用いています。RSpecライクな記法のため、Rubyに慣れた人には馴染みやすく、機能がオールインワンであることも優れています」

 さらにサーバーサイドの実装としては、「コントローラーにSwaggerでAPI定義をし、データベースまわりの処理はモデルで行う」「複雑な処理はモジュールに切り出す」「認証やエラーハンドリングなどはミドルウェアで行う」などの基本方針を採用した。

 最後に総括として「その事業において、何が求められているかを考えること」「(エンジニアとして)技術的に越えてはいけない一線を守ること」「より良い選択のために、日頃の鍛錬を欠かさないこと」の重要さが改めて語られ、セッションは終了した。

お問い合わせ

 Sansan株式会社

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
【Developers Boost】セッションレポート 連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11297 2019/01/22 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング