中村 のりつぐ です。

「Ruby/GTKプログラミング入門」
http://www2.gihyo.co.jp/books/bookinfo.asp?ID=4-7741-1468-5

さくっと読んでみました。

(完成度を高めようとすると異常に難しいけど)
GUI なんて
o 超簡単なチュートリアル
o リファレンス
o Tips, 落し穴
だけあれば良いと思っていたのですが、
やっぱり1冊の本になっているのは良いですね。
# なんで Ruby/Tk は1冊の本にならなかったのだろう…
# Ruby/Qt のも欲しくなるな…

メソッドとか定数とかが表になってまとまっているのも便利。


気がついた間違い、感想など
# 興味のない方は読み飛ばしてください。


継承図
子から親に←を引くものではないの?
(UML ってやつだけか?)

p.11 下から 3行目
誤) LGPL(Library GNU General Public License)
正) LGPL(Lesser GNU General Public License)

p.19 上から 1行目
誤) /usr/local/bin/ruby ディレクトリ内に Ruby の実行ファイルを
正) /usr/local/bin ディレクトリ内に Ruby の実行ファイルを
  or
正) /usr/local/bin/ruby に Ruby の実行ファイルを

p.20
誤) 実行ファイルは /home/minami/ruby164/bin/ruby になります
正) 実行ファイルは /home/minami/ruby167/bin/ruby になります

p.31
誤) # mkdir /usr/local/ruby-gtk-0.27
正) # mkdir /usr/local/doc/ruby-gtk-0.27

p.57
> 上記の条件は、主要な日本語ディストリビューションでは、
> 標準で設定されています。
感想) 表現に違和感を感じた

p.66
誤) lable.set_line_wrap = true
正) lable.set_line_wrap(true)

p.71
> box = Gtk::VBox.new()
感想) box でなくて hbox にあわせて vbox にすれば
      良いのにと思った

p.72 図4.2.6 のキャプション
誤) pack_start の第1番目の引数を true にすると
正) pack_start の第1番目の引数を false にすると

p.72 pack_start の第2引数の説明
感想) 第2引数は fill 属性だから HBox であれば
      ウィンドウサイズの大きさを変えるとか関係なく
      違いが出る気がする

p.73 図4.2.8 のキャプション
誤) pack_start の第3引数を整理
整理?

p.73 リスト4.2.2 4_2_8.rb
サポートページにあったサンプルプログラム
4_2_8.rb とはラベルの内容が異なる(英語版?)

p.78 セパレータの説明
> ウィジェット同士の間隔を明確にすることができます。
感想) 特に間隔って訳でない気がする

p.81 ボタン内でのウィジェットの配置の説明
感想) 一回読んだだけでは理解できなかった。
      「さまざまなウィジェットを格納することができます」
      の「さまざま」を複数のという意味に勘違いして
      しまったためちょっとだけ混乱した。

p.85 上から6行目
6行目 の"button_press_event"が間延びしている
ように見える(フォントが違う?全角?)

p.85 4.4.5
感想) enter_notify_event と書いていながらコードでは
      enter だったので、ちょっとあれ?と思った。

p.88 表4.5.1
誤) メソッド名なら togglebutton. の部分はいらない

p.94 Entry のメソッド
感想 > Ruby/GTK)
    ラベルには text= があって Entry にはない?
    同名のメソッドがたくさんあるのは混乱の元の
    ような気が…

p.94 Editable のメソッド
感想) 同名のメソッドも載せるのであれば set_position
      も載せても良い気が…

p.95 リスト4.6.2
誤) 3-6行目 コメントを削除し忘れ

p.102 図4.7.6, 図4.7.7 のキャプション
誤) 第1引数
正) 第3引数

p.111 図4.9.1
誤) calender
正) calendar

p.112
誤) 「/.rubygtk/」
正) 「.rubygtk/」
    コード的には「/.rubygtk/」なんだろうけど
    普通絶対パス的には書かない気がする

p.113 上から2行目
誤) PStore では pstore.root で、
正) PStore では pstore.roots で、

p.117 リスト4.10.1
感想) ENV['HOME'] が設定されていない場合は?

p.125
> ラベルウイジェットを示す変数にグローバル変数を
> 使っていることです。ローカル変数では、シグナルのイテレータに
> 変数を渡すことができません。
手元ではローカル変数に直しても動いているのですが…
後半のほうのサンプルで結構グローバル変数を使っているのも
そのせい?

p.128 スピンボタンの説明
> ある範囲に限られた数値を入力するための
感想) 無限の値を使うわけはないのだろうけど
      わざわざ「ある範囲に限られた」という必要あり?

p.132 表5.2.4
誤) GTK_UPDATE_*
正) Gtk::UPDATE_*

p.133 ピクスマップの説明
誤) C言語の関数の形式で表されています.
正) C言語の配列の形式で表されています.

p.138 図5.4.1
誤) Gtk::Flame
正) Gtk::Frame
  目次 p.378 も同様

p.138 フレーム
感想) 既に 4.9 でフレームを使っていたりしますが…

p.154 まる5
誤) gtk_menu_bar.append() を使って
正) menu_bar.append() を使って

p.160 表5.8.1
> set_active の別名です
感想) 前のほうでは別名を「別名です」と特に
      説明していなかったような気が…

p.164 まる4
誤) MineSweep;; メソッドの作成
正) MineSweep:: メソッドの作成
    ?

p.167 図5.9.2
cbs_frame は cbs_table を囲っていないの?

p.202 脚注
> ただし Ruby/GTK のバグだと思われますが、
感想) 本当にバグなのか気になる…

p.203 表6.7.5
「引数、概要」とかいうタイトル(?)がない

p.227 combo.entry.select_region(0, -1)
感想) 引数の意味が分からない。気になる〜。
      エントリのページにも引数の説明はないみたい

p.229 Alt + Tab の説明
感想) いまいち意味が分からない。
      補完機能があると言っている???

p.240 表7.3.2
> これがデフォルトのセレクションモードです。
感想) Gtk::SELECTION_SINGLE と Gtk::SELECTION_BROWSE
      の両方に上記記述があるので、どれが本当のデフォルト
      なのかが分からない
      (p.253 表7.4.1も同様)

p.240,241 図
感想) モードの違いが分かりにくい(SINGLE と BROWSE
      MULTIPLE と EXTENDED)

p.243 表7.3.3
誤) 文字列は*端に揃えます
正) 文字列を*端に揃えます

p.247 表7.3.4のキャプション
誤) の引数
正) のブロック引数

p.249 ツリーの説明
> 簡単に階層構造を持った GUI を作成することができます
感想) ツリーの item にどんな Widget でも入れられるから
      このような表現になったのかも知れないけど、
      「階層構造を持った」と読んだときには入れ子で
      配置ができること?とか思ってしまった。

p.256
> ツリーアイテムウィジェットは CList アイテムと似ています。
> また、List ウィジェットを継承しています。
p.249 の図だと継承しているようには見えないのですが。

p.272 リスト7.7.1
誤) # actoin_area メソッド
正) # vbox メソッド
メソッドでなく attr_reader ではダメ?

p.301 リスト8.2.4
誤) # 点を描く
正) # 多角形を描く

p.357 表A.1.2
誤) $clv  クラス変数
正) @@clv クラス変数

p.361 ItemFactory
> Ruby/GTK 0.27 以降で使える機能です。
うちは ruby-gtk-0.26 だけど使えている気も…

p.367 C.4
誤) C:\isr\local\bin\ruby.exe
正) C:\usr\local\bin\ruby.exe

p.367
Me の場合って AUTOEXEC.BAT をいじるのが
普通でしたっけ?

       中村 典嗣  E-mail:     nnakamur / mxq.mesh.ne.jp