無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

Scala

Stream

Streamは要素が必要になったときに作成されるList(みたいなモノ)です。 要素は必要になったときに初めて作成されるので、 要素の作成に時間がかかる場合に初期作成コストを抑えることができます。 また、要素を全部辿らない場合に無駄な作成コストを削減でき…

演算子とメソッド

昨日書いたオブジェクトのメソッド呼び出しを「 」で実行できる件について、みずしまさんよりコメントを頂いた(ありがとうございます!)ので、仕様書を確認。 どうも、メソッド呼び出しと演算子がまったく別物という認識がそもそも間違っていたようだ。Scala…

untilを使った繰り返し

処理をn回繰り返したいときは「until」が使えます。 // 処理を10回繰り返したい for ( i <- 0 until 10 ) println( i ) 実行結果です。 0 1 2 3 4 5 6 7 8 9「0 until 10」を最初見たとき「なんだこれ?」と思ったんですが(そういう演算子があるのかなーとか…

for文を使った配列の操作

for文を使うと、配列やListの操作を簡単に行なうことができます。 配列を列挙する 単純に配列を列挙するには次のように書きます。 for ( <パターン名> <- <配列> ) <処理> これで以下の処理が行なわれます。 配列の値を一つ取り出してパターン名が示す変数に…

List

可変長の配列(javaのList)を使いたい場合、scala.Listが使えます。 同じような機能を持つクラスとして、scala.Arrayがありますが、 scala.Arrayは固定長で、Javaにおける配列(new int[]とか)に近い。 scala.Listは可変長で、JavaにおけるListに近い。 可変長…

タプル

複数の値を返したいけどコンテナとするクラスを定義するのがメンドイ、というときにタプルが使えます。 タプルは複数の値を保持する組み込みのクラス(scala.Tuple2 .. etc)です。 要素数に応じてそれぞれ別のクラスが用意されているので、必要な要素数にあわ…

Variance Annotations

型パラメータに「+」「-」をつけることで、パラメータ化されたクラスの代入制限を少し緩くできます。 パラメータ化されたクラスの代入制限とは? 次のような、型パラメータを受け取るクラスがあるとして、 // 型パラメータを受け取るクラス class Holder[A](v…

配列の基本的な使い方

配列(scala.Array)の基本的な使い方についてまとめ。 生成 「new Array[]()」で生成。 // 生成 var array = new Array[Int](5) n番目の要素の設定 「配列() = 」を使う。「[]」じゃないよ! // n番目の要素を設定 array(2) = 20 // 2番目の要素を20に。 array…

finalとsealed

Classの継承やメンバーのオーバーライドを制限する機能として「final」と「sealed」が使えます。 「final」はクラスやメンバーに対して設定できる修飾詞です。 finalが設定されたクラスは継承できません。 finalが設定されたメンバーはオーバーライドできま…

型パラメータの範囲指定

Scalaの型パラメータでは、パラメータで受け付けるクラスの範囲を制限することができます。Javaの「super」とか「extends」みたいな機能です。 「[ ]」とすることで、「は派生の何か」に制限できます。 「[ >: ]」とすることで、「はまたはその上位クラスの…

Object

ScalaのObjectについて。The Scala LanguageSpecificationを読んでポイントをまとめます。 使いみち 定数(static変数)やstaticメソッドを作るのに使う。逆にscalaにはstaticがない。 内部的にはどうなってるの? 次のようなobjectの定義は、 object X extends…

Class,Abstract Class,Trait,Objectの違いまとめ

ScalaByExample - Example 6 Classes and Objectsより。ScalaのClassとかTraitの違いについて、わかる範囲でまとめてみます。 ScalaのClassとかTraitの比較表 Class Abstract Class Trait Object 抽象メソッドを持てるか? × ○ ○ × メソッドの実装を書けるか?…

関数を返す関数を作る

ScalaByExample - Chapter 5.2 Curryingより。関数を戻り値として返す関数を作ってみます。 引数で渡す場合と同様に、戻り値型を「: => 」とすることで関数を返すことを示します。 後は戻り値として関数を返せばOK // 関数を返す関数の定義 // 戻り値型を「<…

関数について

ScalaByExample - Chapter 5 First-Class FunctionsとScalaByExample - Chapter 5.1 Anonymous Functionsのポイントまとめ。 関数は値 Scalaの関数は値です。引数として渡したり、戻り値として返すことができます。以下は、関数を引数として受け取る関数の例…

末尾再帰

ScalaByExample - Example 4.6 Tail Recursionより。Scalaでは末尾再帰は最適化されます。無駄なスタックを生成しないために、再帰を利用する関数は末尾再帰となるように設計しましょう、とのこと。 末尾再帰とは 再帰呼び出しを含む手続きが、自分自身の呼…

ブロックを使う

ScalaByExample - Example 4.3 Conditional ExpressionsからScalaByExample - Example 4.5 Nested Functionsあたりのポイントまとめ。 if-else は値を返す Scalaのif-else制御構文は値を返します。なので三項演算子的に使うことができるとのこと。 // if は…

引数を受け付ける関数の定義/「値渡し」と「参照渡し」

ScalaByExample - Example4.2 Parametersを読みました。 引数を受け付ける関数の定義 「def () : = ...」として、引数を持つ関数を定義できます。 // 「def <名前>(<引数>):<戻り値型> => ...」で引数を受け取る関数を定義できる。 def foo(i:int):int = 3*i…

式と簡単な関数について

beginner's guideは一通り読んだので、Scala By Example(日本語訳)に入ります。Cahpter4から体系的な構文の説明らしいので、1-3をすっ飛ばして「Chapter4 Expressions and Simple Functions」から。 式と簡単な関数 「def = 」で「式」に名前を付け、関数と…

型パラメータ

beginner's guideの「8 Genericity」より。Scalaでも型パラメータを使うことができます。 「class [] ...」といった感じで、「[]」を使って指定します。(Javaと違って「<,>」ではないです。) 使い方はJavaと同じ感じです。(beginner's guideの「8 Genericity…

Mixin

beginner's guideの「7 Mixins」を読みました。Scalaでは、RubyのようなMixinが使えます。 イメージとしてはtraitと呼ばれるAbstractなClassを複数継承する感じ。 継承したクラスでは、traitで定義された実装を持つメソッドを使うことができる。 また、trait…

CaseClassとパターンマッチング

beginner's guideの「6 Case classes and pattern matching」より。ScalaではCaseClassというのを使ってパターンマッチングができるらしい。サンプルコードは以下。 Classにはcaseを付けて宣言します。 関数では「def (): = match { ... }」として、 関数の…

クラスを作ってみる。

beginner's guideの「5 Classes」を読んでクラスを作ってみます。 クラスを作る。 scalaでは↓こんな感じでクラスを定義するらしい。 // クラス定義 // パラメータを受け取る。コンストラクタ引数みたいなモノか? class Kitten(age: int, name: String) { // …

Javaのクラスを使う/すべてはオブジェクト

beginner's guideの「3 Interaction with Java」と「4 Everything is an object」を読みました。 Javaのクラスを使う ScalaはJavaVMの上で動くので、Javaのクラスが利用できます。使い方も簡単で、importすれば後は普通に使えます。 java.langパッケージはデ…

Hello Scala World!

情報処理技術者試験も終わったしそろそろ新しい言語でも調べてみるかなー、ということでScalaです。 Scala Wikipedia - Scala 特徴などは、Wikipediaの説明がわかりやすいかと。 ダウンロード&インストール ダウンロードサイトからダウンロード。インストー…