Fringe81社長日記Fringe81 CEO's Blog

iogous*mark開発はscalaを採用!~よりアジャイルへ!~

Fringe81、技術の東山です。
また今回も、技術ネタを書かせていただきます。

=================================================================
●きっかけ
=================================================================

最初は代表の投稿を楽しみにしている読者のことも考え、いろいろ遠慮?とかどう書けば
いいかな?とか考えたりもしていましたが、邪魔になったら独立しればいいだけであれ
これ考える止めて、とにかく書きたいことを書いていきます、ハイ。

 

っで本題ですが、ここ数年開発をしていて思っていたことにようやく着手することが
出来るようになったのでその話です。

 

弊社は基本Javaで開発していて、これからもよほど大きな流れが来ない限り大きく
変えるつもりはありませんが、やはり、時々こう思うことがある。

 

「これくらいの機能でそんなに工数かかるんだ。
もっと早く作れないかな?」

 

自分はエンジニアであり、現在は会社の経営を執行する執行役員でもあるため、
早く作って売りたい!!という気持ちも、早く作ってますが、これ以上早くは。。。
という両方の気持ちが分かります。

このブログの読者の方々も同じ思いしてませんか?
(少し同調を図ってみる。。)

 

それ故、何よりもそして誰よりもこの問題を解決したいとずーーーっと思っていました。

 

=================================================================
●取り組み、方針
=================================================================

ということで、iogous*markのβ機能は一旦作り終え、これからメジャーバージョンへ
向けて仕上げに向かうこの戦略期間に、うまくこの課題解決も実行しよう!

と思いこの際、開発環境も「よりアジャイルへ!」シフトして行きたいと考え始めたのが
昨年の11月ごろ。。

★まずは、言語を変える、開発環境を変える
ビジネスの現場で、この決断は大きいです。

とかいろいろ書くと長くなるので、サッサと本題に入ります。
目的はシンプルに2つ。

 

  • アジャイルに開発できる

エンタープライズ感やパフォーマンスは志向として無くはないですが、
それはまたあとでJavaで書き換えるとか、事業が成功すればなんとでもなると考えています。
Yammerがいまやってますねあっ、弊社も今年からYammerを全社導入してます!!

とにかく、早く作る リリースする、改善する、そしてまた早く作るということを
どんどんやれる社内環境を作りたいと考えています。

 

  • チームで開発できる

言語だけに依存する話ではありませんが、あまり難しすぎても、習得が難しく逆にスピードが
鈍りますし、最低限チームで開発出来ればという程度。

 

★最終候補はrubyとscala
他にも新し目だと、ClojureKotliXTend(Eclipse)とか他にもいろいろありますが、
新しすぎても習得が難しかったり不安定だったりで最終的には、無い感じで。

 

・scala

【メリット】

  • Javaよりもはるかに簡潔に書ける。
  • 静的な型チェック(Javaよりもある意味厳密)をしっかりやってくれるためチーム開発には向いている
  • Javaとの親和性が高いため、徐々に移行できる。
  • 並列処理のサポートをしている
  • 関数型の中ではサポートは厚め

 

【デメリット】

  • 技術者の数が少ない
  • ということは、採用も困難である
  • ドキュメントがまだまだ少ない
  • 書き方によってはパフォーマンスが著しく低下する(習熟が必要)
  • 巷では、複雑な言語として扱われている?
  • メジャーリリースは後方互換性がなくビルドにコストがかかる?

・ruby

【メリット】

  • 日本では熱い
  • たくさんの書籍が出ており、初心者にもとっつきやすい
  • テキスト処理に強い
  • 並列処理のサポートをしている
  • 生産性と柔軟性が非常に高い

 

【デメリット】

  • 動的型のためチーム開発に最適という訳ではない(動かすまでエラーが出るかどうか分からないため)
  • パフォーマンスの観点でまだエンタープライズ向けでは無い
  • いまのとこですが、GUIアプリの開発に弱い

 

★最終的に決めたのは?

やっぱりこの選択には正解はなく、とにかく進めてみるという方針で、

  • Javaとの親和性(書き換え含め)
  • 多少触った経験者がいる
  • 興味もある
  • 情報が少ないということは逆にチャンスでもある

と勝手に思い、scalaを選択することにしました。

 

=================================================================
●今後について
=================================================================
いまはフレームワーク選定を進めていて、まずはそれらを使ってみるところから始めよう
と思います。そして、来期は自社でもっと洗練して、フレームワーク開発にも取り組める
準備も進めたいと考えています。

 

とういことで、今回は以上となります。

今後は以下のことを書いていこうと思っています。

  • 今回の続き(フレームワーク、環境構築、実際使ってみてどうだとかあーだとか。)
  • 新機能の話(着々と企んでいますので、後々機会を作ってお話しします。。)⇒少しはバラしていいですよね、mark事業部長の佐藤さん!
  • アトリビューションの分析の現場、AWSのEMRで分析してみよう!
  • アドテクな話も。

 

 

Author : yuzuru