今、Fintechスタートアップを始める時にどんな言語を選ぶべきか?

More than 3 years have passed since last update.

現在、Fintech系のスタートアップを始めるにあたって、以下の言語で選定を迷っている。


フロントエンド(これは決定済み)


  • Reactjs

  • ReactNative

  • redux


バックエンド


  • Node.js

  • Golang

  • Elixir (Phoenix)

  • Ruby (RoR)

  • Python

  • PHP


どんなプロジェクトか?


  • 会計に関する業務オートメーションサービス

  • 企業向けとそこの従業員さん向けのサイトとアプリが必要。

  • 細かな設定や20種類のレポートページ、情報ダウンロード、データ登録、データ編集がある。

  • アクセスは、契約した企業に限定され、同時アクセスは、1000ぐらいを想定しておけば問題ない。

  • 会計に関するビジネスロジックには絶対にバグを出せない。

  • 長く続けていくプロジェクトなので、今後、優位性のある言語を選びたい


Node.js


採用すべき理由


  • 僕が今最も書ける言語

  • npmが本当にすごい

  • 構成がシンプル

  • 結構早い

  • フロントとバックエンドの知識を共有できる

  • WEBに情報が多い

  • javascriptの文法を知っているプログラマは多い


採用すべきでない理由


  • 安定的に動かす仕組みが弱い(シングルスレッド・エラー処理・非同期)

  • バグのないコードが書きづらい

  • 非同期が多すぎて、読みづらい、バグが出やすい

  • co + Promise + yield はいいが学習が必要


PHP


採用すべき理由


  • 僕が2番目に書ける言語

  • リクエストごとにコードを一から読むやり方は、問題が少なくて楽

  • プログラマの採用がしやすい

  • WEBに情報が多い


採用すべきでない理由


  • ライブラリ関係が微妙

  • 速くない

  • 文法が良くない

  • 今後、大きな発展が望めない

  • 書いていてつまらない

  • テスト環境を作るのが、他と比べてめんどくさい

  • コードが長くなる

  • 強固なコードが書けるわけではない

  • エラー処理が優れていない

  • 非同期処理がやりづらい


Ruby


採用すべき理由


  • RoRが使いやすい

  • 文法がわかりやすい

  • 書いていて楽しい

  • Gemが充実している

  • 採用もそこそこしやすい

  • テストが組み込まれており、導入しやすい

  • WEBに情報が多い


採用すべきでない理由


  • 速くない

  • 強固なコードが書けるわけではない

  • エラー処理が優れていない

  • 非同期処理がやりづらい


Python


採用すべき理由


  • コードが見易い

  • 分析系のライブラリが多くある

  • コンパイルシステムがある


採用すべきでない理由


  • 速くない

  • 強固なコードが書けるわけではない

  • エラー処理が優れていない

  • 非同期処理がやりづらい


Golang


採用すべき理由


  • かなり速い

  • 型がある

  • 文法が単純で学習コストが低い

  • 生産性が低くない

  • ライブラリが充実してきている

  • 非同期処理がやりやすい

  • CPUやメモリを使う処理でも低コストにできる

  • go fmtがあり、コードが統一できる

  • テストが組み込まれており、導入しやすい

  • WEBに情報が多い


採用すべきでない理由


  • スクリプト言語に比べて生産性が落ちる

  • 文法が少ないせいで冗長なコードになりがち


Elixir


採用すべき理由


  • かなり速い

  • Phoenixが使いやすい

  • 書いていて楽しい

  • Mixがある

  • テストが組み込まれており、導入しやすい

  • 関数型、ガード、パターンマッチ、パイプ演算子により安全なコードが書きやすい

  • 軽量プロセスにより、安全にエラー処理ができ、エラーに対処しやすい

  • ホットスワップ機能により、ゼロタイムデプロイがしやすい


採用すべきでない理由


  • 採用がしにくい

  • 情報が少ない

  • 関数型なので、新規概念が多く、学習コストが高い

  • ライブラリが少ない

  • 人気が出るかわからない