寒くなってきましたね.秋です.ブログを更新する時間がなかなか確保できませんな今日この頃です.
はじめに
今日は機械学習におけるソフトの「再利用」と「再実装」についておもしろい記事を見つけたので引用しながら考察したいと思います.このトピックに関しては機械学習だけに限らず,すべてのソフトにおいていえると思います.ソフトの「再利用」と「再実装」
に関しては,私は学生時代から結構議論になっていましたし,そして現在ビジネスシーンでもこれについては議論になります.特にビジネスでは工数という概念があるためなるべくなら「再実装」はしたくないという前提がありますよね.
本日引用する記事は以下の記事です.
Re-implement or reuse?
Posted by Cheng Soon Ong on October 14, 2009
このブログはmloss.org(machine learning open source software)という機械学習に関する手法の実装を登録・検索できるサイト上の有
識者による機械学習に関するコラムに掲載されていた記事です.ここのサイトは実装の検索だけでもかなり有用なのですが,何気にブログもおもしろい!ということを渋谷の中心で叫びたいと常々思っていました.
Why reuse and Why re-impelment
さて,上記の記事で「再実装または再利用?」というタイトルで以下のように,それぞれのメリットを論じています.
Why reuse ■ Standard software engineering practice ■ antipattern (reinvent the wheel) ■ Better than "hacked up" own version ■ Save time by outsourcing maintenance Why re-implement ■ Existing solution is not good enough ■ Educational purposes ■ Not aware of other solution ■ Existing interface changes too often
Re-implement or reuse? より引用 詳しくは参照先のエントリーを参照されたし.
和訳
- なぜ再利用するか
- 一般的なソフトウェア工学の慣習のため
- アンチパターン(車輪の再発明)
- 自分で作るよりも優れているため
- メンテナンスの時間がとられない
- なぜ再実装するのか
- 既存のソリューションは十分ではない
- 教育的な目的
- すでに存在するソリューションの存在に気づいていない
考察
当たり前といってしまえば当たり前のことのなかもしれないですが,今後の自分のためにもこのトピックに関して自分なりの考えをまとめておきます.
ある問題を解決するときには,考えなしにすぐに再実装するのではなく,再実装するにせよ再利用するにせよ,必ず既存の実装について調査をしなくてはならないと思っています.例えば,既存の実装では,マシンスペックをどれぐらい要求するのか(特にメモリ使用量など),処理時間はどれぐらいかかるのか,APIは適切に実装されているかなどを調べなくてはならないと考えています.この調査をしっかりしていなければ,再実装した際に評価する指標も無いし,もしかしたら劣ったものを実装してしまう可能性もあるため
です.再利用できるかを検討する際は,「自分が求める要求」と「既存の実装に足りないこと」を照らし合わせ,再実装したほうが早いか,既存の実装を修正し再利用したほうが早いかを検討します.
ちょっと中途半端ですが今後もこの話題に関しては機会があったらまとめたいと思います.この手の話題は結構ソフトウェア工学系の分野では語り尽くされているのかもしれないので,その手の本を読んだときにまた再考したいと思います.
もし,読んでくださった皆様にも意見がございましたら,お気軽にコメントくださいませ.