Skip to content
muryoimpl edited this page Jan 1, 2012 · 1 revision

第13回 Ruby/Rails勉強会@関西 (運営: Ruby関西 )

懇親会

  • 日時
    • 2006 年 12 月 16 日 (土) 18:00~(予定)
  • 場所
  • 会費
    • およそ社会人:学生 = 2:1 の比率でご負担ください。前回は 3500 円、2000 円でした。
  • 締切
    • 2006 年 12 月 15 日 (金) 17:00 まで

プログラム

  • 「Ruby 初級者向けレッスン 第10回」by okkez さん&夏間さん

  • 「Ruby で書いたプログラムのデバグ技術」by いけがみさん

  • 「Rubyクイズ」by cuzic さん

  • 「scim-rubyの紹介」by 中本さん

  • 「オープンソースは愛だ!」 by かずひこさん

レポート

  • 「Ruby で書いたプログラムのデバグ技術」by いけがみさん(レポート: 氏久達博さん)

    • はじめに
      • 今回の発表は関西オープンソースのお話の続き。
      • バグとは「仕様と実装がずれている」状態のこと。
        • 仕様と一言で言っても、要求仕様と設計仕様は違うので、分けて考えるべし。
        • 「どうあるべきか」と「実際はどうだったか」のdiffをなくしたい。
        • 要求仕様は"object.action" should be "result"
        • 実装は"object.action" may be "result"
    • 振舞駆動開発RSpec
      • Test::Unitとの違い
        • test/unitならassert person.put_crown.king? であると断言する
        • rspecならperson.put_crown.showld_be_king であるべきだ
      • RSpecいい
        • Testは仕様と実装がまじってる。RSpecはきりわけられてる。
        • こういう例はいくらでもある(assert_なになにをそのままshould_なになににする)
        • 角谷さんがRSpecチュートリアルを日本語化
        • rspecならテストコマンドspecがある
        • railsで使える
    • ランダムテストライブラリRushCheck(自作)
      • テストしてもバグが見つからない
      • 「テストでバグなんか見つかるはずがない」
        • テストする空間が広いから。テストしてるとことバグがあるところが違う
    • ランダムテストという考え方
      • テストで与える入力はランダム大量発生するべし
      • イメージ: 値(インスタンス)でテストするんじゃなく、型(クラス)でテストする感じ
    • 質疑応答(一回目)
      • (時間が余っているようなのでいったんここで休憩をかねて質疑応答)
      • Q. mockは?
        • A. ないけどいい提案
      • Q. どの型でもOK?
        • A. プログラマが対応。ライブラリは基本のみ
      • Q. ランダムなら確実にバグが見つかるとはいえない
        • A. そのとおり。統計の棄却率のような感覚。
        • 製造業とかでの考えの輸入
      • Q. 最初に極端そうなのをやっちゃうといい
        • A. いいアイデア。
        • one_of。arrayからランダムに選ぶ。境界値
        • MyInteger
        • 境界値与えるのは簡単
      • (ここで逆に時間がおしてきた)
    • Formal Method
      • Formal Method
        • 日本語としては「形式的手法」, 意味としては「数理的手法」
      • 要求仕様をプログラミング言語ではなく数学として書く
      • Formal MethodでOKならバグは「絶対に」ない。
      • テストなしで要求仕様満たしを自動確認
        • クリティカルシステム(原発など)ではテストできないから。
      • 現在Ruby用のFormal Methodsはない。
        • CやJavaにはあるから誰かhackして。
      • プログラムと要求仕様を数学的な何かに翻訳する。テストとは根本的に考え方が違う
        • rubyでは実装されてないから、あくまで教養としてのお話
    • デモ(RSpecとRushCheck)
      • (BGMはクリスマスソング)
      • specコマンドで実行
        • 緑の文字なら成功、赤の文字なら失敗
      • コンテキストを指定できる
      • gem install rspecでインストール完了
      • 例: 某社携帯でsprintfの関係で「%s」で強制再起動
    • 質疑応答
      • Q. pythonでは乱数のseedを与えられる。pythonのランダムライブラリを入れられないかな
      • checkかけてきた履歴に関係する場合は?
      • 乱数の与え方の制限など
        • A. 現状じゃできない。いままで使ったものをスタックに入れとけばいけそう。
        • 今後の開発に使えそう
      • Q. formal methodに懐疑的。仕様を厳密に決めないと意味がない。部分的適応はできる?
        • A. 巨大ソフトウェアの数学的仕様を決めるのは大変
        • 通信やwebのような、プロトコルだけ決めたらあとはできるとかなら簡単
        • 実際通信プロトコルへのformal methodは成功してる
        • 私もあれが万能薬だとは思っていない
      • Q. RSpecとRushCheckの組み合わせは?
      • エラーが起こったときの値を保存して、それに応じたテストコードを自動生成してくれるとラク
        • A. 考えてなかった
        • 「後半の質問は疲れてよくわかんないです」
    • 感想
      • プレゼンテーションの合間合間に出てくる写真がすばらしい…。
      • 今回の発表にかけるいけがみさんの熱い情熱がひしひしと伝わってきます。
  • 「Rubyクイズ(第2回)」by cuzic さん(レポート:一歩)

    • 発表者自己紹介
      • 名前:cuzic(きゅーじっく)
      • 趣味:プログラミング,政治,経済,世界史
      • 他:親指シフトキーボードの人
      • 企画について:
        • 前回も説明したが、同名のRubyでパズル的な問題を解くものとは別
        • Ruby中級者を対象。上級者になる時にハマりやすいポイントを判りやすい選択問題で学ぶ企画
      • 今回は色々パワーアップ!:
        • (オンライン)「へぇ」ボタン準備
          • localhostにてrailsで作成→会場の皆は発表マシンにネットアクセスができない。演者以外誰も押せない→意味が無い。
          • (感想:何処かのWebサイトで公開してそこと繋げる形では?)
        • 効果音準備
          • きたきたきたーっ(という音楽有)
          • IE上でリンククリックで音楽再生→IEを閉じると鳴らない→プレゼンツールの背景で鳴らせない→意味が無い。(しまった俺 by cuzicさん)
    • 設問
      • 第一問:文字列について
        • B班代表が正答?
      • 第二問:文字列リテラルについて
        • 次の出力は?

p <<EOD % "Ruby"
"I love #{%{#{%q{%s}}}}"
EOD
    - 別解:『“』がRuby文法エラーなので通らない(プレゼンツールのフォント都合で、ダブルクォーテーションは開閉で『“"』だった)←冗句
        - C班代表がエ)(\n無し)と誤答?
        - 訂正:そもそも問題が間違っていた。(^^;

p <<EOD % "Ruby"
I love #{%{#{%q{%s}}}}
EOD
        - であるべき。
    - 第三問:パースエラーないし実行時エラー
        - D班代表が正答?
    - 第四問:正しい出力の組み合わせ
        - 戌→亥と年が変わるに合せ、dog→pig置換問題
        - E班代表が正答
    - 第5問:sprintfの書式問題
        - F班代表が正答?
- 感想
    - 第1回に続き、
        - パッと見判りきってるのに、よく読むと判らない。
        - パッと見判らないのに、よく読むと判る。
    - という絶妙加減で大変楽しかったです。誰もが口ごもって答えなかったり、疑問形で答えたりしてました。
    - 自己申告で、全問正解した人に挙手して貰ったが、1名しかおらず。
    - 途中「今irbで実際やってみました」という答えに会場が沸く。クイズの崩壊。
    - 第5問あたりで「え、時間おしてるの? 勘違いしてた」とかなってダッシュで終了。
    - 実は使われなかった第6~8問が存在。(時間の狂いは)「想定通り」by cuzicさん
  • 「scim-rubyの紹介」by 中本さん(レポート: Yuyaさん)

    • 感想
      • 中本さんによるscim-rubyの発表を聞くのは、ESPer2006に続き2回目ですが、今回もまた発表のリズムが良く、最後まで楽しく聞くことができました。会場の反応も上々で、「便利そう」「使ってみたいかも」「Windows版はー?」など、様々な反応がありました。個人的にもWindows版は、是非ともお願いしたいところです。
    • scim-rubyとは?
      • 「1行のRubyコードが、デスクトップ上の好きな場所で実行できる」という、すごいソフトウェアです。
      • かな漢字変換システムにより「ひらがな」を「漢字」に変換する代わりに、「Rubyのコード」を「そのコードの実行結果」に変換してしまうという、面白いコンセプトのソフトウェアです。漢字が入力できる場所であれば、コンソール、エディタ、Webブラウザ、ワードプロセッサなど、アプリケーションの種類を問わず利用できるのが特徴です。
    • scim-rubyの仕組み・・・その前に
      • scim-rubyの仕組みについての説明の前に、通常のかな漢字変換システムの説明がありました。
        • まずキーボードで「watashi」と入力すると
        • それがインプットメソッドにより「わたし」に変換され
        • さらにかな漢字変換エンジンにより「私」に変換され
        • 最終的に、アプリケーションに「私」が入力される
      • という流れになります。
    • scim-rubyの仕組み
      • かな漢字変換システムの仕組みをRubyに置き換えてみると、
        • まずキーボードで「1+2+3」と入力すると
        • それがscim-ruby(インプットメソッド)により「1+2+3」に変換され
        • さらにRuby(かな漢字変換エンジン)により「6」に変換され
        • 最終的に、アプリケーションに「6」が入力される
      • といった感じになります。
    • デモンストレーション
      • 百聞は一見にしかず、ということで行われたデモンストレーションは、scim-rubyの強力さ、ひいてはRubyの強力さをも感じさせる、とてもわかりやすく、楽しい内容でした。
      • その一例をご紹介します。
      • 四則演算
        • 1+2+3 #=> "6"
      • 文字列演算
        • "str"*3 #=> "strstrstr"
      • 外部プログラム
        • ls -l #=> lsの実行結果
      • 変数の利用
        • a=10
        • a #=> "10"
      • 現在日の挿入
        • Date.today #=> "2006/12/16"
    • デモンストレーション2
      • scim-rubyには「to_scimruby」というメソッドを使用した拡張機能があります。Object#to_scimrubyはto_sメソッドをそのまま呼ぶようになっていますが、このメソッドを再定義することで、独自に拡張することが可能です。標準でArrayは再定義されているため、変換結果には大括弧は表示されません。
      • Array
        • [1,2,3] #=> "1,2,3"
      • また、TrueClassクラス、FalseClassクラスにto_scimrubyメソッドを再定義して音を鳴らすという、とても興味深いデモンストレーションもありました。
      • 音を鳴らす例
        • true #=> trueを意味する音が鳴る
        • false #=> falseを意味する音が鳴る
        • 1+2==3 #=> trueを意味する音が鳴る
      • その他にも、履歴機能、クリップボード機能などのデモンストレーションもありました。
    • 質問
      • 私を含め、数名の方が質問をしましたが、どれもFAQでした。資料にあるFAQの豊富さにびっくりです。
      • Q. Windowsでも使えますか?
        • A. 使えません。
      • Q. exitするとどうなりますか?
        • A. おかしくなります。危険な操作はしないでください。
      • Q. 例外が発生するとどうなりますか?
        • A. 例外ウィンドウが表示されます。(変換候補一覧のようなミニウィンドウ)
  • 「オープンソースは愛だ」by かずひこさん(レポート:あゆ)

    • オープンソースって素敵よね
      • オープンソースには10項目からなる定義がある
      • Ruby アプリケーションのオープンソースが少ないのは悲しいね
      • 最近では業務アプリも踏まえてオープンソースが増えてきている
    • オープンソースで見つけるできる君
      • オープンソースはよい人材市場。
      • オープンソースはよい教材。
      • オープンソースはよい先生。
    • まとめ
      • オープンソースは顧客への愛
      • オープンソースは仕事への愛
      • オープンソースは作品への愛
      • I hope someday you'll join us.
    • おまけ
      • オープンカーを嫁にもらってくれる人、募集中。
    • 感想
      • 長い間、初級者レッスンで活躍していただいたかずひこさんの、締めくくりとしての発表。個人的にはまとめに書いた、オープンソースは顧客への愛であり、仕事への愛であり、作品への愛であるという部分が一番ぐっときました。初心者にやさしく、オープンソースに触れる導入口として、Ruby勉強会が存在できればと思いました。

反応リンク集

Clone this wiki locally