カーゴ・カルト・プログラミング

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

カーゴ・カルト・プログラミング: Cargo cult programming)とは、実際の目的には役に立たないコードやプログラム構造を儀式的に含めておくプログラミングのスタイルである。カーゴ・カルト・プログラミングは主に、プログラマが解決しようとしているバグか解決策のいずれかかまたは両方を理解していない場合に見受けられる(ショットガン・デバッギング英語版ブードゥー・プログラミング英語版も参照)[1]。他にも、スキルの低いor新人プログラマ(または当面の問題を経験したことのないプログラマ)が、そのコードが何をしているか理解が足りないまま、またはもしかしたら新しい場所にも必要なのではないかと、別の場所から関係ない部分も含めてコードをコピーしてしまうことで発生する可能性がある。

概要[編集]

カーゴ・カルト・プログラミングは、デザインパターンコーディングスタイルを、その背景にある生み出された理由や設計の原理原則を理解せぬまま盲目的に、過剰に適用した結果にも見ることができる。例えば、コード自身を説明するような無駄なコメントを加える、ガベージコレクションが問題なく自動的に処理してくれるようなオブジェクトの解放コードを記述する、単純なオブジェクトの生成にもファクトリーオブジェクトを用いる、等。これらはしばしば、プログラマがプログラミング言語に不慣れな場合に、または単に熱心過ぎる場合に引き起こされる。

カーゴ・カルトという語句は、元々は第二次世界大戦後の南太平洋で見られた先住民の宗教に由来している。これらの人々は、戦時中素晴らしい積荷をもたらしてくれた神のような飛行機を呼び出そうと、一心不乱に精巧な飛行機の模型や滑走路を作り上げた[2][3]。コンピュータプログラミングにおいてこの語句が使用されるようになったのは、おそらくリチャード・P・ファインマンカーゴ・カルト・サイエンス英語版から派生したものと考えられる[3][4]

カーゴ・カルト・ソフトウェア工学[編集]

関連するソフトウェア工学の用語として、スティーブ・マコネル英語版の作成したカーゴ・カルト・ソフトウェア工学が存在する。

マコネルは、ソフトウェア開発集団が、ソフトウェア開発工程を猿真似したり、あるいは開発者のプロジェクトへの献身を要求するアプローチをとって、より成功している開発集団の真似をしようとしてしまうこと、と説明する。

どちらの場合でも、マコネルは、採用する開発手法にかかわらず、プロジェクトが成功するか否かは究極的には能力が決定すると主張する。さらに彼は不適格な(単に成功している開発組織の形式だけ真似しているに過ぎない)「詐称組織」は、彼の言う「カーゴ・カルト・ソフトウェア工学」に実際時間を費やしているという。[3]

関連項目[編集]

参考文献[編集]

  1. ^ Eric S. Raymond (1996). The New Hacker's Dictionary. MIT Press. ISBN 0262680920. 
  2. ^ Dr. Nikolai Bezroukov. “Cargo Cult Programming article”. Softpanorama (slightly skeptical) Open Source Software Education Society. 2008年3月25日閲覧。
  3. ^ a b c From the Editor (March/April 2000). “Cargo Cult Software Engineering”. IEEE Software英語版. 2008年5月24日閲覧。
  4. ^ Definition of cargo cult programming”. Jargon File at jargon.net. 2008年3月25日閲覧。

この記事はパブリックドメインであるジャーゴンファイルに由来する文章を含んでいます。

関連文献[編集]

  • Surely You're Joking, Mr. Feynman!, Richard Feynman, W. W. Norton & Co, New York, 1985, ISBN 0-393-01921-7. One of the chapters is the transcript of a 1974 Caltech commencement address, which contained the coining of "Cargo cult science英語版".
  • Cargo Cult Science, by Richard P. Feynman. Article based on his 1974 Caltech Commencement address, with pictures, as originally published in Engineering and Science, Volume 37:7, June 1974. Digitized version from Caltech Library, retrieved June 20, 2007