(おことわり)
この記事は、弊社のOrganization を利用して、社内サービス開発にScala+PlayFrameworkを導入するにあたっての作業内容や試行錯誤を記録した連続投稿になります。
基本的には内容が正しく、かつ読み手に有益な情報になるように配慮しておりますが、どちらかと言えば 社内での情報共有 を主目的としているため、
- まとまりのない情報の羅列
- 正確に検証されていない情報
などを記載することもあります。予めご了承ください。
なぜScalaなのか(社内方針)
弊社ですが、エンジニアチームは普段はPHP、Rubyなどを使って開発をしています。
ぼちぼちエンジニアの採用も本格化し、受託も自社サービスも拡大する中で、PHP,Rubyに次ぐ「第三の開発言語」を増やそうということになりました。主な理由を整理するとこんな感じです。
- 社外向けに、会社の技術的な取り組みのアピール
- フリーランスのエンジニアの方との関わりが多いので、Scalaで開発してます
という事がコミュニケーションの良いきっかけになることも期待。
- フリーランスのエンジニアの方との関わりが多いので、Scalaで開発してます
- 受託開発向けに、クライアントにとっての言語選択肢を増やす
- 特にWebサービスのスタートアップに関わる場合、開発言語の選択は将来の採用に大きく関わると考えています。
- 社内の技術意識の向上、最新技術へのキャッチアップ
- Scalaでの開発経験/興味があるような向上心の高いエンジニアが入社したい!と思ってもらえるようなエンジニアチーム作り。
Scala+PlayFrameworkに期待したいこと(技術面)
平たく言えば、「静的言語と、Rails系フレームワークのWeb開発効率のいいとこ取り」ができれば良いなと思っています。
- 型付き+関数型言語による、安全・堅牢、かつ可読性の高くメンテもしやすいコーディング
- それでいて、Ruby on Railsに近い、スピーディで効率的なWeb開発
- テストコードも書けそうならできるだけ書きたい
開発内容
実際に稼働している自社サービス(PHP5.4+CakePHP2)のリプレース。
とは言ってもフルリプレースをいきなり始めると絶対に終わらないので、管理者向けの新機能など、現行サイトと並行稼働させられるところから始めて、じわじわと移行していくようなイメージです。
社内のScala経験
一切無し。
冗談抜きに経験者ゼロの状態から、無謀にもスタートしました。
技術選定にあたってScalaの言語仕様とかPlayFlameworkの特徴や評判についてはある程度調べていますが、
この記事を書いている時点で、メイン開発担当(@zaramme)は まだ一行もScalaコードを書いたことがありません。
しかもあまり社内リソースが割けないこともあり、実質スカンクワークでの開発になります。
どうなることやら。
(次回)
Scala+PlayFramework 環境選定(Scala,Playのバージョン設定、開発環境やエディタの整備)