English version is here: http://www.slideshare.net/seratch/jjug-ccc-2014springeng http://www.java-users.jp/?page_id=1048#R2-4
2. 自己紹介 名前 い な 伊奈 りんたろう 林太郎 (id:tarao @oarat) 2008-08 はてなインターン 2008-10 はてなアルバイト (ブックマークチーム) 2010-04 日本学術振興会 特別研究員 (DC1) 2013-04 はてな正社員 2013-12 ブックマークチーム ◮ アルゴリズム屋さん ◮ 検索技術 > 機械学習 ≫ アドテク ◮ 最近は設計したり基盤寄りな部分を担当したり 3. 自己紹介 名前 い な 伊奈 りんたろう 林太郎 (id:tarao @oarat) Scala 歴: 4ヶ月 ◮ slick-jdbc-extension ◮ 型レベルのラムダ計算 ◮ Software Design 2015 年 8 月号 大学時代は ◮ 研究室: 型理論, プログラム意味論, 証明支援系 ◮ OCaml が公用語 ◮ gradual typing
Twitterしてたら目に入ったので軽く。 Javaにおけるnull。これまでとこれから この後のスライドで、 Scalaにおける「何もないもの」の分類はやり過ぎ感はある と言われているんですが、ある程度は誤解に基づく意見だよなぁこれは、ということを言っておこうかなと。 Scalaについて 日本では説明が不要なくらいScalaって有名になってると思うんですが一応。 ScalaはJVMの上で動作する、(クラス指向の)オブジェクト指向プログラミングと関数型プログラミングを融合させた言語です。 そして、Scalaのコア機能はどちらかというとオブジェクト指向プログラミング寄りです。 オブジェクト指向プログラミングをベースに、関数型の色々なものを実現している感じです*1。 オブジェクト指向プログラミング的な機能として真っ先に思いつくのは何でしょうか? 割と上位の方に、「継承」とか「型階層」とか来るん
このエントリはScalaアドベントカレンダーの3日目です。昨日は Kuchitama さんのScalaがつないでくれた縁-NetflixMeetup Kyoto 開催後記- でした。 前おき この記事は、タイトル通りFreeモナドとCoyonedaを扱うものの、あまりそれらの直接的な話やモナモナした話ではなく、そこに至るまでの実装のあれこれを『Scalaのプログラミングとして』手探りで追ってみよう、というものです。 その過程で、特に型引数(型変数)や高階型や、それらが継承時にどう扱えるかというあたりのScalaの基本にたっぷり触れます。 なので、Freeモナドに興味がない方でも 型引数で A とか F[_] とか出てくると、まだちょっとこわい Scalaでいざプログラミングすると型が合わずつまづく事が多い という方にも、役に立つ部分があると思うので参考にぜひ読んでみてもらいたいです。 もち
GroovyのGrapeって、便利ですよね。個人的には、Groovyを使う大きな理由のひとつだったりします。 だって、お手軽だもん。 @Grab('org.apache.commons:commons-lang3:3.1') import org.apache.commons.lang3.StringUtils スクリプトに、これを書くだけで依存関係を解決してくれます。ちょっとしたスクリプトを作る時に、すごく重宝しますよ。 んで、これがScalaでもできないだろうかと思って、ちょっと調べたのですが…sbtがそんな機能を一応持っているようです。 Scripts, REPL, and Dependencies http://www.scala-sbt.org/release/docs/Detailed-Topics/Scripts ScalaスクリプトとREPLで、依存関係の解決機能が使えるよ
原文(投稿日:2011/11/22)へのリンク Joda Timeライブラリの開発者でJSR 310の日時API改善の仕様策定者であるStephen Colebourne氏がScalaの適用しやすさについて示唆に富む記事を書いている。氏はScalaとEJB 2を比較している。氏の考えではEJB 2はJava EE仕様の中で最悪のものだった。 … たくさんの決まりきった書き方やXMLや全体的な複雑さがJavaの世界に持ち込まれました。EJB 2は広く導入されましたが、批判を伴いました。開発者はEJB 2が抽象度の高いAPIを導入することで、企業向けアプリケーション構築の複雑さを緩和しようとしながら、結局、期待した結果を生まずに更なる複雑さをもたらしたということに気づいていたのです。 そして、氏はFantomやKotlin、Groovy、Ceylonのような言語は好きだが、Scalaはこれから
「あばばばばばばばば」 この記事は、Scala Advent Calendar jp 2010 : ATNDの17日目です。 今日は、Scalaそれ自身をソースからコンパイルする方法を紹介します。やりかたは簡単で、Scalaのソースコードを持ってきて、antコマンドでビルドするだけです。 Scalaのソースコードはsvnでホストされてますが、githubにもmirrorがあります。こちらから落とすのがよいでしょう。svnが許されるのはゼロ年代までだよねーキャハハ!! scala/scala · GitHub じゃあ、git cloneでソースコードを取得して……antでビルドです。簡単っしょ?sbtも使えます。ただし、コンパイルにはメモリを1.5Gほど消費します。core i5/8G/SSDのMBPでビルドに10分かかりました。 $ git clone https://github.com
2011-05-28 Scala界の関数型プログラミング一派を代表する論客の一人、@djspiewak が 2010年に書いた “Monads Are Not Metaphors” を翻訳しました。翻訳の公開は本人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2010年12月27日 Daniel Spiewak 著 2011年5月29日 e.e d3si9n 訳 僕は今、約束を破るところだ。およそ三年前、僕は絶対にモナドの記事だけは書かないと自分に約束した。既にモナドに関する記事は有り余っている。記事の数が多すぎてその多さだけで多くの人は混乱している。しかも全員がモナドに対して異なる扱い方をしているため、モナドの概念を初めて学ぼうとする者は、ブリトー、宇宙服、象、砂漠のベドウィン (訳注: アラブ系遊牧民) の共通項を探す努力をするハメになっている。 僕は、この混乱した
「モナドは象だ(Monads are Elephants)」日本語訳¶ この文章は、以下の記事の翻訳です。 Monads are Elephants: http://james-iry.blogspot.com/2007/09/monads-are-elephants-part-1.html http://james-iry.blogspot.com/2007/10/monads-are-elephants-part-2.html http://james-iry.blogspot.com/2007/10/monads-are-elephants-part-3.html http://james-iry.blogspot.com/2007/11/monads-are-elephants-part-4.html JAMES IRY:ONE DIV ZERO: http://james-iry
このドメインモデルに基づいて、まず第一に、このアーティクルでは、どのようにHibernate/JPAを使って、Scalaにおける Personエンティティ用の ジェネリックData Access Object (DAO) と具体的なDAOの実装方法を示す。その結果、 PersonDaoに、 CRUD操作が実行できるようになりる。例: val p1 = new Person(“Rod Johnson”) val p2 = dao.findByName(“Martin Odersky”) p1.link(p2) personDao.save(p1) Step 2 それからこのアーティクルは、Person エンティティを「リッチな」ドメインオブジェクトに変換するのに、何が必要なのかを要約する。このオブジェクトは、内部で NotificationServiceを使って、linkメソッドが呼ばれたと
ええっと、リクエストされたので、今回は並行処理ネタにいってみます。 並行処理といえば、この本は必読書ですね。でも、書いてることは、かなりムズカシイデス(´・ω・`) Java並行処理プログラミング ―その「基盤」と「最新API」を究める― 作者: Brian Goetz,Joshua Bloch,Doug Lea出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/22メディア: 単行本購入: 24人 クリック: 419回この商品を含むブログ (163件) を見る ということで、並行処理について、もうちょっと優しく分かりやすく解説できないか考えて書いてみます。 スレッドセーフにするには 今回は、プログラムをスレッドセーフにするためにどんなことを考えればよいか。そういうテーマです。 アンスレッドセーフなコードから この本の最初の方に、"スレッドのリスク"という章で、スレッド
● [Scala] RubyからScalaに乗り換えた15くらいの理由 [注意] この文章を読むと、既存のRubyコードをScalaでrewriteしたくなる、 Rubyコードで型チェックをやるのが鬱になる、Ruby案件でやる気が出なくなる、 などの幻覚や異常行動が報告されています。 現在関わっているプロジェクトや家族のことを常に意識し、 気を強く持って冷静に読むとよいでしょう。 「Scalaプログラミング入門」を読みはじめて、いきなり大きく頷いてしまった。 "コーディング時間の半分をテスト作成に費やさなければならなかった"(p.3) "Railsによって得られた生産性の向上は、テスト作成の作業に失われてしまいました"(p.3) まさにここ数年私が抱いてた漠然としたストレスの正体が、的確に文章となっていたからだ。そしてほどなく、「あ、この機能がRubyに欲しかった!」という驚きと共に Sc
1階受付:インストール等 / 1階案内版:コマンド / 2階:書き方 / 3階:文と式 / 4階:関数 / 5階:オブジェクト指向 / 6階:型 / 7階:注釈等 / 屋上:言語仕様要約 / 雲:scalaパッケージ概観 / 青空:その他の付属パッケージ概観 なお、以上の解説はJavaの文法とコマンドや標準ライブラリ等を一応知っていることを前提(現行のScalaはなおJavaライブラリへの依存度が高くScalaだけで完結できる状態では無い。なお、Scalaのコンパイラ自体はJava1.4用のコードも吐けるが、標準ライブラリが多く1.5を前提としている)とし、その違いだけをとりあえずは書き留めるものである。もっぱら文法やライブラリ参照用であることを目指しているので、例や特長等は次のリンクを参照されたい(なおただし、原著者たちの配慮にもかかわらず、それらの例は関数型言語に関する事前の概要的把握
Javaな人から見ると、「Scalaって難しい」ってイメージがありますね。俺も最初はそう思ってました。今もですけど。 で、考えてみたんですが、何が難しいって考え方・イディオムになじみがないのが原因かと思ったんです。 ここでは、俺が今までScalaをやってきて得た考え方を紹介します。「Scalaをちょっとやってみたんだけど、とっつきにくくて…」と思われている方は、ぜひご一読ください。 参考資料: Scala入門 - Scalaで書きはじめたJava使い向け - Scala勉強会@東北 Dropbox - 404 神は言われた。「リストあれ。」 Lisperは、リストをどう作るかをまず考えるらしいです。適切なリストが出来たら、プログラムはもうできたも同然だと。同じ考え方は、Scalaでも通用すると思います。 大まかに、こんな流れで考えてます。(リストは最初から与えられることもあるでしょう) 「
Scalaの基本と環境の構築 古くはLisp、近時ではHaskellなど、世の中にはとんがった言語がいくつもあります。Scalaも、オブジェクト指向言語と関数型言語の良さを高いレベルで両立させようという意欲的な言語です。 しかし、Scalaの良さは普段C言語やJavaなどでプログラムを書いている人が、あまり違和感なくコードを読み書きできることにもあります。そこで、Scalaの「プログラミング言語」としてのポテンシャルの高さを見ていきましょう。 JREまたはJDKのインストール まずは、Scala本体のインストールと、簡単な動作確認をしてみましょう。ここでは、執筆時点での最新バージョン2.7.5を例に取り解説していきます。 Scalaは、JavaVM上で動作するため、実行にはJREをインストールしておきます。また、本稿のサンプルコードを動作させるには、ビルド環境としてMavenを使用している
Scalaとは Scalaは、2003年にJavac(コンパイラ)やJavaのGenericsの設計/開発貢献者であるMartin Odersky氏(スイス・ローザンヌ工科大学教授)によって、開発が開始された比較的新しいプログラミング言語です。Javaは実用言語として幅広いシステムで使用されてきましたが、下位互換性を保つという要請の中、言語としての機能強化がなかなか進まないといった限界も見えてきています。そのような現状もあることから、ScalaはJavaの後継として実用的な言語を目指して開発されています。 Scala最大の特徴は、Javaの良さを最大限継承しつつ、スクリプト言語や関数型言語の良いところも吸収し、先進的な機能/文法を取り入れている点です。また、今後のハードウェアのマルチコア化を見据え、簡易に並列処理プログラミングを行うことができるライブラリが付属しています。 Scalaのメリ
とてもエントリが多くの回にわたったので、まとめます。 One Div Zero: Monads are Elephants Part 1 モナドについて調べていく(7) - Fight the Future じゅくのblog モナドについて調べていく(8) - Fight the Future じゅくのblog モナドについて調べていく(9) - Fight the Future じゅくのblog モナドについて調べていく(10) - Fight the Future じゅくのblog モナドについて調べていく(11) - Fight the Future じゅくのblog モナドについて調べていく(12) - Fight the Future じゅくのblog One Div Zero: Monads are Elephants Part 2 モナドについて調べていく(14) - Fig
大手SIベンダにてSEやPMやアーキテクトとして勤務したのち,株式会社豆蔵を経て,現在は合同会社シンプルアーキテクト代表社員であり,株式会社匠Business Placeのチーフコンサルタント。主に超上流のプロセスである要求開発やオブジェクト指向,アジャイル開発のコンサルタントとして活躍中。開発の現場にこだわり,開発の現場を少しでもよくしたいと日夜奮闘している。要求開発アライアンス執行委員。著書に『オブジェクト脳のつくり方』や『eXtreme Programming実践レポート』(ともに翔泳社発行。後者は共著)などがある。 Javaなど,オブジェクト指向や手続き型のプログラミングの経験はあるけれど,関数型のプログラミングは初めてという皆様のための,そして筆者自身のための「関数脳のつくり方」シリーズのSecond Season(First Seasonはこちら)。今回は「モナド」を取り上げま
GroovyとScala: 二つのJVM言語の物語¶ By Andres Almiray <aalmiray@users.sourceforge.net> 次のプロジェクトではScalaよりもGroovyを選ぶべき?それともその逆でしょうか?悩むのはやめて、両方使ってみましょう!この記事では、GroovyとScalaが、それぞれの慣習やその言語らしさに妥協することなく、お互いにどう連携できるかを示します。 Andres Almiray は、ソフトウェア設計・開発において10年以上の経験を持つ、Java/Groovy開発者です。Javaの黎明期からwebやデスクトップアプリケーションの開発に携わってきました。オープンソースの信奉者であり、Groovy、Griffon、DbUnitといった著名なプロジェクトに参加するとともに、自身でもいくつかのプロジェクト(Json-lib, EZMorph,
Java仮想マシン上で動くオブジェクト指向+関数型言語として、Scala(スカラ)が最近注目を集めています。Scalaで構築されたWebアプリケーションフレームワークはいくつかありますが、 本連載ではその中で比較的歴史のある(といっても2年程度ですが) フレームワークである、Lift(リフト)を紹介したいと思います。 はじめに Java仮想マシン(以下JVM)上で動くオブジェクト指向+関数型言語として、Scala(スカラ)が最近注目を集めています。 Scalaで構築されたWebアプリケーションフレームワークはいくつかありますが、 本稿ではその中で比較的歴史のある(といっても2年程度ですが) フレームワークである、Lift(リフト)を紹介したいと思います。 対象読者 Javaは知っているが、Scalaも学んでみたいと思っている方 ScalaでのWebアプリケーション開発に興味がある方 必要な
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く