Script
Prologue
シーン0 入社式の前夜
三月三十一日。
仙台から東京への引っ越しは、二月のうちに、もう、済ませてあった。けれど、桜子は、入社式の前日の夕方、もう一度、仙台の実家に、新幹線で、戻った。明日の朝の便で、東京へ、戻る予定だった。
夜、母が、台所で、味噌汁を、二人分、よそってくれた。
「桜子、明日、ちゃんと、起きられそう?」
「うん。アラーム、三つ、かけた」
「三つ」
「ひとつ目で、ぱっと起きるとは、たぶん、限らないから」
母は、味噌汁の鍋の蓋を、ふっと、閉めて、笑った。
「あんたらしい」
「お母さん」
「ん」
「忘れもの、ない?」
桜子は、自分の鞄の中身を、もう一度、頭の中で、並べた。スーツ。靴。住民票。源泉徴収票関連。生協で買ったノートPCケース。
母は、エプロンのポケットから、薄い包み紙の小袋を、桜子の前に、ことっと、置いた。
「これね、わたしから」
「なに」
「開けてみて」
桜子は、包み紙を、ゆっくり、開けた。中から、桜の花の形をした、小さな、淡いピンクのプラスチックのキーホルダーが、出てきた。ストラップは、まだ、ぴんと、新しかった。
「卒業式のとき、買おうかどうしようか、迷ってたじゃない、商店街の角の、あの小物屋さんの、桜のやつ」
「うん、買わなかった」
「結局、買っといたの。お母さん。あんたの、東京行きが、決まってからね」
桜子は、その、桜の形を、しばらく、手のひらで、転がしていた。
「桜に、桜子」
「うん。我ながら、ちょっと、押しつけがましいけど」
「ううん。嬉しい」
桜子は、母の顔を、まっすぐ見られなくて、味噌汁のお椀のほうへ、視線を、落とした。汁の中で、わかめが、ゆっくり、漂っていた。
母は、それ以上、何も言わずに、味噌汁を、自分のぶんも、よそって、桜子の向かい側に、座った。
「明日、ちゃんと、行ってきなさい」
「うん」
「ちゃんと、帰ってきなさい、いつか」
「……うん」
夜更け、桜子は、新幹線の最終便で、東京へ、戻った。窓の外、暗い田畑の上を、白い月が、長く、長く、追ってきた。
東京駅に着いて、ワンルームの部屋に、戻って、桜子は、桜のキーホルダーを、明日の朝の鞄の、持ち手に、結わえた。プラスチックの、薄い、軽い感触が、指の先に、残った。
ベッドの中で、桜子は、声に出さずに、唱えた。
明日。サクラ、起動。
眠りに落ちる手前、桜子は、もう一度だけ、母の ちゃんと、帰ってきなさい、いつか の いつか の、二文字を、頭の中で、なぞった。
Cold Open
シーン1 入社式の朝
四月一日。東京の空は、よく晴れていた。
駅から会社までの坂道に、桜がまだ咲き残っている。望月桜子は、肩にかけたリクルートバッグの紐を握り直した。淡いピンクの小さなキーホルダーが、鞄の持ち手で揺れている。高校の卒業式のときに、母が買ってくれたものだった。
桜に、桜子。
名付けたときの母の気持ちを、桜子はいまも少し、くすぐったく思う。
テックスター株式会社。従業員三十名のIT企業。東京都内のビルの四階。エレベーターを降りると、透明なパーテーションの向こうで、もう誰かがキーボードを叩いていた。まだ朝の九時前だというのに。
(みんな、もう仕事してる)
受付で名乗ると、髪をきっちりと整えた男性が迎えに出てきた。プロジェクトリーダーの鈴木健一。メールで何度かやりとりをした相手だ。
「おはよう、望月さん。入社式は十時から、そのあとオリエンテーションね。入社おめでとうございます」
「ありがとうございます。よろしくお願いいたします」
声が少しうわずる。鈴木は穏やかに微笑んで、会議室へ案内した。
会議室には、同期がもう一人いた。
「中村翔太です。よろしく」
背筋のまっすぐな男子が、立ち上がって名刺入れを差し出してきた。まだ名刺は一枚も入っていない、新品の。
「望月桜子です、こちらこそ、よろしくお願いします」
翔太の足元には、角のすり減ったMacBookケース。受験生の鉛筆のように、よく使い込まれている。
(学生時代から、ちゃんとやってきた人だ)
桜子の鞄には、大学の生協で買った、真っ白なノートPCケース。まだ、どこの角にも傷はない。
Part A
シーン2 開発環境構築
オリエンテーションのあと、桜子と翔太は、窓際の空いた席へ案内された。
机の上には、会社から貸与されたノートPC。モニターと、キーボードと、マウス。そして、一枚の紙。
新入社員 初日タスク
1. 貸与PCの初期設定
2. 社内アカウントの有効化
3. 開発環境の構築 (README.md 参照)
4. 午後一で、ハロー・ワールドのプルリクエストを作成桜子はREADMEを開いた。
## 開発環境構築手順
1. pyenv をインストール
2. pyenv で Python 3.11 をインストール
3. VS Code をインストール
4. このリポジトリを clone
5. `poetry install` が通ることを確認
6. `pytest` が緑になることを確認(ここまでは、できる)
大学のゼミで、Pythonは一年間書いた。poetry も、卒業研究で触ったことがある。
桜子はターミナルを開き、pyenv をインストールした。手順通り。ひとつずつ。
隣では、翔太がすでに黒いターミナルで何かをしている。キーを叩く音が、やけに速い。
「中村くん、もう始めてるの」
「うん。Python は自分で入れたやつを使った方が早い。Homebrew で 3.11 入ってるし、pyenv 挟まなくても poetry env use で指せるから」
「……そうなんだ」
READMEには、まず pyenv を入れろと書いてある。けれど、翔太の言うことも分かる気がする。桜子は少し迷って、結局、READMEに従った。
(いま、勝手を言って間違えたら、一番困る)
シーン3 最初のエラー
一時間後。
pyenv は入った。Python 3.11 もビルドできた。VS Code も入った。リポジトリも clone できた。
ターミナルに、桜子は手順書の通り打ち込んだ。
$ poetry installエンターを押した瞬間、画面が赤く染まった。
The currently activated Python version 3.9.6 is not supported by the project (^3.11).
Trying to find and use a compatible version.
Poetry was unable to find a compatible version. If you have one, you can explicitly use it via the "env use" command.(え)
桜子は、もう一度打ち込んだ。同じ。もう一度。同じ。
READMEに書かれたとおりにやった。書かれたとおりに。なのに、赤い。
翔太の方を見ると、彼のターミナルは、すでにテストが通った緑色の文字で埋まっていた。
「あれ、望月さん、まだ?」
「……うん、ちょっと、エラーが」
「あー、それ、たぶん Python 3.11 にパス通ってないだけじゃない。僕は Homebrew で入れたやつを env use で一発だったけど」
翔太の口調に悪意はない。ただ、事実を言っているだけだ。それが、かえって胸に刺さる。
(わたし、手順書の通りにしかやれない)
ノートPCのキーボードに置いた指が、冷たい。
桜子は、鞄の持ち手に結わえた桜色のキーホルダーを、一度だけ握った。プラスチックの薄い感触が、手のひらに押し返してくる。
Part B
シーン4 ログを見よう
昼休みの少し前、斜め後ろの席から、落ち着いた声がかかった。
「望月さん、だよね。環境構築、詰まってる?」
振り返ると、ジャケット姿の女性が立っていた。短いボブ。目元は鋭いが、口元はやわらかい。
「山下、遥です。今日から、望月さんのメンター。よろしく」
胸元に下がった社員証には、小さく「シニアエンジニア」と書かれていた。
「あ、はい、よろしくお願いします。その、poetry install のところで止まっていて……」
「エラーメッセージは?」
「えっと、Python のバージョンが合ってない、みたいな……」
遥は、桜子の隣に椅子を引いてきて、画面を覗き込んだ。
「桜子さん、まずね」
遥はマウスを触らなかった。指先でそっと、画面の一番上を示す。
「ログを見よう」
「ログ……ですか」
「エラーメッセージ。赤い文字。その上下には、何があるか」
桜子は、言われて初めて、自分がエラーの一番下の行しか読んでいなかったことに気づいた。
画面を上へスクロールする。エラーの数行上には、こう書いてあった。
The currently activated Python version 3.9.6「あ」
「入れたのは 3.11。でも、いまこのディレクトリでアクティブなのは 3.9。前に Python 入れたことない?」
「……大学のとき、ゼミで」
「じゃ、それ。システムの Python が先に見つかってる」
遥は、タブを一枚、静かに開いた。
「コマンド、私が打つんじゃなくて、桜子さんが打とう。pyenv versions と which python、打てる?」
「はい」
「打ってみて。出力を、読む」
桜子は、言われたとおりに打った。出てきた文字列を、目で追う。
「3.11.8 が入ってます。でも、いま使ってる python は /usr/bin/python3 になってます」
「うん。じゃ、このプロジェクトで 3.11.8 を使うって、pyenv に教えよう。.python-version ってファイルをリポジトリのルートに作る。書けるかな」
「……調べて、書きます」
「いいよ、調べて。調べたあと、何を書くか、私に一言言ってから書こう。わたしが見てるから、安心して間違えていい」
桜子の肩から、ほんの少しだけ、力が抜けた。
シーン5 初めてのグリーン
十四時。
桜子のターミナルに、ようやく、緑の文字が並んだ。
Installing dependencies from lock file
Package operations: 28 installs, 0 updates, 0 removals
...
Installing the current project: techstar-sample (0.1.0)続けて pytest を叩く。
======================= 6 passed in 0.42s =======================「できた……」
思わず声に出していた。
遥は、画面を覗き込んで、小さくうなずいた。
「うん。これで、やっと始まりだね」
「始まり、ですか」
「ここからが、仕事。環境構築は、開発のスタートラインに立つだけ。ここで一日使ってしまうのは、普通のことだよ」
(普通のこと)
その言葉が、桜子の胸で、ゆっくりと落ちついた。
遥は続けた。
「それと、桜子さん。今日、わたしが一番覚えておいてほしいのは、コマンドの中身じゃなくて、ログを見たこと。これから、何度も詰まる。そのたびに、赤い一行だけを見て落ち込まないで。前後を読む。ログは、桜子さんに向かって書かれてる」
「……はい」
「『はい』じゃ、まだ浅いよ」
遥は、ほんの少しだけ笑った。
「詰まったら、呼んで。抱えないで」
「はい……呼びます」
Part C
シーン6 午後のプルリクエスト、とその先
午後のタスクは、ハロー・ワールドのプルリクエスト。README のサンプルコードに、自分の名前を一行加える、それだけのタスクだ。
桜子はブランチを切って、一行を書き足した。
print("Hello, Sakurako Mochizuki.")コミットし、プッシュし、プルリクエストを作る。翔太はとっくに終わっていて、自分のPCに向かって、なにか別のコードを書いている。もう、自主的にタスクを先取りしているらしい。
桜子のプルリクエストには、レビュアーとして、山下遥の名前が自動で入った。
「提出、できました」
「おつかれ。じゃ、明日の朝、レビューするね」
遥の声は、朝よりも、少しだけ柔らかかった。
窓の外では、桜の花びらが、風に乗って一枚、ビルとビルの間を横切っていった。
Ending
シーン7 駅までの帰り道
十九時。
桜子は、初日のオフィスを出た。
駅までの坂道。朝は気づかなかったけれど、道沿いの桜は、もう半分以上が葉桜だった。
鞄を持ち直したとき、桜色のキーホルダーが、指先に触れた。
(今日、わたしは、なにもできなかった)
環境構築に一日かかった。翔太にはすでに差をつけられた。書けたコードは、一行。
それでも。
(ログを見よう、って言われた)
遥の声が、耳の奥で、もう一度だけ鳴る。
赤い画面の前で、桜子は一人で泣きそうだった。けれど、一人ではなかった。
電車の窓に映った自分の顔が、少しだけ、前を向いていた。
桜子は、小さく、声に出さずに唱えた。
サクラ、起動。
まだ、最初の一行が通っただけだ。
明日、またログを読む。