BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Effective Scala - Twitterのベストプラクティス

Effective Scala - Twitterのベストプラクティス

原文(投稿日:2012/02/15)へのリンク

Twitterは、彼らのEffective Scala ガイドをオープンソースにした。ドキュメントは、GitHubにあり、そのGitリポジトリURLは https://github.com/twitter/effectivescala.git. である。ドキュメントは CC-BY 3.0の下でライセンスされる。

Scalaは、Twitterで使われている主要なプログラミング言語の1つで、TwitterのインフラのほとんどがScalaで書かれている。 Effective Scalaガイドは、短いエッセイのシリーズで、Twitter内でScalaを使っていることから学んだ「ベストプラクティス」セットである。TwitterではScalaを使って、主に大容量の分散システムを作っているが、ガイドのほとんどは、他のドメインに当てはまることであろう。

このドキュメントの中核的な考えは、

  • 正しく書いたら、常に読み手のことを考えてください。いつも可読性を大事にしてください。
  • 一般的なコードを書いてください。しかし明快さを犠牲にしてはいけません。
  • 素晴らしいパワーを提供する単純な言語フィーチャを利用しよう。しかし難解なものは避けなさい。
  • Scalaでプログラムしなさい、JavaやHasKellやPythonではありません。
  • 洗練された言語には、複雑な実装が必要です。複雑さが複雑さを生みます。こうして、複雑さは洗練さの代償です。いつも有用性がコストに勝ることを確認してください。

 

Effective Scalaの様々なトピックをここに上げる。目次からの引用である。

  • 書式: 空白、ネーミング、Import、中カッコ、パターンマッチ、コメント
  • 型とジェネリックス:返り値型アノテーション、変位、型エイリアス、暗黙の型変換
  • コレクション:階層、利用法、スタイル、パフォーマンス、Javaのコレクション
  • 並列性: Future、コレクション
  • 制御構造:再帰、return, forループと内包表記、 require と assert
  • 関数型プログラミング:代数データ型(ADT)としてのCaseクラス、Option、パターンマッチ、部分関数、バインディングの分解、遅延評価、名前渡し、flatMap
  • オブジェクト指向プログラミング:依存性注入、trait, 可視性、構造的型付け(structural typing)
  • ガーベッジコレクション
  • Javaとの互換性

 

ガイドは読者がすでにScalaに馴染んでいることを想定している。Scalaの新人用には、Scala Schoolという書き物があり、TwitterプログラマにScalaを紹介する助けとなる、講義のシリーズである。公式のLearning Scala ページがscala-lang.orgwebサイトで利用できる。別の良い入門用としては、Learning Scala in small bitesという小さな例のシリーズがあり、それぞれがScalaの1つか2つの特徴を良く説明している。

Effective Scalaは、生きたドキュメントでTwitterにおける現在の「ベストプラクティス」を反映して、絶えず変わっていく。ユーザーは、Effective Scala issuesページで課題を発行して、ガイドの改善に役立つことができる。

この記事に星をつける

おすすめ度
スタイル

BT