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

イノウーの憂鬱 (7) 初仕事

»

 プレゼンテーションの結果、テレワーク用ノートPC 申請フォームは、正式にシステム開発室が構築することに決定した、と斉木室長を通じて連絡が入ったのは15 時30 分過ぎだった。決定までの時間が予想を大幅に下回ったため、ぼくは比較となる基準に、大きな齟齬があったのではないか、との疑いを持った。たとえば、ぼくたちが作成した紙芝居が、紙芝居のレベルを遙かに超えたクオリティだったか、茅森課長が作成したパワーポイントの資料がお話にならないぐらい低レベルだったか、といったことだ。だが、この会社はシステム開発の仲介業を主業務としていて、勤務している社員の大半は、実装能力が皆無である代わりに、いわゆるプレゼン資料の作成には習熟している。一目で結果が出るほど未熟なドキュメントを作成するはずはない。ましてや、夏目課長からの情報通り、茅森課長が全社員申請の要件を追加していれば、それは大きなアドバンテージになっただろう。
 ひょっとすると、木名瀬さんが何か手を回してくれたのか、とも考えたが、そんなことが可能なら、最初からぼくとマリに紙芝居を作らせる必要などない。時として「脅迫」などのメソッドを行使することもあるが、こそこそと裏工作を進めるというのは、ぼくの知る木名瀬さんの人物像にはあてはまらない。今日はスマートフォンの通知を確認しない、と宣言したのは、ぼくたちに一任する、と翻訳できる。そう言っておいて、別途、総務課と交渉するようなことはしないだろう。木名瀬さんなら、堂々と宣言してから実行に移したはずだ。
 もしかすると、総務課の意志としては、システム開発室への依頼を決定していたが、茅森課長へのエクスキューズとして、プレゼン、という形を取っただけだったのかもしれない。とにかく、システム開発室にとって朗報であることは確かだ。マリもどことなく釈然としない表情ではあったが、あえて審査のプロセスを明確にしてほしいとまでは思っていないようだった。
 「で、とりあえず」斉木室長は、ぼくとマリに言った。「リリーススケジュールなんかを相談したいから、もう一回、簡単に打ち合わせしたいんだって。これから行けるかな」
 5 分後、ぼくたちは再び、大会議室に集合した。今回の参加者はぼくたちの他は、総務課と人事課だけだ。改めて要件を確認し、斉木室長が事前に話をつけた通り、まずは予定通り、希望者のみの申請フォームをリリースすることで双方が了承した。明後日の金曜日に総務課から全部署向けにアナウンスし、週末を挟んで月曜日中にリリースする。申請受付後の後処理に関しては、まず、総務課とIT システム管理課で業務フローを整理しなければならないため、後日、改めて相談するということだった。さしあたって決めておかなければならない事項は、それで全てだと思われた。だが、簡単に終わるはずの打ち合わせは、そこで終わらなかった。
 「どんなもんかな」矢野課長は未練がましく言った。「申請フォームはそれでいいんだけど、別に全社員にアンケートを採るような仕組みが簡単に作れたりしないものかねえ」
 「医療従事者項目ですか」ぼくはうんざりしながら訊いた。
 「それに限定するわけじゃないんだがね」
 「たとえばだね」人事課の牧枝課長が口を出した。「このコロナ関係だけではなくて、会社の制度とか、福利厚生なんかで、意見を募集したいときなどに使う仕組みがあると便利だろう」
 「その手のサービスなら、いくらでもあると思いますが......」
 「社外のサービスに、そういう機微情報を置くのはちょっとね」
 確かにネットワーク規定には、暗号化の有無にかかわらず、社外秘のデータをストレージサービスなどに置くのは、たとえ一時的であっても不可、となっているので納得できる理由ではある。これまで同様の要望はなかったのか、と質問すると、予想通りの答えが返ってきた。茅森課長が作成したExcel のフォームをメールで配信し、総務課や人事課宛に返信してもらっていたそうだ。メールはOffice365 を利用しているので、添付ファイルは一度ネットに出ることになる、という指摘をするのは話が面倒になるので止めておいた。代わりに、なぜ同じ方法ではダメなのかを訊いてみた。
 「メールだと送信者がわかってしまうから、なかなか本音が聞けなかったりするんでね」
 「確かにそうですね」マリが頷いた。「人事評価に影響しないかな、とか考えちゃったりしますもんね。もちろん、そんなことはないんでしょうけど」
 言葉に少し棘があるのは、医療従事者関連項目絡みの怒りが、まだ完全に鎮静化していないためだろう。ぼくは目顔でマリに落ち着け、と伝えてから言った。
 「つまり匿名掲示板のようなアプリが欲しいと言うことですね」
 「建前はそういうことになるね」
 「建前?」
 「匿名、ということにしておいて、裏では誰が送信したのかわかるようにすることは可能だろう?」
 「それは、もう匿名とは言えないのでは......」
 「使っている社員には、匿名だということにしておけばいいんじゃないかね」
 「いえ、そういうことではなくて」
 社内LAN 上に構築するのであれば、シングルサインオンでログインするシステムになる。ログイン情報を渡さなければならない以上、投稿データとログインユーザを関連付けするのは、技術的には可能だ。いくら投稿者の識別を行わない、と宣言したとしても、実際にやっていないことを証明できない以上、信頼されないのではないだろうか。
 「そうか」ぼくが説明すると、矢野課長は顎に手を当てて唸った。「面倒だな」
 「あの」同席していたシノッチがおずおずと言った。「ソースを全社向けに公開したらどうでしょう」
 データベースの構造も合わせて公開すれば、投稿者の情報を保存していないことはわかる。社員の大半は、ソースコードやSQL をまともに読めないかもしれないが、公開すること自体がある種の保証にはなるだろう。
 「それだと、本当に匿名になりますよ」
 「アクセスログは?」牧枝課長が言った。「どのPC からアクセスしたのかわかるんじゃないかね」
 つい忘れそうになるが、この会社はIT 企業だ。現在は総務課や人事課に所属していても、過去にはソリューション業務本部や、パートナーマネジメント本部で第一線に出ていた社員も多い。アクセスログの知識ぐらい有していて当然だ。
 「そうですね」ぼくは認めた。「わかります」
 「だろ。それなら、その気になれば、調べることもできるわけだな」
 「できますね」
 ぼくは短く応えた。できる、と言っただけで、やる、と約束はしなかった。
 「もしやるなら、どれぐらいでできるものかな」
 ぼくとマリは顔を見合わせた。要件も仕様も明確ではない状態で即答できるわけがない。そう答えようとしたとき、またシノッチが小声で矢野課長に言った。
 「課長、派遣さんの件も......」
 「あ、そっか」矢野課長は頭を掻いた。「派遣さんも登録できるようにしないといけないんだった。できるかな」
 意味がわからず矢野課長の顔を見ると、シノッチが補足してくれた。
 「派遣さんには、閉域SIM を出してないんです」
 初耳だった。この会社には、営業部やマネジメント部、庶務課などに合計20 人ほどの派遣社員が、主に事務スタッフやアシスタントとして働いている。ほとんど正社員と同じ業務に携わっているにもかかわらず、社内LAN に接続可能な閉域SIM を使ったスマートフォンやモバイル端末の継続貸与は、正社員に限定されているとのことだった。当然、テレワーク勤務の対象にもなっていない。
 「もちろん今後は変えていくことになるよ」牧枝課長が弁解するように言った。「正社員が一段落したら、派遣さんにもテレワークを拡大していく予定だ。ただ社内LAN への接続は、できないままなんだがね」
 「つまり、閉域SIM ではないノートPC になるということですか」ぼくは訊いた。「業務に必要なファイルなんかは、どうやって共有するんです?」
 「メールで正社員の誰かに送ってもらうことになるだろうね」
 要するに派遣社員を信頼していない、ということだ。
 「それでさっき言った匿名掲示板の話なんだがね」矢野課長は身を乗り出しかけたが、途中で気付いて姿勢を正した。「派遣さんでも投稿できるようにしたいんだよ」
 「......それだと話が全然違ってきますね」
 その要件だと、社内LAN ではなく、ネット上にアプリケーションを構築する必要がある。インフラをどうするかも含めて、この場でぼくたちだけが決められる問題ではない。
 「あの」マリが発言した。「その掲示板ができたとして、さっきの会議で話が出た、全社員登録だか何だかに使うってことですか?」
 矢野課長は牧枝課長と視線を交わすと、当たり障りのない口調で答えた。
 「何に使うかは決めておらんよ。そういう必要が出たときに、慌てて準備しなくてもいいように、今のうちに作っておこうってだけだよ」
 「だいたいだな」牧枝課長が尊大な口調で続けた。「君たちは社内からの依頼でシステムを作る部署だろう。作るシステムの内容に口を挟むのは越権ではないかね」
 マリの目元に険悪なしわが刻まれた。このままだと、罵声に近い言葉が飛び出しそうだ。ぼくは急いでマリを制止しようとしたが、その前に斉木室長がのんびりした声で言った。
 「わかりました。その件は、コストや構築方法など、見積を作ってみます。もちろん今回のノートPC 申請ができた後になりますが。それでよろしいですか?」
 矢野課長と牧枝課長は、それぞれ頷いた。幸い、マリの怒りには気付かなかったようだ。
 「お、もうこんな時間ですか」斉木室長は壁の時計を見上げた。「では、今日はこんなところでよろしいですかね。決めるべきことは決まったと思いますので」
 斉木室長のこうした調整能力は尊敬すべき点だ。打ち合わせは終了し、ぼくたちはシステム開発室に戻った。

 ◇ ◇ ◇ ◇ ◇

 またもやマリが怒りをぶちまけるか、と思ったが、今回は静かな帰還となった。斉木室長の態度を見て、感情を露わにすることがいい結果を生むとは限らない、と悟ったのかもしれない。ぼくたちは、実装レベルの話に移り、マリもクレバーな態度で応じた。
 テレワークでも開発はできるが、手短に相談した結果、ぼくとマリは、今週いっぱいは会社で実装作業を行うことにした。未知の疑問点や確認事項は、実装段階でも必ず発生するだろうし、何度か総務課にチェックしてもらう必要もある。リモートよりも直に説明した方がスムーズだ、という点で意見が一致した。 
 もう一つ、会社で作業するメリットがあった。会社であればマルチモニタ環境で作業ができるが、自宅ではノートPC の小さな画面しかないので効率が悪い。今回の開発には間に合わないが、今後、テレワーク期間が長期化するとしたら、自宅にも同じ環境が欲しいところだ。ぼくとマリは斉木室長に要求を伝えた。
 「自宅用のディスプレイ?」斉木室長は顔をしかめた。「しかも2 台。それ、本当にいる?」
 「「いります」」
 ぼくとマリは声をハモらせた。ぼくは並べて置いたモニタの右側にEclipse を、左側にブラウザを開いて作業をするスタイルだ。右側でコーディングしつつ、左側で表示を確認する。ときにはドキュメント類を左側に開いてコーディングすることもある。マリは逆で左側にエディタや画像ソフト、右側にブラウザだ。
 「マルチモニタ環境だと効率が50 % ぐらい上がる、という研究結果もあります。今回みたいに、短期間で実装しなければならない場合、効率って大切だと思います」
 50% という数値はでまかせだったが、幸い、斉木室長は出典を求めたりしなかった。
 「会社の備品、いや資産かな。それを社員の個人宅に置くのはどうかなあ」
 「でも」マリが思い出させた。「そもそもテレワーク用ノートPC を置いてるじゃないですか」
 「あれは申請出して、貸与ってことになるからねえ。ネットにつなぐのも、うちのSIM 経由じゃないとできないようになってるし。モニタだとゲームに使ったりとかできちゃうじゃない。なんかそのあたりで文句言う人が出そうな気がするんだよね。なんでシステム開発室だけ特別なんだ、とかさ。まあ、とにかく稟議は出してみようか。新品の購入は難しいと思うけど。モニタの大きさは会社と同じでいいの?」
 ぼくはデスクの上を見た。PC に接続されているのは、23 インチのワイドモニタが2 台だ。ぼくの 1LDK の部屋には木製のデスクがあるが、猫の額ほどの幅と奥行きしかないので、23 インチモニタを2 台並べるのは難しいかもしれない。ぼくは21 インチで、と伝えた。マリは実家から通勤していて、もう少し広いデスクがあるとのことで、23 インチ「以上」を要求した。斉木室長は唸りながらも、稟議を出してくれた。
 こうしてシステム開発室の初仕事は何とかスタートした。

 ◇ ◇ ◇ ◇ ◇

 予定通り、金曜日の午後、総務課より全社向けにアナウンスがあった。その頃には、申請フォームはほぼ完成に近付いていた。場合によっては土日も出勤することも覚悟していたのに、拍子抜けするほど順調な進捗だった。それにはいくつかの理由がある。
 まず、受付後の後処理の業務フローが決まらなかったことがある。総務課とIT システム管理課との間で、打ち合わせのスケジュールが合わず、来週の月曜日までに業務フローを決めるのは、ほぼ不可能になったのだった。そのためぼくは、その部分を考慮することをやめ、単純な申請フォームの作成のみに集中することができた。
 「それって大丈夫なんですか」マリは心配そうに訊いてきた。「後からいろいろ追加するのって、何か影響出そうな気がするんですけど」
 エースシステムなどの大手SIer では、大規模システム構築の場合は基本的にウォーターフォールで行う。この会社でも、よほど小規模な場合を除けば同じ方針だ。マイルストーンが区切られているので、見積が出しやすいためだ。マリはその基本思想で教育されていて、システムに手を加えることに抵抗感があるのだろう。
 「前の会社の先輩が」ぼくは東海林さんの顔を思い浮かべながら言った。「最初の仕様を完璧にすることじゃなくて、仕様変更があっても柔軟に対応できるように、システムを構築することの方が重要なんだってよく言ってた」
 また、マリが作成したhtml が、ほぼそのまま本番環境に流用できたことも大きかった。総務課からは画面イメージに対する不満は全く出なかったからだ。斉木室長による病的なまでの細かいチェックのおかげかもしれない。マリは、ぼくの指示に従って、Jinja のステートメントを埋め込んでいくだけでよかった。
 木名瀬さんは出社することなく、テレワークで仕事をしていたが、進捗状況はこまめにチェックし、的確なアドバイスを与えてくれた。
 「この上長の承認部分ですが」木名瀬さんはTeams のビデオ会議で共有した画面を見て言った。「兼務の場合が考慮されていませんね。人事給与システムのAPI に上長が兼務の場合の取得方法があるはずなので調べてみてください」
 ぼくは礼を言った後、API を調べてみた。確かに兼務の場合に特化したAPI がある。これを使えばいいのか、と楽観的に考えたのだが、すぐにそれほど単純ではないことに気付かされた。どうにも中途半端なAPI で、社員ID と所属ID を指定して、そこの兼務かどうかを取得することしかできない。通常の所属なら、末端から部門長までの承認ルートが得られるのに、間に兼務の社員が挟まっていると、エラーも出さずにその直前までの承認ルートしか返してくれないのだ。これでは、申請や承認のたびに、全社員をシーケンシャルにチェックして、該当所属の兼務ではないかを確認しなければならない。
 「ああ、なるほど」木名瀬さんも、API の細かい仕様などは知らなかったらしく、首を傾げた。「それは効率悪いかもしれませんね。API の呼び出しって、どれぐらいかかるんですか」
 「だいたい200 ミリ秒ちょっとです」
 「一回だけなら大したことないですが、200 回となると大変ですね」
 「とりあえず現状だと、矢野さんが庶務課の課長を兼務しているぐらいなんで、庶務課の所属ID だけ別処理にしますか」
 「それだと異動や組織変更のたびに手を入れる必要がありますね」木名瀬さんは考えながら言った。「ちょっと別の部分を進めていてもらえますか。詳しい人に訊いてみます」
 木名瀬さんは1 時間後に戻ってきた。
 「標準のAPI ではないですが、生のSQL を登録しておいて、その実行結果をJSON で受け取る裏技があるそうです。使った経験のある人に連絡してもらうように頼んであります。5 分後にビデオ通話してくれるので、詳しくはその人に訊いてください」
 5 分後にビデオ通話をかけてきたのは、意外な人物だった。
 「木名瀬さんから話は聞いた」茅森課長はぶっきらぼうに言った。「イノウーくん、君、VBA は読めるのか?」
 「え、ああ、はい、読むぐらいなら」
 「今、以前に使ったファイルを送ったから」茅森課長はフレームの外でマウスを操作した。「Access だ。探せば場所はわかるはずだ。わからなかったら質問してくれ」
 その言葉通り、Teams でファイルが共有された。ぼくは急いでファイルをダウンロードした。
 「あの、茅森さん、ありがとうございます。助かりました」
 茅森課長は鼻を鳴らすと、ぞんざいに手を振り、そのまま通話を切った。同じビデオ通話に参加していたマリは、呆気にとられた顔でぼくに囁いた。
 「どうやって頼んだんでしょうか」
 わかるわけがない。ぼくは肩をすくめることしかできなかった。茅森課長が送ってくれたAccess ファイルに含まれていたVBA モジュールを調べ、承認機能は無事に実装することができた。
 金曜日の夕方には、一通りの機能が完成し、総務課にチェック依頼をすることができた。テスト用のデータベースで申請から承認を行い、最終的に総務課に申請が到着することを、何通りかのパターンで確認してもらう。その時点で、ページ上の文言などにいくつか修正が入ったものの、ロジック自体には不具合などは発見されなかった。リリースして社員が使い始めれば、何らかの要望などは出てくるかもしれないが、それはその都度、対処するしかない。
 「大丈夫そうです」シノッチが最後のテストを終えて頷いた。「では、これで月曜日の朝、リリースできますね。URL はこのままで大丈夫ですか?」
 「はい。月曜日にDB だけ本番に切り替えるので」
 「わかりました。いろいろムリ言ってすいません」シノッチは軽く頭を下げると、声を潜めた。「これからも、またムリ言うかもしれませんが」
 「お手柔らかに」ぼくは笑った。「では、月曜日に」
 「月曜日はテレワークですか?」
 「そうです。切り替えはリモートでもできるので」
 自宅用モニタの稟議はまだ通っていないが、設定の書き換えぐらいならノートPC でも問題ない。ぼくとマリは、総務課を出てシステム開発室に戻った。
 「一段落っすね」マリは嬉しそうに言った。「どっかで一杯やってきます?」
 「今は止めておいた方がいいんじゃないかな」
 「やっぱそっすね。あーあ、ゴールデンウィークもどっこも行けそうにないし。早くコロナ騒ぎ、収まってほしいっすね」
 「そうだね」
 ぼくは帰り支度をしながら同意した。テレワーク自体は続いて欲しいが、デマによるトイレットペーパーの品不足や、マスクの争奪戦、ちらほら話題になりつつある自粛警察など、やはり正常とはかけ離れた空気にはうんざりしつつある。電車の中でうっかり咳き込んだだけで、まるで凶悪犯人か何かのように睨まれるのは異常だ。
 「んじゃ、また来週。っても、チャットでですけどね」
 「おつかれさま」
 ぼくたちは、初仕事を終えた満足感とともに退社した。正確には月曜日の朝、正式リリースするまでは終わっていないのだが、そこで何か問題が発生するとは誰も考えていなかった。
 だが、月曜日の朝に予定されていた申請フォームのリリースは延期となった。朝一番でTeams に届いていた総務課からの緊急連絡のためだ。数日前から体調不良で休んでいた営業一課の社員の一人に、PCR 検査の結果、新型コロナウィルス陽性反応が確認されたという内容だった。

 (続)

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

Comment(2)

コメント

ななし~

続きが気になります~(>_

一ヵ所:パート「ネー」マネジメント本部 になっていました。

リーベルG

ななし~さん、ありがとうございました。
なんでこんな変換されてしまったのか……

コメントを投稿する