Scala Conference in Japan 2013でのスライドを公開しました

Scala Conference in Japan 2013で発表させていただいた「使ってわかったScalaのここがダメ!Play2によるシステム開発事例」のセッションで使用したスライドを公開しました。

海外の方も参加されるとのことでスライドは頑張って英語で作ってみました。そんなに難しいことは書いてないので意味は伝わるかと思いますが、おかしなとこがあるのはご容赦ください。
基本スライドでネタ出しをして、要点は口頭で話すという流れだったのでスライドだけ見ても言いたいことがあまり伝わらないかもしれません。いろいろと文句ばかり書いていますが、本当に言いたかったのは個々の問題点がどうこうということではなく、以下の二点です。

  • Scalaは充分に実用的な言語ですが、Javaと同じ感覚で使うと痛い目を見ることもあるので注意して欲しいということ(新しいものを導入して失敗すると悪いイメージを払拭するのが大変なので)
  • Scalaは周辺ツールやフレームワークも含めてまだいろいろと問題もあるけど、むしろだからこそ今はScalaの成長に貢献できる絶好のタイミングでもあるということ

また、うちのチームで開発してGithubで公開しているScalaベースのツールやライブラリがあるのですが、セッションの中ではあまりきちんと紹介できなかったのでここで簡単に紹介させていただきます。

  • solr-scala-client - SolrJをScala向けのインターフェースでラップしたSolrクライアントです。ユーザが手入力したクエリをパーサコンビネータでSolrのクエリに変換できるのが特徴です。
  • scalagen - DBのスキーマからソースコードを自動生成するためのツールです。CLI、sbtプラグインとして動作します。デフォルトではAnormとScalaQueryに対応していますが、カスタマイズも容易です。
  • scalaquery-magic - ScalaQueryを拡張し、scalagenによる自動生成と組み合わせることでコードを書かずにCRUD処理を行うことができるDaoを作ることができるライブラリです。
  • mockquery - mockrunnerのJDBCMockのようにJDBC経由で発行したSQLのアサーションを行うためのテスティングライブラリです。
  • mirage-scala - S2JDBCの2waySQLが使えるScalaベースのORMです。単体のORMとして使用可能ですが、今回は2waySQL部分のみ使用しました。
  • play2-httpsession - play2-war-pluginと組み合わせることでPlay2アプリケーションでサーブレットコンテナのHttpSessionが利用可能になるライブラリです。
  • play2-fastassets - Play2の開発モードの高速化のために画像や外部CSS、JavaScriptファイルを極力ブラウザにキャッシュさせることでリクエストを減らします。
  • play-helpers - Play2の標準ヘルパーが使いにくかったのでシンプルに入力フィールドだけを出力するヘルパーを作ってみました。

これらのツール、ライブラリの多くは実戦投入しています。Scalaの場合、現時点ではこういう細かい部分で自作する必要のあるものがちょこちょこ出てくるわけですが(Javaと比べると設計の自由度が高いので、仮に同種のライブラリが存在しても自分の用途にあっていないというケースもあります)、そこを埋めていくのもScalaの面白いところだと思います。