トップページ⇒tech
74コメント18KB

優秀なソフトは一度はスクラッチから書き直している法則

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/24(金) 01:29:35
優秀なソフトとは少なくとも一度はスクラッチから書き直しをしているものです。

なぜなら、初めて作るソフトは、試行錯誤の塊であり
無駄が多すぎるからです。

皆さんも一度はソースを捨てることをお勧めします。
0002デフォルトの名無しさん2006/11/24(金) 01:32:09
じゃあぼくはスケッチからはじめます。
0003デフォルトの名無しさん2006/11/24(金) 01:33:59
常識
0004デフォルトの名無しさん2006/11/24(金) 01:39:40
捨てました!
0005デフォルトの名無しさん2006/11/24(金) 01:42:14
まあ、普通にプログラム作っていると
何度も作り直したい病にかかるよな。
0006デフォルトの名無しさん2006/11/24(金) 02:20:54
スクラップにはよくなるな、うん。
0007デフォルトの名無しさん2006/11/24(金) 02:25:06
スクラッチ & ビルド

[Ctrl]+[A]
[Delete]
[F7]
0008デフォルトの名無しさん2006/11/24(金) 02:34:46
一度新しいファイルに書き直してみるのはいいよな。
コピペでも隅々まで目を通すことになるから、アレ?と思って書き直すことが多々ある。
0009デフォルトの名無しさん2006/11/24(金) 05:12:33
そのへんは小説とかも変わらんな
0010デフォルトの名無しさん2006/11/24(金) 09:49:00
優秀はさておいてSleipnir
0011デフォルトの名無しさん2006/11/24(金) 10:29:33
>>10
書き直して駄目になったケース
0012デフォルトの名無しさん2006/11/24(金) 11:56:59
消してしまったソースを、スクラッチから書き直すくらいモティベーションを維持できればいいソフトにもなるだろうよ。
0013デフォルトの名無しさん2006/11/24(金) 12:31:20
スクラッチとはいえ、答えを見られる状況じゃないとちょっとな。
後ろに答えが付いたままの計算ドリルを、いかに答えを見ずにやったように見せかけるか
みたいな感じ?
0014デフォルトの名無しさん2006/11/24(金) 15:07:11
ゴーサインを出すタイミングが重要だよね。
「答」を見ずに書いたら、答と違う解き方をしている部分が
概ね元より優れたものだった……ということが起こりうる時期(たまに訪れる)に、
「今がその時期だ」とうまく自覚して動けるかどうか、みたいな。
0015デフォルトの名無しさん2006/11/24(金) 15:14:00
実際に遭った、結果的には書き直しと同じようなケースを一つ。

あるプログラムが動作不安定で改修にも時間が掛かる状態で業務を引き継いだ。
先ずやったことは、コード中に埋まったままの古いリビジョンのコードを全て引っぺがすこと。
見通しがよくなったところでコードレビューしたら、現状のバグも潜在的なバグも山ほど顕在化した。
それらを修正しつつ変数名、関数名のリファクタリングを行なったら……
引き継いだ段階のソースと一致する行は殆ど残っていなかった。
0016デフォルトの名無しさん2006/11/24(金) 15:31:23
ソフトウエア開発者の危うい「更地主義」
http://itpro.nikkeibp.co.jp/article/COLUMN/20061107/252873/

>>1
> 試行錯誤の塊であり、無駄が多すぎる
ってのは確かなんだが、
作り直す頃には試行錯誤の詳細を忘れてたりするんだよ。
0017デフォルトの名無しさん2006/11/24(金) 15:47:37
>ソフトウエア開発者の危うい「更地主義」

バグだらけで構造も汚くて書き直したほうが良い場合もある。
改修で十分な場合もある。時間が経てば成功した側を見て
過去においてどちらの選択が正しかったと判断できるけど
選択を行う時点でどちらが正しいか判断することは難しい。

書き直して成功した例はMicrosoftでいえばWindowsNTがあるしな。
一概にどちらが良い悪いとはいえない。
0018デフォルトの名無しさん2006/11/24(金) 15:50:36
NTは書き直しというより全然別物だろ
0019デフォルトの名無しさん2006/11/24(金) 15:52:19
途中からにしろ最初からにしろ構造に問題がある場合は書き直しは必要。
途中から書き直す場合はassert埋め込みまくれば結構バグ起こさないで構造変えられる。
0020デフォルトの名無しさん2006/11/24(金) 15:58:03
assertって何?
0021デフォルトの名無しさん2006/11/24(金) 16:00:34
>>18
WindowsOSという目標点では同じだろ
NTがLinuxだったら全然別物といえるがな
0022デフォルトの名無しさん2006/11/24(金) 16:05:40
ReactOSとWindowsNTぐらい違う気ガス
0023デフォルトの名無しさん2006/11/24(金) 16:07:28
TRON を忘れないでください・・・。
0024デフォルトの名無しさん2006/11/24(金) 16:09:14
PS2とPS3は別物?
0025デフォルトの名無しさん2006/11/24(金) 16:11:34
> しかし,その方がいいと思ったからといって,
> (既存の機能を書き換えるのではなく)アプリケーションを最初から書き直すのは,
> 十中八九間違っている。
この割合は感覚的にわかる気がする。
書き直すなと言ってるわけではなくて、「その方が良さそうだな」と思ったうち
本当にその方が良い割合は1〜2割くらいだろうって言ってるわけで、
まぁ、確かにだいたいそんぐらいではなかろうかと。
0026デフォルトの名無しさん2006/11/24(金) 16:13:49
失敗例 : カルロスゴーン
0027デフォルトの名無しさん2006/11/24(金) 16:22:21
C,C++,Java,C#,D,J++,VB,Delphi,HTML,DHTML,XML,Perl,Ruby...
絶え間ないスクラッチの渦に巻き込まれて大変です。
何とかしてください。
0028デフォルトの名無しさん2006/11/24(金) 16:29:20
>>27
言語屋はスクラッチが商売だ。我慢するか窓から投げ捨てろ。
0029デフォルトの名無しさん2006/11/24(金) 16:35:42
捨てました!
0030デフォルトの名無しさん2006/11/24(金) 16:40:08
Joel on Software 読んでみ

ネットスケープはそれやって大失敗してる
0031デフォルトの名無しさん2006/11/24(金) 16:52:41
失敗例:R34 -> V35
0032デフォルトの名無しさん2006/11/24(金) 17:10:42
毎日tinkoをscratchしてます
0033デフォルトの名無しさん2006/11/24(金) 21:05:22
人生をスクラッチしてしまいなさい。
0034デフォルトの名無しさん2006/11/24(金) 21:10:56
>>32, 33
それをいうならスクラッチじゃなくてリビルド
0035デフォルトの名無しさん2006/11/24(金) 22:13:41
人生は一度落とすと二度と立ち上がらないような酷いシステムで動いてるんだよ
だから怖くて誰も再起動できないでいるんだ。
0036sage2006/11/25(土) 01:04:21
何度かスクラップ&ビルドしてるけど、
その中でも生き残るコードは存在する。
これらのコードを密かに「�ケ小平コード」と呼んでいる。
0037デフォルトの名無しさん2006/11/25(土) 01:06:28
書き直すとき前の見ながらだとほとんど同じコードが出来上がって何やってんだろみたいな
0038デフォルトの名無しさん2006/11/25(土) 01:43:17
C++のリファクタリングツールってないですか?
0039デフォルトの名無しさん2006/11/25(土) 11:25:49
>>37
だがそれがいい
0040デフォルトの名無しさん2006/11/25(土) 13:27:34
MSがSQL Serverでやった作戦が一番かな。

他から買ってきてそれでしばらく耐え、その間に業界の権威を呼んでスクラッチから書き直す。
0041デフォルトの名無しさん2006/11/25(土) 13:51:25
sqlserverってどのバージョンからがmsなの?
0042デフォルトの名無しさん2006/11/25(土) 18:12:03
6.0以降。でも6.5と7は並行して開発しており、7の方にJim Gray始め多くの開発者を投入していた。

6系は最初から捨てるつもりで開発していたわけだ。
0043デフォルトの名無しさん2006/11/25(土) 22:37:33
>>16
> 作り直す頃には試行錯誤の詳細を忘れてたりするんだよ。
とりあえず試行錯誤の過程はテストケースとして残しとけ。
0044デフォルトの名無しさん2006/11/26(日) 08:07:42
更地主義に対する批判はそれはそれでもっともなんだが、
「ゼロからつくったシステムは、一から作り直すことになる。」ってのも
また事実なんだよなぁ。
0045デフォルトの名無しさん2006/11/26(日) 15:07:41
Netscape(Firefox)もスクラッチから書き直したから
こんなに優秀なソフトになれたんだよな。
0046デフォルトの名無しさん2006/11/26(日) 15:32:07
みっつのすうじでいっせんまん
0047デフォルトの名無しさん2006/11/26(日) 16:18:04
>>38
ref++
0048デフォルトの名無しさん2006/11/26(日) 17:12:50
>>1
何をもって「優秀」としているの?
評価基準はなあに?
0049ウォシュレットのアームめがけて排便する俺 ◆06NY4sFIG. 2006/11/26(日) 17:20:14
>>1
趣味プログラムなら、知識を整理しなおす意味でも良い考えかもね。

>>45
その間にどんだけシェア失ってんねん、
もう4.x時代のシェアには戻れんだろ?
ちゅーのが>>30。

英語ですが。
http://www.joelonsoftware.com/articles/fog0000000069.html
# Netscapeの話はここ以外でも結構登場してます。
0050デフォルトの名無しさん2006/11/26(日) 17:27:14
>>48
高校生が無理して話に入ってこなくていいから。
0051デフォルトの名無しさん2006/11/26(日) 18:10:35
>>47
全然スレと関係ないけどありがとう。
思わず買った!
職場用にも買わせるかもしれん。

Ref++を100本単位で買ったらリソース日本語化とかしてくれるかねぇ?

0052デフォルトの名無しさん2006/11/26(日) 19:23:55
スクラッチする、しない。いずれにせよどんな言語でコーディングしても
コメント分の大切だと思う今日この頃です。また、
CやC++でコード書くときいかにコード、構文をエレガントに書こうかと非常に気を
使うわけだが、VBにはその美しさを見出せない、VBの場合気分で一気に書いて
しまい動けばいいかみたいな感じだからだと思う、当然スクラッチする場合は
CかC++でやる羽目になるんだがww
0053デフォルトの名無しさん2006/11/26(日) 20:13:35
>>52
高校生が無理して話に入ってこなくていいから。
0054デフォルトの名無しさん2006/11/27(月) 11:56:01
なんでプログラマはfrom scratchを「スクラッチから」って訳すの?
なんでプログラマはfrom scratchを「スクラッチから」って訳すの?
なんでプログラマはfrom scratchを「スクラッチから」って訳すの?

「スクラッチから」でぐぐるとプログラミング系のページばかりでスゲー恥ずかしいんだけど。

辞書引いて普通に日本語で書けよ、普通に。
0055デフォルトの名無しさん2006/11/27(月) 12:07:57
>>1
> スクラッチから書き直し

>>13
> スクラッチとはいえ

>>28
> 言語屋はスクラッチが商売

>>33
> 人生をスクラッチ

>>40
> スクラッチから書き直す。

>>45
> スクラッチから書き直したから

>>52
> スクラッチする、しない。
> 当然スクラッチする場合は

言葉に無頓着な人間の多さに絶望しますね。
なぜ from scratch が「そういう」意味になるのかまるっきり理解してないばかりか、
そもそも scratch という単語の意味を知らんのと違うの。
0056デフォルトの名無しさん2006/11/27(月) 12:20:32
カタカナになった時点で日本語だ。
元の意味なんてかんけーないね
0057デフォルトの名無しさん2006/11/27(月) 12:31:00
>>56が残念ながら事実だな
フルスクラッチなんて和製英語もいいとこだ
0058デフォルトの名無しさん2006/11/27(月) 12:42:57
>>56-57
同意。米国人に、sumou wrestlerは、おかしいと説教するようなもんだ。
0059デフォルトの名無しさん2006/11/27(月) 13:43:44
そもそも scratch ってどういう意味で、どう派生してfrom scratchが最初からの意味になったの?
0060デフォルトの名無しさん2006/11/27(月) 13:44:02
- from scratch
1 : from a point at which nothing has been done ahead of time <build a school system from scratch>
2 : without using a prepared mixture of ingredients <bake a cake from scratch>
ふむ、>1や>13、>40、>45はいいとして、>28、>33、>52はそぐわないな。
0061デフォルトの名無しさん2006/11/27(月) 14:04:57
マ板向けのネタかもしれんが

・開発者が逃げた
・ドキュメントがほとんどないor古い
・明らかに糞コードしかも大量
・テストもない

なら仕方ないと思う
まあ実話なんですけどね
0062デフォルトの名無しさん2006/11/27(月) 14:16:37
sumou wrestlerは自分の中で割とアリなんだけど
なぜかsushi barの違和感は長年消えないの巻
0063デフォルトの名無しさん2006/11/27(月) 14:20:33
kinkakuji temple とかは?
0064デフォルトの名無しさん2006/11/27(月) 18:49:53
from scratch

最初から、ゼロから◆【語源】scratch とは、「引っかく」ことであって、「引っかいた後の傷」も意味する。棒を使って地面に引いたスタートラインは scratch である。◆【同】do something from beginning
・Louise made her wedding cake from scratch. ルイーズは自分のウエディングケーキを一から作った。
・She made this cake from scratch. 彼女はこのケーキを一から(ミックスを使わずに)作りました。
0065デフォルトの名無しさん2006/11/27(月) 18:55:01
>60に英英辞典らしい引用があるのにそれを訳さないなんて……
0066デフォルトの名無しさん2006/11/27(月) 19:08:24
関係代名詞のとこがわかりません><
0067デフォルトの名無しさん2006/11/27(月) 19:25:57
スキラッチ好きでした
0068デフォルトの名無しさん2006/11/28(火) 02:09:17
重箱大好き
0069デフォルトの名無しさん2006/11/28(火) 09:56:34
Mt.Fujisan
0070デフォルトの名無しさん2006/12/02(土) 12:46:13
>>65
語源じゃないですやん
0071デフォルトの名無しさん2006/12/02(土) 12:47:40
チェケラッチョ!(・∀・)
0072デフォルトの名無しさん2006/12/02(土) 13:50:24
オナニーアプリならともかく
業務系とかPerlは無理
0073デフォルトの名無しさん2006/12/02(土) 14:17:37
Q: その根拠は?

A: >>72 に能力が無いから。
0074デフォルトの名無しさん2007/02/25(日) 10:42:38
>>60
スクラッチするは『抹消する』だよ……
■ このスレッドは過去ログ倉庫に格納されています