読書会(Filthy Rich Clients)第1回議事録

[ 戻る ]


Java読書会 「Filthy Rich Clients」を読む回(第1回)議事録

日時 : 2009/4/11(土) 10:00-17:00
場所 : 高津市民館 第5会議室
出席者:今井、岩室、遠藤、小川、尾関、小棚木、門脇、高江州、高橋(徹)、高橋(智)、
    根本、松永、村山、吉本(書記)
----------------------------------------------
※同書の誤字脱字は非常に数が多いため、議事録からは割愛します。

■表紙
 ・表紙の色は何色?
   →青でいいのでは?

■序文
■前書き
 xx
  外部リソース
   ・3行目は、わざと「問違い」としている。

 xxi
  他のプロジェクト
   ・JOGLではJava3Dは使用しているのか?
    →使っていない。

■謝辞
■筆者に関して
■日本の読者のみなさんへ
■訳者前書き
■はじめに
 P1
  ・データバインディングとは何か?
   →JAXBのことか?
    →JAXBはJavaクラスを生成する。
    →クラスはAPIと言ってもいいのか?
   →注1から判断して、訳注では意味を取り違えているということはないのか?
   →その可能性はある。XMLはに言及されていない。

 P2
 P3
 P4
 P5
 P6
  ・ブルームエフェクトのサンプルが動かない
   →Windowsの画面色数が16ビットだっただめに例外が発生。
   →32ビットにする。

 P7

■第I部 グラフィックスとGUIの基本

■第1章 デスクトップJavaグラフィックスAPI
 P11
  ・AWTとSwingの両方がアプリケーションから見えるのは分かりにくい。
   →互換性を維持しながら拡張していったため。
   →Javaの歴史
   →本当に性能を追求すると、新しいものにするしかないが。

 P12
  ・インフラストラクチャとして役割以上のものを持つようになっているとは?
   →AWTは元々はツールキットだったが、Swingのインフラとしての役割を持つようになった。

 P13
  ・Java2Dの本で良書はあるか?
   →洋書ではオライリーの本がある。
   →和書ではなさそう。
   →JDKの付属ドキュメントがある。

  ・軽量とは「ネイティブに対応していない」意味でいいのか?
   →グラフィックはライブラリで描画して、ネイティブのリソースは使わない。
   →早いという意味ではない。
   →重量とは、部品1つ1つにIDが振られて、Windowsの部品として動くもの。

【宿題】自宅や会場で、サンプルを動かしてみよう。

 P14

■第2章 Swingのレンダリングの基本
 P15
  ・グラフィックスの状態とは、グラフィックスコンテキストのことか?
   →P51に記述がある。
   →グラフィックオブジェクトのこと?
   →グラフィックスで、一般的にはどのように言うものなのか?

【宿題】原書では「状態」はどのように記述されているか? context? state?

 P16
  ・SwingやJava以外では、EDTと呼ぶのか?
   →WPFは同じような仕組みを持っている。
   →統一的な名称はあるのか?
   →Java以外ではEDTは聞かない。

 P17
 P18
  ・15行目にrepaint()の欠点は・・・と記述されていて、16行目にはpaint()の呼び出しとなっているが
   いいのか?
   →裏側の動きは、この記述でも間違いではない。
   →原書ではどうなっているのか?
   →両方ともrepaint()でも話は通じる。

 P19
  ・3行目の「この」の記述は余計か?

 P20
  ・注3の最後の3行は何を言っているのか?
   →ジャクソン・ポロックの絵を調べてみると分かる。

 P21
  ・9行目に、標準でこのような機能はすでに持っているとあるが・・
   →ある程度の標準以外の機能もSwing部品は持っているということ。
   →記述が分かりにくい。

 P22
 P23
 P24
  ・drawImageの4で割っている意味がよく分からない。
   →左から1/4の位置を中心にするということか。

 P25
 P26
  ・サンプルソースの3行目〜5行目の部分の意味は?
   →ボタンの高さや幅が変更されれば、再描画するということ。

  ・サンプルソースの6目で、createImageの戻り値はImageなのにBufferedImageになぜキャストできるのか?
   →この辺りがゴチャついているので、推奨されていない。
   →ダウンロード出来るソースでは、推奨されている互換画像が使われている。
    こちらではキャストされていない。

 P27
  ・Compositeの概念は?
   →何を抽象化したものか?
   →直訳すると複合
   →複数の画像を重ねることが出来るということか。

 P28
  ・アルファ値とは?
   →アルファブレンド値のこと。(透過度の割合)

  ・グラフィックスプリミティブとは?
   →線、点、円などの簡単な命令で描画出来る図形や部品。
   →P77に定義がある。

  ・不透明な部品は、その背景を完全に描画する義務があるとは?
   →自分の背景を塗り潰すということか。
   →デフォルトのpaintComponent()をオーバーライドすると、塗り潰し処理が呼ばれなくなるので
    自分に渡された領域内は、全て自分で描画しないとならない。
    (デフォルトのpaintComponent()の中に塗り潰し処理が入っている。)

 P29
 P30
 P31
  ・真のダブルバッファは高コストではないのか?
   →フリップフロップ方式で切り替えるのであれば高コスト。
   →でもしていないだろう。
   →バックバッファへの描画完了で、ウィンドウにコピーするのであれば問題ない。
   →これまでのバッファが酷すぎただけ?

 P32
  ・キューの最大長は決まっているのか?
   →無限ではないはずだが。
   →LinkedListを使っているので、メモリの限界までは大丈夫と思われる。

 P33
  ・フリーズするデモで、ボタンを押したままになっても再描画されているようだが・・
   →Windowsからのメッセージを受け付けるスレッドは動いているので、
    最後の再描画をしていると思われる。

 P34
  ・「これはEDT上でテキスト部品の状態を変更しないというSwingのシングルスレッドルールに反している。」
   この記述は反対なのでは?
   →日本語訳が分かりにくすぎる。

 P35
  ・readHugeFile()が長く時間がかかる場合、nullのtextでinvokeLater()が呼び出されるのか?
   →まずreadHugeFile()を呼び出すスレッドが開始され、その中でreadHugeFile()が呼び出される。
    その後で新たなスレッドを生成して、その中でinvokeLater()を呼び出すコードが渡されて実行される。

 P36
 P37
  ・invokeAndWait()をEDT上で動かすとどうなるか?
   →デッドロックするはず。
   →JavaSE6だとErrorが返る実装となっている。
   →でもFutureを使う方が今風か。

 P38
 P39
 P40
 P41
 P42
 P43

以上

次回は、第3章より。


[ 戻る ]