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

レインメーカー (30) 階層構造とフロント

»

◆アリマツ通信 2022.4.15
 行動制限について
 GW が近付いてきました。今年は5/2 を休みにすれば7 連休、さらに5/6 も休みにすれば10 連休ですね。いろいろな予定を立てている方も多いのではないでしょうか。コロナのニュースも次第に減ってきているので、つい油断してしまいがちですが、第6 波も収束したばかりですし、変異株は次々に発見されています。以前と同様、各自、プライベートでも行動には注意を払うようにお願いします。
 昨年同様、GW 期間中の行動制限について、健康保険組合、および、アリマツ労働・衛生安全委員会より連絡がありました。こちらの文書をよく読んで、楽しいGW をお過ごしください。
 おっと。何か聞こえてきましたね。「私たちはGW も出勤で業務だよ!」ですって? そうなんですね。CC の中には、GW にも受電/発信業務が普通に継続しているところもあるんですね。
 そんなCC の方たちに嬉しいお知らせです。今年はGW 期間中に業務のあるCC のOP さん、SV さんたちには、会社から差し入れがあるそうですよ。何なのかは、当日のお楽しみ、とのことです。

 文 総務課 土井

 ◇ ◇ ◇ ◇ ◇

 「機能追加要望についてはこんなところです」近藤シオリがプリントアウトを置いて顔を上げた。「細かいのは、これからも出てくるでしょうけど、大きなのはこれで打ち止めって聞いてます。どうですか?」
 イズミは手元のプリントアウトに書き込んだ文字列に目を落とした。隣で田代も同じ動作をしている。
 4 月から受電を開始しているタマノイ家具業務で、GW 明けから新しいカテゴリーでの受電業務が追加となる。その打ち合わせだった。すでにIVR やCMS など、ハード面の設定に関する要望はシステム課に通っている。今日はソフト面、つまりNARICS の機能追加に関しての打ち合わせだ。
 シオリはDX 推進ユニットのメンバーではあるが、今日はCC のSV としての参加だ。4 月の人事異動で、TMI ユニットのSV を兼務することになったためだ。SV として、クライアントの担当者と業務内容の打ち合わせを繰り返してきたが、ようやく今日、決定稿が出たため、すぐに要件を共有してくれたのだった。
 「1 から4 は」田代が顔を上げながら言った。「まあ、たいした追加じゃないので、それほど工数はかからないと思いますね。1 と3 はマスタの修正でできるし、2 は既存の画面のコピペで可能。4 は発送伝票の様式追加ですが、まあ、項目数も少ないですし、クライアントの方からExcel のテンプレートはもらえるとのことなので、値を差し込むだけです。問題は最後の5 番ですね。これはちょっと厄介かもしれないですね。どうかな?」
 田代の言葉に、同席していたメンバーたちはそれぞれ頷いた。
 イズミも同意見だった。
 新しい業務は、タマノイ家具の修理受付の受電業務だ。これまでと異なるのは、電話をかけてくるのが、タマノイ家具の製品を購入した一般顧客ではなく、全国27 都道府県に点在する32 のショールームのスタッフだということだ。
 機能追加要望No.5 はその業務を実施する上で、欠かせない重要機能だった。ショールームのスタッフが、顧客から持ち込まれた修理依頼の家具を検分し、CC に問い合わせをかけてくる。CC では製品ナンバーと破損内容から、修理の可否、部品在庫の有無、必要期間などを回答しなければならない。
 「お客様を待たせて通話してくるわけだから」田代は確認するように言った。「のんびりタマノイ修理センターに問い合わせているわけにはいかない」
 「そのとおりです」
 「また、損傷具合によっては、家具そのものを修理センターに送るのではなく、店舗預かりにして、交換部品を送付することで対応することもある」
 「はい。半々だそうです」
 「その諸々の判断をCC で行うために、製品ナンバーを叩いたら、該当製品の情報がパッと表示されてほしい、と」
 「SV で相談したんですが」シオリは申しわけなさそうに頭を下げた。「それがベスト、いえ、マストだって結論になりまして」
 「まあ、そうなんでしょうけどね」田代は苦笑した。「で、その大元のデータベースをもらえるわけではない」
 「そうなんです」
 タマノイ家具には、販売終了になった製品も含めて、全ての家具の詳細な情報と、パーツの在庫状況を持つデータベースがあるが、それをアリマツに渡すことはできない、ということだった。正確には意味がない、というべきだろう。同じデータベースには各地の工場や開発部などからもアクセスし、随時更新されていくので、ある時点でのスナップショットでは役に立たないからだ。
 ただ、それでは業務の外注ができないので、VPN を経由したAPI として製品と在庫情報を取得できることになっていた。すでに他の外注先でも使用されていて実績がある。
 「ただし」田代が続けた。「製品情報をうちのDB に保存したり、スクリーンショットを取るようなことは禁止。理由は機密保持と鮮度管理のため」
 「はい。向こうのSE さんにくどいほど念を押されました。流出騒ぎが以前にあったとかで。ログにも出すなと。あと、キャッシュ? にも溜めるなって」
 ということは。イズミは頭の中で考えをまとめた。API で受け取った家具構成データと在庫データを、OP が参照しやすい形に変換して、ブラウザに出さなければいけない、ということになる。
 「で」田代はページをめくった。「CC でまとめた画面の要望がこれですか」

30-1.png
 「雑なイメージで申しわけないですが」
 田代が、いえ、と呟き、イメージ図を見つめながら腕を組んだ。データ構造をどのようにすればいいのか、と考えているのだろう。イズミも改めてイメージ図に目を向けた。
 「このブロックの階層ですが」イズミは訊いた。「最大いくつ、とかは決まってないんですよね」
 「それ訊いたんだけどね」シオリは肩をすくめた。「SE さんも知らないってことだったから。決まってないと考えた方がいいでしょうね」
 「そうですか。選択できるのは、部品だけですか? ブロックが丸ごと壊れたって場合は?」
 「あ、書いてないですね。すいません。それもあります」
 「家具全体が、もうどうしようもなく壊れてて、というケースは?」
 「あー、どうなんでしょうねえ」シオリは首を傾げた。「そういえば、そういう話は出なかったです。確認しておきます」
 「じゃあ、仮定として、製品丸ごと選択もできた方がいいかもしれないですね」
 「そうしてもらえるとありがたいです。あ、ただ、うっかり間違えて選択しちゃった場合、もう一度、クリックしたら戻るようにしてほしいです。これはブロック選択した場合も同じですけど」
 「それは可能です」
 「で、その場合、前の状態も残して欲しいんですよね」
 「......というと?」
 「たとえば、最初にブロック1 の中の、部品5 と部品6 が選択されていたとするじゃないですか。その状態で製品丸ごと選択すると、全体が選択状態になるわけですよね。もう一度、製品をクリックしたら、全体の選択状態はクリアされますけど、さっきのブロック1 の中の部品の選択状態は復元してほしいんです」
 「つまりアンドゥ機能?」
 「あ、それそれ」シオリは嬉しそうに首を振った。「あと、できたらCtrl-Z で一つ前に戻れるといい、ってうちのSV が言ってました」
 そういうのは田代さんが嫌いそうだな、とイズミは考え、そっと隣を見た。案の定、田代は不機嫌の一歩手前の表情を作っていた。
 「それは別にマストではないですよね」
 「ああ、はい。できればってことで」
 「じゃあ、余裕があったらやります。で、この機能というか画面、ちょっと作るのが難しそうですね」
 なぜなら、と田代は腕を組んだまま、自分の考えを口にした。部品かブロックをクリックするたびにロジックで条件を判断し、結果を返さなければならない。サーバ側で一時的にデータを保持できないとなると、毎回API を叩いて、情報を取得しなおし、また再表示、を繰り返すことになる。仕様によるとAPI のコールは1 ユーザにつき、30 秒に1 回までに制限されているので、クリックするたびに「パッと」表示を変化させるのは難しいと言わざるを得ない。
 「えー、ちょっと待ってください」山下ヨウコが不満そうに手を挙げた。「それ、フロントでやっちゃえばいいんじゃないですか?」
 「つまり」田代は険しい顔を山下に向けた。「JavaScript で全部やると?」
 「聞いている限り部品を3 つ以上選んだら、とか、特にJava でやらなきゃいけないようなロジックはないと思うんですよね。いちいちsubmit しなくてもJavaScript 判断すれば、そのまま画面の表示も変更できるじゃないですか」
 「私もそう思います」倉田も賛成した。「ブラウザにはすでに表示されているわけなので、家具情報を保持しない、という制限にも抵触しないでしょう」
 「うーん、ただなあ」田代が迷うように天井を見上げた。「ユニットテストのことを考えると、ロジックはJava 側に持っておきたいんだよなあ」
 「それなら」イズミは提案した。「最終的にショールームへの回答を表示するときに、改めてJava で判断するロジックを入れておけばいいんじゃないでしょうか? それならAPI も最初と最後の2 回で済みます」
 「それはそうなんだけどなあ......」
 技術的要件を検討している、というより、やらなくていい理由を探している。そんな印象だった。
 「......そのスキル的にどうかな、と思うんだよな」
 「スキル?」
 「うん」田代は考えながら言った。「これ、かなりのロジックをJavaScript でコーディングすることになるわけなんだが、タスクの負荷的に、新人くんたちの誰かにアサインすることになるよな」
 倉田も山下も頷いた。二人ともすでに手一杯タスクを抱えている。田代は言うまでもなく、二人を合わせたよりはるかに多いタスクを自分にアサインしていた。
 「彼らでやれるかな」
 田代の意見にも一理ある。これまで新人メンバーにはSeasar2 とTeeda をずっと集中的にやらせてきた。おかげで、そちらはかなりのスキル向上が認められ、5 人とも十分な戦力になってきている。ところがTeeda はJava 側のコーディングによって、ある程度のページ表示ができてしまうので、JavaScript のスキルは初心者レベルのままだ。バリデーションもPage クラスのアノテーションで可能なので、必須入力や桁数チェックも全てTeeda の機能に頼っていた。
 「彼ら、せいぜいAjax を使うぐらいで、jQuery さえまともに触ったことないだろう? でもメンテナンスのことを考えると、document.getElementBy() ばっかり使われるのもね。もう少し時間があれば、勉強がてらやらせてみてもいいかなと思うんだが」
 「誰かが教えたらダメですかね」
 「いや、朝比奈さん」山下が苦笑した。「それぐらいなら、私たちの誰かがやった方が早いですよ」
 「私もそう思います」倉田も頷いた。「ただし、これは時間かかりそうな画面なんで、こっちに集中しちゃうと、本来のタスクが遅延する可能性があります。それでは本末転倒です」
 「ですよね」山下も倉田に同意した。「自分で言い出しておいて何ですけど」
 「そういうことで」田代は満足そうな笑みを浮かべた。「どうでしょう、近藤さん。この画面、少し仕様を緩めるというか、機能を減らしてもらうことで妥協できませんか。業務が開始して、ある程度不具合とか仕様漏れがなくなって安定稼働したら、改めて、画面の機能を検討するってことで。それまでに、こっちもフロント技術を少し勉強しておくので」
 ここは、このあたりが落とし所か、とイズミは肩を落としてシオリを見た。ところがシオリは意外なことを訊いてきた。
 「そういうのをフロント技術と言うんですか?」
 「え? ああ、そうですね。要するにブラウザの中で動く技術のことですが......」
 「できれば、お願いした仕様の画面が欲しいんですよね」
 「お気持ちはわかりますが、今言ったような事情で......」
 「そのことですが、実は私の友人でプログラマがいるんですけど」シオリはニッコリ微笑んだ。「確か、フロントをやってるって聞いた気がします。一度、話を聞いてみませんか? もちろんボランティアってわけにはいかないでしょうけど、頼めばお友達ディスカウントか何かやってくれると思うんですよ。どうでしょう?」

(続)

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

Comment(15)

コメント

匿名

マリちゃん!

匿名

コメントみて気づいたけど、友達は前作にいたマリちゃんか!

匿名

ここで「私の彼はプログラマ」とは...

匿名

こういう会社でこんな気軽に内職頼めるの?
アリマツは中小規模だとは思うけど、さすがに決裁ルートとかもしっかりありそうだけどどういう調達になるんだろ


あと、
いえ、と呟くように言って、田代はイメージ図を見ながら腕を組んだ。データ構造をどのようにすればいいのか、と考えているのだろう。

ここは、(イズミ視点だとは思いますが)主語がなくて突然天の声で感想言われたように読めました。

匿名

個人的にはjQueryより
document.getElementBy()派
.とか#とかでこれIdだっけclassだっけ?とか悩む必要無いし
jQueryオブジェクトでラップされてない分ある程度早いはずだし

匿名

あとエラーとか、例外で止まった時に
document.getElementBy()だとその場でエラーになるのに
jQueryだとjQuery内部のわけのわからないところに飛ばされるもキツイ

匿名

今時jQueryはあまり使わないイメージだなあ

SQL

前に出てたマリの友達もシオリか
世界線は違うんだろうけど

匿名

> 今時jQueryはあまり使わないイメージだなあ

フロント界隈だとそうだと思うけど
JavaとかPHPとかで業務アプリ作るところで
そこまでフロント方面に精通してない(興味ない?)ところだと
普通にjQuery使ってるかな

匿名

女性陣が、ほぼほほ田代に敵対的なのは気のせい?
全部、雨宮が仕組んで裏で糸を引いてるなんてないよね?

夢乃

宇都氏が何となくフェードアウトした感があるので、後で何かないか不安・・・
 
>3 は発送伝票の様式追加ですが、
3が重なっているので、「4 は」でしょうか?

リーベルG

匿名さん、ありがとうございます。
少し、表現変えました。

夢乃さん、ありがとうございます。
「4」でした。

匿名

どうみても別案件だよね。
コールセンターでなくて部品の在庫確認と修理完了時期なんで。
客先基幹系でやる話。
コールセンタだったらそれ登録するでなく、そういう問い合わせがありましたで
終わる所かなとか。

こんな営業の下で仕事はしたくないなとか。

さかなでこ

 「いや、朝比奈さん」山下が苦笑した。「それぐらいなら、私たちの誰かがやった方が早いですよ」
 「でも」倉田も頷いた。「これは時間かかりそうな画面なんで、こっちに集中しちゃうと、本来のタスクが遅延する可能性があります。それでは本末転倒です」

上記の文章のうち、「倉田も頷いた。」に違和感を覚えました。
・セリフは「でも」なのに頷いている点。
・山下は苦笑なのに「倉田も」になっている点。
細かくて恐縮ですが一応書いておきます…

ところでマリちゃんはプログラマなんだっけ?イノウーがそうであることは間違いないけど。

リーベルG

さかなでこさん、ありがとうございます。
確かにちょっと変ですね。微妙に修正しました。

コメントを投稿する