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

イノウーのプログラミングなクリスマス (1)

»

 「イノウーちゃん、ちょっといい?」
 斉木係長が声をかけてきたのは、12 月20 日の18 時少し前だった。井上ヨシオ、通称、イノウーは反射的に警戒モードに切り替えながら、表面的には愛想のいい笑顔で応じた。
 「はい」
 「25 日にさ」斉木係長はなれなれしい声で言った。「クリパあるじゃない?」
 クリパという単語をクリスマスパーティと翻訳するのに、数秒を要した。40 過ぎの中間管理職の男性の口から出るとは想像していなかったからだ。
 「ソリューション業務本部の忘年会を兼ねたクリスマスパーティのことですね」
 クリスマスにもかかわらず参加必須、として、今月初めに回覧が回ってきていた。近くのビルのイベントスペースをレンタルして行われる。
 「そうそう」何が嬉しいのか、斉木係長はニコニコしながら頷いた。「それで、ちょっとばかりお願いがあるんだよね」
 「何でしょう」
 「毎年恒例のビンゴ大会あるじゃない?」
 「はあ」
 イノウーは短く答えただけで、自分が去年の12 月にはこの会社にいなかった、という事実は、指摘しなかった。
 「そのプログラムを作ってもらいたいんだよ」
 「......すみません。プログラムといいますと?」
 「なんかこう派手でキレイなやつね。ドーン、バーン、ラッタラターンみたいな感じで」
 そんな擬音ばかりを並べられても、さっぱりわからない。イノウーは丁寧に繰り返した。
 「あの、プログラムといいますと?」
 「だから、ドーン、バーンなやつ。盛り上がりが大切だからさ、ああいうクリパってのは」
 係長という役職である以上、この人は協力会社に仕様説明などをする機会も多いはずだ。いつもこんな調子なんだろうか、と、イノウーは不安に思いながら訊いた。
 「つまり、ビンゴ大会の進行表を作るということでしょうか?」
 「ええ?」斉木係長は呆気に取られた顔を向けた。「何言ってんのさ。ビンゴ大会に進行も何もないでしょう。ビンゴやるだけじゃない」
 「......すみません。どういうことでしょうか?」
 「だから、ビンゴのプログラムだよ」それでも笑顔を崩すことなく、斉木係長は説明した。「イノウーちゃん、プログラム、得意なんでしょ?」
 「ああ」ようやく腑に落ちた。「ビンゴを行うシステムを作れってことですか」
 「そうそう」
 「紙のビンゴカードでやるんじゃないんですね」
 「去年まではそうだったんだけどね」斉木係長は周囲を少し見回し、少しだけ声のボリュームを落とした。「今年はエースの役員さんが何人か参加されるでしょ。そんで、支社長から命令が出たんだよね。うちってシステム会社なんだから、ビンゴぐらいプログラムでやってるところ見せとけって」
 「そういうことですか」
 マーズネット株式会社は、来月末に、エースシステムエンジニアリング株式会社と事業統合を行うことが決まっている。事業統合とはいえ、社員全員の認識は、マーズネットがエースシステムの傘下に入る、という図式だ。日本有数のSIer であるエースシステムからは、イノウーが昨年まで勤めていたサードアイシステムでも、何度か仕事を受注している。広いようで意外に狭い業界なので、転勤しても、またどこかで関わることもあるとは思っていたが、まさか親会社になるとは想像もしていなかった。
 「当日の参加者は、全員、会社スマホ持ってこさせるから、それでね。自動的にピピッって感じで。できるよね?」
 イノウーは頭の中でざっと仕様を考えた。マーズネットの正社員は、会社からスマートフォンを支給され、閉域SIM で社内LAN に接続することができる。社内の検証用サーバにでもビンゴシステムを配置し、スマートフォンからアクセスさせればいい。1 から99 までの数値を、各個人別に24 個生成するのは簡単だ。進行はMC 用の画面を用意して、乱数を順次、重複しないように生成していく。スマートフォン側への反映は定期的なポーリングでいいだろう......
 「そうですね。まあ、大丈夫だと思いますが」
 「よかったあ」
 「あの、一応訊きますけど、これ、業務時間に作業していいんですよね?」
 そう確認したのは、事業統合決定以降、何かにつけてコストカットが叫ばれているからだ。カラーコピーの禁止、残業時間の抑制はもちろん、暖房温度設定の2 ℃下げや、外出の際の移動時間は可能な限り休憩時間に行う、など、細かなルールが毎週のように追加されている。
 「あったりまえじゃない」斉木係長はカラカラと笑った。「うちの会社は、そんなケチくさくないよ。じゃ、任せたから。できたら早めに一回、見せてよ」
 「あ、ちょっと」踵を返しかけた斉木係長を、イノウーは慌てて呼び止めた。「さすがに一人でってわけにもいかないので、誰かに手伝ってもらっていいですか」
 「あれ、そうなの?」斉木係長は少し顔を曇らせたが、すぐに肩をすくめた。「まあいいか。じゃあキナセさんに手伝ってもらってよ」
 斉木係長が陽気に去っていくと、イノウーは座席表を調べた。所属しているソリューション業務本部には100 人以上の社員がいるが、大半は終日外出だったり、ユーザ企業に常駐だったりと、社内にいない人間の方が多い。ソリューション業務本部業務二課に配属されてから三ヶ月未満のイノウーには、顔と名前が一致していない社員が半数以上だ。キナセという名字も、なんとなく聞き覚えがある程度で、所属すらわからなかった。
 <木名瀬>の名前は、庶務グループの島にあった。日頃、総務部庶務グループとあまり関わることがないイノウーは、顔を思い出すのを早々に断念し席を立った。金曜日の夕方だし、庶務グループは大抵18 時には退社してしまう。もし、まだ会社にいるようなら、話だけでもしておこうと思ったのだ。
 広いフロアを横断し、庶務グループの島に着くと、そこには二人の社員が残っているだけだった。作業用のデスクの前に立って、何かの配付資料を分類している。一人はカラーコンタクトを入れた若くて愛嬌のある美人、一人はメガネをかけた無愛想な中年女性だ。イノウーの接近に気付いたのか、美人の方が微笑みかけてきた。
 「はい?」
 「すいません」この子だといいな、と願いながらイノウーは訊いた。「木名瀬さんは?」
 すると中年女性の方が訝しげにイノウーを見た。
 「私ですが」
 「あ、すみません」とっさに浮かんだ失望を笑顔に変換し、イノウーは小さく頭を下げた。「業務二課の......」
 「井上さん」木名瀬はイノウーの言葉を遮った。「何でしょうか?」
 「その、実は斉木係長から......」
 簡単に依頼内容を話すと、木名瀬は顔をしかめた。
 「また、あのおっさんは余計なことを......」そう言いながら、イノウーの顔を睨み付けるように見る。「しかも、こんな間際になって」
 「それは、ぼくに言われても」
 「まあ、そうですね」木名瀬はイノウーに、というより、自分に向かって呟いた。「あのおっさんのやることは、いつもこんな調子だし。IT でやる気になっただけマシか」
 「あの、もしかして」イノウーは思いついて言った。「プログラミングの経験あったりしますか?」
 「あるわけないでしょう、そんなの」
 「ですよね」
 イノウーは肩を落とした。マーズネットは、IT 業界のピラミッド構造の中では中間に位置する、いわゆる仲介業者で、社員にプログラミングのスキルは重視されない。されているのは、プログラマを使役するスキルだ。斉木係長が木名瀬を指名したのは、プログラミング経験があるためか、とも思ったのだが、そうではなく、手が空いていそうな庶務の社員を、適当に選択しただけなのかもしれない。イノウーは密かに嘆息した。ビンゴシステム構築は、実質的に自分一人でやることになりそうだ。
 「まあ業務命令じゃ仕方ないか」不機嫌そうな顔で言うと、木名瀬はイノウーに頷いた。「わかりました。では、早速始めましょう」
 「え、今からですか?」イノウーは時計を見た。「もう定時じゃないですか?」
 「木名瀬さん、残業ですか?」若い女性の方が言った。「あたし、何か手伝いましょうか」
 「いいのよ」木名瀬は優しい声で言った。「彼氏とデートなんでしょ。これ、ロッカーに片づけて上がっていいから。じゃ、井上さん、行きましょう」
 「え、どこに?」
 「あなたの席です」
 イノウーの座席がどこかを教える必要はなかった。すでに木名瀬は正しい方向に歩き出していた。

 ◇ ◇ ◇ ◇ ◇

 業務二課に入った木名瀬は、近くの席からオフィスチェアを転がしてくると、イノウーのデスクの上を見て顔をしかめた。イノウーは慌てて、散らかっていたプリントアウトやペン類を押しやってスペースを空けた。
 「ビンゴですね」木名瀬は裏紙を一枚取ると、ボールペンを掴んだ。「どんな仕様を考えていますか? ある程度の目処ぐらいは立っているんでしょうね」
 「ええ、まあ」
 この人に話してわかるのかな、と思いながら、イノウーはビンゴシステムの概要を説明した。Ajax、ポーリング、乱数などの言葉を解説抜きで使ったのは、ちょっとした意地悪のつもりだったのだが、驚いたことに、木名瀬は困った顔ひとつしないばかりか、逆に適切な質問を返してきた。
 「まず」一通りの説明が終わると、木名瀬は言った。「ビンゴの数字は2 桁だけど、最大は99 ではなく75 です。それから、一般的には、各列の数字の範囲が決まっています。最初の列は1 から15、2 番目の列は16 から30、という具合に」
 「へえ、そうなんですか」イノウーはPC で検索してみた。「これは知りませんでした。詳しいですね」
 「常識です、と言いたいところですが、実は、去年の忘年会では、庶務がビンゴを準備したんです。そのときに調べました」
 「準備って、どっかで買ってくるだけじゃないですか」
 「そうではなくて」木名瀬は苦笑した。「Excel で作ったんです」
 「は?」イノウーは驚いて、木名瀬の顔をまじまじと見た。「手作業で作ったってことですか?」
 「99 人分でした。もっとも私たちは、まだ楽な方です。少し前は文字通り手作業だったようですから。女子社員が手書きしていたんです。ドンキかどこかで買ってくればいいのに、コスト削減だとかで。残業はもちろん、業務時間内にやるのさえ認めてもらえず、退社した後、ファミレスで作業したとか。さすがにそれは監査で問題になって、私たちのときは業務の一環として認められましたが」
 「ありえない......」イノウーは呻いた。「重複チェックとか、どうやったんですか?」
 「読み合わせです。人間が。ものすごく時間がかかりました。それに比べれば、井上さんは恵まれています。面倒な部分はコンピュータに任せられるんですから」
 「どうして手書きで作ったんでしょう」
 「心がこもっているから、だそうです」
 冗談かと思って木名瀬の顔を見たイノウーは、そこに真面目な表情を見出した。
 「マジですか?」
 「それがうちの会社です」木名瀬は頷いた。「ときとして精神論が効率より優先されるんです。井上さん、確かまだ試用期間ですよね。スムーズに辞めるなら今のうちです」
 「......」
 「辞める気がないなら、ビンゴシステム構築を完璧に仕上げなければなりませんよ。ソリューション業務本部106 人の前で、バグで止まったりしたら、どんな評価になるか。想像しただけで恐ろしいですね」
 さらりとハードルを上げておいて、木名瀬は口調を和らげた。
 「もちろん、手伝った私の完璧な経歴に傷をつけることにもなります。そんなことは許されないので、やるとなったら全力で非の打ち所のないビンゴシステムを構築しましょう。それで、言語は何を考えているんですか」
 「は?」
 「言語です」木名瀬は辛抱強く繰り返した。「どんな言語でビンゴシステムを構築するんですか」
 「サーバサイドはJava でと考えていますが。Web アプリケーションです」
 「Java......どのサーバに配置するつもりですか」
 「検証用のサーバがいくつかありますよね。そのどこかに......」
 この愚か者が、とでも言いたげな視線がイノウーに突き刺さった。
 「ソリューション業務本部で管理している検証用サーバは17 台あります」木名瀬は早口で説明した。「Linux が14 台、Windows が3 台です。いずれもTomcat が16 プロセス稼働中です。ポートは8081 から8096。社内管理規定でこれ以上は増やせません。これも規定ですが、一つのTomcat には一つのアプリケーションと決まっています。全てのサーバ、Tomcat は厳密なスケジュールで運用されていて、いくつかの業務はキャンセル待ち状態です。忘年会の余興ごときで割り込ませることなんて不可能です」
 「......詳しいですね」
 「アプリケーション管理は庶務がやっていますから」木名瀬は素っ気なく答えた。「もちろんExcel による手作業です。そういうわけですから、Java のWeb アプリケーションは諦めた方がいいですね」
 「じゃあPHP か......」
 「それも無理ですね」イノウーの言葉は、またもや無情に遮られた。「うちの検証用サーバのApache にもnginx にも、PHPは組み込まれていません。うちではPHP の仕事は受けてないので。PHP モジュールの組み込みには、Web サーバの再起動が必要でしたよね。スケジュール外の再起動は部長かPM の承認がなければできません」
 「Python にします」イノウーは頭の中で選択肢を検討して答えた。「フレームワークはFlask で」
 これもダメ出しされることを半ば覚悟しながらの選択だったが、木名瀬は一瞬考えて小さく頷いた。
 「Flask はポート決め打ちで、Web サーバなしでも独自に起動できましたね。システムの規模的にもDjango だと大げさすぎますが、Flask なら軽量です。それでいきましょう。ただ、うちはFlask での業務は受注履歴がなかったはずですが、井上さんはできるんですか?」
 どうしてこの人はPython のフレームワークの知識まで持っているんだろう。そう疑問に思いながら、イノウーは頷いた。
 「独学レベルですが、まあ何とか。業務システムとなると難しいですが、ビンゴシステムぐらいなら」
 「あまり甘く見ないほうがいいと思いますが、まあいいでしょう。では仕様を確認します。ビンゴ大会が始まったとして、まず何の処理が必要ですか」
 最初に実行するのは、参加者別の数列パターン生成処理だ。イノウーがそう答えると、木名瀬は続けて訊いてきた。
 「どのタイミングで生成するんですか」
 「サーバにアクセスしたら生成、でいいと思いますけど」
 「本当に?」
 そう言われて自信が揺らいだイノウーは訊き返した。
 「まずいですか」
 「ビンゴ大会は、パーティの前半に行われます。偉い人の挨拶が終わって、30 分ほど飲食タイムをおいた後です。去年は19 時30 分開始でした。その時間だと、仕事の都合で遅れて会場入りする人もいます。もしビンゴが開始されてから、来た人はどうするんですか? その時点で数列パターンを生成するんですか?」
 イノウーは木名瀬の指摘について考えてみた。途中参加の社員は、当然すでに出現した番号の適用を求めるだろう。
 「生成した後、ヒットしたナンバーを反映すれば......」
 「ヒットした数が少なかったら、クレームが出ますよ。後から来たから一個しか空いてない、と言われたらどうします?」
 「あらかじめ人数分を生成し、その仕様を発表しておくことにします」
 「そうですね」木名瀬は満足そうに言った。「さらに言うなら、社員の中にはiPhone とAndroid の二台持ちの人もいます。それぞれでアクセスして確率を倍にしようとする不届き者を排除するために、社員ID でログイン機能を持たせてはどうでしょう」
 「ログイン機能ですか......」実装しなければならない機能が一つ増えた、とイノウーは考えた。「ということは、あらかじめ参加者マスタを作っておく必要がありますね。従業員名簿ってありましたっけ」
 「大丈夫です。グループウェアの管理も庶務の仕事です。25 日時点で在籍している従業員一覧を後で井上さんに送っておきます」
 「助かります。あ、あの」
 「何でしょう」
 「できればイノウーか、せめて井上と呼んでもらえませんか。年上の人からさん付けで呼ばれるのは、ちょっと抵抗が......」
 木名瀬はイノウーをじろりと見た。
 「私は親しくもない人を愛称で呼ぶことにも、呼び捨てすることにも抵抗があります。なので、井上さんと呼ばせてもらいます」
 「はあ、そうですか」
 そのとき、業務二課の小泉課長代理が外出から戻ってきた。コートを脱ぎながら足早に自席に向かいかけたが、二人に目を止めると、方向転換して近付いてきた。
 「おい、イノウー、何やってる。木名瀬さんも」
 イノウーが斉木係長の依頼を説明すると、小泉課長代理は不機嫌そうに唸った。
 「もう19 時回ってるんだぞ。残業申請出したのか」
 「いえ」イノウーは首を横に振った。「でも係長の指示なんで......」
 「そんなの来週やればいいだろう。もう切り上げろ、いいな。もう照明切るぞ」
 そう厳命して課長代理が行ってしまうと、イノウーは木名瀬に頭を下げた。
 「今日はありがとうございました。そういうわけなんで、また来週、続きをお願いします」
 木名瀬は、ふーっとため息をついた。
 「頭の中がクリスマス色なんですか。来週で間に合うはずがないでしょう」
 「え、でも......」
 「今日は20 日ですね」木名瀬は噛んで含めるように言った。「25 日に本番ということは、実装とテストに使えるのは23 日、24 日の二日間しかないんですよ。できるんですか?」
 「ちょっと残業すれば、余裕で間に合います」イノウーは少しムッとしながら言った。「25 日の午前中だって使えますよ。ネットを探せばビンゴのプログラムサンプルなんか、いくらでも見つかると思うし、ぼくは前の会社じゃプログラミングを主業務にしてたんで......」
 「別に井上さんのスキルを疑っているわけではありません」木名瀬はイノウーの感情など意に介した様子もなく遮った。「斉木係長に見せろと言われているんではないんですか?」
 「それはそうですが、当日の午後にでも......」
 「もしそこでNG が出たらどうするんですか」
 「NG って」イノウーは思わず笑った。「たかがビンゴに......」
 「大きな修正が必要だった場合」木名瀬は冷静な口調で続けた。「午後だけで対応できるんですか。斉木係長は協力会社にダメ出しすることを生きがいにしてるような人です。去年のニッタ・スポーツガーデンのPR サイト、26 回もリテイクさせたんですよ。そんな人が、身内の作ったシステムに遠慮などすると思いますか?」
 「......思いません」
 「最悪なのは、万が一、間に合わなかった場合です。井上さんは、"たかがビンゴシステムの準備すら満足にできなかった無能な奴"というレッテルを貼られることになります。それでもいいんですか?」
 「......よくないです」
 「これが業務システムなら」木名瀬は容赦なく続けた。「充分なテスト期間や並行稼働期間があり、バグのフィードバックを反映させることができます。長期間使用するので、多少のバグや不具合が出ても修正ができます。それに比べて、ビンゴシステムは当日ぶっつけ本番になります。バグが出たから、翌日までに修正版を作成、などという対策は取れません。井上さん、そういう事情を含めて、本当に二日間で完璧なシステムを作り上げる自信があるんですか」
 「すいません」すっかり震え上がったイノウーは、平身低頭した。「甘く見てました。どうすればいいでしょう?」
 「私、今日は子供を保育園に迎えにいかなければなりません」木名瀬は時計を見ながら行った。「明日は一日予定が詰まっています。井上さん、日曜日はデートですか?」
 「は? いえ、そういう相手はいないので」
 「余計なことはいいんです。では、日曜日の11 時、駅前のサイゼリヤで続きをやりましょう。それまでに、システム構成やデータ構造など、必要なことをまとめておいてください。いいですね?」
 イノウーは頷くことしかできなかった。
 「それから、一応言っておきますが」木名瀬は立ち上がった。「私は夫と二歳の娘を心から愛しています。業務なので仕方なく井上さんに付き合いますが、妙な勘違いなどしないように。いいですね? では、日曜日に。時間厳守でお願いします」
 木名瀬は一礼すると、さっさと庶務グループの島に戻っていった。

 (続)

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

 ◇ ◇ ◇ ◇ ◇

 「鼠と竜のゲーム」の主人公、イノウーこと井上くんのスピンオフです。サードアイを退職した後、横浜市内の少し大手のシステム会社に転職していたようです。全3 回、残りの2 章は、24 日、25 日に掲載予定です。

Comment(8)

コメント

hir0

イノウーだ!
転職でリーベルGシリーズから退場したかと思っていました

エースが親会社なら今後は草場さんとやりとりする場面なんかが出てくるのかな
誰も望んでいない今枝さんが出てきそうですけど

アントニオ

イノウー サードアイやめちゃったのね
木名瀬さん かっけーな…

匿名

ずっとイノウーってどの話だっけ?
読んでたけどスッキリした。

匿名

木野瀬さん、アーカムに転職してもやっていけそう

匿名

役員が…の時点で役員に当てさせるシステムの依頼かと思った。
飛田のスピンオフを思い出した。

匿名

これがギャップ萌えか・・・(違う)

匿名

うちの庶務は請求書発行とかの裏方メインでシステムにはまったく明るくないです
木名瀬さん、産業スパイじゃないっすかねぇ…

何個か上の方
偉いさんに当たるように番号を操作するよう課長レビューで求められる可能性もありますね

匿名

木名瀬さん、有能なエンジニアなのに性別で総務に配置された、とかだろうか

ビンゴはスピンオフのイメージが強いですね。

コメントを投稿する