何で作ろうか検討するためにちょっと調べてみた

こんにちは。おいかわです。

弊社のプロダクトの次期バージョン開発を検討しています。
日々、リファクタリングなど進めていますが技術的負債になっている部分も多く、作りなおそうぜって話になってきています。

現在はCakePHPで実装されているのですが、他フレームワークや他言語での開発も検討しています。
そこで、その辺りをさらっとまとめました。

PHP 公式サイト(英語)

言わずと知れた最もメジャーなWeb開発言語。弊社でもWeb系開発はPHPをメインに使ってます。動的型付け言語。

○長所
  • メジャーなだけに技術者も多くリソース確保しやすい。
  • ネット上の情報も豊富だし、フレームワークも選択肢が増えてきました。
  • デプロイが簡単
×短所
  • 型とかエラー処理がいい加減なのが未だに馴染めません。
  • 標準関数がクラスとして提供されていないなど、オブジェクト指向で書くにはまだ完全ではないのでは?
  • Xdebug使えばステップ実行も出来ますが、使うまでがけっこう面倒。
主なフレームワーク
採用しているWebサービス


Hack Hack公式サイト(英語)

Facebookが開発したHHVM(HipHop Virtual Machine)で動作する言語でPHPと互換性があります。オープンソースです。
HHVM公式サイト(英語)

○長所
  • 既存のPHPの資産をそのまま使える。
  • PHPより倍以上速い!らしい。
×短所
  • HTML内に書くことが出来ない。(HTML内に書くとゴチャゴチャしてしまうのでむしろ長所?)
  • Facebookが使用をやめたらどうなるんですかね?
主なフレームワーク
  • PHPのものがそのまま使えるそうです。
採用しているWebサービス


Ruby 公式サイト

国産のオブジェクト指向スクリプト言語フレームワークRuby on Railsが有名。動的型付け言語。

○長所
  • 国産なので日本語資料が豊富!
  • コードが楽しく・綺麗に書けるらしい
  • ライブラリ(gem)が豊富
  • Railsの威力
×短所
  • スクリプト言語なので実行速度は遅い
  • バージョンが上がる毎に記法が増えていくが追い切れないという感想も
主なフレームワーク
採用しているWebサービス
  • クックパッド、nanapi


Python 公式サイト(英語)

Webに限らず様々な分野で使われてる汎用言語です。
誰が書いても同じようなコードになるような設計思想だそうです。動的型付け言語。

○長所
  • 誰が書いても同じようなコードになる=可読性の高さ=保守のしやすさ
  • 豊富なライブラリ
  • Cで書かれているため(主な実装のCPython)パフォーマンスも良い
×短所
  • 最新バージョンは3だが2系からの移行が進んでおらずライブラリが対応していない場合も
主なフレームワーク
採用しているWebサービス


Scala 公式サイト(英語)

標準のJavaプラットフォーム上で動作する 「オブジェクト指向言語関数型言語の概念を結合した」言語

○長所
×短所
  • 習得コストは若干高そう
主なフレームワーク
採用しているWebサービス


Go 公式サイト(英語)

Google様によって開発されている。静的型付け言語。
結構自分でフレームワーク作ってる人も多いです。

○長所
  • Goルーチンという並列処理がある
  • エラー処理を忘れにくい言語設計。go言語では一般的に返り値の二番目にエラーが設定されるので忘れにくいそうです。素晴らしい。
  • LinuxでもMacでもWindowsでもコンパイル可能(クロスコンパイル)
×短所
  • 新しい言語なので実績がまだまだ少ない
  • 技術者も少ない
主なフレームワーク
採用しているWebサービス

C# 公式サイト(MSDN)

Microsoft様が開発した言語。.Netにおける中心的な言語だそうです。静的型付け言語。

○長所
  • Visual Studioによる生産性の高さ
  • .NET Frameworkによる生産性の高さ
  • 弊社内にエンジニアがいっぱいいる!(重要)
×短所
  • WindowsServer+IISに固定される(実際は他の環境でも出来るらしいが、やる意味はあるのか)
  • 普通にやろうとすると、もろもろ有料のためコストはかかる
  • 言語仕様がオープンになったそうですが、やはりMS次第
主なフレームワーク
採用しているWebサービス
  • Stackoverflow、DELL、ZOZOTOWN

Java

今からやるならScalaでいいじゃんってことで割愛

まとめ

自社サービスはどこに一番コストが掛かるかというと、やはり運用・保守だと思うんです。
その点からPythonの誰が書いても同じようなコードになるという思想はとても魅力的です。Goのエラー処理もそうですね。

また、コードのほとんど(View含め)がコンパイル時にチェックされるという点でScalaやGoのコンパイラ言語も良さそうです。
ただTomcatなどAPサーバーが必要なので管理対象が増えるのがめんどい・・・

フレームワークに関してはどの言語を選んでも選択肢が色々あって困ることは無さそうですね。 新しいメンバーが入って来た時のことを考えると情報の転がっているフルスタックフレームワークを選択した方が良さそうですね。



ところで最近、ジョーザーの火力不足を感じています。緑属性は初手から火力アップするアビがスイッチングウィンバック(SSR旧ワムウ)くらいしかなく、それも持ってないため最近の極では雑魚すら1つも撃破出来ないことも多いです。

代わりにメインアタッカーになりつつあるのが、承太郎&イギー(通称:犬太郎)です。
自身のアビに加え勇気の産物、白属性ATKブーストという火力アップ系アビの装備で高火力+遅延を実現しています。

そろそろワールドDIOが実装されると思いますが楽しみですね!