シェアウィズの文化とScala

はじめまして。
8月末にシェアウィズに入社しました、エンジニアの国平です。

以前の会社では、ソーシャルゲームのサーバエンジニアを担当していました。

現在はその経験を活かしつつ、シェアウィズ内で新規プロジェクトのサーバサイドの開発を担当しています。
この担当プロジェクトがどういったものかは、まだご紹介できないのですが、鋭意製作進行中となっています。

今回の新規プロジェクトでは、サーバサイドはScala/PlayFramework、フロントエンドのスマートフォンアプリは JavaScript/ReactNative を採用しています。

シェアウィズはこれまで、 Ruby/Ruby on Rails で開発を行ってきました。

今回の新規プロジェクトでScala採用に踏み切ったもっとも大きな理由は、私が元々Scalaエンジニアだったということがあります。
とはいえ、会社として、 チームで取り組む プロジェクトに置いて、自分が得意だからという理由だけで新規技術を採用するのにはためらいがありました。

しかし、いろいろと検討した結果、サーバサイドにScalaを採用することに決定しました。

いくつかの観点で検討を行いましたが、今回はシェアウィズの文化とScalaのマッチングについてお話したいと思います。

scala-logo-red-spiral-dark.png

シェアウィズの文化

採用技術の候補はいくつか上がっていて、私が推すScala以外にも、従来通りRubyで開発する案や、Go言語、Javaでの開発を行うという案もありました。
私はこれらの候補を比較検討した際の観点の一つに、シェアウィズの文化とマッチするか、という観点を含めました。

シェアウィズは ShareWisACTという学びを支援するサービスを提供している会社です。

当然の様に 学び というキーワードを重視していて、それは会社メンバー自身の学びについても同様に考えています。

社内のメンバーは自身の成長に対して積極的ですし、その様に振る舞うことが期待されています。

そこで、その文化とマッチするかどうか、という観点として新しい学びがあるか、という点を検討項目に加えました。

Scalaと学び

最も学びがある言語はどれか、という観点で候補の各言語を検討した場合、Scalaがもっとも最適だと考えました。
Scalaを利用することで、今後重要なプログラミングの考え方が身につくと考えています。
特に私が重視した考えは以下のとおりです。

  • 関数型プログラミング
  • リアクティブプログラミング
  • 並列/平行プログラミング
  • イミュータブル

イミュータブルな変数の扱いについては、関数型の範疇ではあるのですが、関数型プログラミングを行わない場合にもメリットはあるので、切り出して考えました。

シェアウィズとScala

シェアウィズでは現在進行中の新規プロジェクトではScalaを採用していますが、Rubyを捨てるという考えはありませんし、他の言語を利用しないというわけではありません。

シェアウィズのエンジニアとして、様々なプログラミングに関する知識・考え方を身につけることで、よりサービスのブラッシュアップしていくことができると考えています。
会社メンバーも増えたので、さらに成長していくシェアウィズの様子を今後もお伝えしていきたいと思います。

最後に

少しだけ宣伝です。

今回、文化とのマッチングの観点からScalaを採用した理由をお話しました。

しかし、言語の検討にあたって、冒頭で述べたとおり、様々な観点をもって比較検討を行いました。

その技術選定の経緯を、私の地元岡山で開催される合同勉強会 in 大都会岡山 -2015 Winter- にてご紹介する予定です。

ご興味がある方、ご都合の合う方はぜひご参加ください。