表計算ソフトはコードレビューがしにくいため重要な仕事には向いていないという説 46
ストーリー by hylom
適切なテストツールがあれば良いのでは 部門より
適切なテストツールがあれば良いのでは 部門より
danceman 曰く、
計算機科学の専門家であるDaniel Lemireという人物が、経済書「Capital in the Twenty-First Century」を例に、なぜ大切な仕事には表計算ソフトを使用するべきでないのかを説明している(Slashdot)。
Piketty氏は著書の中で、「賃金が増加することより資本の配当のほうがより大きな利益をもたらすため、少数のエリート層が全ての富を手に入れることになる」という説を展開している。Piketty氏はデータ分析を行ってこの説を正当化しているのだが、そこで使われている表計算ソフト内の記述に間違いが含まれていたという。
Lemire氏によると、表計算ソフトはコードレビューを困難にするという。何十もある小さなセルにコードが隠れているため、もし慎重にコードを査読しなかった場合、また他の人がレビューしづらい状態になっていた場合、信頼できるコードになるはずもないとのこと。つまり表計算ソフトは重要でない仕事を急いで片付けるときには向いているが、重要な仕事を確実に完成させるようには設計されていないという。
AfterEffiectのエクスプレッションも大概 (スコア:2)
まあ,あっちは見た目がどうか,なわけで致命的ではないけど。
コードレビューのしにくさは同等かそれ以上。プリコンポーズされてた日にはもう…
全く同意 (スコア:2)
>何十もある小さなセルにコードが隠れているため、もし慎重にコードを査読
単純な計算だけなら追うのも楽なんだけど、一つのセルの中にif()関数を入れ子にして、さらに別のシートを表引きしたりするものになると、見るのもイヤになる。
単純な計算ならシートの機能だけで作ればいいけど、複雑な条件判断が絡んでくるならマクロを使うべきだし、表引きだとかが絡んでくるならデータベースで作った方が構造がスッキリしてわかりやすくなるんだけど。
で、そういうのを作ってる人に言わせると、Excelなら誰でもいじれてメンテナンスできるとのこと。
私は絶対手をつけないな。というより怖くてできない。
あと、表計算ソフトって、セルの保護機能が弱いから、うっかりデータを書き換えても気がつかないのが怖い。
よく、表計算ソフトを使って集計しているのに、電卓で検算していると揶揄されているけど、表計算ソフトの融通無碍な操作性が、データの完全性に不安感を引き起こしているのが原因だと思う。
私の場合、表計算ソフトを使うのは、単純な表か、データ処理の最終段階で見栄えを整えるくらいにしている。データ処理自体は、ここ十年ほどはAccessで行ってる。リアルタイムで計算結果を表示するような使い方で無いなら、データベースのほうが業務には使いやすいと思うな。
普通の事務員こそ、データベースの使い方を覚えるべきだよ。
そんなときこそFileMaker (スコア:2)
確かに,データベースでロジックは済ませといた方が楽ですね。
FileMakerなら,Excel並みの手軽さだと思う(Accessほどの自由度はないが)ので,
もう少しその手の分野にも使われてよいと思うのだが,Excel代わりに使うには高いんだよなあ。
Re: (スコア:0)
if()関数の長大な入れ子を一つ作れば、あとのセルにコピペで済ませられるのが表計算ソフトの良いところ。
ただ、そのコピペが何かの拍子に間違っていることがあるんだよな。
Errorが表示されてれば発覚しやすいけど、たまたま計算できてもっともらしい数値を表示してると気付かない。
Accessは個人的には好きだけど、引き継ぎが大変なのであまり使えません。
Excelバリバリ使う人でも一歩引いてる感じ。
Excelをそれなりに使えている人は尻込みして仕事を引き継いでくれません。
Accessで作った簡単な表を引き継いでもらって、何年かして戻ってみたらExcelのフィルター機能使いまくった凄いものに改造されてた。。。
式がセルに隠れるからわかりにくい? (スコア:1)
>スプレッドシートを使ってしまったために、せっかく公開したコードに誤りが含まれている
評価式はセルをクリックしないとわからないとかで、表示されてる数値を見るだけだとチェックしにくいってことなのかな。
他の手段で数値を求めて結果を表にしたりしても結局は一緒の様な気がするけどそうでもない?
ソースと計算過程をレポートに添付すればいいんでしょうけど。
もしくは研究ノート。
シートにロジックを組むか,セルにロジックを組むか (スコア:4, 興味深い)
セルにロジックを組まれると一覧性が悪いってことでしょうね。
flashですら,AS4.0からステージにしかロジックが組めなくなってるわけで,
表計算ソフトというのは,時代遅れなのかもしれませんね。
とはいえ,表計算ソフトって,電卓みたいに手軽なものだから,
セルにロジックを組ませない,というのはそれはそれで元々の用途から外れている気もする。
Re:シートにロジックを組むか,セルにロジックを組むか (スコア:1)
なんというかもうあの「表計算ソフト」だけで確立した世界(分野)になっちゃってる気がする。
表計算はもちろんとしてさらにワープロ、(簡易)DB、お絵かきソフト、プレゼンの機能まで持ち合わせてるし。
それだけで、スケジュール管理やプロジェクト管理まで頑張ってできなくはないし。
Re: (スコア:0)
AS4.0ってなんだ?
as3でもタイムライン上にスクリプトがかけた気がするけど
Re:シートにロジックを組むか,セルにロジックを組むか (スコア:2)
ごめん,3.0。
フレーム毎に書けるけど,ステージだけじゃん。
As2.0まではフレーム上のステージ上のインスタンスにも
スクリプトが埋められたのよ。
すげえ便利だったんだけど(特に動画関連),
考えてみれば一覧性が悪すぎるというか。
ただでさえ,フレーム毎にスクリプトが埋められたわけで。
Re: (スコア:0)
> 表計算ソフトって,電卓みたいに手軽なもの
そう、電卓にできないことを電卓の代わりのエクセルでやるから
これが原因
一方日本は (スコア:1)
スプレッドシートの使い方を理解してもらえなかった……
今更、それ、ガッチガチにVBAだのマクロだので作り込まなくても、
スプレッドシートだけで簡単に実現出来るんですよとはいい出せない雰囲気だぞ……
Re: (スコア:0)
保守しながら使い続ける用途の場合、最初からロジックは VBAで組んだほうがメンテしやすいとか?
VBAとワークシートとでロジック・プレゼンテーションの分離ができたるする?
Re:一方日本は (スコア:1)
VBAは無理。読めない。わけわからん。
できればC#か、マクロ用にカスタマイズした廉価版C#を搭載して欲しいな。
精一杯妥協したとしても、JavaScriptが限界。
VB系は可読性が悪すぎる。
Re:一方日本は (スコア:1)
ヘタレが書いたらどんな言語でも同じ。
ぐちゃぐちゃなJavaScriptのコードはthisに何が入ってるか全くわからん。
とても読めたもんじゃない。
Re:一方日本は (スコア:1)
> VBAは無理。読めない。わけわからん。
PowerShell [blogspot.jp]にしなよ。
.Net Frameworkのオブジェクトなら触れるし、対話的作業もできるし
> できればC#か、マクロ用にカスタマイズした廉価版C#を搭載して欲しいな。
君の手元のPCがWindowsなら、C#は標準搭載だよ。
Csc.exeでコンパイル可能 [blogspot.jp]。
> 精一杯妥協したとしても、JavaScriptが限界。
JavaScriptで我慢できるなら、JScript [wikipedia.org]って手もあるぞ。
不満ばかり言う前に、少しは自分で調べてみなよ。
よくやってる方だと思うよ、マイクロソフトは。
Re: (スコア:0)
スプレッドシートで使えるんですか?
Re: (スコア:0)
> スプレッドシートで使えるんですか?
使える。
WordでもVisioでも使える。
Re: (スコア:0)
いつの間にマイクロソフトはOffice内で追加インストール無しに
PowerShellやC#やJavascriptを使えるようにしてくれたんですか?
Re: (スコア:0)
>いつの間にマイクロソフトはOffice内で追加インストール無しに
>PowerShellやC#やJavascriptを使えるようにしてくれたんですか?
PowerShellとC#に関して言えば、それらの言語の最初のリリースから。
JavaScriptでなく、JScriptも同様。VBScript(VBAではない)も同じ。
ついでに言えば、Windows用のRubyもWIN32OLE経由でできる。
やったことはないが、PerlもPythonも同じじゃないか?
マイクロソフトは、君が考えるよりもずっと賢いんだよ。
だいたい、ぐぐれば判る様なことを他人に聞くなよ。
そんな暇があったら、さっさとハックしろ。
#そう言う下らない質問をする奴は大抵ハックできない奴だ。
Re: (スコア:0)
MS Officeに元々共通インタフェースがあって、PowerShellやJScriptが使っているだけ。
追加インストールが必要ってアドオンか何かと勘違いしてない?
Re: (スコア:0)
LibraOffice みたいなのから派生したりしないのかしら
Re: (スコア:0)
過去の資源が動かなくなるほうがコスト的に問題では無いでしょうか?
Re: (スコア:0)
csc+オートメーションで行けんじゃね?
Re: (スコア:0)
VBA自体は読みやすいですけどね。Excel組み込みオブジェクトが結構読みづらいですが。
Findとか(遅いんで自分で連想配列とかバイナリサーチとかしたほうが早いです)。
Re: (スコア:0)
他の人も書いてるけど
VBAはアプリのOLEオートメーションを呼び出してるだけなのでC#からも呼べるよ。
(MS版の)JavaScriptからも呼べる。
VBAはエディタが標準でついてるだけの話だろう。
Re: (スコア:0)
廉価版は劣化版でも簡易版でもなくてよ!
Re: (スコア:0)
VBAは他のプログラミング言語と同じ土俵でしか戦えないので、
単に古臭くて機能が足りない言語としか言いようがない。
だから、
古臭い言語しか使えない人間以外には有効ではない。
それに対してスプレッドシートは、
一般的なプログラミング言語とは全く性質を持つので、
使いどころによっては最良の選択肢になることも多い。
Re: (スコア:0)
スプレッドシートは文字の位置が揃った文書を作るためのソフトです。
記入する数値は電卓で計算して全角で入力するのです。
簡易言語 (スコア:1)
「重要な仕事には簡易言語は向いていない」
と言えば何となく…通じないものか…
セル? (スコア:1)
列ごとじゃなくて?
コードレビューに表計算ソフトを使う場面が想像出来ないのだけど…… (スコア:1)
普通、コードレビューってコンパイルに通すファイルをエディタで直接参照して行うものでないの?
それとも何か、普段からソースコードの編集するに表計算ソフトを使ってるのか?
エクセルのマクロですらエディタは別ソフトだぞ……。
#書籍でのソリッドファイター完全版 [fukkan.com]復
言語として考えた場合、可読性が悪い (スコア:0)
基本、機械可読の形でしかコードが保存できないから。
なにしろ、そのまま(再現性のある形で)印刷できない。
(画面ハードコピーじゃないよ)
所詮、処理系言語のRADツールでしかない。
いや、入り組んだxmlとかで出されても困るけどさぁ
Re: (スコア:0)
まったくそのとおり。
でも、同じことが、IDE環境でのソフトウェア開発にも言えてしまう。
マウスでメニューをたどって設定を変えると、できるプログラムが異なってしまうとか。
いや、入り組んだxmlとかで出されても困るけどさぁ
研究者にしては不正確な言葉遣いだな (スコア:0)
Computer ScienceのProfessorだそうだが、赤を入れたくなる言葉遣いだといわざるを得ない。
「重要な仕事に使うな」ではなくて、「第三者によるコードレビューを必要とするような仕事に使うな」でしょ。
実際、重要だけど表計算ソフトが十分役割を果たせる仕事なんていくらでも思いつく。
Re: (スコア:0)
余白が狭すぎましたか?
コードはテキストエディタで (スコア:0)
もっとコーダー向けの表計算ソフトができるといいのかもね。各セルごとのコードが一覧されるような。
Excel方眼紙はコードレビューに向いていない (スコア:0)
コールシーケンスとかExcelで書いて送りつけてくる日本のお客さんの話じゃなかったのか…。
# 本社(US)に送るために英訳するんだけど文字が入力されてるセルを特定するのに一苦労
Re: (スコア:0)
方眼紙にしてるだけでもアレなのに、それぞれのセルでインデント使ってたり、
そのインデントが機能だったり半角スペースだったり全角スペースだったりその混雑だったり。
隣のセルの文字で途中から隠れてるのでも分かりづらいのに、
インデントで全部見えなくなってたり。
あ、そういう話ではないのね。
テストも本質的にはダブルチェック (スコア:0)
Excelの場合は単に、もう一回Excelファイルを作って(可能なら別の人に入力してもらって)ダブルチェックするだけで十分なことが多い
手間が掛かる作業を簡単にするのがプログラマの仕事 (スコア:0)
OLEで簡単にアクセスできるのに、なぜセルの関数を一覧化するプログラム/スクリプトを書かない?
Re: (スコア:0)
ついでに ExcelDiff.exe と WordDiff.exe もおながいします。
じゃあEXCELより優秀なのって何? (スコア:0)
何を言ってるのか意味が判らないんだが、
EXCELで巨大ファイルを作るとコードが読みづらいって言いたいの?
巨大ファイルならJAVAやCの方がよっぽど全体を把握しづらいと思うけど
#素直にEXCELが嫌いって言えばいいのに
そこに表示されてるのは、なんだ? (スコア:0)
excelの挙動がおかしいと言われデバグに行くと、出したい値が出ないためか、
数値そのものがセルに書き込まれている。
本来は関数の評価値が出力されるんだよね、というのはわかったので、
およその検討をつけて本来あるべき関数を書き込んでやると、「0で除算
するなエラー」が出た。成程。
ただ、恐ろしいことにこのexcelシートは、報告書相当の価値をもつもので。
さらに恐ろしいことに、二年経っても改訂版が出てない様子で。。。
うちがよっぽど特殊な状況だったのだろうか。。。
ちなみに、作ったのは素人さんです。0が入るとマズイことが想像付かない程度の、です。
プロでこんなマヌケなことする人、いませんよね。ね?
Re: (スコア:0)
前任者が関数と手入力を混在させた表を使っていたので
私が担当するにあたり全て作り直したら、今までと違った傾向の報告書が出来上がるようになりました。
それを提出した結果、私が怒られましたよ。
前任者に仕事のやり方を聞いて作り直せと。
私も頑として譲らなかったので追いやられた後、別の方が担当するようになったらしいのですが
数ヶ月後にその報告書の提出義務が無くなったと聞きました。
その程度の仕事を継続してやってる所、実は多いんじゃないでしょうか。
Excelが一番普及しているのは仕方ない (スコア:0)
ExcelとIDEの中間くらいの位置付けで、もっと気軽な数字やデータいじりに便利なソフトが出てきてほしい。
単に出てくるだけじゃ駄目で、Excel並にデファクトスタンダードになっていてほしい。
事務員にExcelは使わせたくないが、だからってIDEやテキストエディタでコード書かせる訳にもいかないし。
言葉の選び方が悪いだけ (スコア:0)
間違いの少ないロジックを実現しにくいというなら確かにその通り。
だがそれと、「重要」だったり「大切」だったりする仕事につかえるかどうかは必ずしも関係ない。
たまに間違えていてもあとで直せばいいから、
それよりも手軽に数多くの計算をこなす必要がある、
「重要」で「大切」な仕事もたくさんありますよね。
あと、多少の間違いがあっても生産性をあまり落とさないという点ではExcelなんかはかなり高性能なので、
純粋に間違いの量で生産性を測ることもできません。