Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

【 参考 ウェブサイト 】 小笠原 啓(2015/05/31)「函数プログラミングのエッセンスと考え方」 サルノオボエガキ(2006/08/24)「MLFi ‐ 金融商品を書くための関数型言語」 OCaml.jp 活用事例 金融業界では、Haskell や F#, Scala も採用されているが、過去2社の成功実績から、OCaml の占める比重が大きい 【 2つの成功実績 ~LexiFi社 & Jane Street社 】 1.LexiFi社(仏) 金融派生商品 店頭取引(OCT)契約情報 記述特化型言語(DSL)「MLFi」 の 市場化 成功 サルノオボエガキ(2006/08/24)「MLFi ‐ 金融商品を書くための関数型言語」 ITソリューションフロンティア 2005年3月号 海外便り 松下 樹(野村総合研究所)「関数型言語による金融アプリケーション」 Hatena::Diary O
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 発端は(食べられる方の)カリーうどん 弊社では、[クラウド会計のA-SaaSがシリーズCで3億円を調達、システム刷新へ] (http://jp.techcrunch.com/2016/12/06/a-saas/)という記事にもあるように、Javaで書かれているサーバーサイドのアプリケーションを、Scalaに移行していくことにしています。アドベントカレンダーの最後のエントリーでは、Scalaに決めた経緯というか、背景を述べて行こうと思います 今から約1年前の2016年の初頭、とある同じ会計関連ベンチャーのCTOが弊社オフィスのある白金高輪
2016年11月3日に Scala 2.12.0 がリリースされました。 Java 8 を利用することになって trait が直接 interface にできたり、無名関数が lambda になったと裏側ではいろいろ良くなっているみたいですが、本記事では主に表側、すなわち Scala を利用する者として書きます。 書き終わってから思いましたが、ほぼ Future についての記事になりました。 ほぼ自学のためのチラシの裏なので、 もっと深く知りたい場合は リリースノート やその 翻訳版 を読むと良いです。 (本記事でもリリースノートおよび翻訳版から一部引用させていただいています) Scala 2.11 との互換性 リリースノートによると Thanks to source compatibility, cross-building is a one-line change to most sb
はじめに この記事は Scala Advent Calendar 2016 - Qiita の 7 日目の記事です。 私事で恐縮ですが、今年の個人的なハイライトは、遅まきながらドメイン駆動設計と関数プログラミングを学べたことでして、その中でも、"Functional and Reactive Domain Modeling" (Debasish Ghosh 著) (以下、FRDM本) を読んで、ふたつのコンセプトが自分の中で繋がったことが最も大きなものでした。 Manning | Functional and Reactive Domain Modeling この記事では、本書の紹介も兼ねて、ドメイン駆動設計がどのように関数プログラミングと結びつくのか、非常にざっくりではありますが、Scala で表現してみたいと思います (ちなみに、私の Scala 歴は3ヶ月ほどですので、サンプルコード
name := "YourFirstApp" version := "1.0-SNAPSHOT" libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, filters, //追加 "org.jongo" % "jongo" % "1.0", // 追加 "org.mongodb" % "mongo-java-driver" % "2.11.4" // 追加 ) play.Project.playJavaSettings ※ 2.3になってちょっとかわったけどlibraryDependenciesに追加していくのはかわらないので、体勢に影響は無い。 SBT(Scala Build Tool?)の形式ってよくわからない。 http://mvnrepository.com/に のサイトで検索して、SBTのタブがあるので便利 Google
概要 Play Framework (java)の開発環境の構築を行い、続いて簡単な検索アプリケーションを開発します。 ([Spring Bootで簡単な検索アプリケーションを開発する] (http://qiita.com/rubytomato@github/items/e4fda26faddbcfd84d16)をPlay Frameworkを使って書き直したものになります。) 環境 下記の環境で動作確認を行いました。 Windows7 (64bit) Java 1.8.0_60 Play Framework 2.4.2 Activator 1.3.5 sbt 0.13.8 Eclipse 4.4 MySQL 5.6.25 参考 下記のサイトを参考にさせて頂きました。 [Play Framework] (https://www.playframework.com/) [Play 2.4.x
Play FrameworkにはEclipseプロジェクトへの変換機能(activator eclipse)や、ブラウザ上で開発できる機能(activator ui)が提供されている。しかし、普段使っていない開発環境を使うと、使い方を覚えることに多くの時間を割かれてしまい効率が悪い。一方で、Vimの環境を利用していると、EclipseのようなJavaやScalaの優れた補完機能などが活用できない。そこで__Eclim__というEclipseとVimとの橋渡しをするプラグインを使い、使い慣れたVimの中で、Eclipseの機能を利用できるように設定した。以下でCentOS 7上で行った設定の手順を紹介する。またEclimのサイトには充実したドキュメントがあるので、そちらも参照するとよい。 1. 前提条件 Javaの実行環境があること。(バージョン1.6以降) NeocompleteによるVi
Scalaの勉強もかねてPlay FrameworkでDBを利用したREST APIサーバーを作ってみました。 自分がつまずいたポイントを記述しておきます。 ソースコード システム環境 ローカル開発環境: MacOSX + MySQL5.5 本番環境: CenOS6 + MariaDB5.5 Play Framework 2.3 JDK8 (Scala 2.11ではJDK8はテストサポート扱いらしい 標準サポートは JDK6 <= JDK7 ) Scala 2.11 IDE: IntelliJ IDEA 14 Ultimate + Scalaプラグイン (Ultimateは有償だがお薦め) データベースで管理するもの 2014〜2015年で放送されているアニメ作品を管理しているデータベース インストール&プロジェクト作成 最新のPlay Frameworkではactivator経由でインス
関数型のメリット 副作用の排除 副作用とは ある機能がコンピューターの(論理的な)状態を変化させ、それ以降で得られる結果に影響をあたえることをいう 変数への値の代入 データ構造を直接変更する オブジェクトのフィールドを設定する 例外をスローする、またはエラーで停止する コンソールに出力する、ユーザ入力を読み取る ファイルを読み取る、ファイルに書き込む 画面上に描画する 純粋関数 副作用を持たない関数 メリット 宣言的な記述なため、簡潔に書けることが多く、関数の仕様を理解しやすい 副作用がないため、形式的な証明がし易い 関数の評価結果がコンテキストに依存しないため、テストがし易い コンテキストに影響を与えないため、関数を組み合わせて利用しても相互に影響しない インストール scalaenvを使ったインストール scalaenvのインストール
はじめに PlayはTypesafe社が提供しているWebアプリケーションのためのフレームワークです。 他のフレームワークと同様、PlayもMVCアーキテクチャーを採用しているのですが、面白い点はModelとControllerの実装をJavaとScalaの2つから選べること。 「JavaとScalaの2つを提供しているんだったら何もJavaの作法に縛られることないよね」ということなのか、Playには、JavaでWebアプリケーションとなれば当然出てくるサーブレットやJSPといったJavaEEの概念モデルは一切なく、どちらかというと、Ruby on Railsのような軽量フレームワークとして実装されているようです。 長年Java一筋で、Webアプリケーションは基本サーブレット、次々と新しいフレームワークが出てもJavaEEの範疇で。。。そんな中、Railsの波にも乗ることができず、設定ファ
class Hoge { //引数リストがないメソッド def f1 = 1 //引数がないメソッド def f2() = 1 //引数が1つのメソッド def f3(x: Int) = x * 2 //引数が複数のメソッド def f4(x: Int, y: Int) = x * y } //引数リストがないメソッド ////hoge.f1() ////hoge f1() hoge.f1 //> res0: Int = 1 hoge f1 //> res1: Int = 1 //空行は伊達じゃないよ //引数がないメソッド hoge.f2() //> res2: Int = 1 hoge.f2 //> res3: Int = 1 hoge f2() //> res4: Int = 1 hoge f2 //> res5: Int = 1 //空行は伊達じゃないよ //引数が1つのメソッド
SwaggerはJSON API用のドキュメンテーション作成ツールです。 http://swagger.io/ http://petstore.swagger.wordnik.com/ こんな画面が生成されて、画面の下の方にある"Try it out"というボタンで実際にリクエストを送信することができます。 SwaggerとPlay Framework 上の画面はSwagger UIというHTML+JavaScriptのツールによるもので、Swaggerの実体はコードアノテーションを解釈してエンドポイントに関するJSONを返してくれるツールです。 SwaggerのメインリポジトリであるSwagger CoreはScalaで書かれていて、Play Frameworkの用ライブラリもSwagger Coreのリポジトリ内にあります。 Play FramworkでSwaggerを使うサンプルアプ
これなんなの? 「Scalaの記号はググラビリティ低すぎて調べようがないし全くわからん…せめて定義位置とか実装がわかれば…」という自分のためのメモ、いわゆるチラシの裏です。 とりあえずScalaの記号については、ソースコードをダウンロードして下記の正規表現でgrepしました。 基本、わからない記号見つけたら定義元に飛んで 1、ソースを読んでます。 2 IDEで定義元に飛べない記号(_*など)は、言語仕様の可能性が高いので言語仕様を読みましょう。 記号の使用例がわからない場合、そのライブラリのテストコードを読むと良いケースがあります。 急に()が出てきた場合、カリー化された引数かapply()です。 apply()の場合、一時的に書き換えてショートカットキーで飛ぶか、検索してapply()の定義を確認します。 記号がぐぐれない問題に関しては、 https://t.co/qEY3k2cRIM
AndroidDemoIn4Languages どの言語がAndroid開発に適切なのかを探すのために、JavaやGroovyやScala やKotlinを使用して同じアプリを作る。 比較方法 依存を最小限に利用する。 依存情報報告 Java インポート com.android.support:appcompat-v7:23.3.0 Groovy インポート com.android.support:appcompat-v7:23.3.0 インポート org.codehaus.groovy:groovy:2.4.6:grooid インポート org.codehaus.groovy:groovy-json:2.4.6 Scala インポート com.android.support:appcompat-v7:23.3.0 インポート org.scala-lang:scala-library:2.
import scala._ // Wild card -- all of Scala is imported import scala.{ Predef => _, _ } // Exception, everything except Predef def f[M[_]] // Higher kinded type parameter def f(m: M[_]) // Existential type _ + _ // Anonymous function placeholder parameter m _ // Eta expansion of method into method value m(_) // Partial function application _ => 5 // Discarded parameter case _ => // Wild card patte
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く