アカウント名:
パスワード:
今まさに 10 年以上前に作られた MS-Access のプログラムを解析しています。どうやら、まるっきりの素人が作ったみたいで、かなり難解。無駄コードや無駄処理が多く、もちろんコメントや仕様書もない。殆どプロトタイプみたいなもの。
子ボスや中ボスクラスのトラップがあって、さながら RPG のよう。レベル 20 くらいの HP と「せいどうのつるぎ」「てつのよろい」程度では太刀打ちできない。やる気を取り戻すために、宿屋やぱふぱふも必要。
ずっと前に、専用ハードで C とアセンブラのコメントなし(CPU は 68000 で MMU はまともだったが、ペリフェラルとキーボード I/F は独自、おまけにサポート切れのマルチタスクモニタ)というかなりヘビーな解析と改造、ドキュメント作成 (仕様書の起し) をやったことがあるけど、それよりは少しマシかな。
あの時は、68000 の ICE を使って PC-9801 の MS-DOS と MS-C と MASM でエミュレートという、ヘンテコなことをやっていた。ぜんぜん見通しが立たないから、打ち切りの声はいつかかるんだろう、などと考えながら。
他人には「考古学みたいなもの」と説明していたが、はたから見てもそうなのか。
仕様書がないから、作り直すことはできない。(そのための仕様書起し)
> 普通のプログラマ案件の金額で雇える人に頼むのは無理普通じゃないなら、1.5 倍くらいの金額になるのかな。自分では見当もつかない。
ちょっと違う気がする。
少なくともソースコードがあって動作しているプログラムの場合は記載されている内容が読めないって事はあまりない。問題はそこじゃなくて、ぶっちゃけ
「やってる事は判るけど、やろうとしていることの意図が判らない」
部分の解読。でもそこをすっ飛ばして作り直すと大概が酷い目にあうという…。なんかね、証拠を追っかけて犯行動機を探るってノリが近い気がする。
ほなら心理学やね、って思ったけど考古学も心理解析みたいな面がないでもないのでやっぱり考古学でええやんな
そしてデバッグ用らしいprintfのコメントに「消すと動かなくなる」とか書いてあったりするのだ…
考古学だとどちらかというと言語や文字がない時代を主な対象とします。考古学者とか言ってると半導体以前のコンピュータのプログラミング(回路の修正)とかが来ますよ。
まあその通りなんだが、歴史学者だとインパクトが薄い。考古学者ならインディ・ジョーンズみたいでかっこいい
考古学と表現しても差し支えないかと
ラノベ作家に明治の純文学を読み解けって言うような難行ですよ時代背景や個別の流行もあるしすらすらとは行かない
やっぱ別スキルだね
考古学者は言い得て妙
リファクタリングではなく修正や改造で前任者もドキュメントもないプログラム弄ることは多々あったのですが、コードからプログラマの思考を推測するのが一番重要だった気がする。プログラムの方向性というか思想を考慮して手を加えないと、その後の足枷になりかねないので。中には「やっぱりコイツその場しのぎの仕事ばっかりだな」みたいなこともあったけど(そういうコードを生み出すプロジェクトほどコードに作者の名前を書かせたがる。そして転職して誰もいないまでがセット)
>どうやら、まるっきりの素人が作ったみたいで、かなり難解。>無駄コードや無駄処理が多く、もちろんコメントや仕様書もない。こちらはPHPだけど、まあそんなもんだな。年数は不明だが、まあ10年近くはたってそう。どうやらオブジェクト指向どころか、関数とか変数の概念すらろくにない完全な素人が書いてる。
本来ならAという一つの関数にまとめる所を、「A1 (他の処理) B2 (他の処理) C3 (他の処理)……」みたいな感じで一部ずつ合間合間へと挿入していくから、A1とB2とA3が同じ一つの処理だということを見抜くまでだけでも一苦労。
もちろんコメントなんかはないし、変数名も無意味。ダミーの変数もタップリ。
微かな痕跡だけを手がかりに、「ん?A1のこの部分とサンプルB2に微かな類似性があるぞ?ひょっとして、この二つの先祖は同じなのかも」という進化の系統樹を作る気分。
提案できる立場なら現在使っている機能を洗い出して(この手の古いソフトは使ってない機能が腐るほどある)ユーザーが理解してる挙動をデーターとソースから確認して新しく仕様を起こして作り直すのが一番幸せになれると思う新しく作ったソフトは今後うちが面倒見ますよーとか割と殺し文句
ソースコードだけ解析するのは無駄が後から判る事が多い
「なぜ?」「どうして?」「何の意味が?」を考えるとハマるんですよね。あとコードが無駄に長くやたらネストが深い傾向が強くてただでさえ読むの大変で、その上同じようなコードが何箇所にも書かれてるからデジャブを感じ混乱したり似たようなコードを読みすぎてゲシュタルト崩壊したりするんですよね。。。あと古いコードをコメントアウトしてたりすると一体何のために何をどう修正したのかを考えてしまいがちですがそれこそが罠だったりするんですよね。。。
ごめんね、ごめんね。25年前に新人の俺が作ったやつだよねそれ。
そりゃ新人としては優秀な部類だったとおもうよ。だからといって、新人の机にAccessとSQLServer置いて、客先調整しながら一人で新規案件製造するって、うちの会社は何考えてるんでしょうね。VBはWIN32API叩ける程度に知識あったけど、Accessは初めてだし、SQL何それ美味しいのって世界だし。
そんな非道な有様だったので、利益率は社内トップになりました。新人の給料安いからね。
>普通じゃないなら、1.5 倍くらいの金額になるのかな。
費用の算定基準が人月計算が主流だし、「難易度」って評価軸が存在しないので金額で報われることはないだろう。まぁ、要資格業務って難易度評価はあるもののリファクタリング資格なんてないし。むしろ「君の考古学趣味に付き合ったら何円の利益が出るの?」って近視眼的な評価されて普通の報酬すら払われない可能性のほうが高い。
仕様書がないから、作り直すことはできない。
後顧の憂いに愕然とするもんという後顧愕者でも可
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
これからは考古学者を名乗ります (スコア:5, 興味深い)
今まさに 10 年以上前に作られた MS-Access のプログラムを解析しています。
どうやら、まるっきりの素人が作ったみたいで、かなり難解。
無駄コードや無駄処理が多く、もちろんコメントや仕様書もない。
殆どプロトタイプみたいなもの。
子ボスや中ボスクラスのトラップがあって、さながら RPG のよう。
レベル 20 くらいの HP と「せいどうのつるぎ」「てつのよろい」程度では太刀打ちできない。
やる気を取り戻すために、宿屋やぱふぱふも必要。
ずっと前に、専用ハードで C とアセンブラのコメントなし
(CPU は 68000 で MMU はまともだったが、ペリフェラルとキーボード I/F は独自、おまけにサポート切れのマルチタスクモニタ)
というかなりヘビーな解析と改造、ドキュメント作成 (仕様書の起し) をやったことがあるけど、それよりは少しマシかな。
あの時は、68000 の ICE を使って PC-9801 の MS-DOS と MS-C と MASM でエミュレートという、ヘンテコなことをやっていた。
ぜんぜん見通しが立たないから、打ち切りの声はいつかかるんだろう、などと考えながら。
他人には「考古学みたいなもの」と説明していたが、はたから見てもそうなのか。
仕様書がないから、作り直すことはできない。
(そのための仕様書起し)
> 普通のプログラマ案件の金額で雇える人に頼むのは無理
普通じゃないなら、1.5 倍くらいの金額になるのかな。
自分では見当もつかない。
Re:これからは考古学者を名乗ります (スコア:2, 興味深い)
ちょっと違う気がする。
少なくともソースコードがあって動作しているプログラムの場合は記載されている内容が読めないって事はあまりない。
問題はそこじゃなくて、ぶっちゃけ
「やってる事は判るけど、やろうとしていることの意図が判らない」
部分の解読。
でもそこをすっ飛ばして作り直すと大概が酷い目にあうという…。
なんかね、証拠を追っかけて犯行動機を探るってノリが近い気がする。
Re: (スコア:0)
ほなら心理学やね、って思ったけど
考古学も心理解析みたいな面がないでもないので
やっぱり考古学でええやんな
Re: (スコア:0)
そしてデバッグ用らしいprintfのコメントに「消すと動かなくなる」とか書いてあったりするのだ…
歴史学者にしときなさい (スコア:0)
考古学だとどちらかというと言語や文字がない時代を主な対象とします。考古学者とか言ってると半導体以前のコンピュータのプログラミング(回路の修正)とかが来ますよ。
Re: (スコア:0)
まあその通りなんだが、歴史学者だとインパクトが薄い。考古学者ならインディ・ジョーンズみたいでかっこいい
Re: (スコア:0)
考古学と表現しても差し支えないかと
ラノベ作家に
明治の純文学を読み解けって言うような難行ですよ
時代背景や個別の流行もあるしすらすらとは行かない
やっぱ別スキルだね
Re: (スコア:0)
考古学者は言い得て妙
リファクタリングではなく修正や改造で前任者もドキュメントもないプログラム弄ることは多々あったのですが、コードからプログラマの思考を推測するのが一番重要だった気がする。
プログラムの方向性というか思想を考慮して手を加えないと、その後の足枷になりかねないので。
中には「やっぱりコイツその場しのぎの仕事ばっかりだな」みたいなこともあったけど(そういうコードを生み出すプロジェクトほどコードに作者の名前を書かせたがる。そして転職して誰もいないまでがセット)
Re: (スコア:0)
>どうやら、まるっきりの素人が作ったみたいで、かなり難解。
>無駄コードや無駄処理が多く、もちろんコメントや仕様書もない。
こちらはPHPだけど、まあそんなもんだな。年数は不明だが、まあ10年
近くはたってそう。どうやらオブジェクト指向どころか、関数とか変数の
概念すらろくにない完全な素人が書いてる。
本来ならAという一つの関数にまとめる所を、
「A1 (他の処理) B2 (他の処理) C3 (他の処理)……」
みたいな感じで一部ずつ合間合間へと挿入していくから、A1とB2とA3が
同じ一つの処理だということを見抜くまでだけでも一苦労。
もちろんコメントなんかはないし、変数名も無意味。ダミーの変数もタップリ。
微かな痕跡だけを手がかりに、「ん?A1のこの部分とサンプルB2に
微かな類似性があるぞ?ひょっとして、この二つの先祖は同じなのかも」
という進化の系統樹を作る気分。
Re: (スコア:0)
提案できる立場なら現在使っている機能を洗い出して(この手の古いソフトは使ってない機能が腐るほどある)
ユーザーが理解してる挙動をデーターとソースから確認して新しく仕様を起こして作り直すのが一番幸せになれると思う
新しく作ったソフトは今後うちが面倒見ますよーとか割と殺し文句
ソースコードだけ解析するのは無駄が後から判る事が多い
Re: (スコア:0)
「なぜ?」「どうして?」「何の意味が?」を考えるとハマるんですよね。
あとコードが無駄に長くやたらネストが深い傾向が強くてただでさえ読むの大変で、その上同じようなコードが何箇所にも書かれてるからデジャブを感じ混乱したり似たようなコードを読みすぎてゲシュタルト崩壊したりするんですよね。。。
あと古いコードをコメントアウトしてたりすると一体何のために何をどう修正したのかを考えてしまいがちですがそれこそが罠だったりするんですよね。。。
Re: (スコア:0)
ごめんね、ごめんね。
25年前に新人の俺が作ったやつだよねそれ。
そりゃ新人としては優秀な部類だったとおもうよ。
だからといって、新人の机にAccessとSQLServer置いて、客先調整しながら一人で新規案件製造するって、
うちの会社は何考えてるんでしょうね。
VBはWIN32API叩ける程度に知識あったけど、Accessは初めてだし、SQL何それ美味しいのって世界だし。
そんな非道な有様だったので、利益率は社内トップになりました。
新人の給料安いからね。
Re: (スコア:0)
>普通じゃないなら、1.5 倍くらいの金額になるのかな。
費用の算定基準が人月計算が主流だし、「難易度」って評価軸が存在しないので金額で報われることはないだろう。
まぁ、要資格業務って難易度評価はあるもののリファクタリング資格なんてないし。
むしろ「君の考古学趣味に付き合ったら何円の利益が出るの?」って近視眼的な評価されて普通の報酬すら払われない可能性のほうが高い。
Re: (スコア:0)
仕様書がないから、作り直すことはできない。
後顧の憂いに愕然とするもん
という後顧愕者でも可