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

イノウーの選択 (19) 見合わない評価

»

 1 月末に、ガイドラインの改訂版が全社向けに公開された。
 使用可能なツールには、エースシステムの意見が反映されたらしく、自律エージェントタイプのツールは、当面の間、使用を控えると明記された。Claude Code のように、プロジェクト全体を操作し、コーディングと修正を自動で繰り返すような方法は、人間の開発者の目が行き届かない可能性がある、という懸念があるらしい。現時点で、プロジェクトチームとエースシステムがセキュリティポリシーなどを検証し、許可を出したのは、Cursor とJetBrains + GitHub Copilot の2 つだけだった。
 もう一つ、明記されたのは、HITL(Human in the loop) を必須にするという点だ。ただし、AI が生成した全てのコードを人間がレビューするのは現実的ではないので、金銭やセキュリティが絡むロジックについては、という逃げ道は用意されていた。
 生成AI の進歩はめまぐるしいので、半期に一度、ガイドラインを見直すこと、というルールも明確に定義された。本来なら、プロジェクトチームは成果発表と同時に解散となるのだが、このルールのために、人数を減らして存続することになった。
 「そういうわけだから」茅森課長は言った。「尾日向さんは、このままプロジェクトチームの活動を継続することになった」
 「継続といっても」尾日向さんは微笑んだ。「去年みたいな頻度での活動予定はないです。日頃から関連情報に注意して、月に1 回ぐらい、簡単な報告会を行うぐらいになりそうです」
 「じゃあ、来月からはJINKYU の改修に集中できそうですね」
 ぼくが確認すると、尾日向さんは頷いたが、茅森課長が眉間にしわを寄せた。
 「基本的にはそうなんだが、尾日向さんにはいろいろ声がかかっていてな。そっちの方に時間を割いてもらうかもしれん」
 「いろいろって何ですか?」
 「まあ、その......いろいろだよ」
 解像度の低い言葉を呟いて、茅森課長はシステム開発室を出て行ってしまった。ぼくは肩をすくめると、尾日向さんと安川さんに言った。
 「とりあえず、二人ともCursor のアカウント作っておいてください」ぼくは指示した。「ぼくの方でビジネスプラン――Teams プランだったかな、契約する申請しておくので」
 事前に茅森課長に相談したところ、システム開発室としては、Cursor のTeams スタンダードプランからスタートすることになった。企業ユースとしては一番安価なプランだが、それでも1 ユーザあたり、月40 ドルだ。4 人分で160 ドルなので、茅森課長はぼくに釘を刺すことを忘れなかった。
 「せっかく金払うんだから、使わないで請求だけされるなんてことにならんようにしてくれよ」
 いわゆるVBA おじさんの類だった茅森課長は、「開発」イコール無償のツールという概念が捨て切れていないようだった。これまでのシステム開発室でも、Eclipse やVSCode などランニングコストゼロのツールばかりだったし、ChatGPT やGemini が無償で使えることもあって、開発ツールの使用に費用が発生する、という形態に違和感を抱いてしまうのだろう。
 「私はすでにアカウント作ってるので」尾日向さんが同期を見ながら言った。「安川さんだけですね」
 「わかりました」安川さんは答えた。「マーズのアドレスでいいんですよね」
 「はい、そっちで」
 「これから作るので」安川さんは尾日向さんに頼んだ。「間違いがないか見ていてもらえますか」
 「もちろんです。難しいことはないですよ」
 二人が作業に入り、ぼくはHousync の改修とテストに頭を切り替えた。2 月からエースホームを巻き込んだ総合テストに入る予定で、それまでにチェックしておかなければならない確認事項は山積みになっている。
 ランチに出ていたマリが戻ってきた。おつかれ、と声をかけたが、他のことに気を取られているようで、返ってきたのは事務的な生返事だけだった。このところ顕著になりつつあるナナミの偏食のことに頭を悩ませているのか、ぐらいに思って気にも留めなかったが、入れ替わりに尾日向さんと安川さんが昼休憩に出ると、マリは深刻な声で訊いてきた。
 「来期の人事の話、聞きました?」
 「来期......ああ、もうそんな時期か」
 うちの会社では、基本的に昇進や昇格は4 月1 日付けだが、発表自体は2 月頭に行われる。名刺や備品の発注、JINKYU の登録、承認ルートの設定などを考慮してのことだ。今年は2 月1 日が日曜日なので、おそらく翌日の2 日に通知されるはずだ。
 「いや聞いてないけど」ぼくは笑った。「裏SNS 情報?」
 異動の情報などは、公式な発表の1 週間前には、ほぼ決定しているものだが、裏SNS にはそのタイミングで流れるものらしい。さすがに未決定の情報が流れるほど、うちの人事の倫理観は壊れてはいないが、確定した情報であれば抵抗感が薄れるのだろうか。
 「はい」マリは声をひそめた。「来週、発表される4 月の異動なんですけど......」
 裏SNS は役付きの人お断りなので、室長代理に昇進した時点で、ぼくにはアクセス権がない。マリがたまに教えてくれるが、ゴシップ的な話題がほとんどなので、聞き流していることが多い。
 「じゃあ知らないなあ」
 「そうですよね」
 「あ、もしかして......」
 少なくともシステム開発室のメンバーの異動はないはずだ。あるとすれば、茅森課長が兼務を解かれるぐらいだ。ぼくは期待を込めて、その予想を口にしたが、マリは首を横に振って否定した。
 「だったらいいんですけど」
 「降参」ぼくは両手を挙げた。「そんなに意外な人事?」
 「尾日向さんなんです」
 確かに意外な名前だった。
 「え? まさか尾日向さん、異動するの?」
 「いやいや、システム開発室にはいるんですけど、係長に昇進するそうです」
 しばらく言葉が出てこなかった。
 中途採用でも、最初から課長待遇などで入社する人はいるが、尾日向さんはそうではなかったはずだ。システム開発室のメンバーとして採用したのだから。
 「優秀なのは認めるけど」ぼくはやっとのことで言葉をしぼり出した。「ちょっと早すぎる気がするな」
 「入社して半年ですよ。やっぱり例のAI プロジェクトが評価されたってことすかね」
 生成AI ガイドライン作成プロジェクトが、社内に与えた影響は大きかった。ガイドラインは、協力会社向けがシステム開発に使用するツールに関するルールを決めたものだが、多くの社員はそれを、生成AI の使用が公式に解禁された、と拡大解釈したのだった。そして、各部門の課長や部長も、その解釈を否定しなかったため、これまで、周囲の目を気にして使用を控えていた層が、Gemini やChatGPT を一気に公然と使うようになったのだ。
 その効果はすぐに顕在化した。グループウェアの通知に添付される文書ファイルは、これまでほとんどテキスト情報ばかりだったのが、AI に描かせたらしいマンガ形式のイメージが増えるようになった。クライアントへの提案資料なども、AI に誤字脱字や技術的な矛盾のチェックを任せるようになり、クオリティが向上した。そのおかげでクライアントから感心された、という声も聞こえていて、プロジェクトチームへの賞賛も増える一方だ。
 ただ、その賞賛の大部分は、尾日向さんに向けられていて、他のメンバーは、刺身のツマ程度にしか扱われていなかった。プロジェクトチームで一定の成果を出せば、次期の評価にプラス要素となるのが通例なのに、昇進が尾日向さん一人にとどまった、という事実(仮)がそれを示している。
 「伊牟田さんと椛沢さんあたりは」マリが意地の悪い笑みを浮かべた。「きっと今頃、文句たらたらかもですね」
 あり得る。半年の中途入社社員が、めざましい成果を上げているのに、自分たちの待遇が現状維持では、伊牟田さんお得意のオヤジギャグも精彩を欠くことだろう。
 ふと、ぼくの心に別の可能性が浮かび上がった。
 「ひょっとすると」ぼくは思い出しながら言った。「最初からそういう条件で入社したのかもしれないな」
 「どういうことすか?」
 ぼくが木名瀬さんと打ち合わせしたときの内容を説明すると、マリは、なるほど、というように頷いた。
 「はあ。転職会社への報酬を値切ったってことですか。せこいな」
 マリは軽蔑したように鼻を鳴らすと、自分の作業に戻った。
 根拠がないので口にはしなかったが、もしかすると、と考えてしまったのは、この尾日向さんを巡る一連の出来事さえ、最初から計画されていたのかもしれない、ということだ。
 エースシステムから要請があったことを幸い、プロジェクトチームを発足して、尾日向さんを加える。その功績の大部分を尾日向さんが受けられるように調整する。2 月の人事異動決定に間に合わせるために、プロジェクトの成果発表を1 月に設定する。そう画策したのは、そして、できる立場にいるのは、戸室課長だ。でも何のために? 尾日向さんを一種のスター社員に仕立て上げ......
 ぼくはそこで考えるのを止めた。戸室課長が何を考えていようが、システム開発室内の状況が変わることではないのだから。
 ぼくもヒマではないので、Housync の確認作業に頭を切り替えた。しばらくすると新人二人がランチから戻ってきた。マリは尾日向さんに何か訊きたそうな顔をしたが、ぼくは小さく首を横に振って制した。
 当の尾日向さんは、というと、普段と何ら変わりない態度だった。異例のスピード昇進に浮かれている様子はないが、表層だけで内心を窺えるほど尾日向さんの人となりを知っているわけでもない。もしかすると、今回の成功が大きな自信になっているのかもしれない。その予想は当たっていた。それも良くない方向に。

 ◇ ◇ ◇ ◇ ◇

 2月の最初の月曜日に、来年度の人事が発表された。
 部課長クラスでは数人が異動した程度で、組織の変更もなかったので、大きな話題になったのは、やはり尾日向さんの昇進の件だった。
 「一部の女子連中は」ランチから戻ってきたマリが教えてくれた。「興奮状態っすよ。ファンクラブができそうな勢いです」
 「知ってるよ」
 ぼくも苦笑した。用事もないのに、普段なら寄り付きもしないシステム開発室の周囲を、女性社員がうろうろしているのを目撃していたからだ。あいにく、尾日向さんがエースシステムに挨拶に出向いていて不在だ、と知ると、一様に失望した表情を浮かべて戻っていく。エースシステムへの顔見せは夏目さんが始めたことで、ぼくも室長代理になったときに、同じことをした。もちろん、ぼくのときには、出待ちをしている女性社員はいなかったが。
 午後になって、茅森課長と一緒に尾日向さんが戻ってくると、ぼくは声をかけた。
 「頼んでおいたJINKYU の有休処理ってどうなってますか?」
 「ああ、はい」尾日向さんはすぐにキーを叩いた。「今、プッシュしました」
 ぼくはプルして、コードを確認した。
 「尾日向さん」しばらくしてから、ぼくは再び声をかけた。「ちょっといいですか」
 尾日向さんは席を立って、ぼくの横に立った。
 「この部分ですけど」ぼくはエディタで該当部分を反転させた。「なんでこんなにStream 使ってるんですか?」
 「なんでって言われましても」尾日向さんは笑った。「何か間違ってますか?」
 「間違ってはないんですが、この程度だと、filter 使わなくても、普通にfor 文で書いた方が読みやすいでしょう」
 Stream API は確かに便利だが、filter() やmap() のチェーンを重ねると、処理を追うために脳内でStream をいちいち展開しなければならない。
 「でも、この書き方の方が最新じゃないですか」
 「最新かどうかはあまり意味がないですよ。for 文に直しておいてください。それから、ここでvar 使ってますが、これはちょっとわかりにくいです」

 var paidDays = processPaidHolidayLogic.process();

 「え、なんでですか?」尾日向さんはムッとしたような顔で訊き返した。「こっちの方が可読性が高いと思いますが」
 「パッと見、この変数の型がなんなのかわからないですよね」ぼくは指摘した。「var 使うなら、右辺の型がわかっている場所だけにしてください」
 「だって、process() が日数返すのがわかってるんですから......」
 「process() というメソッド名から、Integer を返すってわかりますか?」
 「......」
 「初めて読む人、もしくは、半年後の自分でも、一目瞭然にしておいた方が親切です」
 尾日向さんはモニタを眺めたまま動かなかった。
 「あとですね、ちょっとコメントが少ないんですよね」
 「コメントですか?」尾日向さんは乾いた声で言った。「でも、コメントには何やってるかではなく、なぜやってるかを書けって言いますよね。このロジックは年休日数付与なんだから、何やってるかなんて明白だと思います。だからコメントわざわざ書いてないんですが......」
 「何やってるかを書かなくていい、というのは、ちょっと意味が違うと思うんですよ」ぼくはソースをスクロールした。「たとえば、ここみたいに、変数に計算結果を代入してる行なんかは、わざわざ書く必要ないですよ。でも、ここの上には1 行書いておくと親切です」
 「意味がわからないです」
 「あの......」話を聞いていたらしい安川さんが自席から手を挙げた。「私も、コメントは何をやってるかより、なぜやってるかを書け、と、どこかで読んだのですが。井上さんの仰ってる意味がよくわからないです」
 ぼくは頷いて、安川さんを手招きした。さっきと同じように、ソースの一部を反転表示させて説明する。
 「このロジックって、このprocess() みたいなメソッドがいくつか続いてるでしょう? 将来的にあまり知識がない人がデバッグしなきゃならない事態になったとしたら、いちいち、メソッドの中まで追いかけなきゃならないじゃないですか。でも、たとえば繰り越し日数の計算がおかしいバグを追ってるときにですよ、このメソッドの上に、"勤務年数取得"って書いてあったら、どうですか?」
 二人はしばらくの間、ぼくの言葉の意味を咀嚼するように、モニタを凝視していた。口を開いたのは安川さんの方が早かった。
 「つまり......」安川さんは自信なさげな口調で言った。「とりあえずは、そのメソッドをスルーできる、ということでしょうか」
 「正解です。もちろん、最終的には、中まで見に行くことになるかもしれませんが、全体を大まかに把握するためには、ある程度は何をやってるかも書いておく方がいい場合もあるってことです」
 「......なるほど」尾日向さんもようやく頷いた。「勉強になります」
 「もしかすると」ぼくは思いついて訊いた。「これAI に書かせました?」
 「はい。Cursor で」
 「HITL が不十分でしたね」ぼくは笑った。「ガイドライン作った本人でしょう?」
 「はい。気を付けます。指摘いただいた部分はすぐに修正します」
 尾日向さんはそう言うと、自席に戻っていった。安川さんも続く。ぼくはモニタに目を戻したが、茅森課長がまだ室内にいて、ぼくの方をじっと見つめていることに気付いた。何か用事でもあるのか、と目で訊ねると、茅森課長は顔をそむけると、そのまま出て行った。何だったんだ、と疑問に思ったものの、すぐに目の前のタスクに注意を戻し、それきり忘れてしまった。
 人事課から呼び出しを受けたのは、それから1 週間が経過した日だった。

 (続)

Comment(0)

コメント

コメントを投稿する