Monthly Archives: 10月 2014

「Java SE 8実践プログラミング」第6回(10/28)

Posted on by 0 comment

参加者 青木(読み手)、沼田、今井(記)

範囲 pp.44-49

第2章 ストリームAPIの使い方

  • 2.10 マップへ収集
    • p.44 最下行
      Function.identity()とは? Function::identityでなくて良いの?
      → Functionは関数型インタフェースで、identity()は、「常に入力引数を返す関数」を返すstatic関数。
      static <T> Function<T,T> identity()
    • p.45 下3行
      なぜ、TreeMapだけ特別なのか?
      → TreeMapだからではなく、具体的に使用するMapオブジェクトを指定したいときは、その空のMapオブジェクトを返す関数を指定するようです。
  • 2.11 グループ分けと分割

「Java SE 8実践プログラミング」第5回(10/24)

参加者 今井(読み手)、沼田(記)
範囲 pp 36 – 44

第2章 ストリームAPIの使い方

  • 2.7 Optional型
    • 2.7.1 Optionalの値を扱う
      • コード例中のifPresentはisPresentの誤植?
        →正誤表に記載がありました。
      • p37の最後の文にある「ifPresentを呼び出した場合には、値は返されません」とは?
        →ifPresentメソッドのシグニチャはpublic void ifPresent(Consumer<? super T> consumer)
    • 2.7.2 Optional値を作成する
    • 2.7.3 flatMapでOptional値関数を合成する
      • ひとつめのコード例
        • Optional<U> = …;変数名が抜けている
        • T::gはTクラスのstaticメソッド?
      • コード例でsquareRootやinverseが定義されているクラスはMyMath?Test?
  • 2.8 リダクション操作
    • p.41のコード例の2行目のセミコロンが抜けている
  • 2.9 結果を収集

「Java SE 8 実践プログラミング」第4回(10/21)

Posted on by 0 comment

参加者 沼田(読み手)、今井(記)

範囲 pp.28-36

第2章 ストリームAPIの使い方

  • 2.1 イテレーションからストリーム操作へ
    • p.28 正規表現内の\P{L}の意味は?
      UNICODE用の指定方法らしい。

      • \p{プロパティ} : プロパティを持つ文字
      • \P{プロパティ} : プロパティを持たない文字( = \p{^プロパティ})

      で、プロパティLはLetter。よって\P{L}は文字以外の意味。
      Ref. Pattern (Java Platform SE 8 ), UTS #18: Unicode Regular Expressions

  • 2.2 ストリームの作成
    • p.30
      コード例の、”gentry down the stream”は、童謡 “Row Row Row Your Boat”の歌詞
    • p.31 l.5 ミススペル
      (BitIntegerとしての)1です。→(BigIntegerとしての)1です。
      ちなみに原書では、クラス名ではなく、
      1 (as a big integer).
      になっています。
  • 2.3 filter、map、flatMapメソッド
    • p.32 中ほどのコード
      List<Character> result = new ArrayList<>();
      の<>はJava7からジェネリッククラスの型パラメータを省略したもの。ダイヤモンドと呼ばれている。Ref. Type Inference for Generic Instance Creation
  • 2.4 サブストリームを取り出してストリームを組み合わせる
    • p.34 ヒント内コード
      変数名がpowersなのに、累乗ではなくて p -> p * 2 ?
      → n番目に取り出した要素が2^(n-1)になるからだろう。
  • 2.5 状態を持つ変換
  • 2.6 単純なリダイレクション

「Java SE 8 実践プログラミング」第3回(10/17)

Posted on by 0 comment

参加者 今井(読み手)、青木(記)

範囲 pp.19-28

第1章 ラムダ式とは

  • 1.7 デフォルトメソッド (p.19 下方コードの前から)
    • p.20 l.1 誤植「Nameインタフェース」→「Namedインタフェース」
  • 1.8 インタフェースでのstaticメソッド
  • 練習問題

第2章 ストリームAPIの使い方

「Java SE 8 実践プログラミング」第2回(10/10)

Posted on by 0 comment

参加者 青木(読み手)、沼田、今井(記)

範囲 pp.11-19

第1章 ラムダ式とは

  • 1.4 メソッド参照
    • p.13 上のコード
      super::greet()はRunnableと関係ないけどいいの?
      → Runnableはp.8 1.3にある関数型インタフェース(@FunctionalInterface)。Runnableの単一の抽象メソッドvoid run()の実装が、super::greet、すなわち、
      () -> super.greet()、すなわち、
      void run() {super.greet();} になる。
  • 1.5 コンストラクタ参照
    • p.13 中ほどのコード 意味的には、
      List<String> labels = ...;
      List<Button> buttons = new ...;
      for (String label : labels) {
          buttons.add(new Button(label));
      }

      のような感じ。何が良いかはストリームAPIのところで出てくるでしょう。
  • 1.6 変数スコープ
    • p.16 メモ
      内部クラスでも無駄にfinal変数に代入したりしなくてすむようになったのですね。
  • 1.7 デフォルトメソッド (p.19 下方コードの前まで)
    • p.19
      多重継承によるメソッド実装の衝突がおこるようになる

「Java SE 8実践プログラミング」第1回(10/7)

Posted on by 0 comment

参加者 今井(読み手)、青木、沼田(記)
範囲 pp 1 – 11

  • 表紙
  • そで
  • 著者紹介
  • 訳者紹介
  • 訳者まえがき
  • 謝辞
  • 目次
  • まえがき
    • Nashornは「ナスホーン」と読むようです。

第1章 ラムダ式とは

  • 1.1 なぜラムダ式なのか
    • ラムダ式の導入でGoFのデザインパターンは影響される?実装のしかたが変わる?
  • 1.2 ラムダ式の構文
  • 1.3 関数型インタフェース

「「納品」をなくせばうまくいく」第8回 (10/3)

Posted on by 0 comment

参加者 沼田(読み手)、今井、青木(記)

範囲 pp.218-238

7章 「納品のない受託開発」をオープン化する

  • 03 「ベストエフォート経営」で社員の幸せを大事にする
    • 持続できる会社であること
    • 急成長を目指さない「ベストエフォート経営」
  • 04 「納品のない受託開発」を拡大する「のれん分け」と「ギルド」
    • 目指すはオーナーシェフ
      顧客もつれて独立するのか気になりました。
    • 「納品のない受託開発」をオープン化
      p.225 l.4 誤植『「納品のない受託開発」広めて』→『「納品のない受託開発」広めて』
    • フランチャイズの新しい形「ギルド」
  • おわりに Social Change! 自分の変化を世界に広げていくこと
    • なぜ「納品のない受託開発」に取り組むのか
    • 小さな会社の大きなビジョン
    • 世の中に変わらないものはない