ふつーのプログラマです。主に企業内Webシステムの要件定義から保守まで何でもやってる、ふつーのプログラマです。

人形つかい(4) 実現不可能な仕様を実現する方法

»

 他人を評価する際、第一印象を重視する人としない人がいる。ぼくはこれまでどちらかといえば前者だったし、だいたいのところ、その方法は有効だった。公言したことはないが、人を見る目はそれほど曇ってないんじゃないか、とも思っている。ところが、エースシステム横浜第1開発室システムエンジニア橋本さんと仕事をしていくにつれて、その自信が揺らいでいくことになった。

 橋本さんの第一印象は、真面目で仕事熱心な好青年、だった。技術的には不安要素があるものの、単なる経験不足でしかないと思えたのだ。ぼくのカンは、橋本さんを「いい人」リストに追加していた。

 橋本さんが誇らしげに出してきた設計書を見るまでは。 

 東海林さんとぼくは、エースシステム社内に用意された小さな開発室で、数日前から開発作業を開始したところだった。開発室とは名ばかりで、安っぽい会議用テーブルの上に一世代前のノートPCが置かれているだけの狭いスペースだった。椅子もパイプ椅子で、座面のビニールはなかば劣化している。

 ちなみに、廊下の反対側の広く快適なオフィスにある橋本さんのデスクには、Core i7プロセッサ搭載のミニタワー型デスクトップと、23インチのワイドモニターが鎮座していたが、それでもまだ観葉植物の鉢が2個ぐらい置けそうなぐらい広々としていた。それを見たとき「ゆったりと落ち着いた環境で、高スペックマシンを使用して、快適な開発を行える」と幻想を抱いたのだが、この部屋に案内された途端に打ち砕かれてしまった。どうやら、自社の資産や人員以外には、極力コストをかけない方針のようだ。

 何はともあれ、開発環境に文句を言えるような立場ではないし、言ったところで改善される見込みはなさそうなので、ぼくたちは開発作業を開始したのだった。

 最初の2日ばかりはAフレの使い方と、定義ファイルの記述方法を憶えるのに費やすこととなった。自社では全く動作しなかったツールも、こちらの環境ではあっさりと動作したので、なぜだか調べてみたら、バージョンが大幅に上がっていた。たまに原因不明のエラーは出るのだが、開発に支障が出るほどではない。

 Aフレの操作にひととおり慣れると、ぼくたちはそれぞれもらった設計書の実装作業を開始した。そして設計書を読み始めてすぐに、ぼくの思考は急ブレーキを踏むことになった。

 ぼくが最初に受け取ったのは、タクシーチケット申請に対する承認画面だった。数十種類存在する承認画面のうちの1つで、比較的単純な画面だ。実際、Aフレのツールを使い、HTMLとjavaファイルのひな形は何の問題もなく生成できたのだが、順調なのはそこまでだった。

 あるボタンを押したときのアクションを、橋本さんは次のように定義していた。

  • (1) button002押下時、text003とtext004に入力されている値によって、「定型運賃テーブル(TBL01T05)からファイル名(calcFileName)を取得する
  • (2) (1)で取得したファイル名によって、d:\shouninkun\data\xls フォルダに格納されている計算Excelをポップアップ表示する。このときマクロは有効にすること
  • (3) シート上の計算ボタンを押下し、表示された計算結果を、text006にセット(カンマ編集)し、計算Excelを閉じる

 この部分を読んだとき、あまりにも常識外れな文言に、自分が何かものすごく単純な大間違いをしていたのではないかと思い、ぼくはしばらく凝固したまま、思考を空回りさせていた。ローカル環境のExcelを起動し、シート上のボタンを押す? ひょっとすると、今の今までWebアプリケーションだと思い込んでいたこのシステムは、実は、C/S型だったのか?

 ぼくが息をするのも忘れて設計書を凝視していると、タバコ休憩から帰ってきた東海林さんが声をかけてくれた。

 「おい、フリーズしてるぞ」

 「あの、これなんですが」ぼくは設計書を見せた。「どう思いますか」

 設計書の問題部分を一読した東海林さんも、さすがにしばし凝固した。

 「うーん。これはマジで書いてるのか?」

 「ぼくがわかるわけないでしょう」

 「それもそうか」東海林さんは設計書をぼくに突き返した。「じゃ、聞いてこい」

 「そうですね」ぼくは渋々立ち上がった。「それしかないですよね。でも、あの......」

 「わかったわかった。おれもついてってやるから」

 ぼくたちがオフィスに入ると、橋本さんはヒマそうな顔でネットを見ていた。ぼくたちに気付くとすぐにブラウザを閉じたが、AKB48の誰かの画像が見えたから、仕事をしていたのではないだろう。

 「すみません。この仕様なんですが」ぼくは設計書を指した。「どうやって実現するんでしょう?」

 「どうやってって」橋本さんは笑った。「読んで字のごとくですが?」

 「いえ、でも、ブラウザからローカルフォルダのファイルにアクセスするんですか?」

 「そう書いてありませんか?」

 「あります」

 「じゃあ、そのとおり実現してください。やり方はお任せしますから」

 ――いや、任せられても困るんだけどなあ。

 個人的にはやってはいけないパターンNo.1だが、ブラウザからローカルのExcelを起動することはできなくはない。署名付きのAppletを使うとか、ブラウザのセキュリティレベルを大幅に下げるとか、専用のプラグインをインストールするとか、ブラウザそのものを新規開発するとか、方法はいくつかある。問題は、その実装方法を、こちらで勝手に決定することはできないということだ。

 ぼくは、そういう内容を説明したが、橋本さんは途中で遮ると、驚くべき質問を返してきた。

 「アプレットって何ですか?」

 視界がぐらりと揺れた。背後で東海林さんがずっこけるような音がしたが、振り向いて確認するどころではなかった。

 少なくともアプレットを使うわけではないということだ。

 「いえ、何でもないです。ブラウザのセキュリティレベルを下げるのは可能ですか?」

 「それはちょっと難しいですねえ」橋本さんは困ったように言った。「全社員のブラウザ設定になると、ドメインのポリシーを変更する必要があるんですけどね。K自動車さんの方でそんなことやってくれないでしょうねえ」

 「じゃあそれも忘れてください。専用のプラグインを購入するという方法もありますが?」

 「いくらぐらいですか?」

 ――知るもんか。っていうか、なんでそんなことを一介のプログラマが決めなきゃいけないんだよ。

 「わかりませんし、そういう製品が存在するかどうかも知りません」さすがにちょっとイライラしてきたので、知らず知らずのうちに口調がきつくなっていた。「あったとして、全PC分を購入可能ですか?」

 エンドユーザであるK自動車港北工場に何台のPCがあるのか知らないが、100や200ということはないだろう。

 「え? 1つだけ買えばいいのじゃないですか?」

 「は?」

 ――まさか不正コピーを考えてるのか?

 と思ったが、大手SIerの正社員がそんな不埒なことを考えるはずもなかった。

 「だってWebアプリですよね? サーバに置いておけばいいじゃないですか」

 頭が痛くなってきた。マジで言ってるのか?

 見かねた東海林さんが口を挟んでくれた。

 「あのですね、そもそも、これは仕様がおかしいですよ」

 橋本さんの顔色が微妙に変化した。

 「どこがおかしいんですか?」

 「普通、ローカルのリソースをブラウザ上から勝手に起動したりしませんよ。通常のセキュリティレベルで不可能になっているのは、それなりの理由があるんです」

 「え、そんなはずがないでしょう」橋本さんは、また笑った。「私はいつもやってますよ」

 ぼくは驚いて、東海林さんと顔を見合わせた。

 「どうやってやっているんですか?」

 橋本さんの口から、わざとらしいため息がもれた。

 「しょうがない、やって見せますね」橋本さんはPCに向き直ると、マウスに触れてスクリーンセーバーを解除した。「じゃあ見ててください」

 橋本さんはブラウザを起動した。エースシステムのポータルサイトが表示される。そして、ファイルメニュー、「開く」メニューと続けてクリックした。「ファイルを開く」ダイアログが開く。

 「ほら、こうやってファイルを指定するんですよ」

 言いながら「参照」ボタンを押し、ファイルオープンのダイアログを開くと、そのまま、Cドライブのフォルダを開いていき、「運賃計算サンプル.xls」というファイルにたどり着いたのだ。

 「これで開きますよ」橋本さんは、ファイルを選択すると、OKボタンを押しながら告げた。その言葉通りExcelが起動し「運賃計算サンプル.xls」が見事に開き、橋本さんは得意そうにモニターを指した。

 「ほらね。コツはファイルの種類を"すべてのファイル"にすることなんですよ」

 これは何かのジョークなんだろうか。ぼくは慎重に橋本さんの表情を観察したが、それらしい形跡はどこにもない。あるのは「どうしようもない下請けに知識を教えてやったぜ」とでも言いたげな、得意そうな表情だけだった。

 「それができるのはあたりまえですよ」東海林さんが、ちょっとキツイ口調で言った。「人間が手でやっているんだから、できるに決まってます。そうではなくて、ボタンを押した時にどうやって実現するかということが知りたいんです」

 「それを考えるのはプログラマさんのお仕事じゃないんですか?」橋本さんは設計書に視線を投げた。「うちは設計するだけですよ。実装方法はお任せします。そのためにお金を払っているんですから」

 「普通にやれることならこちらで考えますよ。でもこれは、どう考えても普通やらないことでしょう」

 東海林さんの表情も、橋本さんの表情も、どちらもだんだん険悪になっていくようだった。ぼくは、少しハラハラしながら2人の顔を交互に見た。

 「普通なんて誰が決めたんですか?」

 「世間一般の常識でということですよ」

 「はは、世間一般の常識なんて関係ないですね」橋本さんはバカにしたように言った。「これはK自動車社内のイントラで使うシステムですよ。世間一般では必要ではない仕様も求められるということですよ」

 話がまるでかみ合ってない。東海林さんもそれがわかったのか、突き放すような口調になった。

 「イントラだろうが何だろうができませんね。どうしてもやれというなら、具体的な実装方法を示してください。でなければできません」そういうと東海林さんは、諭すような口調で付け加えた。「もう少し、勉強した方がいいですよ」

 その瞬間、橋本さんの表情が一変した。一瞬だが、はっきりと憎悪が浮かんだように見え、ぼくはぞっとした。

 「できないならいいですよ」橋本さんは冷たい口調で言うと、設計書をつかんだ。「こっちで検討しますから、別のをやってください」

 東海林さんとぼくは顔を見合わせた。が、橋本さんは、話は終わり、とでも言うようにPCの方に向き直ってしまったので、仕方なく開発室に戻ることにした。

 「なんなんだろうな、あれは」東海林さんはぼくだけに聞こえる声でつぶやいた。「よくあれでシステムエンジニアなんて名乗れるもんだ」

 ぼくはコメントは差し控えることにした。別に廊下に盗聴器が仕掛けてあると思ったわけではないが、橋本さんの会社内で悪口を言うことにはためらいがあった。

 「ちょっとタバコ行ってくる」東海林さんはそう言って別れた。喫煙室はフロアの反対側にある。

 ぼくは開発室の自分の席に座った。マウスに触れた途端、ドアが開き、橋本さんが姿を見せたので、飛び上がりそうになった。

 だが、橋本さんはぼくに用事があったのではなかった。

 「石川さん、ちょっといいですか」

 もちろんこの開発室は、うちの会社だけに用意されているわけではないから、他にも他社から派遣されてきている同業者がいる。人数は日によって違っていたが、この日は4人ほどが在室していた。同じ市内にあるライズという会社のエンジニアさんたちだ。橋本さんが声をかけたのは、ライズのリーダーの石川さんだった。この業界には珍しくもないが、やや肥満気味の男性だ。

 石川さんは頷くと、橋本さんについて出ていった。ぼくは、止めていた息を吐くと、開発用PCに向かった。しばらくすると東海林さんが戻ってきて、何も言わずに自分の設計書に目を通し始める。

 数分後、ライズの石川さんが戻ってきた。だが自分の席に座ろうとはせず、なぜかぼくに近づいてきた。

 「細川さん、ちょっといいですか?」

 「はあ」

 これまで挨拶程度は交わしたことがあっても、あまり話をしたこともないので、何の用があるのか不思議だったが、石川さんは意外なことを口にした。

 「今、橋本さんからこれを見せられました」そう言って差し出したのは、さっき橋本さんに聞きに行った設計書のコピーだった。「これが実現できるかって聞かれたんですけどね」

 ――なるほど。セカンドオピニオンを求めたか。

 「すみません」ぼくはとりあえず謝った。「で、何と答えたんですか?」

 「普通じゃできないって言っておきました。それでよかったんですよね?」

 「お手数をおかけしました」ぼくの代わりに東海林さんが答えてくれた。「我々もそう言ったんですがね。橋本さんは納得してなかったみたいですね」

 石川さんは苦笑した。

 「似たようなことが前にもあったんですよ。とにかくできないって突っぱねたら、言ってこなくなりましたけどね」

 「なるほど」

 「まあ、あまり気にすることはないですよ。技術的にしっかり説明すれば何も言ってこないですから。あ、ただですね......」

 「なんでしょう」

 「何というか、面子をつぶすようなことは言わない方がいいですね。変なプライド持ってますから」

 「面子をつぶすようなことですか......」東海林さんはイヤな顔をした。「例えばどんなことですかね」

 「そうですね。勉強不足だ、とか」

 石川さんは笑ったが、先ほど東海林さんが、まさに同じ意味の言葉を橋本さんに言ったことを思い出したぼくは、笑うような気分ではなかった。

 東海林さんが礼を言って、ぼくたちが席についたとき、再びドアが開くと橋本さんが現れた。また石川さんに用事なのかと思ったが、橋本さんが声をかけたのは、

 「サードアイさん、ちょっといいですか?」

 ぼくたちだった。

 東海林さんとぼくは顔を見合わせた後、橋本さんについて開発室を出た。デスクに行くのかと思っていたら、連れていかれたのは、自動販売機コーナーだった。他に人気はない。

 「これなんですけどね」橋本さんは例の設計書をひらひらさせた。「なんとかなりませんかね?」

 「そう言われても......」東海林さんはうんざりした顔で言いかけたが、橋本さんに遮られた。

 「この設計書で、もうエンドユーザと上長の承認通ってしまっているんですよ。今さら変更はできないってことをわかってもらえないでしょうかね」

 「でも技術的に......」

 「そんなことはどうでもいいんですよ」橋本さんの声が尖った。「この設計はもう変更できないんです。技術的にどうだろうと、やるしかないんです。わかってもらえませんか!」

 ――なるほど。実現不可能な仕様を実現するのに、こんな簡単な方法があったか。

 単にプログラマに対して「仕様は変更できないからやってくれ」というだけのことだ。ただし、元請けという立場でなければできないのは言うまでもない。

 東海林さんは少しの間、沈黙していた。その顔には哀れみのような奇妙な表情が浮かんでいる。それが向けられているのが橋本さんなのか、東海林さん自身なのかはわからなかったが。

 「お役には立てませんね」落ち着いた静かな声だった。「仕様変更してもらうんですね。失礼します」

 そう言うと、東海林さんはぼくをうながして、その場を離れた。ちらりと振り返ってみると、橋本さんは床の一点を見つめたまま、設計書を握りしめて立ち尽くしていた。

 (続く)

  この物語はフィクションです。実在する団体名、個人とは一切関係ありません。また、特定の技術・製品の優位性などを主張するものではありません。

Comment(13)

コメント

とものぶ

「技術を知らぬもの、エンジニアを騙るなかれ」

ってやつですかね。

あ、毎週楽しく読ませて貰っています。
仕様変更はなるのか?今後の展開が楽しみです。

みどもじゃ

あまりに現実味がない無能っぷりだ・・・フィクションだと言えばそれまでだが.

CMP

現実世界でも見たことあるよ。
間に入って、取り成したことも。
フィクションかも知れないけど「あ~あるある」的なところをうまく文章にするのが本コラムニストのうまいところなんだよね。

実装者A

私もまさに同じような経験をしたことがあります。
Webシステムの基本を理解していない設計者からセキュリティ上、絶対に問題になる
仕様の実装を要求されました。
幸いに、その設計者とは長年の付き合いだったので、既に信頼関係があったので
何とか仕様を変更してくれましたが、信頼関係が出来ていない状態だと本当に
厳しいですよね。
今後の展開に期待しています。

ちけんち

「どう考えても普通やらないことでしょう」
「世間一般の常識でということですよ」

橋本さんの技術の無さも現実味がないくらいすごいですが、
東海林さんのコミュニケーション能力の無さもそれ以上にすごいですな。
石川さんからのアドバイスも聞いていないみたいですし…

こういう話が「あ~あるある」的なのか?
こんな職場には近寄りたくないなぁ~

九古

いつも楽しく読ませていただいてます。
詳しい事は言えませんが、私もこういう要望に出会った事がありますよw

私もちけんち氏の意見に賛成です。
>「どう考えても普通やらないことでしょう」
>「世間一般の常識でということですよ」
この拒絶の仕方はちょっとまずいです。

「悪意のあるサイトからユーザを守るために、ブラウザ上からローカルファイルへのアクセスは、
できる範囲を厳しくコントロールされているから、もし実現するならセキュリティを激しく落とすしかない」
という事をちゃんと説明するべきです。

「できない。やらない」と言わずに、
「できますけど、やるなら○○が必要」と、相手が絶対にウンと言わないであろう○○を提示するのが秘訣(笑)です。
だって実際そうなんだし・・・。
あと、そこで絶対飲めない○○を出すのと同時に、次善の策を提示する事ですね。
次善策や代替案を出さずに、一点だけを争点にすると険悪になります。
目指すべき事は問題解決であって相手を打ち負かす事じゃないですから。
そういう意味で、東海林さんもちょっと問題ありますね。

がると申します。
………フィクションですよね。フィクションのはずですよね?

なんだろうこの既視感 orz
# いやまぁ、おいらは「案件が木っ端微塵になろうとも」踏み込んではきましたが B-p

アロン

エースシステムは日経とPCベンダからの洗脳によりプロプライエタリに依存した設計をしてしまう。それに対してサードアイはオープン系という設定なのだろう。

まぁそんなんだからIE6がこの日本では使われ続けてしまうんだよね。

MK

はじめまして。いつも楽しく拝見しています。
私もこんな状況になったことあります。
その時は営業を通してクレームが来ました。

Dune

たのしく読ませていただいています。

今回の程度の問題っていうのはありますが
こういう「できると思って設計に盛り込んでいた事が実現不可能だった」事自体が起きるのは仕方ないことだと思います。
問題は、ウォーターフォール(しかもどうしようもなくなると結局手戻る似非ウォーターフォール)だから戻れないとかいう現場のスタンスの方が大きいと思います。

>東海林さんのコミュニケーション能力の無さもそれ以上にすごいですな。
>石川さんからのアドバイスも聞いていないみたいですし…

ちゃんと前ふりを読んでないですね。
前回に東海林さんは、技術的に正しくないことがあると営業からみて暴走する人間だと前ふりされてますし、石川さんからのアドバイスは東海林さんが暴走した結果石川さんがセカンドオピニオンによぼれた後の話。

主人公が営業から東海林さんが暴走するから気を付けるように言われていたのに暴走させたのも悪い。

H系の会社ではよくありそうな話ですね。

J

ユーザーから見たら、この程度のことも実現できないのが
現在のIT技術だってことは理解しずらいでしょうね。

anony

これまたひどい。
技術的にやれる・やれないじゃなくて
セキュリティ上の問題。
仮にローカルファイルにアクセスできるWebアプリなんて作って、
しかもそれで技術力を誇るようなベンダが居たら、大恥書くよ。

セキュリティホール突かれたらどうすんの?
ユーザへの説明は?ちょっと分かるユーザなら嫌がるよ。

コメントを投稿する