ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Javaのラムダ式とStream APIを聞いてきた!

2016-10-12 22:36:39 | JavaとWeb
10月12日、Java SE 8:ラムダ式 & Stream API 入門セミナーにいってきた!
その内容をメモメモ・・・




年内に資格とると、Tシャツがもらえる

●関数型インターフェースとラムダ式
・なぜラムダ式がはいったのか
JavaSE8:関数型スタイルの処理への対応
 背景:CPUアーキテクチャの変化
 マルチコア化→並列処理
 並列処理を効率化するには、関数スタイルの処理のほうが便利
  関数=入力した値に対して必ず同じ結果を返すもの
 JavaSE8:関数型インターフェースの導入
  オブジェクト指向にはなじみにくい
  でも、関数型いいよ
  関数をオブジェクトで扱う→関数型インターフェース
  →単純化できる
  パターンはjava.util.functionパッケージを使う

・関数型インターフェース
 単一のabstructメソッドを持つインターフェース(SAMインターフェース)
  staticメソッドとデフォルトメソッドはOK
   staticメソッド
   デフォルトメソッド:デフォルト実装を与える
  java.lang.ObjectのpublicメソッドもOK
 Java8の新機能
  SAM;しんぐるあぶすとらくとめそっど
   @functionalInterface をつけると、関数型と思っていることを示す
   →そうでなかったら、エラーになる

・ラムダ式の前に
 無名クラス:見通し悪い
  →ラムダ式導入

 ラムダ式
  関数型インターフェースを実装するクラスのインスタンスかを簡略化する
  ための構文
   関数型インターフェースのメソッドにフォーカスして実装を記述できる
    メソッド名は書かなくても推論できる
    変数Xはどこで宣言している 引数名

 ラムダ式は何を簡略化している?
  引数リストとメソッドを書けばOK

 →バイトコードレベルでは無名クラスとラムダ式は違う

・省略記法
  がた省略OK
  引数がない場合()
  引数1個は括弧省略可能
  1行なら中括弧も省略OK
  returnも省略OK
  ラムダ式のメソッド呼び出しは
   System.out::println
  でOK

→書き方を決めないと安定しない
 コード読みにくくなる

・汎用的な関数スタイルの操作
  基本形は5つ
  Function
  Consumer:void
  Supplier:値を返す
  Unary(ゆーなりー)Operator:演算
  pridicate:ぶーりあんで返す
 ひきすう2つの関数型bifunction

●StreamAPI
 StreamAPI
  データをパイプラインで処理するAPI
   Streamの生成
   中間操作:遅延評価
   終端操作

 Streamの作り方
  コレクションから
  配列から
  数値範囲から
  任意の要素 Stream.of

 IntStreamを使った繰り返し処理
  for文を使った繰り返し
  IntStreamを使った繰り返し
 →for文は並列処理が難しい
  並列処理は
  .parallel().forEach()とすればいい
 →100件とかならfor文のほうが早い

 中間操作のためのメソッド
  filter
  map
  flatMap
  distinct
  peek:なにもしないけど
  limit
  skipというメソッドもあるので、先頭から何個~何個というのができる

 終端操作
  forEach
  reduce 2つパターン
  collect
  min/max
  count
  以下は、ショートサーキット操作(全要素処理しないかも?)
  findFirst
  findAny
  anyMatch
  allMatch
  noneMatch

※Optionalクラス:JavaSE8から
 値がNULLかもしれないコンテナオブジェクト

・StreamAPIの例
 Personクラス:年齢50より小さい
 カンマ区切で出だす→collectでリダクション処理
 101以上200未満の要素の合計を求める:リダクション処理

 リダクション処理の考え方
 (じつは、IntStreamのmapToInt().sum()でおわる)
  IDEは型が違うことしか教えてくれない:何を変えればいいのかは教えない

・コレクションAPIのデフォルトメソッド
  removeif predicateの結果をみて、のぞく

●JavaSE8の資格のお話
 ゴールドがラムダ式つかえますか?みたいなはなし
 今35%オフで受けられる
  クレジット決済
  オラクルからチケットを買う

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Intel Edisonが入った小型のロボットSotaはLineに投稿するだけじゃない

2016-10-12 14:22:37 | Weblog

自律移動ロボ用「インテル RealSense ロボット開発キット」とかROSとか聞いてきた
http://blog.goo.ne.jp/xmldtp/e/49725ecafdce46212833733bcbfd3468

で”「人とモノ・ロボット」のコミュニケーションの可能性”のところで出てきた、
ブイストン株式会社のロボットSota(そーた)について、講演のあと、展示してあるところで
話を聞いてきたので、メモメモ

ちなみに、Sotaは

な感じのロボット(https://sota.vstone.co.jp/sota/ より引用)
この図だと、縮尺が分からないので、デアゴスティーニのロビを
思い出すかもしれないけど、あれより大きい。
(ただし、Sotaの開発元ブイストン株式会社の顧問の1人が
 ロビの作者高橋智隆氏。もう一人の顧問が、あの大阪大学の石黒先生)




【質問と答え】

Q:SotaはEdisonが入ってるの?

A:入ってる

→だから、インテルのセミナーにでていたのね。やっとわかった(^^;)

Q:SotaはLineとしか話が出来ないの?

A:そんなことはなく、いろいろできる。その中の1つとして、
 Lineへの投稿ができそうだったので、提案したかんじ。

Q:いろんな開発は、SDKでやるの?

A:SDKでもできる。ただし、込み入ったもの、たとえば今回のLine投稿の
 ようなものは、Javaで組んで、中に入れている。




【興味を持ったので追加調査】

・Sotaのページ

https://www.vstone.co.jp/products/sota/

Edison版とRaspberry Pi2があるみたい。

価格は21万円強

http://sota.vstone.co.jp/home/category/item/


コミュニティがあり
https://sota.vstone.co.jp/sota/index.php
そこのドキュメント
https://sota.vstone.co.jp/sota/resource/documents/index.php
に、操作方法とかJavaのプログラムみたいなことがあるみたい。
講習会もあるみたいよ・・・


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「安全性論証」がソフト技術者の必須科目

2016-10-12 01:25:01 | Weblog
だそうなので、あとでよむ

「安全性論証」がソフト技術者の必須科目の時代に
http://techon.nikkeibp.co.jp/atcl/column/15/415543/101100052/

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする