読者です 読者をやめる 読者になる 読者になる

新人SEの学習記録

14年度入社SEの学習記録用に始めたブログです。気づけば社会人3年目に突入。

学習記録:ドワンゴ 新人向けScala研修テキスト

参考文献 http://dwango.github.io/scala_text/index.htmldwango.github.io 19. Javaとの相互運用 ScalaとJava ScalaはJVM上で動作するため,JavaのライブラリのほとんどをそのままScalaから呼び出すことができる。 また,現状ではJavaの機能を利用せざるを…

学習記録:ドワンゴ 新人向けScala研修テキスト

参考文献 http://dwango.github.io/scala_text/index.htmldwango.github.io 18. テスト ユニットテスト ここでは,ユニットテストを小さな単位で自動実行できるテストと定義して解説を行う。 ユニットテストを行う理由は大きく3つあげられる。 実装前に満た…

学習記録:ドワンゴ 新人向けScala研修テキスト

参考文献 http://dwango.github.io/scala_text/index.htmldwango.github.io 17. Future/Promiseについて 非同期プログラミングにおいて,終了しているかどうかわからない処理結果を抽象化した型で,Futureは未来の結果を表し,Promiseは一度だけ,成功あるい…

学習記録:ドワンゴ 新人向けScala研修テキスト

参考文献 http://dwango.github.io/scala_text/index.htmldwango.github.io 15. Implicit Scalaにはimplicit Conversion(暗黙の型変換)とimplicit parameter(暗黙のパラメータ)という機能がある。 この2つを使いこなすことで,Scalaでのプログラミングの…

学習記録:ドワンゴ 新人向けScala研修テキスト

参考文献 http://dwango.github.io/scala_text/index.htmldwango.github.io 14. エラー処理 Scalaでのエラー処理は例外を使う方法と,Option/Either/Tryなどのデータ型を使う方法を状況に応じて使い分ける。 まずは扱う必要のあるエラーとエラー処理の性質に…

学習記録:ドワンゴ 新人向けScala研修テキスト

参考文献 http://dwango.github.io/scala_text/index.htmldwango.github.io 13. ケースクラスとパターンマッチング パターンマッチングはCやJavaのswitch文に似ているが,より強力な機能である。 パターンマッチングの真価を発揮するには,ケースクラスによ…

学習記録:ドワンゴ 新人向けScala研修テキスト

参考文献 http://dwango.github.io/scala_text/index.htmldwango.github.io 12. Scalaのコレクションライブラリ Scalaには一度作成したら変更できないimmutableなコレクションと変更できる通常のmutableなコレクションがある。 Scalaで関数型プログラミング…

学習記録:ドワンゴ 新人向けScala研修テキスト

参考文献 dwango.github.io 11. 関数 Scalaの関数 Scalaの関数は,Function0〜22までのトレイトの無名サブクラスのインスタンスになる。 例えば,2つの整数を取って加算した値を返すadd関数は次のように定義される。 scala> val add = new Function2[Int, In…

学習記録:ドワンゴ 新人向けScala研修テキスト

参考文献 dwango.github.io 10. 型パラメータと変位指定 型パラメータ クラスは0個以上の型をパラメータとして取ることができる。 これは,クラスを作る時点では何の型か特定できない場合を表したいときに役立つ。 class クラス名[型パラメータ1, ... 型パラ…

学習記録:ドワンゴ 新人向けScala研修テキスト

参考文献 dwango.github.io 9. トレイト プログラムの分割(モジュール化)と組み立て(合成)は,オブジェクト指向プログラミングでも関数型プログラミングにおいても重要な設計の概念になる。 Scalaのオブジェクト指向プログラミングにおけるモジュール化…

学習記録:ドワンゴ 新人向けScala研修テキスト

参考文献 dwango.github.io 8. オブジェクト Scalaでは全ての値がオブジェクトであり,全てのメソッドは何らかのオブジェクトに所属している。 そのため,Javaのようにクラスに属するstaticフィールド/メソッドを作成することはできない。 その代わりといっ…

学習記録:ドワンゴ 新人向けScala研修テキスト

参考文献 dwango.github.io 7. クラス クラス定義 class クラス名 (コンストラクタ引数: コンストラクタ引数の型, ... ) { 0個以上のフィールド定義またはメソッド定義 } 例えば,点を表すクラスPointは以下のように定義できる。 class Point(_x: Int, _y: I…

学習記録:ドワンゴ 新人向けScala研修テキスト

あまりにサボっていたのでリハビリがてら。 参考文献 dwango.github.io 6. Scalaの制御構文 構文,式,文 構文:プログラムが構造を持つためのルール 式:プログラムの構成部分のうち,評価することで値になるもの 文:プログラムの構成部分のうち,評価して…

学習記録:ドワンゴ 新人向けScala研修テキスト

あまりにサボっていたのでリハビリがてら。 参考文献 dwango.github.io 4. sbtでプログラムをコンパイル・実行する 以下のディレクトリ構成でプログラムを作成する。 sandbox ├─ HelloWorld.scala └─ build.sbtHelloWorld.scalaは以下のとおり。 object Hell…

学習記録:Scala関数型デザイン 第8章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第8章:プロパティベースのテスト(続き) データ型と関数の選択 ジェネレータの意味とAPI Gen[A]がA型の値を生成する方法を知っている何かであることは既に確…

学習記録:Scala関数型デザイン 第8章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第8章:プロパティベースのテスト(続き) データ型と関数の選択 API:最初のコード テスト用のライブラリで使用するデータ型はどのようなものだろうか。 定義…

学習記録:Scala関数型デザイン 第8章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第8章:プロパティベースのテスト 本章では,プロパティベースのテストを可能にするためのシンプルながら強力なライブラリに取り組む。 こうしたライブラリの…

学習記録:Scala関数型デザイン 第7章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第7章:純粋関数型の並列処理(続き) コンビネータを最も汎用的な形式に改良する 関数型の設計は反復的な作業になる。APIを書き出し,プロトタイプを実装した…

学習記録:Scala関数型デザイン 第7章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第7章:純粋関数型の並列処理(続き) APIの代数 前節で示したように,必要な演算の型シグネチャを書き出し,型に従って実装を進めるだけでほとんどの場合上手…

学習記録:Scala関数型デザイン 第7章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第7章:純粋関数型の並列処理(続き) APIの改良 APIの設計と表現の選択の境界線はそれほど明白ではなく,2つの始点を流動的に切り替えながら, 疑問点が生じ…

学習記録:Scala関数型デザイン 第7章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第7章:純粋関数型の並列処理(続き) 表現の選択 ここまで考えてきた結果,APIの大まかなイメージは次のようになった。 // 直ちにa値が得られる計算を作成 de…

学習記録:Scala関数型デザイン 第7章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第7章:純粋関数型の並列処理(続き) データ型と関数の選択(続き) 並列計算の結合 unitとgetの組み合わせには落とし穴があることがわかったが,次にこれを…

学習記録:Scala関数型デザイン 第7章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第7章:純粋関数型の並列処理 CPUごとに複数のコアが搭載され,CPU自体が複数搭載されることも珍しくない現代のコンピュータでは, この並列処理能力を活用で…

学習記録:Scala関数型デザイン 第6章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第6章:純粋関数型の状態(続き) 状態アクションデータ型の一般化 前節で記述したunit, map, map2, flatMapなどはどの角度からも乱数ジェネレータに特化して…

学習記録:Scala関数型デザイン 第6章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第6章:純粋関数型の状態(続き) 状態の処理に適したAPI(続き) 状態アクションの結合 先ほど定義したmapは,殘念ながらintDoubleやdoubleIntを実装できるほ…

学習記録:Scala関数型デザイン 第6章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第6章:純粋関数型の状態(続き) 状態の処理に適したAPI ここまでの実装を振り返ると,どの関数でもRNG => (A, RNG)形式の型が使用されている。 この種の関数…

学習記録:Scala関数型デザイン 第6章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第6章:純粋関数型の状態 副作用を使った乱数の生成 本章では,乱数の生成を例に用いて,状態を操作する純粋関数型のプログラムを記述する方法について見てい…

学習記録:Scala関数型デザイン 第5章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第5章:正格と遅延 無限ストリームと余再帰 ここまで記述してきた関数は漸進的なので,無限ストリームにも対応します。 例えば,1の無限ストリームは以下のよ…

学習記録:Scala関数型デザイン 第5章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第5章:正格と遅延 プログラムの記述と評価の切り分け 関数型プログラミングの主なテーマの一つは関心の分離である。 処理の記述をそれらの実際の実行から切り…

学習記録:Scala関数型デザイン 第5章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第5章:正格と遅延 遅延リストの例 ここでは,例としてストリームでの一連の変換を,遅延を使って一回の処理にまとめる方法を示す。 trait Stream[+A] case ob…

学習記録:Scala関数型デザイン 第5章

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第5章:正格と遅延 一組のトランプから奇数のカードを抜き取り,クイーンのカードを全て裏返すよう言われた時, 理想的には全てのカードを通しで調べる際に奇…

学習記録:Scala関数型デザイン 第4章、購入した本

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド Eitherデータ型 概要 エラー処理にOptionはよく用いられるが,例外的な状況で何がうまく行かなかったのかは教えてくれない。 さらに状況を提供するためのStrin…

学習記録:Scala関数型デザイン 第4章:例外を使わないエラー処理(続き)

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド Optionデータ型(続き) Optionの合成,リフト,例外指向のAPIのラッピング Optionを使おうとすると,Optionをやり取りするメソッドの呼び出し元をSomeやNone…

学習記録:Scala関数型デザイン

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第4章:例外を使わないエラー処理(続き) Optionデータ型(続き) Optionの基本関数を使用するシナリオ Optionのそれぞれの基本関数を使用する状況についてガ…

学習記録:Scala関数型デザイン

参考文献 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 第4章:例外を使わないエラー処理(続き) Optionデータ型 前節までで説明してきた問題の解決策は、問題への答えが常にあるとは限らないことを戻り値の型で表…

学習記録:Scala関数型デザイン

第4章:例外を使わないエラー処理 1章で例外をスローすることは副作用であることを説明した。 本章では、関数型プログラミングにおけるエラーの生成と処理の基本原理を学ぶ。全体的な考えとしては、失敗や例外を通常の値として表し、 エラー処理とリカバリに…

学習記録:Scala関数型デザイン

第3章:関数型プログラミングのデータ構造(続き) 標準ライブラリのリスト Scalaには標準ライブラリにListが存在し、後の章ではこの標準ライブラリのListを使用する。 ここまでで作成してきたListと標準ライブラリのListとの主な違いは、Consが::として参照…

学習記録:Scala関数型デザイン

参考書籍 Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear) 第3章:関数型プログラミングのデータ構造(続き) リストの再帰と高階関数の一般化(続き) Exercise 3.19 与えられた述語条件が満たさ…

学習記録:Scala関数型デザイン、参加記録:AtCoder Typical Contest #001

参考書籍 Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear) 第3章:関数型プログラミングのデータ構造(続き) リストの再帰と高階関数の一般化(続き) Exercise 3.12 要素が逆に並んだリストを返…

学習記録:Scala関数型デザイン

参考書籍 Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear) 第3章:関数型プログラミングのデータ構造(続き) 関数型データ構造でのデータ共有(続き) 高階関数の型推論の改善 さきほど作成したdr…

学習記録:Scala関数型デザイン

参考書籍 Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear) 第3章:関数型プログラミングのデータ構造(続き) 関数型データ構造でのデータ共有 イミュータブルなデータでは、例えばリストxsの先頭…

学習記録:Scala関数型デザイン

参考書籍 Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear) 第3章:関数型プログラミングのデータ構造 関数型データ構造の定義 関数型プログラミングでは、変数を更新したりミュータブルなデータ構…

学習記録:Scala逆引きレシピ

参考書籍 Scala逆引きレシピ (PROGRAMMER’S RECiPE) 第11章:sbt sbtの使い方 セットアップ sbt=Simple Build Toolは、Scalaベースのビルドツールで、Scala開発の標準的なツールである。 Scalaのコンパイルやユニットテストの実行、jarファイルやscaladocの…

学習記録:Scala逆引きレシピ

参考書籍 Scala逆引きレシピ (PROGRAMMER’S RECiPE) 第10章:Javaとの連携 ScalaからJavaを扱う Javaのクラスを呼び出す Javaのクラスは、new演算子で生成し、Scalaと同様の書式でメソッドを呼び出すことができる。 import java.io.File val file = new File…

学習記録:Scala逆引きレシピ

参考書籍 Scala逆引きレシピ (PROGRAMMER’S RECiPE) 第6章:ファイル操作と入出力 標準ライブラリによる入出力 ファイルの読み込み scala.io.Source#fromFileメソッドにより、ファイルを文字列として読み込むことができる。 import scala.io._ val source = …

学習記録:Scala逆引きレシピ

参考書籍 Scala逆引きレシピ (PROGRAMMER’S RECiPE) 第5章:コレクション コレクションの基礎 Scalaのコレクション Scalaには標準で強力なクラスライブラリが用意されています。 コレクションは以下の3種類に大別されます。 Seq:順序を持った要素の集合 Vec…

学習記録:Scala逆引きレシピ

参考書籍 Scala逆引きレシピ (PROGRAMMER’S RECiPE) 第4章:オブジェクト指向プログラミング クラス・メンバ クラス・メソッドの定義と呼び出し クラスはclassキーワードを、メソッドはdefキーワードを使用して定義する。 クラスのインスタンスはnew演算子で…

学習記録:Scala逆引きレシピ

参考書籍 Scala逆引きレシピ (PROGRAMMER’S RECiPE) 内容 第3章:関数とクロージャ 関数 関数の定義は、引数と関数本体を関数矢印=>でつなげて定義を行う。 この記述を関数リテラルと呼び、定義された関数を無名関数と呼ぶ。 // Int => Int型の変数fに、整数…

学習記録:Scala逆引きレシピ

参考書籍 Scala逆引きレシピ (PROGRAMMER’S RECiPE)作者: 竹添直樹,島本多可子出版社/メーカー: 翔泳社発売日: 2012/07/03メディア: 単行本(ソフトカバー)購入: 6人 クリック: 54回この商品を含むブログ (14件) を見るScala関数型デザイン&プログラミング …

学習記録:Scala関数型デザイン

参考書籍 Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear) 第2章:Scala関数型プログラミングの準備 本章の内容 速習Scala 末尾再帰関数を使ったループの記述 高階関数 速習Scala言語 以下のScala…