【Ruby関西】FormalMethod、オープンソースを軸としたエンジニア人生
土曜にRuby関西へ行ってきた。
今回も50人以上集まり、懇親会会場までの乗り物でプリンセスラインのバスを貸し切り、懇親会会場のインド料理店も貸し切り、行くたびにどんどん大々的になっている不思議なコミュニティだ。
【1・いけがみさんの話~テスト駆動を代用するライブラリ】
今回一番聞きたかった話がいけがみさんの講演「Ruby で書いたプログラムのデバグ技術」。
最初は、振舞駆動開発ライブラリRSpecやランダムテストライブラリRushCheckのお話。
1・RSpec
RSpec はTest::Unitと違って、テストの仕様を実装から切り離す所に特徴がある。
後で話をしたら、テスト駆動では、境界値条件や同値分析など実際の値を組み込んでテストするのに対し、RSpecでは、assertEquals()の構文を抽象化したものに相当するとの事だった。
確かにこの手法なら、設計仕様と区別して要求仕様がそのまま書けるが、まさにこの作業こそが手間がかかる所。
2・RushCheck
RushCheckはいけがみさん独自のライブラリで、テストで与える入力をランダムで大量作成してテストするツール。
意図は、不良品のサンプリングでサンプル数が多いほど統計学的に確からしさが高くなるように、テスト空間でテストするケースを増やせばバグをあぶりだせるだろう、ということ。
この発想は使えそうな気がする。
潜在的なバグの存在確率は過去の経験値で分かっているならば、ランダムにテストしてその結果を出力すれば、統計学的にどこまでバグをつぶせたか、ある程度見通せる。
但し、かずひこさんが「ランダムテストした時に、その経緯でバグが出るが、順序を変えると再現できない場合はないか?」と質問したように、ランダムテストで状態が変わってしまうような時は微妙な問題になる。
いずれもアイデアは面白いけれど、開発途中という印象を受けた。
【2・いけがみさんの話~FormalMethodは要求仕様を数学として書く手法】
最も興味深かった話は、FormalMethodのお話。
FormalMethod(形式仕様記述)には、「形式的手法」と「数理的手法」の二つの訳語があるが、いずれも「要求仕様を数学として書く」ための手法で、テスト抜きで確からしさを検証できる。
FormalMethodの実装例は、CやJavaでは既に公開されていて、ビルゲイツも「21世紀の新しい技術だ」と絶賛したらしい。
但し、学習時間や計測時間などのネックがあり、テストよりもコストが高いのが最大の弱点。
FormalMethodの例としては、代表的な2つの例がある。
一つは、モデル検査と呼ばれるもので、オートマンを基礎とする。
もう一つは、定理証明と呼ばれるもので、要求仕様を命題へ変換して、PGMと仕様が一致することを証明してしまうもの。
前者のモデル検査のツールは多いらしく、MSでも使っているらしい。
SEA関西プロセス分科会でも、モデル検査の話は以前あったから興味深かった。
後でいけがみさんに、FormalMethodについて聞いてみたら、ハードウェアに近い部分では成功例が多いらしいが、FormalMethodは万能薬ではない、とのこと。
テスト駆動からFormalMethodへ突き進むと、どんどん数学に近づいていく印象を持った。
【3・かずひこさんの話~オープンソースを軸としたエンジニア人生】
かずひこさんが語るオープンソース遍歴と人生観のお話で、考えさせられました。
かずひこさんは、電子辞書からWikiに至るまで、コミュニティへフィードバックしたら歓迎されたという原体験を持っている。
顧客にとって、オープンソースだろうが、ベンダー製品だろうが興味ないというシチュエーションが増えてきたこと。
オープンソースの方が業務の継続という点から見ると、サポートが受けられるというシチュエーションが増えてきたこと。
そもそも、サポートを止めるという行為は、サービス業のプロとしていいのか?
愛よりも誠意の問題ではないか、との指摘。
話を聞くと、オープンソースがビジネスに与える力が変わっているように感じた。
最後の方で、エンジニアとして、会社を辞めたら何が残りますか?と聴衆へ問いかけていた。
オープンソースなら、自分の作品としても残すことが出来る、と。生きた証として。
この言葉はしびれました。
なぜ、Imagine(ジョンレノン)の曲が流れているか分かりませんでしたが、最後のパワーポイントでようやく分かりました。
You may say I'm a dreamer...
But I'm not the only one.
I hope someday you'll join us. :)
今後、フランスで活躍されるとの事。
ご活躍をお祈りしてます。
| 固定リンク
「コミュニティ」カテゴリの記事
- 第26回redmine.tokyo勉強会の感想~多様性はコミュニティが成功する重要な要因の一つ #redmineT(2024.06.15)
- 『世界一流エンジニアの思考法』が学べる環境を手に入れてかつ継続する方法の感想 #devboost(2023.12.10)
- 第25回東京Redmine勉強会の感想 #redminet(2023.11.05)
- パターンカタログよりもモンスターカタログの方が面白いね #jasstkansai(2023.06.24)
- デブサミ2023の感想(2023.02.11)
コメント