第13回Ruby勉強会@関西
ちょっと遅刻しました。微妙に迷った(^^; 右上の写真は京都女子大学のバス停のところにあったサンタです。
Ruby初級者レッスン by okkezさん、ナツマさん
- フレッシュな雰囲気。
- Taiyakiが焼き立てかどうか?
- privateのいいこと。内部的なデータは外から呼ばれたくない。
- protectedはあまり使わないかも。
- 変数。@countと@@countとの違い。
- 名前空間。rubygemsでConfigクラスがかぶったー。
- グローバル変数はよく考えてから使うこと!!
Rubyで書いたプログラムのデバグ技術 池上大介さん
- デバグとは? バグを発見してつぶす。今日は発見のことについて。
- 要求仕様と実装のずれを見付ける。
- Object ← action → result
- テスト駆動開発は略。
- 振舞(ふるまい)駆動開発RSpec紹介。テスト駆動開発よりはいい。
- 何か優れているか? assert pserson.put_crown.king? と person.put_crown.should_be_king
- predicate? should_be_predicateなどなど。等しいか? 例外を投げるか? などなど。
- RSpec日本語チュートリアル。
- RSpecの気の効いている点。あとで。
- ランダムテストライブラリRushCheckの紹介。
- テストしてもバグが見付からない。テスト空間は広い。バグがないところをテストしている。
- 昔2 ** 29 / 2** 30が落ちてた。
- プログラマが思いつくテストケース。サイズが小さい。量が少ない。動いて当然のテスト。
- ランダムテスト。テストに与える入力を全自動でランダムに大量に生成する。
- RubyCheck::Claim.new(Integer, Integer) do |x, y| .. end.check
- 調整可能なパラメータ。テスト回数、乱数の分布、事前条件。x + y < 10を満すなど。
- Formal Methods紹介(形式的手法、数理的手法)。ハードウェア/ソフトウェアの開発/検証手法。
- テストよりもコストが高い。学習時間。メモリと計算量。実行にうつすまで。
- Formal Methodsのゴール。テスト抜きに製品が要求仕様を満していることを保証する。
- テストできない製品。クリティカルシステム。原子力発電所。飛行機。医療機器。
- じゃあRubyで。現状ない。C言語、Javaについては存在する。
- まとめ。プログラム→数学的な何か。要求仕様→数学的な何か。コンピュータが数学的な何かを自動判定する。
- モデル検査、定理証明の2つの方法がある。
- モデル検査。プログラム→オートマトン。要求仕様→時相論理式。BLAST、Bogor、Boop Toolkit、CBMC、SATABS、SLAM。
- セールストーク。Microsoftはモデル検査ツールSLAMによって、レビューでは見付からなかったバグを見付けた。NASAのPathFinder。
- 定理証明。プログラム→数理的モデル。要求仕様→命題。まだまだ研究室レベル。ツールとしてはいっぱいある。
- 具体例。CBMC。C言語に対するモデル検査ツール。配列のインデックス参照エラー、算術演算エラー、zero division、到達可能性がわかる。
- デモ。RSpec。stack.rb。だいたいArrayと同じ。
- stack_spec.rbを作成。spec -f s -c stack_spec.rb。合格すると緑。意味のわかるメッセージが出せる。
- デモ。RushCheck。携帯の%sの文字列で強制再起動。sprintf(str)。
- sprintf(s)のランダムテスト。69回目でmalformed format stringで例外が発生した(%何とかの文字列がそこで入った)。
Rubyクイズ第二回 by cuzicさん
- 親指シフトキーボード使い。昔、富士通のワープロで使われていたキーボード。
- 同名のアレとはまったく関係はありません。中級者が上級者になるときにハマりやすいポイントを紹介。パワーアップ。ヘ〜。音とか。ウルトラクイズ。
- 文字列ネタ。ヒアドキュメントネタ。%{}、%q{}。%r{}、ディレクトリの正規表現とか。文字列の%メソッド。
- "Perl" = "Ruby"はだめ。to_str、暗黙の文字列への変換が行われる。
- sprintfネタ。
- scim-rubyとは。1行のRubyコードがデスクトップ上のどこでも実行できるようになる。
- Input Methodを改造する。かな漢字変換エンジンをRubyに置き換える。
- デモ。f.closeを忘れてはいけない。
- Windowsでは使えない。むー。
- exitはダメ。
- コンテキストをリセットする方法は?
- 起動時にrequireするライブラリを指定できる。
- なんとかWindowsでできないものかな。Input Methodを作ると(Windowsの低レベルを触らないといえないから)大変そう。顔文字貼り付けソフトとかそんなのを参考になんとかできないものかな。
オープンソースは愛だ by かずひこさん
- 電子辞書 → tDiary → wiki。フィードバックしたら歓迎された。
- オープンソースとは? 単にソースが手に入るだけではない。10項目からなる定義がある。
- Rubyのオープンソース。言語処理系はもちろんオープンソース。ライブラリはたくさんオープンソース。アプリケーションは…
- 最近のオープンソース。かつてはインフラ系(OS、言語、データベース)。最近は業務系。
- なぜオープンソースか? 顧客にとってはあまり興味はない。のぞましいシチュエーションが増えてきた。
- ベンダロックインからの開放。
- 事例。ハードディスクがクラッシュした。再インストールをメーカーに依頼。有料です。
- 事例。オープンソースを採用している会社。Olut。開発当初からSourceForgeで公開。プログラマーのモラルアップ。アプリケーションの品質向上。よりリスクを下げるためにオープンソースを選んだ。サポートやアップグレードを自社の都合で決められる。
- ソフトウェアのライフサイクルは、できてからが肝心。「業務の継続」のためにオープンソースを選んだ。
- もしサポートがなくなったら? 顧客は本当にとても困る。
- オープンソースなら安全? そうとは限らない。でも「絶対無理」よりはマシ。
- そうは言っても「自由!自由!ってウザい」 → 思想なしで生きられるほど人生は単純ではない。
- そうは言っても………
- ではどうすれば。基本はやはり人。デキる君による良い仕事が世界を幸せにする。
- デキる君が欲しい。
- どうやって探す? オープンソースは良い人市場。どうやって育てる? オープンソースは良い教材。
- どうやったらなれる? オープンソースは良い先生。
- モチベーション。自分の仕事を憎むには人生はあまりにも短い。愛のために働く人々は金のために働く人々を凌駕する。
- もし会社を辞めたら? その時あなたに何が残りますか?
- あなたにできること。オープンソースのソフトウェアを使う。オープンソースのサービスを使う。オープンソースで発注。オープンソースで提案。オープンソース企業に就職。
- オープンソースは顧客への愛。オープンソースは仕事への愛。オープンソースは作品への愛。
- IMAGEINE。
- かずひこさん、ホントにお疲れ様です!!
懇親会