2017.01.20

【R&Dアーキテクト通信】 第2回 言語やOSの選定について

今回は言語やOSの選定などについて話したいと思います。

Sansan株式会社の歴史的な経緯から、C#のプログラムををVisual Studio上で開発し、WebApiとしてWindows Serverにデプロイするというのが最も基本的な開発スタイルとなっています。他のシステムやAWSの各サービスとの連携部分の開発は基本C#で行っています。

一方、R&Dですので共通化よりも個の力を最大限発揮することが重要になります。C#やWindows OSなどを共通の知識として共有しながらも、基本的にはどんなサーバーOSを選び、どんな言語で書くかは適材適所で考えるとしています。

機械学習のライブラリを使うのでPythonで書いてLinuxサーバーにデプロイする、画像処理のコアなライブラリで速度が求められるのでC++で実装する、使いたい機械学習のライブラリがより良いものがあったのでRで書いてC#上から呼び出すなど、色々な形態のAPIを作っています。

最近はサーバーレスということでAWS Lambdaにもトライしています。一つ一つの成果はwebサービスという形式で提供されるので、言語が違ってもある程度は連携してシステムが組めるので、あまり大きな困りごとはありません。

コードレビューやサーバーでアラートが出た時の対応が多岐にわたるなど、運用上の問題はいろいろありますが、精度やパフォーマンス面が最優先かなと思っています。

R&D研究職の求人にも強い言語の制約は設けていません。とはいえ、ベースはC#ですので、PythonやRだけをずっとやっていた人よりは、C,C++,C#,Javaなどのコンパイルが必要な言語の経験が一定以上はあった方が望ましいかなと思います。