Debug- Official Website -


犬土偶日記

海の近くに住みたい

Debug日記の使い方

話題:Webプログラミングとか

2004年11月17日

マニュアルを書いて全工程終了

公開日時: 不明

夕方起きた。寝る前にもう一度CGIのおかしなプロセスを動かしておいた。起きた時にはDNSエラーの画面が表示されて止まっていた。どれだけ時間かけてから止まったのか知らないが、しっかりと実行できないまま終了したらしい。まぁどうでもいいわ。アップロードした検索CGIの動作テストをお願いしますとメール送っておいた。大体のチェックはこっちでやってあるから新たにエラーが見つかるとも思えんが一応ね。自分では思いつかんやり方で何かしたらバグが発生するかもしれん。一応念のためだ。その後、自サイトの掲示板を見たら椅子タンが書き込んでた。実家に飯を食いに行くけど一緒にどう?って。別にいいよって返事を書いてからギターの練習。20時半頃迎えに来たので久しぶりに椅子タンの実家に行って飯をご馳走になった。先週の旅行の土産も渡した。ゆっくりくつろいで帰宅したのは結構遅い時間。

さて、動作チェックの結果はどうなったかな?と思ってメールを受信してみた。そしたら検索CGIの動作は問題無しだと。ならば全てにおいて俺のやるべき事は終わった。もう何もやるべきことなどない。しかし!何か検索フォームがあるトップページで表示が崩れてるとか何とか。知るかボケ。そこは俺が弄るべき物ではないから向こうで勝手にすればよい。CGIを起動するために最低限必要なFORMが全然できてないからその部分だけ忠告はした。別にFORMがおかしくてデータが送られて来なければ俺の作ったCGIはデータを処理する必要がなく、よってバグも発生しようがないのでラクだ。動かないのではなくてデータを受け取らないから何も処理しないという期待通りの動作なわけだ。データを送るかどうかはそっちの勝手。俺の知ったこっちゃない。でもおせっかいでFORMの不備を過去に何度も指摘した。そもそもFORM要素がない。見た目に表れるフォームの部品だけはちゃんと配置してある。しかし目に見えないが最も大事なFORM要素がない。しかもフォームの部品も見た目には表示してるが、肝心のデータを送るために必要な属性が書かれていない。最初からそうだった。あらゆる場面で見た目しか考えてないHTMLを作っていた。ファイルをアップロードするフォームは<input type="file">というフィールドを使う。このフィールドを置くと、テキストフィールドみたいなものの横に「参照」と書かれたボタンが自動的に表示される。そのボタンを押すとクライアント側のPCのエクスプローラが起動してファイルを選択できるようになる。しかしそのフィールドを書くべき場所に<input type="text"><input type="submit" value="参照">というフィールドが置いてあったりした。ただのテキストフィールドじゃないか。しかも横にあるのは送信ボタン。送信ボタンを押すと、親要素のFORMのACTION属性に記述されたURIにFORM内の全てのフィールドに記述されたデータがname=valueの形で送信される。つまり「参照」と書かれたボタンを押したら送信されてしまうんだな。でもFORM要素がないからどこにも送信されない。何もかも見た目のイメージだけ。ラジオボタンも複数項目にまたがって同じname属性が指定されて全てのラジオボタンの中から1つしか選択できない。メインカラーとサブカラーを選択するフォームなのに全ての中から1つだけ。ラジオボタンがあれば見た目的にOKみたいな。そんな感じ。何もかも見た目のみで、機能性皆無。CGI作成にかけた時間よりそれらのHTMLを最低限使えるレベルに修正する方が時間かかってる。文法的に正しくとか、正しい論理マークアップにしようとか、そこまでやると1行も残さず全て書き換えないといけないような代物だったのでそこまでは修正しない。ただ最低限動かせるだけの修正でも恐ろしい時間を割かねばならなかった。HTMLの書き方を知らないとしか思えない。しかしCGIが画面に出力するページなので向こうのデザインを尊重しなければならない。向こうの用意したHTMLを組み込まねばならない。無駄にTABLEの入れ子が複雑になっててどこに変数を当て嵌めればいいのか探すだけでも一苦労。空のTABLEも大量にあるし、隙間を空けるためだけに透明のspace.gifという画像が貼られてたりする。スタイルシートでmarginの値を弄るだけでいいのに。TABLEを使う必要性など全くないのに。俺が徹底的に無駄を省けばほぼ同じ表示を保ちながら半分以下のサイズに抑える事ができる自信がある。でもそこまでやるのは時間の無駄。割に合わん。文句の付け所は多かったがそのまま何とかやった。文法的にもおかしいし、機能性もない。何とか使えるところまで最低限の修正は施したがアクセシビリティ・ユーザビリティの観点からはかなり評価の低いサイトだと思う。ずいぶん使いにくい。話が逸れた。検索フォームがあるトップページで変な隙間ができたんだと。フォームでもっとも大事なFORM要素を挿入したことにより、FORMのデフォルトスタイルのmarginが出てしまったんだろう。そんなこと俺の知ったこっちゃないね。勝手に修正すればよろしい。CGIが出力するページではないので俺には関係ない。どんな表示になろうが俺には関係ないし見る必要もない。そんなところは俺がやるべきことじゃない。俺の仕事はCGI作成だろ。だからHTML関連は全て蹴る。と言いつつ今までそういう余計な助言を多くした。ていうかWebデザイナーなら最低限HTMLとCSSぐらい知っておけと言いたい。「それまでに冒頭で申し上げた部分の修復をお願い致します。」とメールに書かれていた。本チャンの鯖に上げて動作確認するまでにトップページにできた隙間と、フォームの周りの枠線をどうにかして欲しいらしい。修復ってまるで俺のせいでおかしくなったみたいな言い方じゃないか。トップページには一切触れた事はない。フォームの不備は指摘したが、変な場所にFORM要素の開始タグを挿入して不自然に隙間ができたとか、意味も分からずFIELDSET要素を無理矢理組み込んでFIELDSET特有の枠線がTABLEに重なったとか、そんなもん知ったこっちゃない。勝手にやったんでしょうが。納得いくまで修正してください、修正したファイルは見せてくれなくていいです、と返事しておいた。

最初に発注を受けた時は店舗ページ編集CGIと検索CGIだけだった。そのうちアカウント管理CGIもやらざるを得ない状態になり、最近になってから検索語を記録して欲しいと言ってきたり。全然仕様が決まってなかったらしく、ずいぶん後になってから無茶な要求を連発してきた。最初から言ってくれれば余裕でできたけどもう今さら変更は無理っていうのがアホみたいにあった。明らかに発注時にはロクに仕様を考えてなかった。ものすごく適当。作りながらでも自由自在に変更可能だとでも思ってたんだろうか。そりゃHTMLエディタで見た目だけのページを作る感覚からしたらいつでも気に入らない所を直せると思うかもしれんが、プログラムは作り始める前に方向性を決めて完成形が見えてないとダメだ。ゴールから遡って全ての過程を想定しながらスタートする。このタイミングでそんな大幅な仕様変更を要求するのか!?っていうような場面が幾度となくあった。最初に仕事の依頼を受けた時、ちょっとヤバイなとは思っていた。具体性がないと思った。ぐるナビというレストラン検索のサイトを見せられて、こういうイメージでと言われた。こんな感じで、っていうような曖昧な表現を連発していた。これはマズイなと思った。まずは向こうで仕様を決定させるために、CGI動作前と動作後に表示される画面をキッチリ作って送ってくれと頼んでみた。動作前の画面(フォーム)が確定すれば、どのようなデータをいくつ扱うべきなのかが確定する。動作後の出力を見れば、どのようなデータをどのように処理するのかが分かる。だからCGIプログラムが何をすべきなのか、どういうプログラムを組めばいいのかという方向性が確定する。HTMLのページを作りながら向こうでも仕様が固まるだろう。そう思ってサンプルをよこせと頼んだ。そして送られてきたものが見た目だけの機能性皆無のHTML。使えないだけでなく、何をしたいのか、何をして欲しいのかも容易には読み取れない。訊いたところで、まだハッキリと決めてないんだろうなという雰囲気すら漂っていた。もう依頼を受けた後だったので後には引けなかった。1ヶ月前の時点で既に思いっきり後悔していた。明らかに見切り発車の状態。向こうが何も考えてない。CGIに何をさせたいのか具体的に何も考えてない。こういう感じ、こういうイメージ、そんなのばっかり。この部分はどうするんですか?と具体的なところを質問しると、どうしましょうかね?とか返事が返ってくる。知るか。仕事を依頼する前に完璧に考えておけと。プログラムするのは俺だけど機能デザインや仕様を考えるのは俺の仕事じゃない。向こうが何をして欲しいのか自分でハッキリ分かってないんじゃないのか?っていうような状態でどうやってプログラムしろというのか。それでも渡された使えないHTMLの"見た目"からできる限り論理的に矛盾のない仕組みを考えてプログラムを組んだ。使いにくいフォーム、練られてないインターフェース、明らかにアクセシビリティの低いページ、それらは分かってても見ないフリをした。最初に言ってくれてれば余裕で実装できた事も、後からの追加注文はほとんど拒否した。俺はデザイナーやプランナーの立場ではない。今回の立場はプログラマだ。与えられた仕様に沿ったものを作るだけだ。その仕様が最後の最後まで確定しなかったような感じ。後で色々と変な注文があると作り直しになるからできるだけプログラムには触らずに納期ギリギリまで引っ張って、最後はさっさと終わらせた方がいいと思って凄い勢いで一気に書いて完成させた。動けばOKだろ。動作テストでも問題なし。ズバッと納品だ。

その前にマニュアルを書く。俺が作ったCGIとそれに関連するファイルに関するマニュアル。後で余計な質問攻めに遭うのもめんどくさいから細かい事まで文書に書いて渡す。後はそれを見て勝手にしてくれと。そのマニュアルを書き始めたのが深夜。こういう物こそHTMLで書くのが相応しい。ハイパーテキストという仕組みが有効に使える。同じ文書内の色んな項目にアンカーをつけて目次からリンクを張る。今まで吐き気を催すほど凄惨で醜いHTMLソースを毎日のように見てきた反動もあって、自分で手書きするValidでWell-formedなXHTML1.1はすこぶる心地良い。シンプル且つ機能的な論理マークアップ。文書の論理構造のみをマークしていく爽快さ。表示に関わる部分は全てスタイルシートに任せる。HTML本来の使い方だ。テキストエディタに手打ちという最も融通が利くが最も手間がかかる手段でXHTMLとCSSを作成した。両方のファイルを合わせて64.4KB。3時間で書き切った。我ながら恐るべきタイピング速度だと思う。64KBって凄い量だぞ。半角文字で65536文字だ。全角文字だけだと32768文字。XHTMLのタグやCSSは全て半角文字だし、プログラム解説なので半角文字がかなり多い。恐らく45000文字以上はタイピングしたのではないかと思う。そこまでする必要があるのか疑問だが。とにかくCGIセット一式とマニュアルを圧縮してメールに添付して送った。これで終了。何かエラーが出ればまだ修正作業があるが、たぶん大丈夫。何か問題が起こるとすれば設置の仕方がワカランとかそんなことだろう。それもマニュアルに書いておいたし、メールにマニュアルには一通り目を通しておいてくださいと書いておいた。これでOKなはずだ。もう完璧に終わらせて離れたい。さっきメール確認したら口座番号を教えてくださいと来てた。金が振り込まれれば完全に終了だ。今回の仕事で得た教訓。具体性のない仕事は受けるな。

話題:Webプログラミングとか

Info.
公開日時不明
本文文字数5056文字 (タグ込み)
URLhttps://orca.xii.jp/debug/diary/diary.cgi?id=dogoo;date=20041117
RSS1.0https://orca.xii.jp/info/diary-dogoo.rdf
Comments

コメントはありません。

コメント投稿フォーム
文字色              
  • 名前を省略すると「名無しDebugger」になります。
  • メールアドレスの入力は任意です。
  • 海外からのコメントスパム対策のため、表示された漢字の読みを必ず入力してください。
  • 本文は必須項目です。投稿する場合は必ず記入してください。タグは使えません。
  • 改行が1つ入力された場合は強制改行として処理されますが、2つ以上連続する改行は段落の終了として処理されます。
  • 本文の行頭に「>」のある文は引用としてマークします。引用でない部分の冒頭に「>」は付けないでください。
  • コメントの削除は管理者若しくは日記執筆者しかできません。書き込む時は注意しましょう。
  • 全部記入が済んだら投稿ボタンを押す前に一度読み直して推敲しましょう。