追記:Twitterで、「それって、言語マニアにしかできない技のような気が」という指摘を受けました。自分としては一般的に適用可能な話だと思っていますが、あるいは自分の感性が著しくずれているのかもしれません。その辺承知の上でお読みください。 Scalaは習得が難しい言語だ、とよく言われます。また、実際問題として、Scalaの言語仕様の全体はそれなりに複雑でもあります。しかし、それはたとえばJavaでも言語仕様の全体像を把握するのは難しい話であり、Scalaに限った話ではありません。にも関わらず、Scalaの習得が難しいとよく言われるのはプログラミング言語の学習モデルが誤っているからではないかと最近思うようになりました。そこで、Scala(や他の言語も含めて)のコストを下げるために必要な心得についてちょっと書いてみます。 Scalaはオブジェクト指向言語である これは、Scalaは関数型プログ
Scalaは、オブジェクト指向と関数型の特徴を兼備するプログラミング言語です。簡潔で柔軟性の高いコーディングが行えるため、高く評価されています。採用例としては、国内ならニコニコ動画やChatwork、海外ならTwitterやLinkedIn、Foursquareといった大規模なサービスが挙げられます。 Scala関連の記事は徐々に増加していますが、人気が高いJavaなどのプログラミング言語と比較するとまだまだ情報は少ないです。そこで本記事では、これからScalaを学習する方の参考になる記事やサイト、スライドをまとめて紹介します。「Scalaに興味があるけど、情報が少なくて勉強しにくい」という方は、ぜひ参考にしてください。 また、Scalaエンジニアの仕事内容、年収、将来性などに興味をお持ちの方は、以下の記事もご覧ください。 関連記事 : Scalaエンジニアの年収|人気や将来性、入門時に学
春なので4年前くらいにコップ本の初版を読んで以来の Scala を書きます。 Scalaスケーラブルプログラミング第2版 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘出版社/メーカー: インプレスジャパン発売日: 2011/09/27メディア: 単行本(ソフトカバー)購入: 12人 クリック: 235回この商品を含むブログ (46件) を見る Vim vim-scala ensime-vim syntastic vim-scala を入れて構文ハイライトなどを手に入れます。 syntastic syntastic は後述する vim-ensime が syntastic のコマンドを呼んでおり、インストールしていないとエラーが出るので導入しました。 (もともと syntastic を使っていたのですが、非同期実行ができな
僕はこれまでまともに学習したプログラミング言語がPerlとJavaScriptしかなくて、静的言語的パラダイムや関数型パラダイムは概念は知っているものの、それがどう役に立つのか、逆にどういう面で課題がありどのように対処されているのか、などといったことを知らなかった。知らなくてもまあ仕事はPerlとJSでやっているので問題ない。しかしすでにこれらの言語から得られる概念的な知識の吸収の速度が鈍化してきていて、このままではエンジニアとしてまずいのではないかという危惧感があった。 そこで静的言語であり、関数型言語であり、また社内でも使われ始めているためサンプルコードがあるScalaの学習をすることにした。 学習するにあたって困ったことは、どういうドキュメントを読み、どのように実践するとScalaの概観をつかめるか分からないということだった。そこで今回は自分の経験を踏まえて、このように入門していくと
こんにちは、アプリケーションエンジニアの id:pokutuna です。 「はてな教科書」は、はてなで Web 開発に携わるエンジニアのために作られた1週間で Web アプリケーション開発の基本を身につけるための教科書です。はてなサマーインターンシップや、入社時研修に利用されています。2012年から GitHub 上で公開しており、どなたでも読むことができます。 はてなでは継続的に教科書を更新していますが、特に毎年のインターンの講義内容をフィードバックしています。今回の更新では、新しくはじまったScalaとSwiftのコースで利用した教科書を追加しました。アプリケーションの学習や研修題材としてどうぞご利用ください。 Scala の教科書を追加しました 今年のインターンでは Mackerel の開発に取り組む 「クラウドサーバ管理システムコース」コースが開催されました。去年までのインターンで
少しでも高く車を売りたい。そして申込みをスムーズに行うためにも 車買取の一括査定サービスはとても便利です。 複数の業者へ一斉に中古車査定を依頼するのですが、交渉には少し注意が必要です。 一括査定からの申込みなので、業者も始めから競争相手がいることは知っています。 業者としては少しでも低い査定額で早く決めてしまいたいもの。 他の業者が来る前に、決断させるような交渉を進めます。 「今決めるなら、プラス10万円上げます」というような上乗せした査定額を 提示することもあります。思わず決めたくなりますが、冷静に考えてみると 最初からプラス10万円の提示ができたはずです。このやり方に誠意を感じますか? それでも決めてしまうか、他の業者を待つかはご自身次第になりますが、 このような交渉術はよくあることです。頭に入れておくと良いですね。 高額な査定額を探すためには、査定を依頼した車買取業者の金額がすべて
こんにちは、 今回は個人的に注目しているfinagleとthriftを使って簡単なmicro-servicesの作成を行うチュートリアルを紹介します。 finagleについてはseratchさんの翻訳、Scalaのmicro services事例はokapiesさんのエントリが詳しいと思います。 題材 日本語も検索できる全文検索サービスを作ります。POSTでデータを入れて、GETでヒットしたドキュメントを表示するといった簡単な仕様です。 twitterのscalaチュートリアルにsearchbird というfinagleとthriftを使って検索エンジンを作るチュートリアルがありました。 searchbirdは更新されておらず動かない+古いということでもとに紹介したいと思います。 また、micro-servicesっぽい構成にするために無理矢理ですが、3つのサーバに分けました。 キャッシュ
Use case of Scala Finagle in SmartNews, Inc.Read less
ScalaのWebフレームワーク事情 2015年版 - たけぞう瀕死ブログ Scala界隈のWebフレームワークやJsonライブラリは良くも悪くも混沌を極めている(?)わけですが、それにしても竹添さんが紹介してるやつだけでは個人的に不公平感というか、混沌としている感が全然伝わらないと思ったので、全部に詳しい訳ではいですが、自分なりに現状を書きたくなったので紹介しようと思います。 どうせ全部を本当に知り尽くしている人なんでいないので、これはこれで不公平というか偏った見方にもなってるかもしれませんが、そんなこと言ってたらこういう記事をいつまで経っても書けないので、思い切って書くことにしました。 いつもの注意書きですが、あくまでこれ書いてる2015年10月現在の状況であり、1年程度経過しただけで状況は劇的に変化する可能性あるので、ご了承ください。 そもそも、あまりこういうの書きたくないのは、わり
ScalaのWebフレームワークについて、昨年某所で書いた記事をアップデートしてみました。マイクロサービスが流行ってきたり、Playは2.4になっていろいろ変わったり、ScalaのライブラリやフレームワークもFutureやモナドを活用したものが増えてきたり等々、この一年でScala界隈のWeb開発事情もいろいろと変化してきています。 Play2 出たばかりの頃はPlay 1.x系でできたことができなかったり、バグだらけだったりでコミュニティでも暴動が起きそうになったものですが、喉元すぎればなんとやら、いまでも使いにくい部分も多いのですが、Typesafe社のお墨付きということもあり、なんだかんだでデファクトスタンダードの位置を確立しているのではないかと思います。 ユーザ数が多いだけあり、プラグインや周辺ライブラリ、Web上での情報等も豊富です。 ただ、Play 2.4でGuiceを使ったD
はじめに sprayってなあに? sprayはscalaのwebフレームワークです。 「akkaベースで速くて軽いぜ」と唱っています。 http://spray.io/ sprayのライブラリ sprayはいくつかのライブラリで構成されています。 sprayのドキュメントに詳しい説明があります。 webサービスを作るのに、全てを使う必要はありません。 自分の作りたいものにフィットしたライブラリを適宜使います。 spray-cachingAkkaのFutureと concurrentlinkedhashmap を使った軽くて高速なインメモリ・キャッシュを提供 spray-canspray-ioをベースとした、低次元&低オーバーヘッドなハイ・パフォーマンスなHTTPサーバとクライアントを提供 (完全非同期、ノンブロッキング) spray-client高次元HTTPクライアントを提供。ベースはs
短い中にいろいろなエッセンスが詰まったよいサンプルだと思ったので、id:noire722さん(@noire722)が書いた「HTMLスクレイピング in Scala」を、俺流に書き直してみました。 HTMLスクレイピング in Scala その2 - cignoir の日記 書き直す過程でどういう考えで修正したかを解説します。 第1段階 URLからList[String]を取得する関数を修正 まず、getSourceを見てみました。 def getSource(url: String, toParse: Boolean): List[String] = { var src = Source.fromURL(url, "ISO-8859-1").getLines.toList var charset: String = null val regex = new Regex("""charse
Scala School の抄訳と原文で説明があまりない点を少し補足しています。 http://twitter.github.com/scala_school/index.html Scala School 意訳(Basics) Scala School 意訳(Basics continued) Scala School 意訳(Collections) Scala School 意訳(Pattern matching & functional composition) Scala School 意訳(Type & polymorphism basics) Scala School 意訳(Advanced types) Scala School 意訳(More collections) Scala School 意訳(Testing with specs) Scala School 意訳(C
はじめに 人によって様々な書き方ができてしまうのがScala。 本記事では、階乗を求めるfac関数を例に、いくつかの興味深いプログラミングスタイルを紹介します。 以下のコードは、REPLで:pasteすることで、簡単に動作を確認できます。 手続きプログラミング 破壊的操作をためらわない男らしいプログラミングスタイル。 def fac(n: Int) = { var result = 1 for (i <- 1 to n) { result *= i } result } 再帰で書くより速い(はず)です。 普通の再帰 初学者泣かせの再帰スタイル。 def fac(n: Int): Int = if (n == 0) 1 else n * fac(n - 1) // 再帰呼び出しの外側に * による演算がある このように書くとスタックをどんどん消費するので、後述する末尾再帰を使ったほうがいいで
Scalaの勉強をしたかったので読んだ。 Scalaスケーラブルプログラミング第2版 作者:Martin Odersky,Lex Spoon,Bill VennersインプレスAmazon この本はScalaの利用について、かなり詳しく書かれている本。Scalaの使い方にとどまらず、Scalaの内部についても触れているので、どういう仕組みで動いているかについても知ることが出来る。ただし、そのためにけっこう読むのに苦労するので、Scalaをとりあえず入門しようという用途には向かなそうだった。なんとなくわかりづらい理由はScalaの使い方と内部実装と、例に上がっているアルゴリズムの理論と、型言語の理論の説明が混ざってるからだと思う。 さらっと流し読みしたけど面白いところも多かった。例えば 演算子はメソッド呼び出しにマッピングされ、全てがメソッド呼び出しとして扱われる forに書かれた内容が、実
Scalaの型システムが先進的であることは、皆さんもご存じのことかと思います。この投稿では、Scalaの型システムのみを使った クイックソート アルゴリズムの実装方法をご紹介したいと思います。なお、ここで紹介するデモの完全なコードは こちら をご覧ください。 自然数 まずは準備から。ソートアルゴリズムを実装するには、ソートする対象が必要ですよね。ここでは自然数を用います。もちろん、Scalaの型システムには利用可能な自然数はありません。そんなわけで、全ての自然数の型を作る必要があります。 型を無限に作るというのは、恐らく時間の浪費になるでしょうから、ここはもう少し賢い手を考えます。そう、数学を使いましょう。 ペアノの公理 ペアノの公理とは、自然数を形式的に定義するためのシンプルな方法のことです。 0 は特別なものとする。 0 は自然数である。 全ての自然数 n には、それに続くもう1つ別の
初日っぽく主に環境構築など導入部分について取り上げていきます。 Scalaに少し興味はあるけどまだやったことない!といった方に読んでいただけたら嬉しいです。 Scalaを使える状態にしてみる インストール 2つの方法を挙げてみます。 筆者は以下をMac OS X Mavericksで試しています。環境に応じて適宜読み替えてください。 2013.12.1現在の最新Scalaのバージョンは2.10.3です。 Homebrew Macの方はこれが一番楽かと思います。 その他のパッケージ管理ソフト(port、apt-get、yum)でも同じようにinstallできます。 但し最新のScalaではない可能性があるのでその点は注意してください。 公式サイトからダウンロード パッケージ管理ソフトに頼らない方、確実に最新バージョンを使いたい方はこちらの方法です。 まずはScalaの公式サイトから圧縮ファイ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く